Hi team,
Here's an issue from the customer may need your help:
The project is based on sys/BIOS and contains the srio and networking capabilities. The network and the srio are separate tasks where the network task has a higher priority than the srio.
When DSP sends doorbell to FPGA, FPGA receives the doorbell packet normally. However, pc machine can have a large latency (around 1.5 s) to ping the network, while sending data to ping the network is a normal delay (<1 ms).
Both SRIO and network can operate independently. When debugging DSP separately to send a srio doorbell packet, the first few packets are sent normally and then take a long time(longer than 1s). Although sending a doorbell can take a long time, the remote device can receive a doorbell interrupt. And the packets being sent are stable with no exceptions like doorbell.
Sending doorbell function is as follows:
int rioDbellSend(Uint16 destID, Uint16 dbellInfo) { Srio_SockAddrInfo to; to.dio.ttype = 0; to.dio.ftype = Srio_Ftype_DOORBELL;//10 to.dio.rapidIOMSB = 0x0; to.dio.rapidIOLSB = 0x0; to.dio.dstID = destID; /* Send the DIO Information. */ if (Srio_sockSend (srioSocketDIO, (Srio_DrvBuffer)dbellInfo , 0, (Srio_SockAddrInfo*)&to) < 0) { System_printf ("Debug: DoorBell Socket Send Failed\n"); return FAILED; } return SUCCEED; }
The customer tried it with bare machine and the doorbell packet was normal. In addition, the DSP in sys/BIOS only has an exception for the transmit doorbell, and the receive doorbell interrupt is normal.
The long time is found in the CSL_SRIO_IsLSUFull function during debug. Is there any possible reason?
Could you help check this case? Thanks.
Best Regards,
Cherry