From c993a44fa30a2419981ce5c921bd221ecf6a8d53 Mon Sep 17 00:00:00 2001 From: nbd Date: Tue, 7 Feb 2012 15:25:55 +0000 Subject: 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 --- .../patches/581-ath9k_report_missing_signal.patch | 37 ++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 package/mac80211/patches/581-ath9k_report_missing_signal.patch (limited to 'package/mac80211/patches/581-ath9k_report_missing_signal.patch') 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; -- cgit v1.2.3