Maciej Fijalkowski <maciej.fijalkowski@xxxxxxxxx> writes: > On Thu, Jun 29, 2023 at 10:57:05PM +0200, Toke Høiland-Jørgensen wrote: >> Maciej Fijalkowski <maciej.fijalkowski@xxxxxxxxx> writes: >> >> > On Wed, Jun 28, 2023 at 11:02:06PM +0200, Toke Høiland-Jørgensen wrote: >> >> > diff --git a/net/core/netdev-genl.c b/net/core/netdev-genl.c >> >> > index a4270fafdf11..b24244f768e3 100644 >> >> > --- a/net/core/netdev-genl.c >> >> > +++ b/net/core/netdev-genl.c >> >> > @@ -19,6 +19,8 @@ netdev_nl_dev_fill(struct net_device *netdev, struct sk_buff *rsp, >> >> > return -EMSGSIZE; >> >> > >> >> > if (nla_put_u32(rsp, NETDEV_A_DEV_IFINDEX, netdev->ifindex) || >> >> > + nla_put_u32(rsp, NETDEV_A_DEV_XDP_ZC_MAX_SEGS, >> >> > + netdev->xdp_zc_max_segs) || >> >> >> >> Should this be omitted if the driver doesn't support zero-copy at all? >> > >> > This is now set independently when allocing net_device struct, so this can >> > be read without issues. Furthermore this value should not be used to find >> > out if underlying driver supports ZC or not - let us keep using >> > xdp_features for that. >> > >> > Does it make sense? >> >> Yes, I agree we shouldn't use this field for that. However, I am not >> sure I trust all userspace applications to get that right, so I fear >> some will end up looking at the field even when the flag is not set, >> which will lead to confused users. So why not just omit the property >> entirely when the flag is not set? :) > > I think that if you would read anything different than default 1 from this > field and your driver does not zupport even ZC then your driver is wrong. > It's like reporting something via xdp_features and not supporting it. You > only overwrite this within your driver *if* you support ZC multi-buffer. > > OTOH were you referring to omitting putting the u32 to netlink response at > all? Yes, the latter. I have no objection to the internal field being set to 1 by default or anything, I just think we should omit the netlink attribute when it doesn't have a meaningful value, to avoid confusion - being able to do that is one of the nice properties of netlink, after all :) -Toke