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