diff options
author | Rafał Miłecki <rafal@milecki.pl> | 2016-09-27 18:18:54 +0200 |
---|---|---|
committer | Rafał Miłecki <rafal@milecki.pl> | 2016-09-27 18:23:53 +0200 |
commit | a0ce6982d883a5fd222ef8e26aa60e12f198d439 (patch) | |
tree | 427fe0f631d8b6e258b5a0d4f9de8ca366a300ed /package/kernel/mac80211 | |
parent | 68d649f5cd9ee2f6fda00df7bde4b9074474becf (diff) | |
download | mtk-20170518-a0ce6982d883a5fd222ef8e26aa60e12f198d439.zip mtk-20170518-a0ce6982d883a5fd222ef8e26aa60e12f198d439.tar.gz mtk-20170518-a0ce6982d883a5fd222ef8e26aa60e12f198d439.tar.bz2 |
mac80211: backport brcmfmac changes from 2016-09-27
This fixes bug that could cause WARNING on every add_key/del_key call.
It also replaces WARNING with a simple message. They may still occur
e.g. on station going out of range and A-MPDU stall in the firmware.
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Diffstat (limited to 'package/kernel/mac80211')
3 files changed, 97 insertions, 1 deletions
diff --git a/package/kernel/mac80211/patches/319-0031-brcmfmac-replace-WARNING-on-timeout-with-a-simple-er.patch b/package/kernel/mac80211/patches/319-0031-brcmfmac-replace-WARNING-on-timeout-with-a-simple-er.patch new file mode 100644 index 0000000..1a48f1b --- /dev/null +++ b/package/kernel/mac80211/patches/319-0031-brcmfmac-replace-WARNING-on-timeout-with-a-simple-er.patch @@ -0,0 +1,38 @@ +From 2f0e56fa37cce60a5ac5d451bcadec51cd711436 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl> +Date: Tue, 27 Sep 2016 12:12:24 +0200 +Subject: [PATCH] brcmfmac: replace WARNING on timeout with a simple error + message +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Even with timeout increased to 950 ms we get WARNINGs from time to time. +It mostly happens on A-MPDU stalls (e.g. when station goes out of +range). It may take up to 5-10 secods for the firmware to recover and +for that time it doesn't process packets. + +It's still useful to have a message on time out as it may indicate some +firmware problem and incorrect key update. Raising a WARNING however +wasn't really that necessary, it doesn't point to any driver bug anymore +and backtrace wasn't much useful. + +Signed-off-by: Rafał Miłecki <rafal@milecki.pl> +Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com> +Signed-off-by: Kalle Valo <kvalo@codeaurora.org> +--- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c +@@ -1155,7 +1155,8 @@ int brcmf_netdev_wait_pend8021x(struct b + !brcmf_get_pend_8021x_cnt(ifp), + MAX_WAIT_FOR_8021X_TX); + +- WARN_ON(!err); ++ if (!err) ++ brcmf_err("Timed out waiting for no pending 802.1x packets\n"); + + return !err; + } diff --git a/package/kernel/mac80211/patches/319-0032-brcmfmac-use-correct-skb-freeing-helper-when-deletin.patch b/package/kernel/mac80211/patches/319-0032-brcmfmac-use-correct-skb-freeing-helper-when-deletin.patch new file mode 100644 index 0000000..91c5dd5 --- /dev/null +++ b/package/kernel/mac80211/patches/319-0032-brcmfmac-use-correct-skb-freeing-helper-when-deletin.patch @@ -0,0 +1,58 @@ +From 7f00ee2bbc630900ba16fc2690473f3e2db0e264 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl> +Date: Tue, 27 Sep 2016 14:11:04 +0200 +Subject: [PATCH] brcmfmac: use correct skb freeing helper when deleting + flowring +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Flowrings contain skbs waiting for transmission that were passed to us +by netif. It means we checked every one of them looking for 802.1x +Ethernet type. When deleting flowring we have to use freeing function +that will check for 802.1x type as well. + +Freeing skbs without a proper check was leading to counter not being +properly decreased. This was triggering a WARNING every time +brcmf_netdev_wait_pend8021x was called. + +Signed-off-by: Rafał Miłecki <rafal@milecki.pl> +Acked-by: Arend van Spriel <arend@broadcom.com> +Cc: stable@vger.kernel.org # 4.5+ +Signed-off-by: Kalle Valo <kvalo@codeaurora.org> +--- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c +@@ -234,13 +234,20 @@ static void brcmf_flowring_block(struct + + void brcmf_flowring_delete(struct brcmf_flowring *flow, u16 flowid) + { ++ struct brcmf_bus *bus_if = dev_get_drvdata(flow->dev); + struct brcmf_flowring_ring *ring; ++ struct brcmf_if *ifp; + u16 hash_idx; ++ u8 ifidx; + struct sk_buff *skb; + + ring = flow->rings[flowid]; + if (!ring) + return; ++ ++ ifidx = brcmf_flowring_ifidx_get(flow, flowid); ++ ifp = brcmf_get_ifp(bus_if->drvr, ifidx); ++ + brcmf_flowring_block(flow, flowid, false); + hash_idx = ring->hash_id; + flow->hash[hash_idx].ifidx = BRCMF_FLOWRING_INVALID_IFIDX; +@@ -249,7 +256,7 @@ void brcmf_flowring_delete(struct brcmf_ + + skb = skb_dequeue(&ring->skblist); + while (skb) { +- brcmu_pkt_buf_free_skb(skb); ++ brcmf_txfinalize(ifp, skb, false); + skb = skb_dequeue(&ring->skblist); + } + diff --git a/package/kernel/mac80211/patches/860-brcmfmac-register-wiphy-s-during-module_init.patch b/package/kernel/mac80211/patches/860-brcmfmac-register-wiphy-s-during-module_init.patch index f01dbe0..f7f44f5 100644 --- a/package/kernel/mac80211/patches/860-brcmfmac-register-wiphy-s-during-module_init.patch +++ b/package/kernel/mac80211/patches/860-brcmfmac-register-wiphy-s-during-module_init.patch @@ -13,7 +13,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c -@@ -1199,6 +1199,7 @@ int __init brcmf_core_init(void) +@@ -1200,6 +1200,7 @@ int __init brcmf_core_init(void) { if (!schedule_work(&brcmf_driver_work)) return -EBUSY; |