From: Christian Lamparter Date: Sat, 7 Jul 2012 00:07:43 +0000 (+0200) Subject: carl9170 firmware: add workaround for carl vs. mac BAR problem X-Git-Tag: 1.9.6~4 X-Git-Url: https://jxself.org/git/?a=commitdiff_plain;h=c5ade0a37dc2650ec206cce64dcaea32d2bd86be;p=carl9170fw.git carl9170 firmware: add workaround for carl vs. mac BAR problem It looks like the AR9170 MAC seems to be incapable of matching BA to xmitted BARs. This is a problem because when mac80211 tries to recover it sends out BARs which can't be matched to a BA and so it goes on. Of course having lots of stale BARs around causes mayhem in the receiver buffer at the HT peer on the other end because it's constantly flushing the reorder buffer. Note: This is hopefully just a temporary fix, but until there's a better method, it will provide at least some relief. Signed-off-by: Christian Lamparter --- diff --git a/carlfw/src/wlan.c b/carlfw/src/wlan.c index e581fa8..b8d4ec4 100644 --- a/carlfw/src/wlan.c +++ b/carlfw/src/wlan.c @@ -457,6 +457,18 @@ static bool wlan_tx_status(struct dma_queue *queue, fw.wlan.cab_queue_len[super->s.vif_id]--; #endif /* CONFIG_CARL9170FW_CAB_QUEUE */ + if (unlikely(ieee80211_is_back_req(super->f.data.i3e.frame_control))) { + /* + * As explained above, the hardware seems to be + * incapable of matching BA to BARs. This is a + * problem especially with mac80211, because it + * does resent failed BARs which of course cause + * some mayhem in the receiver buffer at the HT + * peer on the other end. + */ + success = true; + } + wlan_tx_complete(super, success); /* recycle freed descriptors */