diff --git a/src/add-ons/kernel/drivers/network/wlan/broadcom43xx/dev/bwi/if_bwi.c b/src/add-ons/kernel/drivers/network/wlan/broadcom43xx/dev/bwi/if_bwi.c index 2c442c0d2d..fefc55b931 100644 --- a/src/add-ons/kernel/drivers/network/wlan/broadcom43xx/dev/bwi/if_bwi.c +++ b/src/add-ons/kernel/drivers/network/wlan/broadcom43xx/dev/bwi/if_bwi.c @@ -1581,9 +1581,6 @@ bwi_intr(void *xsc) BWI_UNLOCK(sc); return; } -#else - intr_status = atomic_get((int32 *)&sc->sc_intr_status); -#endif DPRINTF(sc, BWI_DBG_INTR, "intr status 0x%08x\n", intr_status); @@ -1592,6 +1589,9 @@ bwi_intr(void *xsc) BWI_UNLOCK(sc); return; } +#else + intr_status = atomic_get((int32 *)&sc->sc_intr_status); +#endif KASSERT(sc->sc_cur_regwin->rw_type == BWI_REGWIN_T_MAC, ("current regwin type %d", sc->sc_cur_regwin->rw_type)); diff --git a/src/add-ons/kernel/drivers/network/wlan/broadcom43xx/glue.c b/src/add-ons/kernel/drivers/network/wlan/broadcom43xx/glue.c index fb14b3cd39..e71e0174e5 100644 --- a/src/add-ons/kernel/drivers/network/wlan/broadcom43xx/glue.c +++ b/src/add-ons/kernel/drivers/network/wlan/broadcom43xx/glue.c @@ -44,6 +44,12 @@ HAIKU_CHECK_DISABLE_INTERRUPTS(device_t dev) return 0; } + intr_status &= CSR_READ_4(sc, BWI_MAC_INTR_MASK); + if (intr_status == 0) { + // nothing interesting + return 0; + } + atomic_set((int32*)&sc->sc_intr_status, intr_status); CSR_CLRBITS_4(sc, BWI_MAC_INTR_MASK, BWI_ALL_INTRS);