diff --git a/kernel.spec b/kernel.spec index ddbf7f5..2c2a1ae 100644 --- a/kernel.spec +++ b/kernel.spec @@ -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 +- Fix rt2x00 usb reset resume (rhbz 856863) - Linux v3.6.3 * Mon Oct 22 2012 Peter Robinson diff --git a/rt2x00-usb-fix-reset-resume.patch b/rt2x00-usb-fix-reset-resume.patch new file mode 100644 index 0000000..07d2b4c --- /dev/null +++ b/rt2x00-usb-fix-reset-resume.patch @@ -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 +Reported-and-tested-by: Stephen Boyd +Cc: stable@vger.kernel.org +Signed-off-by: Stanislaw Gruszka +--- + 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 \ No newline at end of file