[RFC 1/2] hostapd: Derive frequency for BSSes other than the first

Yogesh Ashok Powar yogeshp
Thu Jan 12 03:04:52 PST 2012


On Thu, Jan 12, 2012 at 02:39:13AM -0800, Johannes Berg wrote:
> On Thu, 2012-01-12 at 16:02 +0530, Yogesh Ashok Powar wrote:
> > Commit e4fb21676972952b5434e8c2a049e239d457abe6 moved frequency
> > storage from driver struct to bss struct and is assigned in
> > wpa_driver_nl80211_set_freq. As this wpa_driver_nl80211_set_freq
> > is triggered only on the first_bss, bss->freq for other BSSes is
> > never being set to the correct value. This sends MLME frames
> > on frequency zero (initialized value of freq) for BSSes other than the first.
> > 
> > To fix this deriving frequency value from first_bss.
> > 
> > Signed-off-by: Yogesh Ashok Powar <yogeshp at marvell.com>
> > ---
> >  src/drivers/driver_nl80211.c |    4 ++--
> >  1 files changed, 2 insertions(+), 2 deletions(-)
> > 
> > diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
> > index 6af8cc9..194a752 100644
> > --- a/src/drivers/driver_nl80211.c
> > +++ b/src/drivers/driver_nl80211.c
> > @@ -5136,7 +5136,7 @@ static int wpa_driver_nl80211_send_frame(struct i802_bss *bss,
> >  		return wpa_driver_nl80211_send_mntr(drv, data, len,
> >  						    encrypt, noack);
> >  
> > -	return nl80211_send_frame_cmd(bss, bss->freq, 0, data, len,
> > +	return nl80211_send_frame_cmd(bss, drv->first_bss.freq, 0, data, len,
> 
> Hmm, shouldn't we rather set the right freq in
> wpa_driver_nl80211_if_add()?
Yes! That looks much better. See the patch below.

Will send V2.

Thanks
Yogesh

diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
index 1f4a614..4616e22 100644
--- a/src/drivers/driver_nl80211.c
+++ b/src/drivers/driver_nl80211.c
@@ -7778,6 +7778,7 @@ static int wpa_driver_nl80211_if_add(void *priv, enum wpa_driver_if_type type,
                new_bss->ifindex = ifidx;
                new_bss->drv = drv;
                new_bss->next = drv->first_bss.next;
+               new_bss->freq = drv->first_bss.freq;
                drv->first_bss.next = new_bss;
                if (drv_priv)
                        *drv_priv = new_bss;



More information about the Hostap mailing list