Bug #336

Fwd: [PATCH 04/15] brcm80211: smac: fix endless retry of A-MPDU transmissions

Added by David Taht on Feb 9, 2012. Updated on Apr 21, 2012.
Closed Normal David Taht


seeing this sort of stuff get fixed always cheers me up.

what I wonder about if is there a way to simulate radio issues like this
against j.random hardware so as to be able to finger the problem
via black box means.

———- Forwarded message ———-
From: Arend van Spriel arend@broadcom.com
Date: Thu, Feb 9, 2012 at 9:08 PM
Subject: [PATCH 04/15] brcm80211: smac: fix endless retry of A-MPDU
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


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
index d89dcb1..c1ce831 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)) {
                                * 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,
                       } else {


Updated by Dave Täht on Feb 9, 2012.
It is good to know that this problem is resolved on broadcom hardware
that may use this driver in the future. It is also good to know it exists
on current brcm hardware….
Updated by Dave Täht on Apr 21, 2012.

This is a static export of the original bufferbloat.net issue database. As such, no further commenting is possible; the information is solely here for archival purposes.
RSS feed

Recent Updates

Jul 21, 2024 Wiki page
Jul 21, 2024 Wiki page
What Can I Do About Bufferbloat?
Jul 21, 2024 Wiki page
Tests for Bufferbloat
Jul 1, 2024 Wiki page
RRUL Chart Explanation
Dec 3, 2022 Wiki page
Codel Wiki

Find us elsewhere

Bufferbloat Mailing Lists
#bufferbloat on Twitter
Google+ group
Archived Bufferbloat pages from the Wayback Machine


Comcast Research Innovation Fund
Nlnet Foundation
Shuttleworth Foundation

Bufferbloat Related Projects

OpenWrt Project
Congestion Control Blog
Flent Network Test Suite
The Cake shaper
CeroWrt (where it all started)

Network Performance Related Resources

Jim Gettys' Blog - The chairman of the Fjord
Toke's Blog - Karlstad University's work on bloat
Voip Users Conference - Weekly Videoconference mostly about voip
Candelatech - A wifi testing company that "gets it".