|
|
|
@ -1498,7 +1498,16 @@ |
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
@@ -1011,6 +1010,8 @@ static int ath9k_rx_skb_preprocess(struc
|
|
|
|
|
@@ -988,8 +987,6 @@ static int ath9k_rx_skb_preprocess(struc
|
|
|
|
|
{
|
|
|
|
|
struct ath_hw *ah = common->ah;
|
|
|
|
|
|
|
|
|
|
- memset(rx_status, 0, sizeof(struct ieee80211_rx_status));
|
|
|
|
|
-
|
|
|
|
|
/*
|
|
|
|
|
* everything but the rate is checked here, the rate check is done
|
|
|
|
|
* separately to avoid doing two lookups for a rate for each frame.
|
|
|
|
|
@@ -1011,6 +1008,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;
|
|
|
|
@ -1507,6 +1516,15 @@ |
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
@@ -1845,6 +1844,8 @@ int ath_rx_tasklet(struct ath_softc *sc,
|
|
|
|
|
if (sc->sc_flags & SC_OP_RXFLUSH)
|
|
|
|
|
goto requeue_drop_frag;
|
|
|
|
|
|
|
|
|
|
+ memset(rxs, 0, sizeof(struct ieee80211_rx_status));
|
|
|
|
|
+
|
|
|
|
|
rxs->mactime = (tsf & ~0xffffffffULL) | rs.rs_tstamp;
|
|
|
|
|
if (rs.rs_tstamp > tsf_lower &&
|
|
|
|
|
unlikely(rs.rs_tstamp - tsf_lower > 0x10000000))
|
|
|
|
|
--- a/drivers/net/wireless/ath/ath9k/beacon.c
|
|
|
|
|
+++ b/drivers/net/wireless/ath/ath9k/beacon.c
|
|
|
|
|
@@ -91,7 +91,7 @@ static void ath_beacon_setup(struct ath_
|
|
|
|
|