This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

C6455 SRIO maintenance rd&wr problem

To whom might concern,

       I want to try the maintenance rd&wr transaction on our board using the loopback mode.

      The problem is that  the normal read write loopback transaction works ok, but the maintenance fails as " reg6 =

     011b - Transaction complete, non-posted response packet (type 8 and 13) contained ERROR  status, or response payload length was in error"

 the configuration is as follows:

void srio_maintR(Uint32 src, Uint32 dst, Uint32 len)
{
Uint8 lsu_no;
CSL_SrioDirectIO_ConfigXfr lsu_conf = {0};

/* Create an LSU configuration */
lsu_conf.srcNodeAddr = dst; /* Local address */
lsu_conf.dstNodeAddr.addressHi = 0;
lsu_conf.dstNodeAddr.addressLo = src ; /* Remote address */
lsu_conf.byteCnt = len;
lsu_conf.idSize = 1; /* 16 bit device id */
lsu_conf.priority = 0; /* PKT priority is 2 */
lsu_conf.xambs = 0; /* Not an extended
address */
lsu_conf.dstId = LARGE_DEV_ID;//;
lsu_conf.intrReq = 0; /* No interrupts */
lsu_conf.pktType = SRIO_PKT_TYPE_MAINTR;
/* write with no
response */
lsu_conf.hopCount = 0x1; /* Valid for
maintainance pkt */
lsu_conf.doorbellInfo = 0; /* doorbell pkt */
lsu_conf.outPortId = 0; /* Tx on Port 0 */

lsu_no = SELECTED_LSU;
CSL_srioLsuSetup (hSrio, &lsu_conf, lsu_no);

/* Wait for the completion of transfer */
response.index = lsu_no;
do {
CSL_srioGetHwStatus (hSrio, CSL_SRIO_QUERY_LSU_BSY_STAT, &response);
} while(response.data == 1);

}

void main (void) {
int i, k;
volatile Uint8 *pdata;
srio_init(DSP_MASTER);

memset((void *)0x850000, 0, 0x100);
memset((void *)0x851000, 0, 0x100);
pdata = (Uint8*) 0x850000;
for(i=0;i<0x10;i++)
*pdata++ = i+1;

// srio_write(0x850000,0x851000,0x10);
// srio_read(0x851000,0x852000,0x10);
// srio_maintW(0x850000,0xd01068,0x4);
srio_maintR(0xd0106c,0x851000,0x4);
for (k = 1; k < 1000000; k++) ;
printf("\n\t loopback finished! \n");

}

Can anyone help me to figure out the problem, please?