brcmfmac: handle 80MHz chanspecs in construct_reg_info() function
The device is queried about the usability of channels, but it did not take 80MHz channels into consideration. This patch adds processing those chanspecs and clear the NO_80MHZ flag for those control/primary channels. Reviewed-by: Daniel (Deognyoun) Kim <dekim@broadcom.com> Reviewed-by: Franky Lin <frankyl@broadcom.com> Reviewed-by: Hante Meuleman <meuleman@broadcom.com> Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com> Signed-off-by: Arend van Spriel <arend@broadcom.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>wifi-calibration
parent
06c01585ee
commit
ee942ecc42
|
@ -5191,6 +5191,9 @@ static s32 brcmf_construct_reginfo(struct brcmf_cfg80211_info *cfg,
|
|||
if (!(bw_cap[band] & WLC_BW_40MHZ_BIT) &&
|
||||
ch.bw == BRCMU_CHAN_BW_40)
|
||||
continue;
|
||||
if (!(bw_cap[band] & WLC_BW_80MHZ_BIT) &&
|
||||
ch.bw == BRCMU_CHAN_BW_80)
|
||||
continue;
|
||||
update = false;
|
||||
for (j = 0; (j < *n_cnt && (*n_cnt < array_size)); j++) {
|
||||
if (band_chan_arr[j].hw_value == ch.chnum) {
|
||||
|
@ -5207,10 +5210,13 @@ static s32 brcmf_construct_reginfo(struct brcmf_cfg80211_info *cfg,
|
|||
ieee80211_channel_to_frequency(ch.chnum, band);
|
||||
band_chan_arr[index].hw_value = ch.chnum;
|
||||
|
||||
if (ch.bw == BRCMU_CHAN_BW_40) {
|
||||
/* assuming the order is HT20, HT40 Upper,
|
||||
* HT40 lower from chanspecs
|
||||
*/
|
||||
/* assuming the chanspecs order is HT20,
|
||||
* HT40 upper, HT40 lower, and VHT80.
|
||||
*/
|
||||
if (ch.bw == BRCMU_CHAN_BW_80) {
|
||||
band_chan_arr[index].flags &=
|
||||
~IEEE80211_CHAN_NO_80MHZ;
|
||||
} else if (ch.bw == BRCMU_CHAN_BW_40) {
|
||||
ht40_flag = band_chan_arr[index].flags &
|
||||
IEEE80211_CHAN_NO_HT40;
|
||||
if (ch.sb == BRCMU_CHAN_SB_U) {
|
||||
|
@ -5231,8 +5237,13 @@ static s32 brcmf_construct_reginfo(struct brcmf_cfg80211_info *cfg,
|
|||
IEEE80211_CHAN_NO_HT40MINUS;
|
||||
}
|
||||
} else {
|
||||
/* disable other bandwidths for now as mentioned
|
||||
* order assure they are enabled for subsequent
|
||||
* chanspecs.
|
||||
*/
|
||||
band_chan_arr[index].flags =
|
||||
IEEE80211_CHAN_NO_HT40;
|
||||
IEEE80211_CHAN_NO_HT40 |
|
||||
IEEE80211_CHAN_NO_80MHZ;
|
||||
ch.bw = BRCMU_CHAN_BW_20;
|
||||
cfg->d11inf.encchspec(&ch);
|
||||
channel = ch.chspec;
|
||||
|
|
Loading…
Reference in New Issue