From 3d7914783f4a8b271728b361abcab1c5c7d45da4 Mon Sep 17 00:00:00 2001 From: nbd Date: Wed, 29 Sep 2010 15:16:13 +0000 Subject: ath9k: fetch survey data for all channels git-svn-id: svn://svn.openwrt.org/openwrt/trunk@23154 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../patches/515-ath9k_multi_channel_nf.patch | 40 ++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 package/mac80211/patches/515-ath9k_multi_channel_nf.patch (limited to 'package/mac80211/patches/515-ath9k_multi_channel_nf.patch') 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; -- cgit v1.2.3