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
|
||
|
|