DFS: Change vht_capab according to user requested bandwidth

There are different CHAN_SWITCH flows for DFS and non-DFS channels.
Non-DFS one saves previous BW value in iface->conf, but DFS flow
replaces it with a new user requested value. Setting a non-DFS channel
after a DFS one with BW = 160 would have resulted in a mismatch between
the saved BW and vht_capab (if VHT160 was not included by default). This
would have led to a check fail in the hostapd_set_freq_params()
function.

Signed-off-by: Dmitrijs Martinovs <dmartinovs@maxlinear.com>
This commit is contained in:
Dmitrijs Martinovs 2023-12-07 11:59:10 +02:00 committed by Jouni Malinen
parent 9579d4eff9
commit 7dd7ae965a

View file

@ -4103,13 +4103,17 @@ hostapd_switch_channel_fallback(struct hostapd_iface *iface,
bw = CONF_OPER_CHWIDTH_USE_HT; bw = CONF_OPER_CHWIDTH_USE_HT;
break; break;
case 80: case 80:
if (freq_params->center_freq2) if (freq_params->center_freq2) {
bw = CONF_OPER_CHWIDTH_80P80MHZ; bw = CONF_OPER_CHWIDTH_80P80MHZ;
else iface->conf->vht_capab |=
VHT_CAP_SUPP_CHAN_WIDTH_160_80PLUS80MHZ;
} else {
bw = CONF_OPER_CHWIDTH_80MHZ; bw = CONF_OPER_CHWIDTH_80MHZ;
}
break; break;
case 160: case 160:
bw = CONF_OPER_CHWIDTH_160MHZ; bw = CONF_OPER_CHWIDTH_160MHZ;
iface->conf->vht_capab |= VHT_CAP_SUPP_CHAN_WIDTH_160MHZ;
break; break;
case 320: case 320:
bw = CONF_OPER_CHWIDTH_320MHZ; bw = CONF_OPER_CHWIDTH_320MHZ;