Search Linux Wireless

Re: [PATCH V3 2/2] mac80211: allow setting spatial reuse parameters from bss_conf

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

 



On Tue, 2019-06-18 at 08:19 +0200, John Crispin wrote:
> Store the OBSS PD parameters inside bss_conf when bringing up an AP and/or
> when a station connects to an AP. This allows the driver to configure the
> HW accordingly.
> 
> Signed-off-by: Shashidhar Lakkavalli <slakkavalli@xxxxxxxxx>
> Signed-off-by: John Crispin <john@xxxxxxxxxxx>
> ---
>  include/net/cfg80211.h       | 15 +++++++++++++
>  include/net/mac80211.h       |  4 ++++
>  include/uapi/linux/nl80211.h | 27 ++++++++++++++++++++++
>  net/mac80211/cfg.c           |  5 ++++-
>  net/mac80211/he.c            | 24 ++++++++++++++++++++
>  net/mac80211/ieee80211_i.h   |  3 +++
>  net/mac80211/mlme.c          |  1 +
>  net/wireless/nl80211.c       | 43 ++++++++++++++++++++++++++++++++++++
>  8 files changed, 121 insertions(+), 1 deletion(-)

Not sure if I missed this before, but in any case please split between
cfg80211 and mac80211 for all but the most trivial patches.

> +/**
> + * enum nl80211_he_spr - spatial reuse attributes

bad copy/paste? :)

> + * @__NL80211_HE_OBSS_PD_ATTR_INVALID: Invalid
> + *
> + * @NL80211_ATTR_HE_OBSS_PD_MIN_OFFSET: the OBSS PD minimum tx power offset.
> + * @NL80211_ATTR_HE_OBSS_PD_MAX_OFFSET: the OBSS PD maximum tx power offset.
> + *
> + * @__NL80211_HE_OBSS_PD_ATTR_LAST: Internal
> + * @NL80211_HE_OBSS_PD_ATTR_MAX: highest spiatl reuse attribute.

typo & wrong anyway, OBSS PD not SPR

> + */

Those prefixes are a bit confusing - IMHO they should all be
NL80211_HE_OBSS_PD_ATTR_*, NL80211_ATTR_* is mostly (except for a few
historical bugs) the top-level attributes.


> +enum nl80211_he_spr_attributes {

here also

> +	memcpy(&sdata->vif.bss_conf.he_obss_pd, &params->he_obss_pd,
> +	       sizeof(struct ieee80211_he_obss_pd));

just use struct assignment

	blabla.he_obss_pd = params->he_obss_pd;


> +	[NL80211_ATTR_HE_OBSS_PD] = { .type = NLA_NESTED },

please use NLA_POLICY_NESTED() (requires putting the below policy above
this point)
 
> +static const struct nla_policy
> +			he_spr_policy[NL80211_HE_OBSS_PD_ATTR_MAX + 1] = {

I guess I'd lose all the tabs here but don't really care that much.

> +	[NL80211_ATTR_HE_OBSS_PD_MIN_OFFSET] = { .type = NLA_U32 },
> +	[NL80211_ATTR_HE_OBSS_PD_MAX_OFFSET] = { .type = NLA_U32 },

That can't be right, they go into u8 eventually, no? Use NLA_U8 or maybe
even NLA_POLICY_RANGE().

Also in the struct ieee80211_he_obss_pd you have u32 for no real reason?

In the element in the frame you only used a single u8.

> +	if (!tb[NL80211_ATTR_HE_OBSS_PD_MIN_OFFSET] ||
> +	    !tb[NL80211_ATTR_HE_OBSS_PD_MAX_OFFSET])
> +		return -EINVAL;

> +	if (he_obss_pd->min_offset >= he_obss_pd->max_offset)
> +		return -EINVAL;

Maybe add some extack error messages for this.

johannes




[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux