88b9de105c
mac80211: do not call rate control .tx_status before .rate_init mwifiex: clear previous security setting during association ath9k: stop on rates with idx -1 in ath9k rate control's .tx_status ath9k_hw: prevent writes to const data on AR9160 rt2x00: fix a possible NULL pointer dereference iwlwifi: fix key removal mac80211: zero initialize count field in ieee80211_tx_rate mac80211: Fix a warning on changing to monitor mode from STA brcm80211: smac: fix endless retry of A-MPDU transmissions brcm80211: smac: only print block-ack timeout message at trace level
57 lines
2.0 KiB
Diff
57 lines
2.0 KiB
Diff
From 85091fc0a75653e239dc8379658515e577544927 Mon Sep 17 00:00:00 2001
|
|
From: Arend van Spriel <arend@broadcom.com>
|
|
Date: Thu, 23 Feb 2012 18:38:22 +0100
|
|
Subject: [PATCH] brcm80211: smac: fix endless retry of A-MPDU transmissions
|
|
|
|
The A-MPDU code checked against a retry limit, but it was using
|
|
the wrong variable to do so. This patch fixes this to assure
|
|
proper retry mechanism.
|
|
|
|
This problem had a side-effect causing the mac80211 flush callback
|
|
to remain waiting forever as well. That side effect has been fixed
|
|
by commit by Stanislaw Gruszka:
|
|
|
|
commit f96b08a7e6f69c0f0a576554df3df5b1b519c479
|
|
Date: Tue Jan 17 12:38:50 2012 +0100
|
|
|
|
brcmsmac: fix tx queue flush infinite loop
|
|
|
|
Reference:
|
|
https://bugzilla.kernel.org/show_bug.cgi?id=42576
|
|
|
|
Cc: Stanislaw Gruszka <sgruszka@redhat.com>
|
|
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
|
|
Reviewed-by: Alwin Beukers <alwin@broadcom.com>
|
|
Signed-off-by: Arend van Spriel <arend@broadcom.com>
|
|
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
---
|
|
drivers/net/wireless/brcm80211/brcmsmac/ampdu.c | 6 +-----
|
|
1 files changed, 1 insertions(+), 5 deletions(-)
|
|
|
|
diff --git a/drivers/net/wireless/brcm80211/brcmsmac/ampdu.c b/drivers/net/wireless/brcm80211/brcmsmac/ampdu.c
|
|
index 90911ee..9265226 100644
|
|
--- a/drivers/net/wireless/brcm80211/brcmsmac/ampdu.c
|
|
+++ b/drivers/net/wireless/brcm80211/brcmsmac/ampdu.c
|
|
@@ -1051,17 +1051,13 @@ brcms_c_ampdu_dotxstatus_complete(struct ampdu_info *ampdu, struct scb *scb,
|
|
}
|
|
/* either retransmit or send bar if ack not recd */
|
|
if (!ack_recd) {
|
|
- struct ieee80211_tx_rate *txrate =
|
|
- tx_info->status.rates;
|
|
- if (retry && (txrate[0].count < (int)retry_limit)) {
|
|
+ if (retry && (ini->txretry[index] < (int)retry_limit)) {
|
|
ini->txretry[index]++;
|
|
ini->tx_in_transit--;
|
|
/*
|
|
* Use high prededence for retransmit to
|
|
* give some punch
|
|
*/
|
|
- /* brcms_c_txq_enq(wlc, scb, p,
|
|
- * BRCMS_PRIO_TO_PREC(tid)); */
|
|
brcms_c_txq_enq(wlc, scb, p,
|
|
BRCMS_PRIO_TO_HI_PREC(tid));
|
|
} else {
|
|
--
|
|
1.7.4.4
|
|
|