diff options
author | Felix Fietkau <nbd@openwrt.org> | 2013-04-07 18:04:11 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2013-04-10 14:10:33 -0400 |
commit | 723e711356b5a8a95728a890e254e8b0d47b55cf (patch) | |
tree | 23f3c8856b72438a40b7bbbb47283a5ca1eb54b3 /drivers/net/wireless/ath/ath9k/ath9k.h | |
parent | 2e1cd495466d14c7d92e10d709f27161afe44b15 (diff) |
ath9k: fix handling of broken descriptors
As the comment in ath_get_next_rx_buf indicates, if a descriptor with
the done bit set follows one with the done bit cleared, both descriptors
should be discarded, however the driver is not doing that yet.
To fix this, use the rs->rs_more flag as an indicator that the following
frame should be discarded. This also helps with the split buffer case:
if the first part of the frame is discarded, the following parts need to
be discarded as well, since they contain no valid header or usable data.
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/ath9k.h')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/ath9k.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath9k/ath9k.h b/drivers/net/wireless/ath/ath9k/ath9k.h index a56b2416e2f9..86d35726edb4 100644 --- a/drivers/net/wireless/ath/ath9k/ath9k.h +++ b/drivers/net/wireless/ath/ath9k/ath9k.h | |||
@@ -311,6 +311,7 @@ struct ath_rx_edma { | |||
311 | struct ath_rx { | 311 | struct ath_rx { |
312 | u8 defant; | 312 | u8 defant; |
313 | u8 rxotherant; | 313 | u8 rxotherant; |
314 | bool discard_next; | ||
314 | u32 *rxlink; | 315 | u32 *rxlink; |
315 | u32 num_pkts; | 316 | u32 num_pkts; |
316 | unsigned int rxfilter; | 317 | unsigned int rxfilter; |