-
Notifications
You must be signed in to change notification settings - Fork 206
Zynq synchronize transmission #1283
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
I continued testing the setup as described here. |
|
I created a new PR 1286, which replaces this PR. It has the title "Zynq driver: avoid race conditions". |
|
Please refer to PR 1286 which will replace this PR. |
Zynq: wait for transmission-ready before sending a new packet
In his post Long delay between two splitted frames, Tam wrote that he sees many retransmissions when sending from a Zynq7000 to a local device.
I found that in the driver, after a packet is sent, a variable
int txBusyis set and when sending a new packet, the variable is cleared again. The variable should be use to synchronise the two events: TX-start and TX-end.Now when the system is fast, the GMAC gets overrun and setting the start-bit
STARTTXin the registerNWCTRLis ignored. As soon as any new packet is sent, the earlier one is flushed as well. This cause many annoying re-transmissions and timeouts on the remote side.Solution:
This mutex will be given to by the
emacps_send_handler(). It is called from an ISR so it does;Tam, thank you for your valuable input, and your help while we were testing.
mentioned post in the FreeRTOS forum explains it all.
Checklist:
Related Issue
There is no issue ID, the case was presented on the FreeRTOS forum.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.