Search Linux Wireless

RE: [PATCH RFC] mac80211: Fixes n-band association problem withcertain APs

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

 



There are two structures named wmm_info and wmm_param, they are used
while
Parsing the beacon frame. (Check the function ieee802_11_parse_elems).
Certain APs like D-link does not set the fifth bit in WMM IE. I was able
to see it thought packet capture. And this patch fixes this problem by
copying the wmm_info to wmm_ie, which enables the "wmm" flag in
iee80211_send_assoc.


Abhijeet
 

-----Original Message-----
From: Johannes Berg [mailto:johannes@xxxxxxxxxxxxxxxx] 
Sent: Friday, April 11, 2008 12:44 PM
To: Chatre, Reinette
Cc: linville@xxxxxxxxxxxxx; linux-wireless@xxxxxxxxxxxxxxx;
ipw3945-devel@xxxxxxxxxxxxxxxxxxxxx; Kolekar, Abhijeet
Subject: Re: [PATCH RFC] mac80211: Fixes n-band association problem
withcertain APs

On Thu, 2008-04-10 at 15:49 -0700, Reinette Chatre wrote:
> From: Abhijeet Kolekar <abhijeet.kolekar@xxxxxxxxx>
> 
> For WME(221) tag in beacon frames from certain n-only aps*
> 5th bit is not set.So while parsing the beacon frame the wmm_info*
> structure is used instead of wmm_param. wmm_info structure is*
> never used to set bss->wmm_ie. While sending the association request
to
> n-only ap it checks for wmm_ie. If it is set then only
ieee80211_ht_cap
> is sent during association request.So n-only association fails.
> This patch fixes this problem by copying the WME information from
wmm_info
> to bss->wmm_ie and thus enabling n-band association.

I haven't got a clue. I didn't even know there where two things,
wmm_param and wmm_info.

> Signed-off-by: Abhijeet Kolekar <abhijeet.kolekar@xxxxxxxxx>
> Acked-by: Ron Rindjunsky <ron.rindjunsky@xxxxxxxxx>
> ---
>  net/mac80211/mlme.c |   13 ++++++++++++-
>  1 files changed, 12 insertions(+), 1 deletions(-)
> 
> diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
> index 83e8b49..ec2f722 100644
> --- a/net/mac80211/mlme.c
> +++ b/net/mac80211/mlme.c
> @@ -2668,7 +2668,18 @@ static void ieee80211_rx_bss_info(struct
net_device *dev,
>  			bss->wmm_ie_len = elems.wmm_param_len + 2;
>  		} else
>  			bss->wmm_ie_len = 0;
> -	} else if (!elems.wmm_param && bss->wmm_ie) {
> +	} else if (elems.wmm_info &&
> +		    (!bss->wmm_ie || bss->wmm_ie_len !=
elems.wmm_info_len ||
> +		     memcmp(bss->wmm_ie,
elems.wmm_info,elems.wmm_info_len))) {
> +		kfree(bss->wmm_ie);
> +		bss->wmm_ie = kmalloc(elems.wmm_info_len + 2,
GFP_ATOMIC);
> +		if (bss->wmm_ie) {
> +			memcpy(bss->wmm_ie, elems.wmm_info - 2,
> +			       elems.wmm_info_len + 2);
> +			bss->wmm_ie_len = elems.wmm_info_len + 2;
> +		} else
> +			bss->wmm_ie_len = 0;
> +	} else if (!elems.wmm_param && !elems.wmm_info && bss->wmm_ie) {
>  		kfree(bss->wmm_ie);
>  		bss->wmm_ie = NULL;
>  		bss->wmm_ie_len = 0;
--
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