mac80211: brcm: backport first set of 5.4 brcmfmac changes
[openwrt/openwrt.git] / package / kernel / mac80211 / patches / brcm / 103-v5.4-0001-brcmfmac-add-160MHz-in-chandef_to_chanspec.patch
1 From 46f24cd5980de4302982d38ebb6620560ead10b3 Mon Sep 17 00:00:00 2001
2 From: Arend van Spriel <arend.vanspriel@broadcom.com>
3 Date: Thu, 11 Jul 2019 10:45:30 +0200
4 Subject: [PATCH 1/3] brcmfmac: add 160MHz in chandef_to_chanspec()
5
6 The function chandef_to_chanspec() was not handling 160MHz bandwidth
7 resulting in wrong encoding of the channel. That resulting in firmware
8 rejecting the provided channel specification.
9
10 Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
11 Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
12 Reviewed-by: Franky Lin <franky.lin@broadcom.com>
13 Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
14 ---
15 .../broadcom/brcm80211/brcmfmac/cfg80211.c | 21 ++++++++++++++++++-
16 1 file changed, 20 insertions(+), 1 deletion(-)
17
18 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
19 +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
20 @@ -276,8 +276,26 @@ static u16 chandef_to_chanspec(struct br
21 else
22 ch_inf.sb = BRCMU_CHAN_SB_UU;
23 break;
24 - case NL80211_CHAN_WIDTH_80P80:
25 case NL80211_CHAN_WIDTH_160:
26 + ch_inf.bw = BRCMU_CHAN_BW_160;
27 + if (primary_offset == -70)
28 + ch_inf.sb = BRCMU_CHAN_SB_LLL;
29 + else if (primary_offset == -50)
30 + ch_inf.sb = BRCMU_CHAN_SB_LLU;
31 + else if (primary_offset == -30)
32 + ch_inf.sb = BRCMU_CHAN_SB_LUL;
33 + else if (primary_offset == -10)
34 + ch_inf.sb = BRCMU_CHAN_SB_LUU;
35 + else if (primary_offset == 10)
36 + ch_inf.sb = BRCMU_CHAN_SB_ULL;
37 + else if (primary_offset == 30)
38 + ch_inf.sb = BRCMU_CHAN_SB_ULU;
39 + else if (primary_offset == 50)
40 + ch_inf.sb = BRCMU_CHAN_SB_UUL;
41 + else
42 + ch_inf.sb = BRCMU_CHAN_SB_UUU;
43 + break;
44 + case NL80211_CHAN_WIDTH_80P80:
45 case NL80211_CHAN_WIDTH_5:
46 case NL80211_CHAN_WIDTH_10:
47 default:
48 @@ -296,6 +314,7 @@ static u16 chandef_to_chanspec(struct br
49 }
50 d11inf->encchspec(&ch_inf);
51
52 + brcmf_dbg(TRACE, "chanspec: 0x%x\n", ch_inf.chspec);
53 return ch_inf.chspec;
54 }
55