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.

SRIO的流控



C6678和C6455使用SRIO通信,1x4p模式,3.125G,其中C6678使用TI的PDK中SRIO LLD

发现C6455发送过快时候C6678的接收缓存不够,触发StarvationQ中断,然后这个包就丢了,但是对端C6455仍然认为包发送成功了,这就造成丢包现象,不能发挥SRIO的高速通道应有的作用。

请问SRIO如何能实现流控,即C6678接收缓冲区满时,C6455发送不出去

  • 您好,不了解SRIO的流控如何实现来解决这个问题。

    有几点建议:

    1      是否可以增加接收端的free descriptor数目?

    2      查一下RX flow control register A的RX_ERROR_HANDLING比特位设置,不设置为丢弃模式

     

  • 使用NWRITE_R方式写

  • 1。free descriptor数目总要受到内存资源限制,不能无限增加。况且只治标不治本。

    2。这个想法是可行的,如果置位后不会丢弃,然后导致接收缓冲区满,C6455收到发送错误中断,这时候不再让上层继续发数据就可以了。然后要解决的是包有可能乱序的问题。

    顺着这个思路已经实现了可靠传输,不丢包也不乱序。

    http://blog.csdn.net/li_boxue/