| 1 | --- a/drivers/net/wireless/ath/ath9k/recv.c |
| 2 | +++ b/drivers/net/wireless/ath/ath9k/recv.c |
| 3 | @@ -954,6 +954,7 @@ static void ath9k_process_rssi(struct at |
| 4 | struct ath_softc *sc = hw->priv; |
| 5 | struct ath_hw *ah = common->ah; |
| 6 | int last_rssi; |
| 7 | + int rssi = rx_stats->rs_rssi; |
| 8 | |
| 9 | if (!rx_stats->is_mybeacon || |
| 10 | ((ah->opmode != NL80211_IFTYPE_STATION) && |
| 11 | @@ -965,13 +966,12 @@ static void ath9k_process_rssi(struct at |
| 12 | |
| 13 | last_rssi = sc->last_rssi; |
| 14 | if (likely(last_rssi != ATH_RSSI_DUMMY_MARKER)) |
| 15 | - rx_stats->rs_rssi = ATH_EP_RND(last_rssi, |
| 16 | - ATH_RSSI_EP_MULTIPLIER); |
| 17 | - if (rx_stats->rs_rssi < 0) |
| 18 | - rx_stats->rs_rssi = 0; |
| 19 | + rssi = ATH_EP_RND(last_rssi, ATH_RSSI_EP_MULTIPLIER); |
| 20 | + if (rssi < 0) |
| 21 | + rssi = 0; |
| 22 | |
| 23 | /* Update Beacon RSSI, this is used by ANI. */ |
| 24 | - ah->stats.avgbrssi = rx_stats->rs_rssi; |
| 25 | + ah->stats.avgbrssi = rssi; |
| 26 | } |
| 27 | |
| 28 | /* |
| 29 | @@ -1012,6 +1012,8 @@ static int ath9k_rx_skb_preprocess(struc |
| 30 | rx_status->signal = ah->noise + rx_stats->rs_rssi; |
| 31 | rx_status->antenna = rx_stats->rs_antenna; |
| 32 | rx_status->flag |= RX_FLAG_MACTIME_MPDU; |
| 33 | + if (rx_stats->rs_moreaggr) |
| 34 | + rx_status->flag |= RX_FLAG_NO_SIGNAL_VAL; |
| 35 | |
| 36 | for (i = 0, j = 0; i < ARRAY_SIZE(rx_stats->rs_rssi_ctl); i++) { |
| 37 | s8 rssi; |
| 38 | |