summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c2
-rw-r--r--drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c7
2 files changed, 8 insertions, 1 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c
index e754960a0c72..a87f14184853 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c
@@ -123,7 +123,9 @@ static void brcmf_sdio_irqhandler(struct sdio_func *func)
brcmf_dbg(INTR, "ib intr triggered\n");
+ sdio_release_host(sdiodev->func[1]);
brcmf_sdbrcm_isr(sdiodev->bus);
+ sdio_claim_host(sdiodev->func[1]);
}
/* dummy handler for SDIO function 2 interrupt */
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c b/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
index 36abea21976e..0d23b8d4abe8 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
@@ -2349,7 +2349,7 @@ static bool brcmf_sdbrcm_dpc(struct brcmf_sdio *bus)
uint framecnt = 0; /* Temporary counter of tx/rx frames */
bool rxdone = true; /* Flag for no more read data */
bool resched = false; /* Flag indicating resched wanted */
- int err;
+ int err = 0;
brcmf_dbg(TRACE, "Enter\n");
@@ -3526,11 +3526,16 @@ void brcmf_sdbrcm_isr(void *arg)
if (!bus->intr)
brcmf_dbg(ERROR, "isr w/o interrupt configured!\n");
+#ifndef CONFIG_BRCMFMAC_SDIO_OOB
+ while (brcmf_sdbrcm_dpc(bus))
+ ;
+#else
bus->dpc_sched = true;
if (bus->dpc_tsk) {
brcmf_sdbrcm_adddpctsk(bus);
complete(&bus->dpc_wait);
}
+#endif
}
static bool brcmf_sdbrcm_bus_watchdog(struct brcmf_sdio *bus)