diff options
author | Rafał Miłecki <zajec5@gmail.com> | 2016-01-09 18:37:55 +0000 |
---|---|---|
committer | Rafał Miłecki <zajec5@gmail.com> | 2016-01-09 18:37:55 +0000 |
commit | 437dd4cacf0e424048022c45ba4721534872e6b4 (patch) | |
tree | a2272fe98f0ce454bb68dcdb71795f2885981e23 /package/kernel/mac80211/patches/335-0001-brcmfmac-Fix-oops-when-SDIO-device-is-removed.patch | |
parent | b44228e69a372360adc6253c5ca09b68b51df58a (diff) | |
download | upstream-437dd4cacf0e424048022c45ba4721534872e6b4.tar.gz upstream-437dd4cacf0e424048022c45ba4721534872e6b4.tar.bz2 upstream-437dd4cacf0e424048022c45ba4721534872e6b4.zip |
mac80211: group brcmfmac patches into sets as they were sent
It doesn't change any single patch (or order), it only renames files.
This creates some place for more backports, as we were already using
398 prefix which left only 1 slot.
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
git-svn-id: svn://svn.openwrt.org/openwrt/branches/chaos_calmer@48163 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/kernel/mac80211/patches/335-0001-brcmfmac-Fix-oops-when-SDIO-device-is-removed.patch')
-rw-r--r-- | package/kernel/mac80211/patches/335-0001-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-0001-brcmfmac-Fix-oops-when-SDIO-device-is-removed.patch b/package/kernel/mac80211/patches/335-0001-brcmfmac-Fix-oops-when-SDIO-device-is-removed.patch new file mode 100644 index 0000000000..5e63a803b0 --- /dev/null +++ b/package/kernel/mac80211/patches/335-0001-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) && |