你好,我现在正在调试6678网络模块(硬件平台是C6678),在配置PDSP0接收指定MAC地址数据包时遇到问题,代码大致流程如下:
ret = Pa_addMac(pa_inst_hdl,
pa_LUT1_INDEX_NOT_SPECIFIED,
ðInfo,
&routeInfo,
&nFailInfo,
&handle,
buf,
&size,
&cmdReplyInfo, //cmdReplyInfo.queue = 712 接收应答队列
&cmdDest);
然后获取并填充描述符,对应代码如下:
Cppi_setData(Cppi_DescType_HOST, txPkt, buf, size);
Cppi_setPacketLen(Cppi_DescType_HOST, txPkt, size);
Cppi_setReturnQueue(Cppi_DescType_HOST, txPkt, inQueue);
//inQueue申请代码如下
//Qmss_queueOpen (Qmss_QueueType_GENERAL_PURPOSE_QUEUE, QMSS_PARAM_NOT_SPECIFIED, &isAllocated)
cmdDest获取的数值为0,也就是发送通道0,因为发送通道0对应PDSP0,描述符设置好后,压入对应的发送队列(640号),压入前进行cache回写,
Qmss_queuePushDescSize(txQueHnd, desc, desc_size);
目前存在的问题是:
1.push完成后,监听inQueue队列,没有获取任何表述符,712号队列也没有获取任何描述符。
2.正常情况下,应该可以在inQueue队列中获取到发送完成的描述符,并且在712号队列中接收到应答。
3.我故意将txQueHnd改为641-648其余队列,虽然此时操作有问题,因为并没有配置PDSP0,但是在inQueue可以监听到发送完成的描述符,712队列监听不到应答描述符(属于正常,因为PDSP0只能通过640队列发送)。
问题总结:
我在利用640号队列配置PDSP0时,将描述符压入640号队列后,在返回队列中接收不到发送完成描述符,但是换成641~648都可以,虽然这种方法操作不正确,但至少发送队列将描述符发送出去了,但是640号队列始终不行,请问造成这种问题的原因可能有哪些呢?