ath9k_htc: fix signal strength reporting issues
authorFelix Fietkau <nbd@openwrt.org>
Fri, 22 Feb 2013 16:10:15 +0000 (16:10 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Fri, 22 Feb 2013 16:10:15 +0000 (16:10 +0000)
SVN-Revision: 35749

package/mac80211/patches/300-pending_work.patch

index 3cba6e42ae702d4020382a264116ac49f0bd9564..7bd287fbbf25f731fcad1aa5c93fc053bc54ddcc 100644 (file)
        p += sprintf(p, "\nTotal packet count::    ideal %d      "
                        "lookaround %d\n",
                        max(0, (int) mi->total_packets - (int) mi->sample_packets),
+--- a/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c
++++ b/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c
+@@ -1067,15 +1067,19 @@ static bool ath9k_rx_prepare(struct ath9
+       last_rssi = priv->rx.last_rssi;
+-      if (likely(last_rssi != ATH_RSSI_DUMMY_MARKER))
+-              rxbuf->rxstatus.rs_rssi = ATH_EP_RND(last_rssi,
+-                                                   ATH_RSSI_EP_MULTIPLIER);
++      if (ieee80211_is_beacon(hdr->frame_control) &&
++          !is_zero_ether_addr(common->curbssid) &&
++          ether_addr_equal(hdr->addr3, common->curbssid)) {
++              s8 rssi = rxbuf->rxstatus.rs_rssi;
+-      if (rxbuf->rxstatus.rs_rssi < 0)
+-              rxbuf->rxstatus.rs_rssi = 0;
++              if (likely(last_rssi != ATH_RSSI_DUMMY_MARKER))
++                      rssi = ATH_EP_RND(last_rssi, ATH_RSSI_EP_MULTIPLIER);
+-      if (ieee80211_is_beacon(fc))
+-              priv->ah->stats.avgbrssi = rxbuf->rxstatus.rs_rssi;
++              if (rssi < 0)
++                      rssi = 0;
++
++              priv->ah->stats.avgbrssi = rssi;
++      }
+       rx_status->mactime = be64_to_cpu(rxbuf->rxstatus.rs_tstamp);
+       rx_status->band = hw->conf.channel->band;