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.

QMSS queue pend queue作为接收queue时怎么判断有packet descriptor发送到接收queue里后丢失

我在测试时发现不加延时的情况下发送3200个packet descriptor只收到几十个,发送加了延时就能全部收到packet。我的问题是怎么能监测到有发到接收queue里的packet没能被收到?(或者我的理解不对是在其它环节丢失的)有没有产生中断报错的方式?多谢!能不能帮忙讲下当queue pend queue接收到一个descriptor产生了中断未处理完中断还未清除时,又有多个descriptors压入这个queue,这些后续压入的descriptor会不会全部丢失?有没有方法来处理或者预报这种情况?

  • Hi Weiqiang,

                  您的测试中是收到了几十个中断? 还是通过统计queue N register A 的entry counter 发现只收到了几十个包?

                  queue pend 的中断还未清除时,后续压入的descriptor应该不会丢失, 请查看queue N register A的值。

  • Hi Jane,

    多谢!我是在测试中收到几十个中断。请问下如果push到queue pend queue中太多的descriptors会不会导致descriptor丢失?有没有办法防止或者告警、中断来预报?还有个问题是queue pend queue能存放多少个descriptor?

  • Hi Weiqiang,

                      queue pend queue队列不会因为压入descriptor过多而导致丢失。

                      如果您只需要保证包没有丢失,可以在中断ISR中统计queue N register A来看包数目是否正确。

                      如果您需要生成同样多的中断,请用QMSS accumulator的功能,可以实现1包1中断。

                      另外,用queue pend queue时候,请看一下ISR程序中中断使能恢复的顺序,不然有可能会丢中断。

    1.Disable CPINC host interrupt

    2.Service interrupt at the source

    3.Clear CPINTC system interrupt

    4.Enable CPINTC host interrupt

     

x 出现错误。请重试或与管理员联系。