2012-10-16 12:35:17

by Stanislaw Gruszka

[permalink] [raw]
Subject: [PATCH] rt2x00: usb: fix reset resume

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 <[email protected]>
Reported-and-tested-by: Stephen Boyd <[email protected]>
Cc: [email protected]
Signed-off-by: Stanislaw Gruszka <[email protected]>
---
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



2012-10-24 18:35:59

by Stanislaw Gruszka

[permalink] [raw]
Subject: Re: [PATCH] rt2x00: usb: fix reset resume

On Tue, Oct 16, 2012 at 02:34:12PM +0200, Stanislaw Gruszka wrote:
> 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 <[email protected]>
> Reported-and-tested-by: Stephen Boyd <[email protected]>
> Cc: [email protected]
> Signed-off-by: Stanislaw Gruszka <[email protected]>

NACK for this patch, Randomly I'm able to reproduce strange crashes
when suspending and transiting data, which seem to not happen without
this patch. Until I'll figure this out, let's not apply the patch.

Stanislaw

2012-10-16 14:48:15

by Gertjan van Wingerde

[permalink] [raw]
Subject: Re: [PATCH] rt2x00: usb: fix reset resume

On Tue, Oct 16, 2012 at 2:34 PM, Stanislaw Gruszka <[email protected]> wrote:
> 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 <[email protected]>
> Reported-and-tested-by: Stephen Boyd <[email protected]>
> Cc: [email protected]
> Signed-off-by: Stanislaw Gruszka <[email protected]>

Acked-by: Gertjan van Wingerde <[email protected]>

> ---
> 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 [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html



--
---
Gertjan

2012-10-24 21:46:12

by John W. Linville

[permalink] [raw]
Subject: Re: [PATCH] rt2x00: usb: fix reset resume

On Wed, Oct 24, 2012 at 08:35:26PM +0200, Stanislaw Gruszka wrote:
> On Tue, Oct 16, 2012 at 02:34:12PM +0200, Stanislaw Gruszka wrote:
> > 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 <[email protected]>
> > Reported-and-tested-by: Stephen Boyd <[email protected]>
> > Cc: [email protected]
> > Signed-off-by: Stanislaw Gruszka <[email protected]>
>
> NACK for this patch, Randomly I'm able to reproduce strange crashes
> when suspending and transiting data, which seem to not happen without
> this patch. Until I'll figure this out, let's not apply the patch.

Of course, I just applied this today...any chance for a fixup?

John
--
John W. Linville Someday the world will need a hero, and you
[email protected] might be all we have. Be ready.

2012-10-25 13:04:08

by Stanislaw Gruszka

[permalink] [raw]
Subject: Re: [PATCH] rt2x00: usb: fix reset resume

On Wed, Oct 24, 2012 at 05:44:55PM -0400, John W. Linville wrote:
> On Wed, Oct 24, 2012 at 08:35:26PM +0200, Stanislaw Gruszka wrote:
> > On Tue, Oct 16, 2012 at 02:34:12PM +0200, Stanislaw Gruszka wrote:
> > > 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 <[email protected]>
> > > Reported-and-tested-by: Stephen Boyd <[email protected]>
> > > Cc: [email protected]
> > > Signed-off-by: Stanislaw Gruszka <[email protected]>
> >
> > NACK for this patch, Randomly I'm able to reproduce strange crashes
> > when suspending and transiting data, which seem to not happen without
> > this patch. Until I'll figure this out, let's not apply the patch.
>
> Of course, I just applied this today...any chance for a fixup?

This problem is tricky, I'm not expecting fix soon. However I can not
reproduce it on 3.7 and can on 3.6. So I think patch can go to 3.7 .
Could you remove cc stable from it? If not, I'll NACK backported patch,
when GregKH will send information about the backport.

Stanislaw