Forum Discussion
Altera_Forum
Honored Contributor
15 years agoHi Daixiwen, thanks for answering me.
As I said before, I had the same problem both with TSE and with OpenCores MAC, which is what I currently use in this design. Apart the mac, I use the standard uCOS/iniche. I have two ethernet ports in my design. The only diffence from standard usage is that on one port I send raw Ethernet packet eth the net->pkt_send function. On other port I have no problems, but in this case I think the TCP protocol automatically fixes it. Anyway, yesterday I found a way to solve the problem. I defined ETH_OCM_SYNC_TX in OpenCores mac driver, so that drive syncronously transmits and blocks until frame is transmitted, rather than using interrupts. It now uses the net->raw_send function rather then net->pkt_send. Now everything is working perfectly; so it was really a driver problem when managing concurrent tx and rx data. The performance has not decreased. I only have minimal performance drawbacks on the other ethernet port (the one using the tcp/ip stack), so I could use this as the final solution. I think I can also modify the driver in order to use sync mode only on the first port. Regarding your message: Version: I use Nios IDE 9.0sp2 with ucos and iniche which come with it. Cache: I assumed the standard driver already flushed cache; I've not driver knowledge, so I don't know how to check if flushing is performed, nor how to force it. Debug: same as above, I really don't know where I need to place the messages; maybe where putq and getq are called? Cris