1 From f491645f039420fb7e14283e21b90772571c807c 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] brcmfmac: add 160MHz in chandef_to_chanspec()
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.
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 Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
16 .../broadcom/brcm80211/brcmfmac/cfg80211.c | 21 ++++++++++++++++++-
17 1 file changed, 20 insertions(+), 1 deletion(-)
19 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
20 +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
21 @@ -287,8 +287,26 @@ static u16 chandef_to_chanspec(struct br
23 ch_inf.sb = BRCMU_CHAN_SB_UU;
25 - case NL80211_CHAN_WIDTH_80P80:
26 case NL80211_CHAN_WIDTH_160:
27 + ch_inf.bw = BRCMU_CHAN_BW_160;
28 + if (primary_offset == -70)
29 + ch_inf.sb = BRCMU_CHAN_SB_LLL;
30 + else if (primary_offset == -50)
31 + ch_inf.sb = BRCMU_CHAN_SB_LLU;
32 + else if (primary_offset == -30)
33 + ch_inf.sb = BRCMU_CHAN_SB_LUL;
34 + else if (primary_offset == -10)
35 + ch_inf.sb = BRCMU_CHAN_SB_LUU;
36 + else if (primary_offset == 10)
37 + ch_inf.sb = BRCMU_CHAN_SB_ULL;
38 + else if (primary_offset == 30)
39 + ch_inf.sb = BRCMU_CHAN_SB_ULU;
40 + else if (primary_offset == 50)
41 + ch_inf.sb = BRCMU_CHAN_SB_UUL;
43 + ch_inf.sb = BRCMU_CHAN_SB_UUU;
45 + case NL80211_CHAN_WIDTH_80P80:
46 case NL80211_CHAN_WIDTH_5:
47 case NL80211_CHAN_WIDTH_10:
49 @@ -307,6 +325,7 @@ static u16 chandef_to_chanspec(struct br
51 d11inf->encchspec(&ch_inf);
53 + brcmf_dbg(TRACE, "chanspec: 0x%x\n", ch_inf.chspec);