diff options
author | Larry Finger <Larry.Finger@lwfinger.net> | 2010-02-03 14:33:44 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2010-03-15 12:06:39 -0400 |
commit | 70702844e7be631ea810e752c2f089792b3364bc (patch) | |
tree | f7f538cc37e18a8a3c62cc7c41f7da5b3895a60e /drivers/net | |
parent | 5c61625f566640743886f324e1fda0eef5b04e1d (diff) |
b43/b43legacy: Wake queues in wireless_core_start
commit 0866b03c7d7dee8a34ffa527ecda426c0f405518 upstream.
If b43 or b43legacy are deauthenticated or disconnected, there is a
possibility that a reconnection is tried with the queues stopped in
mac80211. To prevent this, start the queues before setting
STAT_INITIALIZED.
In b43, a similar change has been in place (twice) in the
wireless_core_init() routine. Remove the duplicate and add similar
code to b43legacy.
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/wireless/b43/main.c | 3 | ||||
-rw-r--r-- | drivers/net/wireless/b43legacy/main.c | 2 |
2 files changed, 3 insertions, 2 deletions
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c index 490fb45d1d05..b59166c67626 100644 --- a/drivers/net/wireless/b43/main.c +++ b/drivers/net/wireless/b43/main.c | |||
@@ -3970,6 +3970,7 @@ static int b43_wireless_core_start(struct b43_wldev *dev) | |||
3970 | } | 3970 | } |
3971 | 3971 | ||
3972 | /* We are ready to run. */ | 3972 | /* We are ready to run. */ |
3973 | ieee80211_wake_queues(dev->wl->hw); | ||
3973 | b43_set_status(dev, B43_STAT_STARTED); | 3974 | b43_set_status(dev, B43_STAT_STARTED); |
3974 | 3975 | ||
3975 | /* Start data flow (TX/RX). */ | 3976 | /* Start data flow (TX/RX). */ |
@@ -4379,8 +4380,6 @@ static int b43_wireless_core_init(struct b43_wldev *dev) | |||
4379 | 4380 | ||
4380 | ieee80211_wake_queues(dev->wl->hw); | 4381 | ieee80211_wake_queues(dev->wl->hw); |
4381 | 4382 | ||
4382 | ieee80211_wake_queues(dev->wl->hw); | ||
4383 | |||
4384 | b43_set_status(dev, B43_STAT_INITIALIZED); | 4383 | b43_set_status(dev, B43_STAT_INITIALIZED); |
4385 | 4384 | ||
4386 | out: | 4385 | out: |
diff --git a/drivers/net/wireless/b43legacy/main.c b/drivers/net/wireless/b43legacy/main.c index 4a905b6a886b..6d21b49e8d1f 100644 --- a/drivers/net/wireless/b43legacy/main.c +++ b/drivers/net/wireless/b43legacy/main.c | |||
@@ -2921,6 +2921,7 @@ static int b43legacy_wireless_core_start(struct b43legacy_wldev *dev) | |||
2921 | goto out; | 2921 | goto out; |
2922 | } | 2922 | } |
2923 | /* We are ready to run. */ | 2923 | /* We are ready to run. */ |
2924 | ieee80211_wake_queues(dev->wl->hw); | ||
2924 | b43legacy_set_status(dev, B43legacy_STAT_STARTED); | 2925 | b43legacy_set_status(dev, B43legacy_STAT_STARTED); |
2925 | 2926 | ||
2926 | /* Start data flow (TX/RX) */ | 2927 | /* Start data flow (TX/RX) */ |
@@ -3341,6 +3342,7 @@ static int b43legacy_wireless_core_init(struct b43legacy_wldev *dev) | |||
3341 | b43legacy_security_init(dev); | 3342 | b43legacy_security_init(dev); |
3342 | b43legacy_rng_init(wl); | 3343 | b43legacy_rng_init(wl); |
3343 | 3344 | ||
3345 | ieee80211_wake_queues(dev->wl->hw); | ||
3344 | b43legacy_set_status(dev, B43legacy_STAT_INITIALIZED); | 3346 | b43legacy_set_status(dev, B43legacy_STAT_INITIALIZED); |
3345 | 3347 | ||
3346 | b43legacy_leds_init(dev); | 3348 | b43legacy_leds_init(dev); |