diff options
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c | 7 |
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) |