ath9k_hw: Fix AR9003 MPDU delimeter CRC check for middle subframes
authorLuis R. Rodriguez <lrodriguez@atheros.com>
Thu, 15 Jul 2010 00:08:41 +0000 (20:08 -0400)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 16 Jul 2010 18:03:42 +0000 (14:03 -0400)
commit9171acc7e094b3ca88e624f39891a4f3bf9d083c
tree513857338301a5f04cc07ddae89d19ee9ae4b44a
parent15804e3e9de52f1baefad34233424488b5672853
ath9k_hw: Fix AR9003 MPDU delimeter CRC check for middle subframes

An A-MPDU may contain several subframes each containing its own
CRC for the data. Each subframe also has a respective CRC for the
MPDU length and 4 reserved bits (aka delimeter CRC). AR9003 will
ACK frames that have a valid data CRC but have failed to pass the
CRC for the MPDU length, if and only if the subframe is not the
last subframe in an A-MPDU and if an OFDM phy OFDM reset error has
been caught. Discarding those subframes results in packet loss under
heavy stress conditions, an example being UDP video. Since the
frames are ACK'd by hardware we need to let these frames through
and process them as valid frames.

Cc: Tushit Jain <tushit.jain@atheros.com>
Cc: Kyungwan Nam <kyungwan.nam@atheros.com>
Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/ar9003_mac.c