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

TMS320C6678: C6678网口如何配置PA 接收ARP数据包

Part Number:TMS320C6678

各位TI专家好:
       最近调试通过C6678 的网口和PC进行UDP通信,主要参考了emacExample代码。UDP发送已经通了,PC端可以接收到数据,UDP接收还有问题。首先,PC不会直接发送UDP协议数据,首先发送 ARP包等待回应MAC地址,所以需要先接收ARP数据包。
        参考问题e2echina.ti.com/…/pa-arp 答案,我在配置PA时,在Add_MacAddress()函数中,将ethInfo中 eher type改为0x806,并把目的MAC地址和源MAC地址全部改为FF FF FF FF FF FF,同时,将LUT1路由信息routeInfo 路由到Host,代码如下:

paEthInfo_t ethInfo = { { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }, /* Src mac = dont care */
{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }, /* Dest mac */
0, /* vlan = dont care */
0x0806, /* ether type = IPv4 */
0, /* MPLS tag = don't care */
1 /* Input EMAC port */
}; paRouteInfo_t routeInfo = { pa_DEST_HOST, /* Route a match to the host */
0, /* Flow ID 0 */
0, /* Destination queue */
-1, /* Multi route disabled */
0xaaaaaaaa, /* SwInfo 0 */
0, /* SwInfo 1 is dont care */
0, /* customType = pa_CUSTOM_TYPE_NONE */ \
0, /* customIndex: not used */ \
0, /* pkyType: for SRIO only */ \
NULL /* No commands */
};

/* Setup the Rx queue as destination for the packets */
rxQInfo = Qmss_getQueueNumber (gRxQHnd);
routeInfo.queue = rxQInfo.qNum;
routeInfo.flowId = (uint8_t)Cppi_getFlowId(gRxFlowHnd);

retVal = Pa_addMac (gPAInstHnd,
pa_LUT1_INDEX_NOT_SPECIFIED, &ethInfo,
&routeInfo,
&nFailInfo,
&gPaL2Handles[0],
(paCmd_t) pHostDesc->buffPtr,
&cmdSize,
&cmdReplyInfo,
&cmdDest);
        现在接收时,可以看到PA中PDSP0对应mailbox slots寄存器地址0x02000000有数据变化,对应网络调试助手抓到的ARP包数,但是对应的接收QMSS队列中却没有数据?
我如何判断PA的是否正确路由到PKT DMA中去了?

Nancy Wang:

Jing lee 说:主要参考了emacExample代码

请贴出代码具体路径。

,

Jing lee:

你好,问题解决了,配置ethInfo 时,源MAC应该写为0,0,0,0,0,0表示不关心源MAC地址,而不能写为FF FF FF FF FF FF,改了以后PA就能正确路由数据到QMSS当中,能收到数据了

,

Nancy Wang:

好的,感谢分享!

赞(0)
未经允许不得转载:TI中文支持网 » TMS320C6678: C6678网口如何配置PA 接收ARP数据包
分享到: 更多 (0)