Bug #336

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

Added by David Taht over 1 year ago. Updated about 1 year ago.

Status:Closed Start date:
Priority:Normal Due date:
Assignee:David Taht % Done:

100%

Category:Linux Kernel Spent time: 2.00 hours
Target version:1st Public Cerowrt release

Description

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 <>
Date: Thu, Feb 9, 2012 at 9:08 PM
Subject: [PATCH 04/15] brcm80211: smac: fix endless retry of A-MPDU
transmissions
To:
Cc: , Arend van Spriel
<>, Stanislaw Gruszka <>

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 <>
Reviewed-by: Pieter-Paul Giesberts <>
Reviewed-by: Alwin Beukers <>
Signed-off-by: Arend van Spriel <>
---
 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 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 && (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 Dave Täht over 1 year ago

  • Category set to Linux Kernel
  • Status changed from New to Closed
  • Assignee set to David Taht
  • Target version set to 13
  • % Done changed from 0 to 100

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 about 1 year ago

  • Target version changed from 13 to 1st Public Cerowrt release

Also available in: Atom PDF