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.

TMS320C6657: Ethernet Stack Lockup

Part Number: TMS320C6657


Tool/software:

This is not so much a question as it is hopefully helpfull information for anyone who might experience the same issue.

Running PDK_C665x_2_0_14 on a custom C6657 board.  We had an issue when having high transmit ethernet traffic where packets would suddenly stop being transmitted.  After much debugging in the stack I narrowed down the issue to emacEnqueueTx() in ti\drv\emac\src\v0\emac.c.

The function emacEnqueueTx() can be called from two sources, the end of emacDequeueTx() and EMAC_sendPacket(), both in emac.c.  emacDequeueTx() is only called from the interrupt when the previous packet transmission has completed.  EMAC_sendPacket() is called through the stack when the application wants to send a packet.  I believe this creates a potential conflict the the packet descriptor queuing if the interrupt occurs when emacEnqueueTx() is already executing.  My solution, although arguably heavy handed, was to disable interrupts via HwiP_disable() in the emacEnqueueTx() function.  This fixed the issue we were having.

I did check to see if PDK_C665x_2_0_16 might have addressed this issue but it did not appear to have any relevant changes in this area.

Hope this might help anyone with a similar issue.