Re: [RFC 1/4] wifi: nl80211: allow drivers to support subset of NL80211_CMD_SET_BSS

Arend Van Spriel <[email protected]>
Newsgroups dev.linux.lists.brcm80211,org.kernel.vger.linux-wireless
Message-ID <[email protected]>
On June 4, 2025 4:06:51 PM Jeff Johnson <[email protected]> wrote:

> On 6/4/2025 1:55 AM, Arend van Spriel wrote:
>> @@ -2899,6 +2899,9 @@ enum nl80211_commands {
>> * APs Support". Drivers may set additional flags that they support
>> * in the kernel or device.
>> *
>> + * @NL80211_ATTR_BSS_PARAM: nested attribute used with %NL80211_CMD_GET_WIPHY
>> + * which indicates which BSS parameters can be modified.
>> + *
>
> Ideally this should describe what is contained in the nested attribute

Thanks, Jeff

Sure. Can add that info.

>
>
>> @@ -2996,6 +2996,40 @@ static int nl80211_send_wiphy(struct 
>> cfg80211_registered_device *rdev,
>> rdev->wiphy.ext_features))
>> goto nla_put_failure;
>>
>> + if (rdev->wiphy.bss_param_support) {
>> + struct nlattr *nested;
>> + u32 parsup = rdev->wiphy.bss_param_support;
>> +
>> + nested = nla_nest_start(msg, NL80211_ATTR_BSS_PARAM);
>> + if (!nested)
>> + goto nla_put_failure;
>> +
>> + if ((parsup & WIPHY_BSS_PARAM_CTS_PROT) &&
>> +    nla_put_flag(msg, NL80211_ATTR_BSS_CTS_PROT))
>> + goto nla_put_failure;
>> + if ((parsup & WIPHY_BSS_PARAM_SHORT_PREAMBLE) &&
>> +    nla_put_flag(msg, NL80211_ATTR_BSS_SHORT_PREAMBLE))
>> + goto nla_put_failure;
>> + if ((parsup & WIPHY_BSS_PARAM_SHORT_SLOT_TIME) &&
>> +    nla_put_flag(msg, NL80211_ATTR_BSS_SHORT_SLOT_TIME))
>> + goto nla_put_failure;
>> + if ((parsup & WIPHY_BSS_PARAM_BASIC_RATES) &&
>> +    nla_put_flag(msg, NL80211_ATTR_BSS_BASIC_RATES))
>> + goto nla_put_failure;
>> + if ((parsup & WIPHY_BSS_PARAM_AP_ISOLATE) &&
>> +    nla_put_flag(msg, NL80211_ATTR_AP_ISOLATE))
>> + goto nla_put_failure;
>> + if ((parsup & WIPHY_BSS_PARAM_HT_OPMODE) &&
>> +    nla_put_flag(msg, NL80211_ATTR_BSS_HT_OPMODE))
>> + goto nla_put_failure;
>> + if ((parsup & WIPHY_BSS_PARAM_P2P_CTWINDOW) &&
>> +    nla_put_flag(msg, NL80211_ATTR_P2P_CTWINDOW))
>> + goto nla_put_failure;
>> + if ((parsup & WIPHY_BSS_PARAM_P2P_OPPPS) &&
>> +    nla_put_flag(msg, NL80211_ATTR_P2P_OPPPS))
>> + goto nla_put_failure;
>> + nla_nest_end(msg, nested);
>
> I'm personally not a fan of (ab)using attribute ids in this manner. This means
> the receiver would need two different nla_parse policies, one that expects
> these to be NLA_FLAG when parsing the new attribute, along with the existing
> policy (such as the kernel's own nl80211_policy[NUM_NL80211_ATTR]) that is
> currently used when parsing the actual attributes.
>
> Does nl80211 have existing examples of using attribute ids like this?

Having two policies with the same attribute on receiving side would also 
rub my feathers. For the attributes used above we probably have other 
places where we use them from kernel to user-space. Clearly an oversight by 
me. Let me check.

Regards,
Arend
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.