Hi,
We are having Am335x processor based product and we are using starter-ware for the Software. We are using Ethernet interface.
After booting Ethernet interface is initialized, link is established and we are able to receive and transmit packets. But after some duration Ethernet interface is not working properly. We are not able to receive packets.
We debugged and found out that we are not receiving Ethernet 'rx interrupt'.
In TRM, they mentioned following
"Write the 3PSW completion pointer(s) (RXn_CP). The data written by the host (buffer descriptor address of the last processed buffer) is compared to the data in the register written by the subsystem
(address of last buffer descriptor used by the subsystem). If the two values are not equal (which means that the 3PSW has received more packets than the CPU has processed), the receive packet
completion interrupt signal remains asserted. If the two values are equal (which means that the host has processed all packets that the system has received), the pending interrupt is de-asserted. The
value that the 3PSW is expecting is found by reading the receive channeln completion pointer register (RXn_CP)"
So we checked whether CPPI DMA is processing or not. We checked RXHDP (Head descriptor pointer). Its value is NULL. So DMA doesn't know where to write receive packets. I also checked the state of descriptors and all the descriptors are owned by DMA. We are not getting in which case it becomes NULL.
We are am335x starter ware code. We are using same RX interrupt handler logic given in "enet echo" application. It is written according to the software description "Receive operation" given in TRM.
So we are not able to understand why the RXHDP descriptor is becoming NULL? How can we debug this problem?