On Mon, Oct 30, 2023 at 7:43 AM Simon Horman <ho...@ovn.org> wrote: > > On Mon, Oct 30, 2023 at 02:58:36AM -0400, Mike Pattrick wrote: > > Currently when userspace-tso is enabled, netdev-linux interfaces will > > indicate support for all offload flags regardless of interface > > configuration. This patch checks for which offload features are enabled > > during netdev construction. > > > > Signed-off-by: Mike Pattrick <m...@redhat.com> > > ... > > > @@ -2381,6 +2376,153 @@ netdev_internal_get_stats(const struct netdev > > *netdev_, > > return error; > > } > > > > +static int > > +netdev_linux_read_stringset_info(struct netdev_linux *netdev, uint32_t > > *len) > > +{ > > + /* > > + struct { > > + union { > > + struct ethtool_sset_info hdr; > > + struct { > > + uint64_t pad[2]; > > + uint32_t sset_len[1]; > > + }; > > + }; > > + } sset_info; > > + */ > > Hi Mike, > > maybe the comment above is an artifact that should be removed?
Hello Simon, Yes, that was some code mistakenly left in, sorry about that. Do you want me to resubmit the whole series now, or were you planning on taking a look at other patches in the series? Thanks for the review, Mike > > > + union { > > + struct ethtool_sset_info hdr; > > + struct { > > + uint64_t pad[2]; > > + uint32_t sset_len[1]; > > + }; > > + } sset_info; > > + > > + sset_info.hdr.cmd = ETHTOOL_GSSET_INFO; > > + sset_info.hdr.reserved = 0; > > + sset_info.hdr.sset_mask = 1ULL << ETH_SS_FEATURES; > > + > > + int error = netdev_linux_do_ethtool(netdev->up.name, > > + (struct ethtool_cmd *)&sset_info, > > + ETHTOOL_GSSET_INFO, "ETHTOOL_GSSET_INFO"); > > + if (error) { > > + return error; > > + } > > + *len = sset_info.sset_len[0]; > > + return 0; > > +} > > + > > + > > +static int > > +netdev_linux_read_definitions(struct netdev_linux *netdev, > > + struct ethtool_gstrings **pstrings) > > +{ > > + int error = 0; > > + struct ethtool_gstrings *strings = NULL; > > + uint32_t len = 0; > > Reverse xmas tree please. > > > + > > + error = netdev_linux_read_stringset_info(netdev, &len); > > + if (error || !len) { > > + return error; > > + } > > + strings = xcalloc(1, sizeof(*strings) + len * ETH_GSTRING_LEN); > > + if (!strings) { > > + return ENOMEM; > > + } > > + > > + strings->cmd = ETHTOOL_GSTRINGS; > > + strings->string_set = ETH_SS_FEATURES; > > + strings->len = len; > > + error = netdev_linux_do_ethtool(netdev->up.name, > > + (struct ethtool_cmd *) strings, > > + ETHTOOL_GSTRINGS, "ETHTOOL_GSTRINGS"); > > + if (error) { > > + goto out; > > + } > > + > > + for (int i = 0; i < len; i++) { > > + strings->data[(i + 1) * ETH_GSTRING_LEN - 1] = 0; > > + } > > + > > + *pstrings = strings; > > + > > + return 0; > > +out: > > + *pstrings = NULL; > > + free(strings); > > + return error; > > +} > > + > > +static void > > +netdev_linux_set_ol(struct netdev *netdev_) > > +{ > > + struct netdev_linux *netdev = netdev_linux_cast(netdev_); > > + struct ethtool_gstrings *names = NULL; > > + struct ethtool_gfeatures *features = NULL; > > + int error; > > Ditto. > > ... > _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev