diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/recv.c')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/recv.c | 15 |
1 files changed, 0 insertions, 15 deletions
diff --git a/drivers/net/wireless/ath/ath9k/recv.c b/drivers/net/wireless/ath/ath9k/recv.c index 01c3ba47a5b9..6b83b3bbfe8c 100644 --- a/drivers/net/wireless/ath/ath9k/recv.c +++ b/drivers/net/wireless/ath/ath9k/recv.c | |||
@@ -286,7 +286,6 @@ int ath_rx_init(struct ath_softc *sc, int nbufs) | |||
286 | 286 | ||
287 | spin_lock_init(&sc->sc_pcu_lock); | 287 | spin_lock_init(&sc->sc_pcu_lock); |
288 | spin_lock_init(&sc->rx.rxbuflock); | 288 | spin_lock_init(&sc->rx.rxbuflock); |
289 | clear_bit(SC_OP_RXFLUSH, &sc->sc_flags); | ||
290 | 289 | ||
291 | common->rx_bufsize = IEEE80211_MAX_MPDU_LEN / 2 + | 290 | common->rx_bufsize = IEEE80211_MAX_MPDU_LEN / 2 + |
292 | sc->sc_ah->caps.rx_status_len; | 291 | sc->sc_ah->caps.rx_status_len; |
@@ -501,11 +500,9 @@ bool ath_stoprecv(struct ath_softc *sc) | |||
501 | 500 | ||
502 | void ath_flushrecv(struct ath_softc *sc) | 501 | void ath_flushrecv(struct ath_softc *sc) |
503 | { | 502 | { |
504 | set_bit(SC_OP_RXFLUSH, &sc->sc_flags); | ||
505 | if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) | 503 | if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) |
506 | ath_rx_tasklet(sc, 1, true); | 504 | ath_rx_tasklet(sc, 1, true); |
507 | ath_rx_tasklet(sc, 1, false); | 505 | ath_rx_tasklet(sc, 1, false); |
508 | clear_bit(SC_OP_RXFLUSH, &sc->sc_flags); | ||
509 | } | 506 | } |
510 | 507 | ||
511 | static bool ath_beacon_dtim_pending_cab(struct sk_buff *skb) | 508 | static bool ath_beacon_dtim_pending_cab(struct sk_buff *skb) |
@@ -1067,9 +1064,6 @@ int ath_rx_tasklet(struct ath_softc *sc, int flush, bool hp) | |||
1067 | 1064 | ||
1068 | do { | 1065 | do { |
1069 | bool decrypt_error = false; | 1066 | bool decrypt_error = false; |
1070 | /* If handling rx interrupt and flush is in progress => exit */ | ||
1071 | if (test_bit(SC_OP_RXFLUSH, &sc->sc_flags) && (flush == 0)) | ||
1072 | break; | ||
1073 | 1067 | ||
1074 | memset(&rs, 0, sizeof(rs)); | 1068 | memset(&rs, 0, sizeof(rs)); |
1075 | if (edma) | 1069 | if (edma) |
@@ -1112,15 +1106,6 @@ int ath_rx_tasklet(struct ath_softc *sc, int flush, bool hp) | |||
1112 | 1106 | ||
1113 | ath_debug_stat_rx(sc, &rs); | 1107 | ath_debug_stat_rx(sc, &rs); |
1114 | 1108 | ||
1115 | /* | ||
1116 | * If we're asked to flush receive queue, directly | ||
1117 | * chain it back at the queue without processing it. | ||
1118 | */ | ||
1119 | if (test_bit(SC_OP_RXFLUSH, &sc->sc_flags)) { | ||
1120 | RX_STAT_INC(rx_drop_rxflush); | ||
1121 | goto requeue_drop_frag; | ||
1122 | } | ||
1123 | |||
1124 | memset(rxs, 0, sizeof(struct ieee80211_rx_status)); | 1109 | memset(rxs, 0, sizeof(struct ieee80211_rx_status)); |
1125 | 1110 | ||
1126 | rxs->mactime = (tsf & ~0xffffffffULL) | rs.rs_tstamp; | 1111 | rxs->mactime = (tsf & ~0xffffffffULL) | rs.rs_tstamp; |