2011-09-13 14:48:39

by Rajkumar Manoharan

[permalink] [raw]
Subject: [RFC] wireless: Reset beacon_found while updating regulatory

During the association, the regulatory is updated by country IE
that reaps the previously found beacons. So the passive scan
channels after the association is never getting cleared even
the beacons are received on that channel. This patch resets
beacon_found while updating regulatory.

Signed-off-by: Rajkumar Manoharan <[email protected]>
---
net/wireless/reg.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/net/wireless/reg.c b/net/wireless/reg.c
index 9f3aa5c..e38ccbb 100644
--- a/net/wireless/reg.c
+++ b/net/wireless/reg.c
@@ -850,6 +850,7 @@ static void handle_channel(struct wiphy *wiphy,
return;
}

+ chan->beacon_found = false;
chan->flags = flags | bw_flags | map_regdom_flags(reg_rule->flags);
chan->max_antenna_gain = min(chan->orig_mag,
(int) MBI_TO_DBI(power_rule->max_antenna_gain));
--
1.7.6.1



2011-09-13 21:57:09

by Luis Chamberlain

[permalink] [raw]
Subject: Re: [RFC] wireless: Reset beacon_found while updating regulatory

On Tue, Sep 13, 2011 at 08:19:13PM +0530, Rajkumar Manoharan wrote:
> During the association, the regulatory is updated by country IE
> that reaps the previously found beacons. So the passive scan
> channels after the association is never getting cleared even
> the beacons are received on that channel. This patch resets
> beacon_found while updating regulatory.
>
> Signed-off-by: Rajkumar Manoharan <[email protected]>
> ---
> net/wireless/reg.c | 1 +
> 1 files changed, 1 insertions(+), 0 deletions(-)
>
> diff --git a/net/wireless/reg.c b/net/wireless/reg.c
> index 9f3aa5c..e38ccbb 100644
> --- a/net/wireless/reg.c
> +++ b/net/wireless/reg.c
> @@ -850,6 +850,7 @@ static void handle_channel(struct wiphy *wiphy,
> return;
> }
>
> + chan->beacon_found = false;
> chan->flags = flags | bw_flags | map_regdom_flags(reg_rule->flags);
> chan->max_antenna_gain = min(chan->orig_mag,
> (int) MBI_TO_DBI(power_rule->max_antenna_gain));

Good catch, now you want to state *why* you want this and you want
to annotate this as a stable fix as well. The impact as I see it
would be that after a STA disconnects *or* when for any reason a
regulatory domain change happens the beacon hint flag is not
cleared therefore preventing future beacon hints to be learned.
This is important as a regulatory domain change or a restore
of regulatory settings would set back the passive scan and no-ibss
flags on the channel. This is the right place to do this given that
it covers any regulatory domain change.

Luis

2011-09-14 03:08:25

by Rajkumar Manoharan

[permalink] [raw]
Subject: Re: [RFC] wireless: Reset beacon_found while updating regulatory

On Tue, Sep 13, 2011 at 05:57:04PM -0400, Luis R. Rodriguez wrote:
> On Tue, Sep 13, 2011 at 08:19:13PM +0530, Rajkumar Manoharan wrote:
> > During the association, the regulatory is updated by country IE
> > that reaps the previously found beacons. So the passive scan
> > channels after the association is never getting cleared even
> > the beacons are received on that channel. This patch resets
> > beacon_found while updating regulatory.
> >
> > Signed-off-by: Rajkumar Manoharan <[email protected]>
> > ---
> > net/wireless/reg.c | 1 +
> > 1 files changed, 1 insertions(+), 0 deletions(-)
> >
> > diff --git a/net/wireless/reg.c b/net/wireless/reg.c
> > index 9f3aa5c..e38ccbb 100644
> > --- a/net/wireless/reg.c
> > +++ b/net/wireless/reg.c
> > @@ -850,6 +850,7 @@ static void handle_channel(struct wiphy *wiphy,
> > return;
> > }
> >
> > + chan->beacon_found = false;
> > chan->flags = flags | bw_flags | map_regdom_flags(reg_rule->flags);
> > chan->max_antenna_gain = min(chan->orig_mag,
> > (int) MBI_TO_DBI(power_rule->max_antenna_gain));
>
> Good catch, now you want to state *why* you want this and you want
> to annotate this as a stable fix as well. The impact as I see it
> would be that after a STA disconnects *or* when for any reason a
> regulatory domain change happens the beacon hint flag is not
> cleared therefore preventing future beacon hints to be learned.
> This is important as a regulatory domain change or a restore
> of regulatory settings would set back the passive scan and no-ibss
> flags on the channel. This is the right place to do this given that
> it covers any regulatory domain change.
>
Thanks Luis. I will update your comments in commit log and Cc to stable
while sending the patch. So are you ok with this RFC?

--
Rajkumar