ath9k: Fix TX filter usage
authorSujith Manoharan <c_manoha@qca.qualcomm.com>
Wed, 29 Aug 2012 03:50:42 +0000 (09:20 +0530)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 7 Sep 2012 19:03:42 +0000 (15:03 -0400)
commitadfbda62248258a402253744e4eed6b87fb43169
treec7573615bad2601c4785519a2affe3ead7248f76
parent6babc283c1edd6dec710530a0e168defceb8d704
ath9k: Fix TX filter usage

The TX filter bit for a station would be set by the HW
when a frame is not acked. A frame would be completed with
ATH9K_TXERR_FILT status only when the corresponding filter bit
for the destination station is already set.

Currently, un-acknowledged  packets are added to the pending queue
and retried, but the "clear_dest_mask" bit in the descriptor is
set only when the TX status has been ATH9K_TXERR_FILT. This results
in packet loss and the log shows:

wlan0: dropped TX filtered frame, queue_len=0 PS=0 @4309746071
wlan0: dropped TX filtered frame, queue_len=0 PS=0 @4309746076
wlan0: dropped TX filtered frame, queue_len=0 PS=0 @4309746377
...
...

This issue can be resolved by making sure that the destination
mask is cleared when the packet is being retried and the earlier
TX status is ATH9K_TXERR_XRETRY.

Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/xmit.c