2008-05-23 17:15:28

by Abhijeet Kolekar

[permalink] [raw]
Subject: [PATCH] mac80211 : Fixes the status message for iwconfig

iwconfig was showing incorrect status messages when disassociated.
Patch fixes this by always checking for association status in
ioctl calls for getting ap address.

Signed-off-by: Abhijeet Kolekar <[email protected]>
---
net/mac80211/wext.c | 11 ++++++++---
1 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/net/mac80211/wext.c b/net/mac80211/wext.c
index c2e2378..1a35562 100644
--- a/net/mac80211/wext.c
+++ b/net/mac80211/wext.c
@@ -501,9 +501,14 @@ static int ieee80211_ioctl_giwap(struct net_device *dev,
sdata = IEEE80211_DEV_TO_SUB_IF(dev);
if (sdata->vif.type == IEEE80211_IF_TYPE_STA ||
sdata->vif.type == IEEE80211_IF_TYPE_IBSS) {
- ap_addr->sa_family = ARPHRD_ETHER;
- memcpy(&ap_addr->sa_data, sdata->u.sta.bssid, ETH_ALEN);
- return 0;
+ if (sdata->u.sta.state == IEEE80211_ASSOCIATED) {
+ ap_addr->sa_family = ARPHRD_ETHER;
+ memcpy(&ap_addr->sa_data, sdata->u.sta.bssid, ETH_ALEN);
+ return 0;
+ } else {
+ memset(&ap_addr->sa_data, 0, ETH_ALEN);
+ return 0;
+ }
} else if (sdata->vif.type == IEEE80211_IF_TYPE_WDS) {
ap_addr->sa_family = ARPHRD_ETHER;
memcpy(&ap_addr->sa_data, sdata->u.wds.remote_addr, ETH_ALEN);
--
1.5.2.5



2008-05-23 17:39:17

by Dan Williams

[permalink] [raw]
Subject: Re: [PATCH] mac80211 : Fixes the status message for iwconfig

On Fri, 2008-05-23 at 10:15 -0700, Abhijeet Kolekar wrote:
> iwconfig was showing incorrect status messages when disassociated.
> Patch fixes this by always checking for association status in
> ioctl calls for getting ap address.
>
> Signed-off-by: Abhijeet Kolekar <[email protected]>

I may not remember correctly, but I think you need to also report the
BSSID being associated with during assoc & auth stages with WEXT. So
the right check here is to return nothing if _disassocated_, but
otherwise return the BSSID that's currently pending or associated with.

Dan

> ---
> net/mac80211/wext.c | 11 ++++++++---
> 1 files changed, 8 insertions(+), 3 deletions(-)
>
> diff --git a/net/mac80211/wext.c b/net/mac80211/wext.c
> index c2e2378..1a35562 100644
> --- a/net/mac80211/wext.c
> +++ b/net/mac80211/wext.c
> @@ -501,9 +501,14 @@ static int ieee80211_ioctl_giwap(struct net_device *dev,
> sdata = IEEE80211_DEV_TO_SUB_IF(dev);
> if (sdata->vif.type == IEEE80211_IF_TYPE_STA ||
> sdata->vif.type == IEEE80211_IF_TYPE_IBSS) {
> - ap_addr->sa_family = ARPHRD_ETHER;
> - memcpy(&ap_addr->sa_data, sdata->u.sta.bssid, ETH_ALEN);
> - return 0;
> + if (sdata->u.sta.state == IEEE80211_ASSOCIATED) {
> + ap_addr->sa_family = ARPHRD_ETHER;
> + memcpy(&ap_addr->sa_data, sdata->u.sta.bssid, ETH_ALEN);
> + return 0;
> + } else {
> + memset(&ap_addr->sa_data, 0, ETH_ALEN);
> + return 0;
> + }
> } else if (sdata->vif.type == IEEE80211_IF_TYPE_WDS) {
> ap_addr->sa_family = ARPHRD_ETHER;
> memcpy(&ap_addr->sa_data, sdata->u.wds.remote_addr, ETH_ALEN);


2008-05-23 18:11:30

by Dan Williams

[permalink] [raw]
Subject: Re: [PATCH] mac80211 : Fixes the status message for iwconfig

On Fri, 2008-05-23 at 10:44 -0700, Abhijeet Kolekar wrote:
> On Fri, 2008-23-05 at 13:39 -0400, Dan Williams wrote:
> > On Fri, 2008-05-23 at 10:15 -0700, Abhijeet Kolekar wrote:
> > > iwconfig was showing incorrect status messages when disassociated.
> > > Patch fixes this by always checking for association status in
> > > ioctl calls for getting ap address.
> > >
> > > Signed-off-by: Abhijeet Kolekar <[email protected]>
> >
> > I may not remember correctly, but I think you need to also report the
> > BSSID being associated with during assoc & auth stages with WEXT. So
> > the right check here is to return nothing if _disassocated_, but
> > otherwise return the BSSID that's currently pending or associated with.
> >
> > Dan
> One question though, Do we need to report similar things with essid or
> WEXT will always return the essid regardless of the state.

I lied; ignore me. Patch is good.

Acked-by: Dan Williams <[email protected]>

> >
> > > ---
> > > net/mac80211/wext.c | 11 ++++++++---
> > > 1 files changed, 8 insertions(+), 3 deletions(-)
> > >
> > > diff --git a/net/mac80211/wext.c b/net/mac80211/wext.c
> > > index c2e2378..1a35562 100644
> > > --- a/net/mac80211/wext.c
> > > +++ b/net/mac80211/wext.c
> > > @@ -501,9 +501,14 @@ static int ieee80211_ioctl_giwap(struct net_device *dev,
> > > sdata = IEEE80211_DEV_TO_SUB_IF(dev);
> > > if (sdata->vif.type == IEEE80211_IF_TYPE_STA ||
> > > sdata->vif.type == IEEE80211_IF_TYPE_IBSS) {
> > > - ap_addr->sa_family = ARPHRD_ETHER;
> > > - memcpy(&ap_addr->sa_data, sdata->u.sta.bssid, ETH_ALEN);
> > > - return 0;
> > > + if (sdata->u.sta.state == IEEE80211_ASSOCIATED) {
> > > + ap_addr->sa_family = ARPHRD_ETHER;
> > > + memcpy(&ap_addr->sa_data, sdata->u.sta.bssid, ETH_ALEN);
> > > + return 0;
> > > + } else {
> > > + memset(&ap_addr->sa_data, 0, ETH_ALEN);
> > > + return 0;
> > > + }
> > > } else if (sdata->vif.type == IEEE80211_IF_TYPE_WDS) {
> > > ap_addr->sa_family = ARPHRD_ETHER;
> > > memcpy(&ap_addr->sa_data, sdata->u.wds.remote_addr, ETH_ALEN);
> >
> --
> 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


2008-05-23 17:46:08

by Abhijeet Kolekar

[permalink] [raw]
Subject: Re: [PATCH] mac80211 : Fixes the status message for iwconfig

On Fri, 2008-23-05 at 13:39 -0400, Dan Williams wrote:
> On Fri, 2008-05-23 at 10:15 -0700, Abhijeet Kolekar wrote:
> > iwconfig was showing incorrect status messages when disassociated.
> > Patch fixes this by always checking for association status in
> > ioctl calls for getting ap address.
> >
> > Signed-off-by: Abhijeet Kolekar <[email protected]>
>
> I may not remember correctly, but I think you need to also report the
> BSSID being associated with during assoc & auth stages with WEXT. So
> the right check here is to return nothing if _disassocated_, but
> otherwise return the BSSID that's currently pending or associated with.
>
> Dan
One question though, Do we need to report similar things with essid or
WEXT will always return the essid regardless of the state.
>
> > ---
> > net/mac80211/wext.c | 11 ++++++++---
> > 1 files changed, 8 insertions(+), 3 deletions(-)
> >
> > diff --git a/net/mac80211/wext.c b/net/mac80211/wext.c
> > index c2e2378..1a35562 100644
> > --- a/net/mac80211/wext.c
> > +++ b/net/mac80211/wext.c
> > @@ -501,9 +501,14 @@ static int ieee80211_ioctl_giwap(struct net_device *dev,
> > sdata = IEEE80211_DEV_TO_SUB_IF(dev);
> > if (sdata->vif.type == IEEE80211_IF_TYPE_STA ||
> > sdata->vif.type == IEEE80211_IF_TYPE_IBSS) {
> > - ap_addr->sa_family = ARPHRD_ETHER;
> > - memcpy(&ap_addr->sa_data, sdata->u.sta.bssid, ETH_ALEN);
> > - return 0;
> > + if (sdata->u.sta.state == IEEE80211_ASSOCIATED) {
> > + ap_addr->sa_family = ARPHRD_ETHER;
> > + memcpy(&ap_addr->sa_data, sdata->u.sta.bssid, ETH_ALEN);
> > + return 0;
> > + } else {
> > + memset(&ap_addr->sa_data, 0, ETH_ALEN);
> > + return 0;
> > + }
> > } else if (sdata->vif.type == IEEE80211_IF_TYPE_WDS) {
> > ap_addr->sa_family = ARPHRD_ETHER;
> > memcpy(&ap_addr->sa_data, sdata->u.wds.remote_addr, ETH_ALEN);
>