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.

C6678 QMSS Descriptors 回收



1. 大家谁知道KeyStone I Navigator模块中,Descriptors的详细释放和回收过程,在手册里没找到。

2. 环境:C6678,6670平台上,网口的裸机驱动程序

    数据的发送过程描述:CPU从发送完成队列里Pop出一个Descriptors,将Descriptors填充完毕后,又将Descriptors Push进发送队列,后启动PktDMA将发送队列里的数据搬运到net外设,将数据发送出去。Descriptors Push进发送队列后,程序通过读取外设统计发送成功的包数来判断发送成功。Descriptors数量为32个。

    问题描述:当数据成功发送完成后,发送完成队列中Descriptors的数量还没有回收成功(32)个,这样会导致下次发送时,从发送完成队列中读取的Descriptors数量小于本次发送所需要的Descriptors数量。该现象具有偶发性,大部分时候发送完成后,Descriptors都被正常回收,有时会出现上述情况。 

   调试程序片段:

谢谢大家!

  • 一般是填写的参数有问题,比如size对不上等等,建议是在出错的时候检查descriptor的部分看有没有错误,DDR3里的话要确保DDR3读写一定是稳定正确的。

    如果descriptor是放在DDR3或者SL2里的,要注意Cache一致性的问题。