diff options
author | Rafał Miłecki <zajec5@gmail.com> | 2015-04-24 10:45:33 +0000 |
---|---|---|
committer | Rafał Miłecki <zajec5@gmail.com> | 2015-04-24 10:45:33 +0000 |
commit | c1a7e135873d5def34db3b9393e18241a8cf3231 (patch) | |
tree | bb70f57269d74d2950c773774a931b202d361684 /package/kernel/mac80211/patches/335-brcmfmac-Fix-oops-when-SDIO-device-is-removed.patch | |
parent | 33e597b2417e2bc12559333f1c5374778935a8e1 (diff) | |
download | upstream-c1a7e135873d5def34db3b9393e18241a8cf3231.tar.gz upstream-c1a7e135873d5def34db3b9393e18241a8cf3231.tar.bz2 upstream-c1a7e135873d5def34db3b9393e18241a8cf3231.zip |
mac80211: update brcmfmac to the wireless-drivers-next-for-davem-2015-04-09
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
SVN-Revision: 45576
Diffstat (limited to 'package/kernel/mac80211/patches/335-brcmfmac-Fix-oops-when-SDIO-device-is-removed.patch')
-rw-r--r-- | package/kernel/mac80211/patches/335-brcmfmac-Fix-oops-when-SDIO-device-is-removed.patch | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/335-brcmfmac-Fix-oops-when-SDIO-device-is-removed.patch b/package/kernel/mac80211/patches/335-brcmfmac-Fix-oops-when-SDIO-device-is-removed.patch new file mode 100644 index 0000000000..5e63a803b0 --- /dev/null +++ b/package/kernel/mac80211/patches/335-brcmfmac-Fix-oops-when-SDIO-device-is-removed.patch @@ -0,0 +1,44 @@ +From: Hante Meuleman <meuleman@broadcom.com> +Date: Fri, 6 Mar 2015 18:40:38 +0100 +Subject: [PATCH] brcmfmac: Fix oops when SDIO device is removed. + +On removal of SDIO card both functions of card will be getting +a remove call. When the first is hanging in ctrl frame xmit then +the second will cause oops. This patch fixes the xmit ctrl +handling in case of serious errors and also limits the handling +for remove to function 1 only. + +Reviewed-by: Arend Van Spriel <arend@broadcom.com> +Reviewed-by: Franky (Zhenhui) Lin <frankyl@broadcom.com> +Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com> +Reviewed-by: Daniel (Deognyoun) Kim <dekim@broadcom.com> +Signed-off-by: Hante Meuleman <meuleman@broadcom.com> +Signed-off-by: Arend van Spriel <arend@broadcom.com> +Signed-off-by: Kalle Valo <kvalo@codeaurora.org> +--- + +--- a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c ++++ b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c +@@ -1194,7 +1194,7 @@ static void brcmf_ops_sdio_remove(struct + brcmf_dbg(SDIO, "sdio device ID: 0x%04x\n", func->device); + brcmf_dbg(SDIO, "Function: %d\n", func->num); + +- if (func->num != 1 && func->num != 2) ++ if (func->num != 1) + return; + + bus_if = dev_get_drvdata(&func->dev); +--- a/drivers/net/wireless/brcm80211/brcmfmac/sdio.c ++++ b/drivers/net/wireless/brcm80211/brcmfmac/sdio.c +@@ -2740,6 +2740,11 @@ static void brcmf_sdio_dpc(struct brcmf_ + if ((bus->sdiodev->state != BRCMF_SDIOD_DATA) || (err != 0)) { + brcmf_err("failed backplane access over SDIO, halting operation\n"); + atomic_set(&bus->intstatus, 0); ++ if (bus->ctrl_frame_stat) { ++ bus->ctrl_frame_err = -ENODEV; ++ bus->ctrl_frame_stat = false; ++ brcmf_sdio_wait_event_wakeup(bus); ++ } + } else if (atomic_read(&bus->intstatus) || + atomic_read(&bus->ipend) > 0 || + (!atomic_read(&bus->fcstate) && |