]> www.infradead.org Git - users/willy/xarray.git/commitdiff
brcmfmac: add 160MHz in chandef_to_chanspec()
authorArend van Spriel <arend.vanspriel@broadcom.com>
Thu, 11 Jul 2019 08:45:30 +0000 (10:45 +0200)
committerKalle Valo <kvalo@codeaurora.org>
Wed, 24 Jul 2019 11:49:52 +0000 (14:49 +0300)
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>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c

index b6d0df354b3651719433d4f5a03acf2e75807f59..5168d42a331e1f25ef7b56d76637757ad793d1d7 100644 (file)
@@ -276,8 +276,26 @@ static u16 chandef_to_chanspec(struct brcmu_d11inf *d11inf,
                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:
@@ -296,6 +314,7 @@ static u16 chandef_to_chanspec(struct brcmu_d11inf *d11inf,
        }
        d11inf->encchspec(&ch_inf);
 
+       brcmf_dbg(TRACE, "chanspec: 0x%x\n", ch_inf.chspec);
        return ch_inf.chspec;
 }