On Tue, 2022-09-20 at 15:35 +0530, Vasanthakumar Thiagarajan wrote: > A new nested nl attribute is added to the same existing NL command to > advertise the iface combination capability for each underlying hardware > when driver groups more than one physical hardware under one wiphy to > enable MLO among them. That's a good point - are we assuming this implies you can do MLO across the groups? Maybe somebody would want to use this advertisement without allowing MLO? (Not sure that's useful vs. multiple wiphys though, but maybe to simplify driver if there are some devices w/o MLO?) > + for (l = 0; l < c->iface_hw_list->n_limits; l++) { > + struct nlattr *limit; > + > + limit = nla_nest_start(msg, l + 1); > + if (!limit) > + return -ENOBUFS; > + > + if (nla_put_u16(msg, NL80211_IFACE_LIMIT_MAX, > + c->iface_hw_list[i].limits[l].max)) > + return -ENOBUFS; > + > + if (nla_put_u16(msg, NL80211_IFACE_LIMIT_TYPES, > + c->iface_hw_list[i].limits[l].types)) > + return -ENOBUFS; > + > + nla_nest_end(msg, limit); > + } > + nla_nest_end(msg, limits); Feels like this part is kind of pre-existing code, or should be, could it be refactored? > + if (nla_put_u32(msg, > + NL80211_IFACE_COMB_PER_HW_COMB_NUM_CHANNELS, > + c->iface_hw_list[i].num_different_channels)) > + return -ENOBUFS; > + > + if (nla_put_u16(msg, > + NL80211_IFACE_COMB_PER_HW_COMB_MAXIMUM, > + c->iface_hw_list[i].max_interfaces)) > + return -ENOBUFS; > + > + nla_nest_end(msg, hw_combi); And even this feels like it must already exist in some way? Wouldn't it even be easier to parse for userspace if it wasn't a separate set of attributes? johannes