Bug#664767: Brcmsmac driver woes, possible regression?
Camaleón wrote:
> Update: I've been running kernel 3.2.2-1 over 4 days (since last
> Saturday until today) and still haven't experienced any disconnection.
Interesting. I wonder if the workaround in f96b08a7e6f6 (brcmsmac:
fix tx queue flush infinite loop, 2012-01-17) has too short a timeout
and is backfiring.
How about this patch, for 3.2.y kernels? I suggest the following
steps for testing:
0. prerequisites:
apt-get install git build-essential
1. get the kernel history, if you do not already have it:
git clone \
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
2. add point releases:
cd linux
git remote add stable \
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
git fetch stable
3. configure, build, test:
git checkout stable/linux-3.2.y
cp /boot/config-$(uname -r) .config; # current configuration
scripts/config --disable DEBUG_INFO
make localmodconfig; # optional: minimize configuration
make deb-pkg; # optionally with -j<num> for parallel build
dpkg -i ../<name of package>; # as root
reboot
... test test test ...
Hopefully it reproduces the disconnection. So
4. try the patch:
cd linux
git revert f96b08a7e6f6
make deb-pkg; # maybe with -j4
dpkg -i ../<name of package>; # as root
reboot
... test test test ...
From: Jonathan Nieder <jrnieder@gmail.com>
Date: Tue, 19 Jun 2012 12:57:27 -0500
Subject: Revert "brcmsmac: fix tx queue flush infinite loop"
This reverts commit f96b08a7e6f69c0f0a576554df3df5b1b519c479.
Just testing something, nothing deeper to see here.
---
drivers/net/wireless/brcm80211/brcmsmac/main.c | 10 +---------
1 file changed, 1 insertion(+), 9 deletions(-)
diff --git a/drivers/net/wireless/brcm80211/brcmsmac/main.c b/drivers/net/wireless/brcm80211/brcmsmac/main.c
index 833cbefcbfd2..364200cfb21c 100644
--- a/drivers/net/wireless/brcm80211/brcmsmac/main.c
+++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c
@@ -8225,21 +8225,13 @@ int brcms_c_get_curband(struct brcms_c_info *wlc)
void brcms_c_wait_for_tx_completion(struct brcms_c_info *wlc, bool drop)
{
- int timeout = 20;
-
/* flush packet queue when requested */
if (drop)
brcmu_pktq_flush(&wlc->pkt_queue->q, false, NULL, NULL);
/* wait for queue and DMA fifos to run dry */
- while (!pktq_empty(&wlc->pkt_queue->q) || brcms_txpktpendtot(wlc) > 0) {
+ while (!pktq_empty(&wlc->pkt_queue->q) || brcms_txpktpendtot(wlc) > 0)
brcms_msleep(wlc->wl, 1);
-
- if (--timeout == 0)
- break;
- }
-
- WARN_ON_ONCE(timeout == 0);
}
void brcms_c_set_beacon_listen_interval(struct brcms_c_info *wlc, u8 interval)
--
1.7.11.rc3
Reply to:
- References:
- Bug#664767: Brcmsmac driver woes, possible regression?
- From: Jonathan Nieder <jrnieder@gmail.com>
- Bug#664767: Brcmsmac driver woes, possible regression?
- From: Camaleón <noelamac@gmail.com>
- Bug#664767: Brcmsmac driver woes, possible regression?
- From: Camaleón <noelamac@gmail.com>
- Bug#664767: Brcmsmac driver woes, possible regression?
- From: Touko Korpela <touko.korpela@iki.fi>
- Bug#664767: Brcmsmac driver woes, possible regression?
- From: Camaleón <noelamac@gmail.com>
- Bug#664767: Brcmsmac driver woes, possible regression?
- From: Jonathan Nieder <jrnieder@gmail.com>
- Bug#664767: Brcmsmac driver woes, possible regression?
- From: Camaleón <noelamac@gmail.com>
- Bug#664767: Brcmsmac driver woes, possible regression?
- From: Jonathan Nieder <jrnieder@gmail.com>
- Bug#664767: Brcmsmac driver woes, possible regression?
- From: Camaleón <noelamac@gmail.com>
- Bug#664767: Brcmsmac driver woes, possible regression?
- From: Camaleón <noelamac@gmail.com>