2012-07-02 12:08:17

by Eliad Peller

[permalink] [raw]
Subject: [PATCH] mac80211: always set in_reconfig=false on wakeup

If the interfaces were removed just before a restart
work was started, open_count will be 0, and most of
the reconfig work will be skipped, including the
resetting of local->in_reconfig to false.

Leaving local->inconfig = true will result in
dropping any incoming packet.

Fix it by always setting local->in_reconfig = false
(even if there are no active interfaces).

Signed-off-by: Eliad Peller <[email protected]>
---
this should go to 3.5

net/mac80211/util.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/net/mac80211/util.c b/net/mac80211/util.c
index 242ecde..e1b7c63 100644
--- a/net/mac80211/util.c
+++ b/net/mac80211/util.c
@@ -1411,10 +1411,10 @@ int ieee80211_reconfig(struct ieee80211_local *local)
if (ieee80211_sdata_running(sdata))
ieee80211_enable_keys(sdata);

+ wake_up:
local->in_reconfig = false;
barrier();

- wake_up:
/*
* Clear the WLAN_STA_BLOCK_BA flag so new aggregation
* sessions can be established after a resume.
--
1.7.6.401.g6a319



2012-07-05 15:01:58

by Eliad Peller

[permalink] [raw]
Subject: Re: [PATCH] mac80211: always set in_reconfig=false on wakeup

On Mon, Jul 2, 2012 at 9:17 PM, John W. Linville <[email protected]> wrote:
> On Mon, Jul 02, 2012 at 02:19:01PM +0200, Johannes Berg wrote:
>> On Mon, 2012-07-02 at 15:08 +0300, Eliad Peller wrote:
>> > If the interfaces were removed just before a restart
>> > work was started, open_count will be 0, and most of
>> > the reconfig work will be skipped, including the
>> > resetting of local->in_reconfig to false.
>> >
>> > Leaving local->inconfig = true will result in
>> > dropping any incoming packet.
>> >
>> > Fix it by always setting local->in_reconfig = false
>> > (even if there are no active interfaces).
>> >
>> > Signed-off-by: Eliad Peller <[email protected]>
>> > ---
>> > this should go to 3.5
>>
>> Also looks good, thanks
>>
>> Reviewed-by: Johannes Berg <[email protected]>
>>
>> John, could you also pick this up?
>>
>> johannes
>>
>>
>> > net/mac80211/util.c | 2 +-
>> > 1 files changed, 1 insertions(+), 1 deletions(-)
>> >
>> > diff --git a/net/mac80211/util.c b/net/mac80211/util.c
>> > index 242ecde..e1b7c63 100644
>> > --- a/net/mac80211/util.c
>> > +++ b/net/mac80211/util.c
>> > @@ -1411,10 +1411,10 @@ int ieee80211_reconfig(struct ieee80211_local *local)
>> > if (ieee80211_sdata_running(sdata))
>> > ieee80211_enable_keys(sdata);
>> >
>> > + wake_up:
>> > local->in_reconfig = false;
>> > barrier();
>> >
>> > - wake_up:
>> > /*
>> > * Clear the WLAN_STA_BLOCK_BA flag so new aggregation
>> > * sessions can be established after a resume.
>
> This doesn't apply to 3.5 -- the "local->in_reconfig = false" bit isn't there.
>
err... my mistake. this only applies on wireless-next.
sorry for the hassle.

Eliad.

2012-07-05 14:52:21

by John W. Linville

[permalink] [raw]
Subject: Re: [PATCH] mac80211: always set in_reconfig=false on wakeup

On Mon, Jul 02, 2012 at 02:19:01PM +0200, Johannes Berg wrote:
> On Mon, 2012-07-02 at 15:08 +0300, Eliad Peller wrote:
> > If the interfaces were removed just before a restart
> > work was started, open_count will be 0, and most of
> > the reconfig work will be skipped, including the
> > resetting of local->in_reconfig to false.
> >
> > Leaving local->inconfig = true will result in
> > dropping any incoming packet.
> >
> > Fix it by always setting local->in_reconfig = false
> > (even if there are no active interfaces).
> >
> > Signed-off-by: Eliad Peller <[email protected]>
> > ---
> > this should go to 3.5
>
> Also looks good, thanks
>
> Reviewed-by: Johannes Berg <[email protected]>
>
> John, could you also pick this up?
>
> johannes
>
>
> > net/mac80211/util.c | 2 +-
> > 1 files changed, 1 insertions(+), 1 deletions(-)
> >
> > diff --git a/net/mac80211/util.c b/net/mac80211/util.c
> > index 242ecde..e1b7c63 100644
> > --- a/net/mac80211/util.c
> > +++ b/net/mac80211/util.c
> > @@ -1411,10 +1411,10 @@ int ieee80211_reconfig(struct ieee80211_local *local)
> > if (ieee80211_sdata_running(sdata))
> > ieee80211_enable_keys(sdata);
> >
> > + wake_up:
> > local->in_reconfig = false;
> > barrier();
> >
> > - wake_up:
> > /*
> > * Clear the WLAN_STA_BLOCK_BA flag so new aggregation
> > * sessions can be established after a resume.

This doesn't apply to 3.5 -- the "local->in_reconfig = false" bit isn't there.

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

2012-07-05 15:09:32

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH] mac80211: always set in_reconfig=false on wakeup

On Thu, 2012-07-05 at 18:01 +0300, Eliad Peller wrote:

> >> > diff --git a/net/mac80211/util.c b/net/mac80211/util.c
> >> > index 242ecde..e1b7c63 100644
> >> > --- a/net/mac80211/util.c
> >> > +++ b/net/mac80211/util.c
> >> > @@ -1411,10 +1411,10 @@ int ieee80211_reconfig(struct ieee80211_local *local)
> >> > if (ieee80211_sdata_running(sdata))
> >> > ieee80211_enable_keys(sdata);
> >> >
> >> > + wake_up:
> >> > local->in_reconfig = false;
> >> > barrier();
> >> >
> >> > - wake_up:
> >> > /*
> >> > * Clear the WLAN_STA_BLOCK_BA flag so new aggregation
> >> > * sessions can be established after a resume.
> >
> > This doesn't apply to 3.5 -- the "local->in_reconfig = false" bit isn't there.
> >
> err... my mistake. this only applies on wireless-next.
> sorry for the hassle.

I'll pick it up

johannes


2012-07-02 12:19:06

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH] mac80211: always set in_reconfig=false on wakeup

On Mon, 2012-07-02 at 15:08 +0300, Eliad Peller wrote:
> If the interfaces were removed just before a restart
> work was started, open_count will be 0, and most of
> the reconfig work will be skipped, including the
> resetting of local->in_reconfig to false.
>
> Leaving local->inconfig = true will result in
> dropping any incoming packet.
>
> Fix it by always setting local->in_reconfig = false
> (even if there are no active interfaces).
>
> Signed-off-by: Eliad Peller <[email protected]>
> ---
> this should go to 3.5

Also looks good, thanks

Reviewed-by: Johannes Berg <[email protected]>

John, could you also pick this up?

johannes


> net/mac80211/util.c | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/net/mac80211/util.c b/net/mac80211/util.c
> index 242ecde..e1b7c63 100644
> --- a/net/mac80211/util.c
> +++ b/net/mac80211/util.c
> @@ -1411,10 +1411,10 @@ int ieee80211_reconfig(struct ieee80211_local *local)
> if (ieee80211_sdata_running(sdata))
> ieee80211_enable_keys(sdata);
>
> + wake_up:
> local->in_reconfig = false;
> barrier();
>
> - wake_up:
> /*
> * Clear the WLAN_STA_BLOCK_BA flag so new aggregation
> * sessions can be established after a resume.