From: Peng Xu Date: Wed, 22 Feb 2017 22:05:35 +0000 (-0800) Subject: hostapd: Get channel number from frequency based on other modes as well X-Git-Tag: hostap_2_7~1537 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5b9f46df0e19111a64c6036df59076f879777988;p=thirdparty%2Fhostap.git hostapd: Get channel number from frequency based on other modes as well When getting the channel number from a frequency, all supported modes should be checked rather than just the current mode. This is needed when hostapd switches to a channel in different band. Signed-off-by: Jouni Malinen --- diff --git a/src/ap/hw_features.c b/src/ap/hw_features.c index 2d6cef1af..93d923af5 100644 --- a/src/ap/hw_features.c +++ b/src/ap/hw_features.c @@ -909,5 +909,19 @@ int hostapd_hw_get_freq(struct hostapd_data *hapd, int chan) int hostapd_hw_get_channel(struct hostapd_data *hapd, int freq) { - return hw_get_chan(hapd->iface->current_mode, freq); + int i, channel; + struct hostapd_hw_modes *mode; + + channel = hw_get_chan(hapd->iface->current_mode, freq); + if (channel) + return channel; + /* Check other available modes since the channel list for the current + * mode did not include the specified frequency. */ + for (i = 0; i < hapd->iface->num_hw_features; i++) { + mode = &hapd->iface->hw_features[i]; + channel = hw_get_chan(mode, freq); + if (channel) + return channel; + } + return 0; }