summaryrefslogtreecommitdiffstats
path: root/package/mac80211/patches/581-ath9k_report_missing_signal.patch
diff options
context:
space:
mode:
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2012-02-07 15:25:55 +0000
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2012-02-07 15:25:55 +0000
commitc993a44fa30a2419981ce5c921bd221ecf6a8d53 (patch)
tree2051c93afe05ab2457bfb388b5861cdb4b4601d7 /package/mac80211/patches/581-ath9k_report_missing_signal.patch
parentc7ddcfd108de99b375ca429bb9f79941634caddc (diff)
ath9k: ignore invalid signal strength values in a-mpdu packets, fixes average signal strength display fluctuations
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@30359 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/mac80211/patches/581-ath9k_report_missing_signal.patch')
-rw-r--r--package/mac80211/patches/581-ath9k_report_missing_signal.patch37
1 files changed, 37 insertions, 0 deletions
diff --git a/package/mac80211/patches/581-ath9k_report_missing_signal.patch b/package/mac80211/patches/581-ath9k_report_missing_signal.patch
new file mode 100644
index 000000000..7bf12ebd6
--- /dev/null
+++ b/package/mac80211/patches/581-ath9k_report_missing_signal.patch
@@ -0,0 +1,37 @@
+--- a/drivers/net/wireless/ath/ath9k/recv.c
++++ b/drivers/net/wireless/ath/ath9k/recv.c
+@@ -954,6 +954,7 @@ static void ath9k_process_rssi(struct at
+ struct ath_softc *sc = hw->priv;
+ struct ath_hw *ah = common->ah;
+ int last_rssi;
++ int rssi = rx_stats->rs_rssi;
+
+ if (!rx_stats->is_mybeacon ||
+ ((ah->opmode != NL80211_IFTYPE_STATION) &&
+@@ -965,13 +966,12 @@ static void ath9k_process_rssi(struct at
+
+ last_rssi = sc->last_rssi;
+ if (likely(last_rssi != ATH_RSSI_DUMMY_MARKER))
+- rx_stats->rs_rssi = ATH_EP_RND(last_rssi,
+- ATH_RSSI_EP_MULTIPLIER);
+- if (rx_stats->rs_rssi < 0)
+- rx_stats->rs_rssi = 0;
++ rssi = ATH_EP_RND(last_rssi, ATH_RSSI_EP_MULTIPLIER);
++ if (rssi < 0)
++ rssi = 0;
+
+ /* Update Beacon RSSI, this is used by ANI. */
+- ah->stats.avgbrssi = rx_stats->rs_rssi;
++ ah->stats.avgbrssi = rssi;
+ }
+
+ /*
+@@ -1012,6 +1012,8 @@ static int ath9k_rx_skb_preprocess(struc
+ rx_status->signal = ah->noise + rx_stats->rs_rssi;
+ rx_status->antenna = rx_stats->rs_antenna;
+ rx_status->flag |= RX_FLAG_MACTIME_MPDU;
++ if (rx_stats->rs_moreaggr)
++ rx_status->flag |= RX_FLAG_NO_SIGNAL_VAL;
+
+ for (i = 0, j = 0; i < ARRAY_SIZE(rx_stats->rs_rssi_ctl); i++) {
+ s8 rssi;