@@ -2791,8 +2791,13 @@ static void ieee80211_rx_bss_info(struct ieee80211_sub_if_data *sdata,
sdata_assert_lock(sdata);
channel = ieee80211_get_channel(local->hw.wiphy, rx_status->freq);
- if (!channel)
- return;
+ if (!channel && elems->ds_params) {
+ int freq = ieee80211_channel_to_frequency(elems->ds_params[0],
+ rx_status->band);
+ channel = ieee80211_get_channel(local->hw.wiphy, freq);
+ if (!channel || channel->flags & IEEE80211_CHAN_DISABLED)
+ return;
+ }
bss = ieee80211_bss_info_update(local, rx_status, mgmt, len, elems,
channel);