diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/htc_drv_txrx.c')
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/htc_drv_txrx.c | 18 | 
1 files changed, 11 insertions, 7 deletions
| diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c b/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c index 3ad1fd05c5e..bd8251c1c74 100644 --- 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 ath9k_htc_priv *priv,  	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; |