Search Linux Wireless

Re: [PATCH 02/10] wifi: cfg80211: add support for advertising multiple radios belonging to a wiphy

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

 



On Thu, 2024-06-20 at 13:11 +0200, Felix Fietkau wrote:
> 
> + * @NL80211_WIPHY_RADIO_ATTR_FREQ_RANGES: Nested array of frequency ranges
> + *	supported by this radio.

That could point to &enum nl80211_wiphy_radio_freq_range (if it stays
this way)

However, also for new arrays defined in this patchset, which if I'm not
mistaken are

 - NL80211_ATTR_WIPHY_RADIOS
 - NL80211_ATTR_WIPHY_INTERFACE_COMBINATIONS
 - NL80211_WIPHY_RADIO_ATTR_FREQ_RANGES
 - NL80211_WIPHY_RADIO_ATTR_INTERFACE_COMBINATIONS

we should probably go with the times and use the multi-attr array
concept:
https://www.kernel.org/doc/html/latest/userspace-api/netlink/specs.html#multi-attr-arrays


That would change the structure so that each of the attributes listed
above can simply appear multiple times. I would consider at that point
renaming them all to singular (since each individually represents a
single entry), and perhaps at that point using a simple structure for
NL80211_WIPHY_RADIO_ATTR_FREQ_RANGE instead of the nesting. You could
even just move struct wiphy_radio_freq_range to nl80211.h

> +static int nl80211_put_radio(struct wiphy *wiphy, struct sk_buff *msg, int idx)
> +{
> +	const struct wiphy_radio *r = &wiphy->radio[idx];
> +	struct nlattr *radio, *freqs, *freq;
> +	int i;
> +
> +	radio = nla_nest_start(msg, idx);
> +	if (!radio)
> +		return -ENOBUFS;
> +
> +	freqs = nla_nest_start_noflag(msg, NL80211_WIPHY_RADIO_ATTR_FREQ_RANGES);

Either way, however, new code should not use _noflag()

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