* [patch 01/47] b43legacy: Do not return TX_BUSY from op_tx
[not found] ` <20080722231342.GA8282@suse.de>
@ 2008-07-22 23:14 ` Greg KH
2008-07-22 23:14 ` [patch 02/47] b43: " Greg KH
` (2 subsequent siblings)
3 siblings, 0 replies; 4+ messages in thread
From: Greg KH @ 2008-07-22 23:14 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
Rodrigo Rubira Branco, Jake Edge, torvalds, akpm, alan,
linux-wireless, John Linville, Stefano Brivio, bcm43xx-dev,
Michael Buesch
2.6.25-stable review patch. If anyone has any objections, please let us know.
------------------
From: Michael Buesch <mb@bu3sch.de>
Never return TX_BUSY from op_tx. It doesn't make sense to return
TX_BUSY, if we can not transmit the packet.
Drop the packet and return TX_OK.
Upstream commit is
eb803e419ca6be06ece2e42027bb4ebd8ec09f91
Signed-off-by: Michael Buesch <mb@bu3sch.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/net/wireless/b43legacy/main.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
--- a/drivers/net/wireless/b43legacy/main.c
+++ b/drivers/net/wireless/b43legacy/main.c
@@ -2350,8 +2350,10 @@ static int b43legacy_op_tx(struct ieee80
} else
err = b43legacy_dma_tx(dev, skb, ctl);
out:
- if (unlikely(err))
- return NETDEV_TX_BUSY;
+ if (unlikely(err)) {
+ /* Drop the packet. */
+ dev_kfree_skb_any(skb);
+ }
return NETDEV_TX_OK;
}
--
^ permalink raw reply [flat|nested] 4+ messages in thread* [patch 02/47] b43: Do not return TX_BUSY from op_tx
[not found] ` <20080722231342.GA8282@suse.de>
2008-07-22 23:14 ` [patch 01/47] b43legacy: Do not return TX_BUSY from op_tx Greg KH
@ 2008-07-22 23:14 ` Greg KH
2008-07-22 23:14 ` [patch 03/47] b43: Fix possible MMIO access while device is down Greg KH
2008-07-22 23:14 ` [patch 04/47] mac80211: detect driver tx bugs Greg KH
3 siblings, 0 replies; 4+ messages in thread
From: Greg KH @ 2008-07-22 23:14 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
Rodrigo Rubira Branco, Jake Edge, torvalds, akpm, alan,
linux-wireless, John Linville, bcm43xx-dev, Michael Buesch
2.6.25-stable review patch. If anyone has any objections, please let us
know.
------------------
From: Michael Buesch <mb@bu3sch.de>
Never return TX_BUSY from op_tx. It doesn't make sense to return
TX_BUSY, if we can not transmit the packet.
Drop the packet and return TX_OK.
This will fix the resume hang.
Upstream commit is
66193a7cef2239bfd1b9b96e304770facf7a49c7
Signed-off-by: Michael Buesch <mb@bu3sch.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/net/wireless/b43/main.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
--- a/drivers/net/wireless/b43/main.c
+++ b/drivers/net/wireless/b43/main.c
@@ -2607,7 +2607,7 @@ static int b43_op_tx(struct ieee80211_hw
int err;
if (unlikely(!dev))
- return NETDEV_TX_BUSY;
+ goto drop_packet;
/* Transmissions on seperate queues can run concurrently. */
read_lock_irqsave(&wl->tx_lock, flags);
@@ -2619,7 +2619,12 @@ static int b43_op_tx(struct ieee80211_hw
read_unlock_irqrestore(&wl->tx_lock, flags);
if (unlikely(err))
- return NETDEV_TX_BUSY;
+ goto drop_packet;
+ return NETDEV_TX_OK;
+
+drop_packet:
+ /* We can not transmit this packet. Drop it. */
+ dev_kfree_skb_any(skb);
return NETDEV_TX_OK;
}
--
^ permalink raw reply [flat|nested] 4+ messages in thread* [patch 03/47] b43: Fix possible MMIO access while device is down
[not found] ` <20080722231342.GA8282@suse.de>
2008-07-22 23:14 ` [patch 01/47] b43legacy: Do not return TX_BUSY from op_tx Greg KH
2008-07-22 23:14 ` [patch 02/47] b43: " Greg KH
@ 2008-07-22 23:14 ` Greg KH
2008-07-22 23:14 ` [patch 04/47] mac80211: detect driver tx bugs Greg KH
3 siblings, 0 replies; 4+ messages in thread
From: Greg KH @ 2008-07-22 23:14 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
Rodrigo Rubira Branco, Jake Edge, torvalds, akpm, alan,
linux-wireless, John Linville, bcm43xx-dev, Michael Buesch
2.6.25-stable review patch. If anyone has any objections, please let us
know.
------------------
From: Michael Buesch <mb@bu3sch.de>
This fixes a possible MMIO access while the device is still down
from a suspend cycle. MMIO accesses with the device powered down
may cause crashes on certain devices.
Upstream commit is
33598cf261e393f2b3349cb55509e358014bfd1f
Signed-off-by: Michael Buesch <mb@bu3sch.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/net/wireless/b43/leds.c | 3 +++
1 file changed, 3 insertions(+)
--- a/drivers/net/wireless/b43/leds.c
+++ b/drivers/net/wireless/b43/leds.c
@@ -72,6 +72,9 @@ static void b43_led_brightness_set(struc
struct b43_wldev *dev = led->dev;
bool radio_enabled;
+ if (unlikely(b43_status(dev) < B43_STAT_INITIALIZED))
+ return;
+
/* Checking the radio-enabled status here is slightly racy,
* but we want to avoid the locking overhead and we don't care
* whether the LED has the wrong state for a second. */
--
^ permalink raw reply [flat|nested] 4+ messages in thread* [patch 04/47] mac80211: detect driver tx bugs
[not found] ` <20080722231342.GA8282@suse.de>
` (2 preceding siblings ...)
2008-07-22 23:14 ` [patch 03/47] b43: Fix possible MMIO access while device is down Greg KH
@ 2008-07-22 23:14 ` Greg KH
3 siblings, 0 replies; 4+ messages in thread
From: Greg KH @ 2008-07-22 23:14 UTC (permalink / raw)
To: linux-kernel, stable, Johannes Berg
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
Rodrigo Rubira Branco, Jake Edge, torvalds, akpm, alan,
linux-wireless, Larry Finger, David S. Miller
2.6.25-stable review patch. If anyone has any objections, please let us
know.
------------------
From: Johannes Berg <johannes@sipsolutions.net>
When a driver rejects a frame in it's ->tx() callback, it must also
stop queues, otherwise mac80211 can go into a loop here. Detect this
situation and abort the loop after five retries, warning about the
driver bug.
This patch was added to mainline as
commit ef3a62d272f033989e83eb1f26505f93f93e3e69.
Thanks to Larry Finger <Larry.Finger@lwfinger.net> for doing the -stable
port.
Cc: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
---
net/mac80211/tx.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -1090,7 +1090,7 @@ static int ieee80211_tx(struct net_devic
ieee80211_tx_handler *handler;
struct ieee80211_txrx_data tx;
ieee80211_txrx_result res = TXRX_DROP, res_prepare;
- int ret, i;
+ int ret, i, retries = 0;
WARN_ON(__ieee80211_queue_pending(local, control->queue));
@@ -1181,6 +1181,13 @@ retry:
if (!__ieee80211_queue_stopped(local, control->queue)) {
clear_bit(IEEE80211_LINK_STATE_PENDING,
&local->state[control->queue]);
+ retries++;
+ /*
+ * Driver bug, it's rejecting packets but
+ * not stopping queues.
+ */
+ if (WARN_ON_ONCE(retries > 5))
+ goto drop;
goto retry;
}
memcpy(&store->control, control,
--
^ permalink raw reply [flat|nested] 4+ messages in thread