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.

TMS570LC4357: LWIP and EMAC EOQ bit stuck

Part Number: TMS570LC4357
Other Parts Discussed in Thread: HALCOGEN

I have built out an application using the demo code from https://git.ti.com/cgit/hercules_examples/hercules_examples/tree/Application/LwIP/v00.04.00/LAUNCHXL2-TMS570LC43x as a baseline. The application I made simply uses TCP/IP from the LWIP library (version 1.4.1 as the demo used this version) to "stream" data that is updated at about 1 kHz. Most things work fine for some time, but eventually the code halts and is stuck on the following while loop which is provided by the demo in hdk.c:

    /* TODO: (This is a workaround) Wait for the EOQ bit is set... */
    while ((EMAC_BUF_DESC_EOQ != (hdkif_swizzle_data(curr_bd->flags_pktlen) & EMAC_BUF_DESC_EOQ)));
I believe this indicates that the EMAC attempted to transmit data (from the DMA) but something went wrong and the EOQ is never set, additionally the TXHDP is not cleared either so the MCU would get stuck in the next while loop as well:

    /* TODO: (This is a workaround) Don't write to TXHDP0 until it turns to zero */
    while (0 != *((uint32 *)0xFCF78600));
I've read other forum posts but it seems that my issue is slightly different as the timing is okay with the while loops and the workaround is okay for my purposes. But since the EMAC fails to clear the EOQ bit, I am unsure if there is a better work around for this scenario. I had made the assumption that the Halcogen code correctly sets the EOP, SOP, and EOQ packets for the DMA. Are there any later fixes to the Halcogen/Demo workarounds, or maybe more information on how the EMAC may not set the EOQ and give back ownership?
I'm not an expert by any means of networking and using the EMAC or LWIP, so any advice or helpful info would be appreciated.
Some additional info (if it is helpful at all) about my application is that I specifically call tcp_output after calling tcp_write from LWIP to transmit data at 1 kHz intervals. There doesn't seem to be any obvious issues with the LWIP code with how I'm using it. The EOQ issue occurs minutes into the data streaming making debugging difficult. If I stream less data, e.g. 30 bytes per millisecond it never fails. But once I increase this to about 100-200 bytes it fails after about a minute, getting stuck on the EOQ while loop.