This is an automated email from the ASF dual-hosted git repository. xiaoxiang781216 pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nuttx.git
commit f84d1ab760a0e923d757f334c9a26bc3af7898c8 Author: raiden00pl <[email protected]> AuthorDate: Thu Oct 22 16:47:48 2026 +0200 drivers/wireless/ieee802154/mrf24j40: drop a frame when no IOB is free The RX worker waited for an IOB with the reception disabled, so the radio stopped receiving and acknowledging for good once the IOBs ran out. Assisted-by: Claude Code Signed-off-by: raiden00pl <[email protected]> --- drivers/wireless/ieee802154/mrf24j40/mrf24j40_interrupt.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/drivers/wireless/ieee802154/mrf24j40/mrf24j40_interrupt.c b/drivers/wireless/ieee802154/mrf24j40/mrf24j40_interrupt.c index 7b5169c7711..df0362f12c2 100644 --- a/drivers/wireless/ieee802154/mrf24j40/mrf24j40_interrupt.c +++ b/drivers/wireless/ieee802154/mrf24j40/mrf24j40_interrupt.c @@ -230,10 +230,17 @@ static void mrf24j40_irqwork_rx(FAR struct mrf24j40_radio_s *dev) primitive->type = IEEE802154_PRIMITIVE_IND_DATA; - /* Allocate an IOB to put the frame into */ + /* Allocate an IOB to put the frame into, do not wait with the reception + * disabled + */ - ind->frame = iob_alloc(false); - DEBUGASSERT(ind->frame != NULL); + ind->frame = iob_tryalloc(false); + if (ind->frame == NULL) + { + wlerr("ERROR: Unable to allocate IOB. Discarding frame\n"); + ieee802154_primitive_free(primitive); + goto done; + } /* Read packet */
