Skip to content

drivers/at86rf215: always enable RX start IRQ after reset#22016

Open
benpicco wants to merge 1 commit intoRIOT-OS:masterfrom
benpicco:drivers/at86rf215-fix-IRQ_RXAM
Open

drivers/at86rf215: always enable RX start IRQ after reset#22016
benpicco wants to merge 1 commit intoRIOT-OS:masterfrom
benpicco:drivers/at86rf215-fix-IRQ_RXAM

Conversation

@benpicco
Copy link
Contributor

@benpicco benpicco commented Jan 26, 2026

Contribution description

I discovered an old bug report that RX start IRQs are not enabled again when waking from sleep - but this is easy to fix.

Testing procedure

still untested

Issues/PRs references

fixes #20505

@github-actions github-actions bot added the Area: drivers Area: Device drivers label Jan 26, 2026
@benpicco benpicco changed the title drivers/at86rf215: always enable RX start (address match) IRQ after r… drivers/at86rf215: always enable RX start IRQ after reset Jan 26, 2026
@benpicco benpicco requested a review from fabian18 January 26, 2026 13:37
@benpicco benpicco added Type: bug The issue reports a bug / The PR fixes a bug (including spelling errors) CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR labels Jan 26, 2026
@riot-ci
Copy link

riot-ci commented Jan 26, 2026

Murdock results

✔️ PASSED

5d6627a drivers/at86rf215: always enable RX start (address match) IRQ after reset

Success Failures Total Runtime
11003 0 11004 13m:48s

Artifacts

@leandrolanzieri
Copy link
Contributor

Looks good. I don't have the hardware at hand, any chance someone can test? @Lennart-Lutz I guess you don't have the setup around, right?

@fabian18
Copy link
Contributor

Maybe the IRQ happens IDK. But should I not see this print that I added?

    switch (dev->state) {
    case AT86RF215_STATE_IDLE:

        if (!(bb_irq_mask & (BB_IRQ_RXFE | BB_IRQ_RXAM))) {
            DEBUG("IDLE: only RXFE/RXAM expected (%x)\n", bb_irq_mask);
            break;
        }

        if (bb_irq_mask & BB_IRQ_RXAM) {
            printf("at86rf215: RX started\n");
            if (netdev->event_callback) {
                netdev->event_callback(netdev, NETDEV_EVENT_RX_STARTED);
            }
        }

@fabian18
Copy link
Contributor

Huh I see it without the fix after sleep and waking up. 🤔

ifconfig 7 set state sleep
2026-01-28 23:02:07,756 # ifconfig 7 set state sleep
2026-01-28 23:02:07,760 # success: set state of interface 7 to SLEEP
> ifconfig 7 set state rx
2026-01-28 23:02:11,207 # ifconfig 7 set state rx
2026-01-28 23:02:11,211 # AT86RF215 IRQ: RF 0x01 BB 0x00
2026-01-28 23:02:11,214 # success: set state of interface 7 to RX
> 2026-01-28 23:02:15,570 # AT86RF215 IRQ: RF 0x00 BB 0x47
2026-01-28 23:02:15,572 # at86rf215: RX started
2026-01-28 23:02:15,575 # AT86RF215 IRQ: RF 0x00 BB 0x10
2026-01-28 23:02:15,579 # AT86RF215 IRQ: RF 0x02 BB 0x00
2026-01-28 23:02:15,582 # AT86RF215 IRQ: RF 0x04 BB 0x00
2026-01-28 23:02:15,584 # AT86RF215 IRQ: RF 0x02 BB 0x00
2026-01-28 23:02:15,589 # AT86RF215 IRQ: RF 0x00 BB 0x10
2026-01-28 23:02:15,592 # AT86RF215 IRQ: RF 0x00 BB 0x43
2026-01-28 23:02:15,595 # AT86RF215 IRQ: RF 0x00 BB 0x00
2026-01-28 23:02:16,240 # AT86RF215 IRQ: RF 0x00 BB 0x47
2026-01-28 23:02:16,242 # at86rf215: RX started
2026-01-28 23:02:16,245 # AT86RF215 IRQ: RF 0x00 BB 0x10
2026-01-28 23:02:16,248 # AT86RF215 IRQ: RF 0x02 BB 0x00
2026-01-28 23:02:16,251 # AT86RF215 IRQ: RF 0x04 BB 0x00
2026-01-28 23:02:16,254 # AT86RF215 IRQ: RF 0x02 BB 0x00
2026-01-28 23:02:16,259 # AT86RF215 IRQ: RF 0x00 BB 0x10
2026-01-28 23:02:16,262 # AT86RF215 IRQ: RF 0x00 BB 0x43
2026-01-28 23:02:16,264 # AT86RF215 IRQ: RF 0x00 BB 0x00
2026-01-28 23:02:17,007 # AT86RF215 IRQ: RF 0x00 BB 0x47
2026-01-28 23:02:17,009 # at86rf215: RX started

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Area: drivers Area: Device drivers CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR Type: bug The issue reports a bug / The PR fixes a bug (including spelling errors)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

drivers/at86rf215: The activation of the address match interrupt is missing in the at86rf215_reset function

4 participants