-
Notifications
You must be signed in to change notification settings - Fork 2k
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
at86rf2xx: Dead lock when sending while receiving #8242
Comments
Update: Probably extending at86rf2xx_set_state to also check for BUSY_RX and BUSY_TX might solve the problem. Will update issue accordingly. |
Are you working on a PR for this or is this a potential "help wanted" issue? |
@gebart I am currently trying to figure out what exactly the problem is! |
Any news here? |
If this is a "help wanted" candidate..I would like to take this up! |
@virajsahai any help is welcome. Feel free to open a PR if you find what the actual problem is. |
This is the same bug as described under: #7276 (comment) It has been tried to be fixed with PR's: #7115 #7275 #7276 #8186 |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. If you want me to ignore this issue, please mark it with the "State: don't stale" label. Thank you for your contributions. |
@roberthartung Can you check if #12728 fixed this? I think this is the same behavior as described in #11256. |
The at86rf2xx driver doesn't check the current state when sending. Therefor it is possible, that a deadlock occurs.
at86rf2xx_tx_prepare
tries to set the state toAT86RF2XX_STATE_TX_ARET_ON
, however, if the receiver is currently inBUSY_RX
state, the idle_state will be set accordingly.The send afterwards is still successful, however, the idle_state is wrong. The
_isr
method ofat86rf2xx_netdev.c
will set theidle_state
afterwards, however it will never be reached and this results in a dead lock.I will provide a fix shortly: Add busy waiting before sending / switching states.
The text was updated successfully, but these errors were encountered: