diff options
author | Rafał Miłecki <zajec5@gmail.com> | 2016-01-10 00:19:09 +0000 |
---|---|---|
committer | Rafał Miłecki <zajec5@gmail.com> | 2016-01-10 00:19:09 +0000 |
commit | 615ff23d4f635cfefaf2960cd9233e540b1eaab5 (patch) | |
tree | 8e7d919264803bbeb0435dfa5e65974bb0b49739 /package/kernel/mac80211/patches/370-0004-brcmfmac-Only-assign-primary-netdev-to-if2bss-array.patch | |
parent | 8e2500205b6c8aa1332baa5db4a5194c911c1334 (diff) | |
download | upstream-615ff23d4f635cfefaf2960cd9233e540b1eaab5.tar.gz upstream-615ff23d4f635cfefaf2960cd9233e540b1eaab5.tar.bz2 upstream-615ff23d4f635cfefaf2960cd9233e540b1eaab5.zip |
mac80211: brcmfmac: fix getting/setting TX power
This patches also adds BCM4366 support which may be found on some new
routers based on BCM47094 or BCM4709C0. Unfortunately firmware is still
missing for this chipset.
git-svn-id: svn://svn.openwrt.org/openwrt/branches/chaos_calmer@48166 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/kernel/mac80211/patches/370-0004-brcmfmac-Only-assign-primary-netdev-to-if2bss-array.patch')
-rw-r--r-- | package/kernel/mac80211/patches/370-0004-brcmfmac-Only-assign-primary-netdev-to-if2bss-array.patch | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/370-0004-brcmfmac-Only-assign-primary-netdev-to-if2bss-array.patch b/package/kernel/mac80211/patches/370-0004-brcmfmac-Only-assign-primary-netdev-to-if2bss-array.patch new file mode 100644 index 0000000000..c51365fe29 --- /dev/null +++ b/package/kernel/mac80211/patches/370-0004-brcmfmac-Only-assign-primary-netdev-to-if2bss-array.patch @@ -0,0 +1,73 @@ +From: Hante Meuleman <meuleman@broadcom.com> +Date: Fri, 18 Sep 2015 22:08:07 +0200 +Subject: [PATCH] brcmfmac: Only assign primary netdev to if2bss array. + +The if2bss allows for translation of ifidx to bssidx which has a 1:n +relation. Therefor only the first (primary) netdev should be +assigned in this array. This fixes the p2pon=1 module param usage. + +Reviewed-by: Arend Van Spriel <arend@broadcom.com> +Reviewed-by: Pieter-Paul Giesberts <pieterpg@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/core.c ++++ b/drivers/net/wireless/brcm80211/brcmfmac/core.c +@@ -53,6 +53,8 @@ MODULE_LICENSE("Dual BSD/GPL"); + #define BRCMF_RXREORDER_EXPIDX_VALID 0x08 + #define BRCMF_RXREORDER_NEW_HOLE 0x10 + ++#define BRCMF_BSSIDX_INVALID -1 ++ + /* Error bits */ + int brcmf_msg_level; + module_param_named(debug, brcmf_msg_level, int, S_IRUSR | S_IWUSR); +@@ -837,7 +839,8 @@ struct brcmf_if *brcmf_add_if(struct brc + ifp = netdev_priv(ndev); + ifp->ndev = ndev; + /* store mapping ifidx to bssidx */ +- drvr->if2bss[ifidx] = bssidx; ++ if (drvr->if2bss[ifidx] == BRCMF_BSSIDX_INVALID) ++ drvr->if2bss[ifidx] = bssidx; + } + + ifp->drvr = drvr; +@@ -862,15 +865,15 @@ static void brcmf_del_if(struct brcmf_pu + struct brcmf_if *ifp; + + ifp = drvr->iflist[bssidx]; +- drvr->if2bss[ifp->ifidx] = -1; + drvr->iflist[bssidx] = NULL; + if (!ifp) { + brcmf_err("Null interface, idx=%d\n", bssidx); + return; + } + brcmf_dbg(TRACE, "Enter, idx=%d, ifidx=%d\n", bssidx, ifp->ifidx); ++ if (drvr->if2bss[ifp->ifidx] == bssidx) ++ drvr->if2bss[ifp->ifidx] = BRCMF_BSSIDX_INVALID; + if (ifp->ndev) { +- drvr->if2bss[ifp->ifidx] = -1; + if (bssidx == 0) { + if (ifp->ndev->netdev_ops == &brcmf_netdev_ops_pri) { + rtnl_lock(); +@@ -926,6 +929,7 @@ int brcmf_attach(struct device *dev) + { + struct brcmf_pub *drvr = NULL; + int ret = 0; ++ int i; + + brcmf_dbg(TRACE, "Enter\n"); + +@@ -934,7 +938,9 @@ int brcmf_attach(struct device *dev) + if (!drvr) + return -ENOMEM; + +- memset(drvr->if2bss, 0xFF, sizeof(drvr->if2bss)); ++ for (i = 0; i < ARRAY_SIZE(drvr->if2bss); i++) ++ drvr->if2bss[i] = BRCMF_BSSIDX_INVALID; ++ + mutex_init(&drvr->proto_block); + + /* Link to bus module */ |