TI中文支持网
TI专业的中文技术问题搜集分享网站

关于网口函数中QMSS队列的问题

6678下的网口程序,主要实现功能是主核通过IPC中断通知从核(网口)将处理结果周期性的发送出去。我设置是收队列号为744,发队列号为736,初始化描述符个数都为16

现象1:加载GEL时运行正常。但不加载GEL,用platform_init初始化,发送60多个包后就发不出去了。

现象2:追踪下去发现Qmss_queuePop (gTxFreeQHnd)始终为NULL,导致后面包无法发出。

现象3:我用Qmss_getQueueEntryCount查询所有的8000个队列中的描述符个数,发现收队列744里面是16个,但是736里面的确没有。但648里有15个描述符。

请问

1、GEL和platform_init到底配置有什么区别,为什么会导致这个问题

2、为什么运行160多次之后,不再有空的描述符

求帮忙解答,谢谢各位了!

Andy Yin1:

platform init会根据上层的接口配置初始化EMAC,gel只是简单的初始化DDR、pll等,可能是platform init中的EMAC初始化影响。

从你的现象来看像是descriptor没有及时回收到TxFreeq中,确认一下代码中对descriptor资源的回收处理。

wj xz:

回复 Andy Yin1:

我在platform init中不初始化网口也不行

我查看了一下0-8000队列里的描述符个数。发现队列711(RX)里面是正常的16个,但队列736(TX)里面的确为空,所以POP不出来。但是在队列648(PA专用的最后一个队列)中发现了15个描述符。感觉发了一定数目后,发送不成功,导致TX队列中描述符减少,PA队列中描述符增加。如果说回收处理不正常的话,不应该出现发送160多次才POP不成功的情况,而且TX描述符回收是自动的吧,有点想不明白为什么突然就不行了。

赞(0)
未经允许不得转载:TI中文支持网 » 关于网口函数中QMSS队列的问题
分享到: 更多 (0)