This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Network interface functionality unreliable

I'm working with the C6472 EVM, developing an application that sends and receives data over the first Ethernet port. Recently I've been experiencing a problem where the application sees no data come from my host even though data is clearly being sent. This problem happens most of the time I try to load and run the application but not all of the time. Sometimes the application runs correctly and data flows through the Ethernet link normally. I haven't been able to detect any pattern as to when things work and when they don't but sometimes things stop working without any changes to the application. The intermittent nature leads me to think it may be caused by a race condition or perhaps uninitialized data. I didn't see this problem occur (or at least not with any regularity) until I updated and merged some unrelated code in my application.

When the application is not working, the periodic task monitoring the Ethernet link indicates that the link is established and the connection is gigabit full duplex. However, when I send data to the EVM the Ethernet RX interrupt never fires. When I inspect the EMAC0 registers, I noticed that the NETOCTECTS register changed from 0 to 520, although the amount of traffic I sent to the EVM would total about 4000 bytes. If I send more data it increases again. Despite the fact that NETOCTECTS changed, I didn't see any other registers change. That doesn't seem to make sense, I would have expected RXOCTECTS and RXGOODFRAMES to also increase. If there were errors on the wire I would expect RXCRCERRORS, RXALIGNCODEERRORS, RXOVERSIZED, RXUNDERSIZED, RXFRAGMENTS or RXFILTERED to change, but all those registers remain zero.

I need some help to debug this further. I'm assuming there is something in the application that has subtly misconfigured the interface. How can I narrow down this problem? What could be happening that causes NETOCTECTS to change but nothing else?

I have attached text files containing the values of all the EMAC0 registers. The file emac0.registers.good.txt shows the values after successfully running the application and transmitting a fair bit of data back and forth. The file emac0.registers.bad.txt shows the register values after running the application and sending some data when the application did not get any interrupts.

Thanks,
Jamie

emac0.registers.tar.gz