Fix rt2x00 usb reset resume (rhbz 856863)

This commit is contained in:
Josh Boyer 2012-10-22 08:32:00 -04:00
parent 994eaf2759
commit 951aef5850
2 changed files with 77 additions and 0 deletions

View File

@ -753,6 +753,9 @@ Patch22073: mac80211_local_deauth_v3.6.patch
#rhbz 866013
Patch22074: mac80211-connect-with-HT20-if-HT40-is-not-permitted.patch
#rhbz 856863
Patch22075: rt2x00-usb-fix-reset-resume.patch
Patch22072: linux-3.6-arm-build-fixup.patch
# END OF PATCH DEFINITIONS
@ -1459,6 +1462,9 @@ ApplyPatch mac80211_local_deauth_v3.6.patch
#rhbz 866013
ApplyPatch mac80211-connect-with-HT20-if-HT40-is-not-permitted.patch
#rhbz 856863
ApplyPatch rt2x00-usb-fix-reset-resume.patch
# END OF PATCH APPLICATIONS
%endif
@ -2323,6 +2329,7 @@ fi
# '-'
%changelog
* Mon Oct 22 2012 Josh Boyer <jwboyer@redhat.com>
- Fix rt2x00 usb reset resume (rhbz 856863)
- Linux v3.6.3
* Mon Oct 22 2012 Peter Robinson <pbrobinson@fedoraproject.org>

View File

@ -0,0 +1,70 @@
Patch fixes warnings like below happened on resume:
WARNING: at net/mac80211/driver-ops.h:12 check_sdata_in_driver+0x32/0x34()
Problem is that in __ieee80211_susped() we remove sdata (i.e wlan0
interface) and then during resume we call usb_unbind_interface() ->
ieee80211_unregister_hw() with sdata removed.
Patch fixes problem by adding .reset_resume calback, hence we do not
unbind usb device on resume. This callback can be the same as normal
.resume callback, sice we do all needed initalization during interface
start, which is performed on resume [ ieee80211_resume() ->
ieee80211_reconfig() -> rt2x00mac_start() -> rt2x00lib_start ].
Resolves:
https://bugzilla.kernel.org/show_bug.cgi?id=48041
Reported-by: David Herrmann <dh.herrmann@googlemail.com>
Reported-and-tested-by: Stephen Boyd <bebarino@gmail.com>
Cc: stable@vger.kernel.org
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
---
drivers/net/wireless/rt2x00/rt2500usb.c | 1 +
drivers/net/wireless/rt2x00/rt2800usb.c | 1 +
drivers/net/wireless/rt2x00/rt73usb.c | 1 +
3 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/drivers/net/wireless/rt2x00/rt2500usb.c b/drivers/net/wireless/rt2x00/rt2500usb.c
index a12e84f..6b2e1e4 100644
--- a/drivers/net/wireless/rt2x00/rt2500usb.c
+++ b/drivers/net/wireless/rt2x00/rt2500usb.c
@@ -1988,6 +1988,7 @@ static struct usb_driver rt2500usb_driver = {
.disconnect = rt2x00usb_disconnect,
.suspend = rt2x00usb_suspend,
.resume = rt2x00usb_resume,
+ .reset_resume = rt2x00usb_resume,
.disable_hub_initiated_lpm = 1,
};
diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c
index c9e9370..3b8fb5a 100644
--- a/drivers/net/wireless/rt2x00/rt2800usb.c
+++ b/drivers/net/wireless/rt2x00/rt2800usb.c
@@ -1282,6 +1282,7 @@ static struct usb_driver rt2800usb_driver = {
.disconnect = rt2x00usb_disconnect,
.suspend = rt2x00usb_suspend,
.resume = rt2x00usb_resume,
+ .reset_resume = rt2x00usb_resume,
.disable_hub_initiated_lpm = 1,
};
diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c
index e5eb43b..24eec66 100644
--- a/drivers/net/wireless/rt2x00/rt73usb.c
+++ b/drivers/net/wireless/rt2x00/rt73usb.c
@@ -2535,6 +2535,7 @@ static struct usb_driver rt73usb_driver = {
.disconnect = rt2x00usb_disconnect,
.suspend = rt2x00usb_suspend,
.resume = rt2x00usb_resume,
+ .reset_resume = rt2x00usb_resume,
.disable_hub_initiated_lpm = 1,
};
--
1.7.1
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html