diff options
Diffstat (limited to 'package/mac80211/patches/515-ath9k_multi_channel_nf.patch')
-rw-r--r-- | package/mac80211/patches/515-ath9k_multi_channel_nf.patch | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/package/mac80211/patches/515-ath9k_multi_channel_nf.patch b/package/mac80211/patches/515-ath9k_multi_channel_nf.patch new file mode 100644 index 000000000..468da97ef --- /dev/null +++ b/package/mac80211/patches/515-ath9k_multi_channel_nf.patch @@ -0,0 +1,40 @@ +--- a/drivers/net/wireless/ath/ath9k/main.c ++++ b/drivers/net/wireless/ath/ath9k/main.c +@@ -1995,16 +1995,31 @@ static int ath9k_get_survey(struct ieee8 + struct ath_wiphy *aphy = hw->priv; + struct ath_softc *sc = aphy->sc; + struct ath_hw *ah = sc->sc_ah; +- struct ieee80211_conf *conf = &hw->conf; ++ struct ieee80211_supported_band *sband; ++ struct ath9k_channel *chan; + +- if (idx != 0) +- return -ENOENT; ++ sband = hw->wiphy->bands[IEEE80211_BAND_2GHZ]; ++ if (sband && idx >= sband->n_channels) { ++ idx -= sband->n_channels; ++ sband = NULL; ++ } ++ ++ if (!sband) ++ sband = hw->wiphy->bands[IEEE80211_BAND_5GHZ]; ++ ++ if (idx >= sband->n_channels) ++ return -ENOENT; + +- survey->channel = conf->channel; ++ survey->channel = &sband->channels[idx]; ++ chan = &ah->channels[survey->channel->hw_value]; + survey->filled = 0; +- if (ah->curchan && ah->curchan->noisefloor) { ++ ++ if (chan == ah->curchan) ++ survey->filled |= SURVEY_INFO_IN_USE; ++ ++ if (chan->noisefloor) { + survey->filled |= SURVEY_INFO_NOISE_DBM; +- survey->noise = ah->curchan->noisefloor; ++ survey->noise = chan->noisefloor; + } + + return 0; |