DPP2: Fix channel 6 inclusion for chirping with non-2 GHz interfaces
When the driver provides a list of supported modes, hostapd ended up
adding channel 6 even if the 2.4 GHz mode was not included. This
resulted in incorrect behavior of trying to transmit on a not supported
channel in case of 5 GHz only radios.
Fix this by adding the channel 6 by default only if the driver does not
provide a list of supported modes. Whenever the supported modes are
available, only add this channel if it is explicitly listed as an
enabled channel.
This is similar to an earlier wpa_supplicant change in commit
8e5739c3ac
("DPP2: Check channel 6 validity before adding it to chirp
channel list").
Signed-off-by: Disha Das <dishad@codeaurora.org>
This commit is contained in:
parent
84b3de8095
commit
1071f75395
1 changed files with 16 additions and 1 deletions
|
@ -2387,6 +2387,7 @@ hostapd_dpp_chirp_scan_res_handler(struct hostapd_iface *iface)
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
struct hostapd_hw_modes *mode;
|
struct hostapd_hw_modes *mode;
|
||||||
int c;
|
int c;
|
||||||
|
bool chan6 = hapd->iface->hw_features == NULL;
|
||||||
|
|
||||||
if (!bi)
|
if (!bi)
|
||||||
return;
|
return;
|
||||||
|
@ -2406,7 +2407,21 @@ hostapd_dpp_chirp_scan_res_handler(struct hostapd_iface *iface)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Preferred chirping channels */
|
/* Preferred chirping channels */
|
||||||
int_array_add_unique(&hapd->dpp_chirp_freqs, 2437);
|
mode = dpp_get_mode(hapd, HOSTAPD_MODE_IEEE80211G);
|
||||||
|
if (mode) {
|
||||||
|
for (c = 0; c < mode->num_channels; c++) {
|
||||||
|
struct hostapd_channel_data *chan = &mode->channels[c];
|
||||||
|
|
||||||
|
if (chan->flag & (HOSTAPD_CHAN_DISABLED |
|
||||||
|
HOSTAPD_CHAN_RADAR) ||
|
||||||
|
chan->freq != 2437)
|
||||||
|
continue;
|
||||||
|
chan6 = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (chan6)
|
||||||
|
int_array_add_unique(&hapd->dpp_chirp_freqs, 2437);
|
||||||
|
|
||||||
mode = dpp_get_mode(hapd, HOSTAPD_MODE_IEEE80211A);
|
mode = dpp_get_mode(hapd, HOSTAPD_MODE_IEEE80211A);
|
||||||
if (mode) {
|
if (mode) {
|
||||||
|
|
Loading…
Reference in a new issue