I am trying to upgrade some legacy code from the old LL packet interface to the new NIMU interface. I can successfully run everything on the 2.20 NDK (the last NDK to officially support DSP/BIOS 5) when I use the LL packet interface. We are running on the C6416 and are interfacing to a SMSC 9221 MAC/PHY.
To upgrade to the NIMU interface I grabbed the files C:\ti\nsp_1_10_02_09\packages\ti\drv\omapl138\eth_nimu.[c/h], and removed the library that contains the llpacket.c file. This seems to work well because I can use our existing low level driver with the HwPktxxx functions. I did add the following code to our low level driver:
#ifdef _INCLUDE_NIMU_CODE PBMQ_enq( &pPDI->PBMQ_rx, hPktRx ); #else PBMQ_enq( &PBMQ_rx, hPktRx ); #endif
In this arrangement everything compiles, and the processor responds to pings and arps. However, any attempt to push a packet out of the processor fails. I can trace a TCP syn packet through the stack, see the TCP syn/ack packet leave the stack and go to our low level driver, and get pushed to the external MAC/PHY. But I never see the packet in wireshark. This also seems to effect ARPs that are generated by the stack, but not ARP replies.
Is there something I am missing in the interface change? Is there a subtle change in the way the size/offset of the packet is represented in the PBM object that would cause my MAC/PHY to silently reject the packet, or for the receiving MAC/PHY to reject that packet so that Wireshark never sees it?
P.S. It might be useful to note that I am generating a pcap file in the processor so that I can pull it out and look at it in wireshark. When I generate a file while using the LL driver interface, things look great. When I generate the file using the NIMU driver interface, wireshark complains that all of the ethernet CRCs on outbound packets are wrong. I would sort of expect this since the MAC/PHY calculates and add that, but I am not sure why wireshark only complains in the one case. That is one of the reasons that I feel like there may be some subtle size issue with the NIMU interface.