wifi: mt76: fix 6GHz high channel not be scanned
[ Upstream commit23792cedaf
] mt76 scan command only support 64 channels currently. If the channel count is larger than 64(for 2+5+6GHz), some channels will not be scanned. Hence change the scan type to full channel scan in case of the command cannot include proper list for chip. Fixes:399090ef96
("mt76: mt76_connac: move hw_scan and sched_scan routine in mt76_connac_mcu module") Reported-by: Ben Greear <greearb@candelatech.com> Tested-by: Isaac Konikoff <konikofi@candelatech.com> Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com> Signed-off-by: Deren Wu <deren.wu@mediatek.com> Signed-off-by: Felix Fietkau <nbd@nbd.name> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
Родитель
613b51663f
Коммит
f8923ad9dd
|
@ -1446,8 +1446,16 @@ int mt76_connac_mcu_hw_scan(struct mt76_phy *phy, struct ieee80211_vif *vif,
|
||||||
req->channel_min_dwell_time = cpu_to_le16(duration);
|
req->channel_min_dwell_time = cpu_to_le16(duration);
|
||||||
req->channel_dwell_time = cpu_to_le16(duration);
|
req->channel_dwell_time = cpu_to_le16(duration);
|
||||||
|
|
||||||
req->channels_num = min_t(u8, sreq->n_channels, 32);
|
if (sreq->n_channels == 0 || sreq->n_channels > 64) {
|
||||||
req->ext_channels_num = min_t(u8, ext_channels_num, 32);
|
req->channel_type = 0;
|
||||||
|
req->channels_num = 0;
|
||||||
|
req->ext_channels_num = 0;
|
||||||
|
} else {
|
||||||
|
req->channel_type = 4;
|
||||||
|
req->channels_num = min_t(u8, sreq->n_channels, 32);
|
||||||
|
req->ext_channels_num = min_t(u8, ext_channels_num, 32);
|
||||||
|
}
|
||||||
|
|
||||||
for (i = 0; i < req->channels_num + req->ext_channels_num; i++) {
|
for (i = 0; i < req->channels_num + req->ext_channels_num; i++) {
|
||||||
if (i >= 32)
|
if (i >= 32)
|
||||||
chan = &req->ext_channels[i - 32];
|
chan = &req->ext_channels[i - 32];
|
||||||
|
@ -1457,7 +1465,6 @@ int mt76_connac_mcu_hw_scan(struct mt76_phy *phy, struct ieee80211_vif *vif,
|
||||||
chan->band = scan_list[i]->band == NL80211_BAND_2GHZ ? 1 : 2;
|
chan->band = scan_list[i]->band == NL80211_BAND_2GHZ ? 1 : 2;
|
||||||
chan->channel_num = scan_list[i]->hw_value;
|
chan->channel_num = scan_list[i]->hw_value;
|
||||||
}
|
}
|
||||||
req->channel_type = sreq->n_channels ? 4 : 0;
|
|
||||||
|
|
||||||
if (sreq->ie_len > 0) {
|
if (sreq->ie_len > 0) {
|
||||||
memcpy(req->ies, sreq->ie, sreq->ie_len);
|
memcpy(req->ies, sreq->ie, sreq->ie_len);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче