Hello Support Team,
I have a question about the CPSW ethernet interrupt handling with the AM335x.
For my application I adapted the cpswif.c module. The problem is, under heavy load the CPDMA Tx interrupt handler corrupts the memory.
I suppose it's related to the following code lines:
/* If CPDMA failed to transmit, give it a chance once more */
if(0 == cnt) {
CPSWCPDMATxHdrDescPtrWrite(cpswinst->cpdma_base,
(u32_t)(curr_bd), 0);
return;
}
I found the following post, which is interresting, but didn't help me: e2e.ti.com/.../1368160
Why do I get callbacks when the DMA is idle under heavy load?
When I just pulse the Tx interrupt, the systems stalls. When I trigger CPSWCPDMATxHdrDescPtrWrite the system continues working, even it's not allowed to the post above, but after some time the DMA corrupts the memory. What is the correct handling of this?
Thanks in advance,
Stephan