2007-02-08 19:48:48

by Michael Wu

[permalink] [raw]
Subject: [PATCH] d80211: fix authentication issues

d80211: fix authentication issues

This patch prevents the MLME in d80211 from getting stuck when there is no
reply to authentication frames. It also allows the bssid to be correctly
set during IEEE80211_AUTHENTICATE.

Signed-off-by: Michael Wu <[email protected]>
---

net/d80211/ieee80211_sta.c | 5 ++++-
1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/net/d80211/ieee80211_sta.c b/net/d80211/ieee80211_sta.c
index feba62b..64dbc79 100644
--- a/net/d80211/ieee80211_sta.c
+++ b/net/d80211/ieee80211_sta.c
@@ -453,6 +453,7 @@ static void ieee80211_authenticate(struc
printk(KERN_DEBUG "%s: authentication with AP " MAC_FMT
" timed out\n",
dev->name, MAC_ARG(ifsta->bssid));
+ ifsta->state = IEEE80211_DISABLED;
return;
}

@@ -668,6 +669,7 @@ static void ieee80211_associate(struct n
printk(KERN_DEBUG "%s: association with AP " MAC_FMT
" timed out\n",
dev->name, MAC_ARG(ifsta->bssid));
+ ifsta->state = IEEE80211_DISABLED;
return;
}

@@ -677,6 +679,7 @@ static void ieee80211_associate(struct n
if (ieee80211_privacy_mismatch(dev, ifsta)) {
printk(KERN_DEBUG "%s: mismatch in privacy configuration and "
"mixed-cell disabled - abort association\n", dev->name);
+ ifsta->state = IEEE80211_DISABLED;
return;
}

@@ -2355,7 +2358,7 @@ int ieee80211_sta_set_bssid(struct net_d
ifsta->bssid_set = 0;
else
ifsta->bssid_set = 1;
- if (ifsta->ssid_set && ifsta->state != IEEE80211_AUTHENTICATE)
+ if (ifsta->ssid_set)
ieee80211_sta_new_auth(dev, ifsta);

return 0;


Attachments:
(No filename) (1.54 kB)
(No filename) (189.00 B)
Download all attachments

2007-02-09 14:25:56

by Jiri Benc

[permalink] [raw]
Subject: Re: [PATCH] d80211: fix authentication issues

On Thu, 8 Feb 2007 14:48:15 -0500, Michael Wu wrote:
> @@ -2355,7 +2358,7 @@ int ieee80211_sta_set_bssid(struct net_d
> ifsta->bssid_set = 0;
> else
> ifsta->bssid_set = 1;
> - if (ifsta->ssid_set && ifsta->state != IEEE80211_AUTHENTICATE)
> + if (ifsta->ssid_set)
> ieee80211_sta_new_auth(dev, ifsta);

How do you protect against already running ieee80211_associate (called
from ieee80211_sta_work)?

Thanks,

Jiri

--
Jiri Benc
SUSE Labs

2007-02-15 21:27:18

by Jiri Benc

[permalink] [raw]
Subject: Re: [PATCH] d80211: fix authentication issues

On Thu, 8 Feb 2007 14:48:15 -0500, Michael Wu wrote:
> This patch prevents the MLME in d80211 from getting stuck when there is no
> reply to authentication frames. It also allows the bssid to be correctly
> set during IEEE80211_AUTHENTICATE.

Applied to my tree, thanks for the patch!

Jiri

--
Jiri Benc
SUSE Labs

2007-02-09 14:26:43

by Jiri Benc

[permalink] [raw]
Subject: Re: [PATCH] d80211: fix authentication issues

On Fri, 9 Feb 2007 15:25:40 +0100, Jiri Benc wrote:
> On Thu, 8 Feb 2007 14:48:15 -0500, Michael Wu wrote:
> > @@ -2355,7 +2358,7 @@ int ieee80211_sta_set_bssid(struct net_d
> > ifsta->bssid_set = 0;
> > else
> > ifsta->bssid_set = 1;
> > - if (ifsta->ssid_set && ifsta->state != IEEE80211_AUTHENTICATE)
> > + if (ifsta->ssid_set)
> > ieee80211_sta_new_auth(dev, ifsta);
>
> How do you protect against already running ieee80211_associate (called

Sorry, should be ieee80211_authenticate, of course.

Jiri

--
Jiri Benc
SUSE Labs