-
Notifications
You must be signed in to change notification settings - Fork 1.4k
esb: fix radio staying in RX when no pending send requests #25089
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
base: main
Are you sure you want to change the base?
esb: fix radio staying in RX when no pending send requests #25089
Conversation
2e660ca
to
a9c0692
Compare
CI InformationTo view the history of this post, clich the 'edited' button above Inputs:Sources:sdk-nrf: PR head: ba4a8c6851657f5929491e75e53eec69345a0bae more detailssdk-nrf:
Github labels
List of changed files detected by CI (1)
Outputs:ToolchainVersion: 46667c6630 Test Spec & Results: ✅ Success; ❌ Failure; 🟠 Queued; 🟡 Progress; ◻️ Skipped;
|
a9c0692
to
96e98f0
Compare
96e98f0
to
5841871
Compare
subsys/esb/esb.c
Outdated
nrf_radio_packetptr_set(NRF_RADIO, rx_payload_buffer); | ||
if (fast_switching) { | ||
nrf_radio_int_disable(NRF_RADIO, ESB_RADIO_INT_END_MASK); | ||
nrf_radio_event_clear(NRF_RADIO, ESB_RADIO_EVENT_END); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think event clear after disabling interrupt is needed.
|
||
if (fast_switching) { | ||
nrf_radio_int_disable(NRF_RADIO, ESB_RADIO_INT_END_MASK); | ||
nrf_radio_event_clear(NRF_RADIO, ESB_RADIO_EVENT_END); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think disabling interrupt here is needed as it was already disabled in line 1410. Similarly event clear after disabling interrupt is not needed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, I copied together int_disable
and event_clear
just to be sure. At this point interrupt should be already disabled.
Regarding event_clear
- it is needed here. Radio has still an old END event active here, since it was never cleared. When we enable interrupt later, it will trigger invalid interrupt immediately based on old END event.
When fast switching is enabled, the radio stays in RXIDLE state even if there are no more packets to send because SW part switches to idle state to early, before radio gets to a DISABLED state. Ref: NCSDK-35281 Signed-off-by: Dominik Kilian <[email protected]>
5841871
to
ba4a8c6
Compare
When fast switching is enabled, the radio stays in RXIDLE state even if there are no more packets to send because SW part switches to idle state to early, before radio gets to a DISABLED state.
Ref: NCSDK-35281