Search Linux Wireless

Re: mac80211 does not support WPA when used with wext

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, 2007-03-31 at 15:03 -0400, Michael Wu wrote:
> On Saturday 31 March 2007 13:48, Dan Williams wrote:
> > On Sat, 2007-03-31 at 12:00 +0200, Johannes Berg wrote:
> > > On Sat, 2007-03-31 at 11:36 +0200, dragoran wrote:
> > > > Hello
> > > > While testing the iwlwifi driver I noticed that the mac80211 does
> > > > provide a wext interface but does not support wpa with it.
> > >
> > > You must have done something wrong, it works well.
> >
> > Nope!  This time it's really mac80211 :)
> >
> > Take a look at ieee80211_sta_scan_result() in mac80211/ieee80211_sta.c.
> > Note that it returns custom events for the WPA & RSN IEs.  That's just
> > wrong.  We should be using already-defined events.
> >
> What does that have to do with WPA not working? wpa_supplicant works fine with 
> the custom events on my system. Also works fine with the standard events 
> which the following patch makes mac80211 use.

wpa_supplicant works fine with it because it parses the custom events.

NetworkManager will not parse custom events by design, in the same way
that it will not allow WPA to be used on a card unless the driver
explicitly advertises WPA support, and requires the use of the
wpa_supplicant WEXT driver.  I'm not going to spend my time implementing
stuff 3 different ways; we need to standardize this stuff and stick with
it.

Draw a line in the sand and all that.  Sure, it's made some people's
lives harder, but NetworkManager was the reason madwifi added WE-19
support, for example.

Patch looks good though; thanks!  One thing I just thought of, which no
drivers probably do.  Should mac80211 check that there's enough space
left in the WE stream to actually add the IE?  There are usually checks
to ensure that there's enough space to add the next whole BSS, but I
don't know if we do checks to during the addition of each BSS.  Maybe
I'm wrong and this isn't an issue.

Dan

> --
> 
> mac80211: use IWEVGENIE
> 
> From: Michael Wu <flamingice@xxxxxxxxxxxx>
> 
> Use IWEVGENIE which was defined in WE-18.
> 
> Signed-off-by: Michael Wu <flamingice@xxxxxxxxxxxx>
> ---
> 
>  net/mac80211/ieee80211_sta.c |   40 ++++++++++------------------------------
>  1 files changed, 10 insertions(+), 30 deletions(-)
> 
> diff --git a/net/mac80211/ieee80211_sta.c b/net/mac80211/ieee80211_sta.c
> index 087f176..a227c38 100644
> --- a/net/mac80211/ieee80211_sta.c
> +++ b/net/mac80211/ieee80211_sta.c
> @@ -2839,39 +2839,19 @@ ieee80211_sta_scan_result(struct net_device *dev,
>  	current_ev = iwe_stream_add_point(current_ev, end_buf, &iwe, "");
>  
>  	if (bss && bss->wpa_ie) {
> -		char *buf, *p;
> -		int i;
> -		buf = kmalloc(30 + bss->wpa_ie_len * 2, GFP_ATOMIC);
> -		if (buf) {
> -			p = buf;
> -			p += sprintf(p, "wpa_ie=");
> -			for (i = 0; i < bss->wpa_ie_len; i++)
> -				p+= sprintf(p, "%02x", bss->wpa_ie[i]);
> -			memset(&iwe, 0, sizeof(iwe));
> -			iwe.cmd = IWEVCUSTOM;
> -			iwe.u.data.length = strlen(buf);
> -			current_ev = iwe_stream_add_point(current_ev, end_buf,
> -							  &iwe, buf);
> -			kfree(buf);
> -		}
> +		memset(&iwe, 0, sizeof(iwe));
> +		iwe.cmd = IWEVGENIE;
> +		iwe.u.data.length = bss->wpa_ie_len;
> +		current_ev = iwe_stream_add_point(current_ev, end_buf, &iwe,
> +						  bss->wpa_ie);
>  	}
>  
>  	if (bss && bss->rsn_ie) {
> -		char *buf, *p;
> -		int i;
> -		buf = kmalloc(30 + bss->rsn_ie_len * 2, GFP_ATOMIC);
> -		if (buf) {
> -			p = buf;
> -			p += sprintf(p, "rsn_ie=");
> -			for (i = 0; i < bss->rsn_ie_len; i++)
> -				p+= sprintf(p, "%02x", bss->rsn_ie[i]);
> -			memset(&iwe, 0, sizeof(iwe));
> -			iwe.cmd = IWEVCUSTOM;
> -			iwe.u.data.length = strlen(buf);
> -			current_ev = iwe_stream_add_point(current_ev, end_buf,
> -							  &iwe, buf);
> -			kfree(buf);
> -		}
> +		memset(&iwe, 0, sizeof(iwe));
> +		iwe.cmd = IWEVGENIE;
> +		iwe.u.data.length = bss->rsn_ie_len;
> +		current_ev = iwe_stream_add_point(current_ev, end_buf, &iwe,
> +						  bss->rsn_ie);
>  	}
>  
>  	if (bss) {

-
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux