diff options
Diffstat (limited to 'package/kernel/mac80211/patches/351-v5.4-0001-brcmfmac-add-160MHz-in-chandef_to_chanspec.patch')
-rw-r--r-- | package/kernel/mac80211/patches/351-v5.4-0001-brcmfmac-add-160MHz-in-chandef_to_chanspec.patch | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/351-v5.4-0001-brcmfmac-add-160MHz-in-chandef_to_chanspec.patch b/package/kernel/mac80211/patches/351-v5.4-0001-brcmfmac-add-160MHz-in-chandef_to_chanspec.patch new file mode 100644 index 0000000000..a3a3006c90 --- /dev/null +++ b/package/kernel/mac80211/patches/351-v5.4-0001-brcmfmac-add-160MHz-in-chandef_to_chanspec.patch @@ -0,0 +1,55 @@ +From 46f24cd5980de4302982d38ebb6620560ead10b3 Mon Sep 17 00:00:00 2001 +From: Arend van Spriel <arend.vanspriel@broadcom.com> +Date: Thu, 11 Jul 2019 10:45:30 +0200 +Subject: [PATCH 1/3] brcmfmac: add 160MHz in chandef_to_chanspec() + +The function chandef_to_chanspec() was not handling 160MHz bandwidth +resulting in wrong encoding of the channel. That resulting in firmware +rejecting the provided channel specification. + +Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com> +Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com> +Reviewed-by: Franky Lin <franky.lin@broadcom.com> +Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com> +--- + .../broadcom/brcm80211/brcmfmac/cfg80211.c | 21 ++++++++++++++++++- + 1 file changed, 20 insertions(+), 1 deletion(-) + +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +@@ -287,8 +287,26 @@ static u16 chandef_to_chanspec(struct br + else + ch_inf.sb = BRCMU_CHAN_SB_UU; + break; +- case NL80211_CHAN_WIDTH_80P80: + case NL80211_CHAN_WIDTH_160: ++ ch_inf.bw = BRCMU_CHAN_BW_160; ++ if (primary_offset == -70) ++ ch_inf.sb = BRCMU_CHAN_SB_LLL; ++ else if (primary_offset == -50) ++ ch_inf.sb = BRCMU_CHAN_SB_LLU; ++ else if (primary_offset == -30) ++ ch_inf.sb = BRCMU_CHAN_SB_LUL; ++ else if (primary_offset == -10) ++ ch_inf.sb = BRCMU_CHAN_SB_LUU; ++ else if (primary_offset == 10) ++ ch_inf.sb = BRCMU_CHAN_SB_ULL; ++ else if (primary_offset == 30) ++ ch_inf.sb = BRCMU_CHAN_SB_ULU; ++ else if (primary_offset == 50) ++ ch_inf.sb = BRCMU_CHAN_SB_UUL; ++ else ++ ch_inf.sb = BRCMU_CHAN_SB_UUU; ++ break; ++ case NL80211_CHAN_WIDTH_80P80: + case NL80211_CHAN_WIDTH_5: + case NL80211_CHAN_WIDTH_10: + default: +@@ -307,6 +325,7 @@ static u16 chandef_to_chanspec(struct br + } + d11inf->encchspec(&ch_inf); + ++ brcmf_dbg(TRACE, "chanspec: 0x%x\n", ch_inf.chspec); + return ch_inf.chspec; + } + |