Search Linux Wireless

Re: [PATCH 07/14] mac80211: adding 802.11n configuration flows

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

 



> + *
> + * @conf_ht: Configures low level driver with 802.11n HT data. Must be atomic.

Why is this a special callback when you pass struct ieee80211_conf?

> +#ifdef CONFIG_MAC80211_HT
> +	int (*conf_ht)(struct ieee80211_hw *hw, struct ieee80211_conf *conf);
> +#endif /* CONFIG_MAC80211_HT */

Shouldn't you use the if_conf callback then? I know that callback needs
to be rewritten to indicate what parameters changed, I think Michael
wanted to do something in that direction? Similar to my filter flags
change in how it'd work I guess.

> +#ifdef CONFIG_MAC80211_HT
> +
> +/**
> + * ieee80211_hw_config_ht should be used only after legacy configuration
> + * has been determined, as ht configuration depends upon the hardware's
> + * HT abilities for a _specific_ band.
> + */

This is part of ieee80211_hw_mode right? I have patches to remove that,
just to be clear on it, it's band specific not in any other way "mode"
specific. So without digging through all the details I assume you're
registering an 802.11 G mode with HT capabilities? That's pretty warped,
but yeah, mac80211 works that way right now. Crap. I should hurry up and
get that mode -> band change ready.

> +		conf->flags &= ~(IEEE80211_CONF_SUPPORT_HT_MODE);

> +		conf->flags &= ~(IEEE80211_CONF_SUPPORT_HT_MODE);

No parentheses please.

> +		conf->ht_conf.cap &= ~(IEEE80211_HT_CAP_MIMO_PS);

Same here. If any of the defines need parentheses they should have them
built-in.

> +		for (i = 0; i < 16; i++)
> +			conf->ht_conf.supp_mcs_set[i] =
> +				mode->ht_info.supp_mcs_set[i] &
> +				  req_ht_cap->supp_mcs_set[i];

Hmm. No define for that 16?
 
> +#ifdef CONFIG_MAC80211_HT
> +	if (elems.ht_cap_elem && elems.ht_info_elem && elems.wmm_param &&
> +	    local->ops->conf_ht) {
> +		struct ieee80211_ht_bss_info bss_info;
> +
> +		ieee80211_ht_cap_ie_to_ht_info(
> +				(struct ieee80211_ht_cap *)
> +				elems.ht_cap_elem, &sta->ht_info);
> +		ieee80211_ht_addt_info_ie_to_ht_bss_info(
> +				(struct ieee80211_ht_addt_info *)
> +				elems.ht_info_elem, &bss_info);
> +		ieee80211_hw_config_ht(local, 1, &sta->ht_info, &bss_info);
> +	}
> +#endif /* CONFIG_MAC80211_HT */

Since it's part of if_conf, isn't it passed to the driver as part of
such a call anyway later in this function? I don't see the need for the
special ht conf callback.
 
> +		/* check if AP changed bss inforamation */
> +		if ((conf->ht_bss_conf.primary_channel !=
> +		     bss_info.primary_channel) ||
> +		    (conf->ht_bss_conf.bss_cap != bss_info.bss_cap) ||
> +		    (conf->ht_bss_conf.bss_op_mode != bss_info.bss_op_mode))
> +			ieee80211_hw_config_ht(local, 1, &conf->ht_conf,
> +						&bss_info);

Yeah this is what I was talking about. mac80211 really sucks with all
this "has changed stuff". Hrmm. Michael, any time-frame on rewriting the
interface config stuff?

johannes

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