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.

AM335x Ethernet CPSW Tx Interrupt Handler

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