I am trying to append to a TX descriptor list while a descriptor list is being processed. After the additional information is ready, the starting location of the new information is added to the executing list. Following the update to point to the new information, the previous information is evaluated for EOQ to know if the state machine is still executing.
Using Code Composer memory browser, I have debug information showing the descriptor list is what was expected except for status which is addressed later, This includes the initial information with the updated pointer to the appended information, along with the appended information. It also shows the variable holding the contents of the EOQ value is not set which indicates the state machine is still running so the appended part of the list should be processed.
However, there are several indications the appended portion of the list is not processed. 1) External Wireshark trace does not see appended packet information. 2) The Memory browser shows the initial list EOQ bit is set and 3) the appended list owner bit indicates the list has not been processed. I assume the reason the EOQ bit is set in the memory browser window versus it not being set in the variable mentioned earlier is the state machine continued running to the point of finally updating the EOQ bit before the memory browser information was pulled from the system.
Chapter 29 of the TRM indicates the process of appending to this list to ensure the race condition between the state machine execution and software appending to the list is handled correctly. This process has been followed but is not working. I have seen a few other posts regarding this issue on other devices but I did not find a post that documented a resolution to the problem.
Please advise on ability to append to an executing TX descriptor list and if a workaround is available. Our intent is to not use interrupts for Ethernet handling and to not have to wait for the EOQ condition before adding a new descriptor.
Thanks,
Tom