Bug #390
Fwd: [PATCH 1/2] brcm80211: smac: fix endless retry of A-MPDU transmissions
| Status: | Closed | Start date: | ||
|---|---|---|---|---|
| Priority: | Normal | Due date: | ||
| Assignee: | - | % Done: | 0% |
|
| Category: | - | Spent time: | - | |
| Target version: | - |
Description
yet another infinite retry bug found and fixed in a major chipset.
I wish there was a way to get this stuff fixed in the field.
or detect it in code.
---------- Forwarded message ----------
From: Arend van Spriel <arend@broadcom.com>
Date: Thu, Feb 23, 2012 at 9:38 AM
Subject: [PATCH 1/2] brcm80211: smac: fix endless retry of A-MPDU transmissions
To: linville@tuxdriver.com
Cc: linux-wireless@vger.kernel.org, Arend van Spriel
<arend@broadcom.com>, Stanislaw Gruszka <sgruszka@redhat.com>
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>
---
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 && (txrate0.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 {
History
Updated by Robert Bradley 12 months ago
This patch (well, the mainline v3.4 kernel) appears to have improved my netbook's (BCM4313) wireless no end, with far fewer random disconnects or minutes of lost packets. I think there's still more bugs to be fixed in that driver though, unless it's my hardware at fault.
Updated by David Taht about 1 month ago
- Status changed from New to Closed