I'm running into a problem where I've verified that I'm passing a request for transmission of a raw packet to the NDK and although the function returns good status the packet never gets transmitted.
In short I'm implementing the EtherCAT Master protocol. I've simplified things where I am just scanning a single slave (nothing else on private network) so the transmitted and received packets are almost identical except for MAC ID (64 byte packet size). The Master is doing a broadcast. Two separate threads are used, one to send, the other to receive. fdShare() works fine and all works well but after several minutes and 100K of packet transactions I was getting a timeout on the receiver. In checking further I can see that a broadcast was passed to the stack for transmission but never appeared on the wire. The slave did not see it nor Wireshark. Retry and it will send fine and continue on until the next timeout is encountered.
One thing EtherCAT does is have the slave respond very quickly since hardware is used to send the packet back to the Master, thus virtually as soon as the NDK sends a packet there are interrupts occuring for the response. In my test each direction is only a single packet, running half duplex.
What is strange is there is no error reported for the lost raw packet with regards to the send() function call. I have also used the RawEthTxPacket() call with the same result.
Environment:
LogicPD Development board, Sys/Bios 6.32.03.43, NDK 2.20.4.26, NDK Support Pkg 1.0.0.09, Compiler 7.30, XDCTools 3.22.02.27 & CCSV5
Anyone know of any prior history of similiar problems or thoughts before I start diving into the NDK source and driver code?
Thanks,
Kev