Search Linux Wireless

Re: [PATCH RFC] mac80211: Fixes n-band association problem with certain APs

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

 



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;

Attachment: signature.asc
Description: This is a digitally signed message part


[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