aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/wireless/ath/ath9k/recv.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/net/wireless/ath/ath9k/recv.c b/drivers/net/wireless/ath/ath9k/recv.c
index 5b84ce4ee45e..30cb7267c12b 100644
--- a/drivers/net/wireless/ath/ath9k/recv.c
+++ b/drivers/net/wireless/ath/ath9k/recv.c
@@ -1099,6 +1099,16 @@ static int ath9k_rx_skb_preprocess(struct ath_softc *sc,
1099 if (rx_stats->rs_more) 1099 if (rx_stats->rs_more)
1100 return 0; 1100 return 0;
1101 1101
1102 /*
1103 * Return immediately if the RX descriptor has been marked
1104 * as corrupt based on the various error bits.
1105 *
1106 * This is different from the other corrupt descriptor
1107 * condition handled above.
1108 */
1109 if (rx_stats->rs_status & ATH9K_RXERR_CORRUPT_DESC)
1110 return -EINVAL;
1111
1102 hdr = (struct ieee80211_hdr *) (skb->data + ah->caps.rx_status_len); 1112 hdr = (struct ieee80211_hdr *) (skb->data + ah->caps.rx_status_len);
1103 1113
1104 ath9k_process_tsf(rx_stats, rx_status, tsf); 1114 ath9k_process_tsf(rx_stats, rx_status, tsf);
@@ -1335,8 +1345,6 @@ int ath_rx_tasklet(struct ath_softc *sc, int flush, bool hp)
1335 sc->rx.frag = skb; 1345 sc->rx.frag = skb;
1336 goto requeue; 1346 goto requeue;
1337 } 1347 }
1338 if (rs.rs_status & ATH9K_RXERR_CORRUPT_DESC)
1339 goto requeue_drop_frag;
1340 1348
1341 if (sc->rx.frag) { 1349 if (sc->rx.frag) {
1342 int space = skb->len - skb_tailroom(hdr_skb); 1350 int space = skb->len - skb_tailroom(hdr_skb);