From patchwork Thu Jan 12 11:04:52 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [RFC,1/2] hostapd: Derive frequency for BSSes other than the first Date: Thu, 12 Jan 2012 01:04:52 -0000 From: Yogesh Ashok Powar X-Patchwork-Id: 135620 Message-Id: <20120112110451.GE16414@hertz.marvell.com> To: Johannes Berg Cc: "j@w1.fi" , "hostap@shmoo.com" 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 > > --- > > 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;