TIwilliam hill官网
直播中

杨洁磊

7年用户 180经验值
私信 关注
[问答]

SRIO的流控

C6678和C6455使用SRIO通信,1x4p模式,3.125G,其中C6678使用ti的PDK中SRIO LLD
发现C6455发送过快时候C6678的接收缓存不够,触发StarvationQ中断,然后这个包就丢了,但是对端C6455仍然认为包发送成功了,这就造成丢包现象,不能发挥SRIO的高速通道应有的作用。
请问SRIO如何能实现流控,即C6678接收缓冲区满时,C6455发送不出去

回帖(3)

罗兰君

2018-6-21 09:20:38
您好,不了解SRIO的流控如何实现来解决这个问题。
有几点建议:
1      是否可以增加接收端的free descriptor数目?
2      查一下RX flow control register A的RX_ERROR_HANDLING比特位设置,不设置为丢弃模式
 
                                                                         Jane
举报

王英

2018-6-21 09:27:17
使用NWRITE_R方式写
举报

杨洁磊

2018-6-21 09:46:28
引用: Sabrina_cc 发表于 2018-6-21 09:20
您好,不了解SRIO的流控如何实现来解决这个问题。
有几点建议:
1      是否可以增加接收端的free descriptor数目?

1。free descriptor数目总要受到内存资源限制,不能无限增加。况且只治标不治本。
2。这个想法是可行的,如果置位后不会丢弃,然后导致接收缓冲区满,C6455收到发送错误中断,这时候不再让上层继续发数据就可以了。然后要解决的是包有可能乱序的问题。
顺着这个思路已经实现了可靠传输,不丢包也不乱序。
http://blog.csdn.net/li_boxue/
举报

更多回帖

发帖
×
20
完善资料,
赚取积分