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;ds=sidebyside;h=c5ade0a37dc2650ec206cce64dcaea32d2bd86be;hp=-c;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 --- c5ade0a37dc2650ec206cce64dcaea32d2bd86be 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 */