On 1/27/26 4:11 PM, Matteo Perin via dev wrote:
> Refactors netdev_linux_read_stringset_info() and
> netdev_linux_read_definitions() to accept a string set type
> parameter, instead of hardcoding ETH_SS_FEATURES.
> 
> This allows these functions to query any ethtool string set type,
> such as ETH_SS_STATS (i.e. device statistics).
> 
> Signed-off-by: Matteo Perin <[email protected]>
> ---
>  lib/netdev-linux.c | 16 +++++++++-------
>  1 file changed, 9 insertions(+), 7 deletions(-)
> 
> diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c
> index 879f333cd..93a064cc2 100644
> --- a/lib/netdev-linux.c
> +++ b/lib/netdev-linux.c
> @@ -2428,7 +2428,8 @@ netdev_internal_get_stats(const struct netdev *netdev_,
>  }
>  
>  static int
> -netdev_linux_read_stringset_info(struct netdev_linux *netdev, uint32_t *len)
> +netdev_linux_read_stringset_info(struct netdev_linux *netdev,
> +                                  uint32_t string_set, uint32_t *len)

Indentation is off here.  Move 1 space to the left.
Also should it be 'enum ethtool_stringset' instead of a plain uint32?

>  {
>      union {
>          struct ethtool_cmd ecmd;
> @@ -2442,7 +2443,7 @@ netdev_linux_read_stringset_info(struct netdev_linux 
> *netdev, uint32_t *len)
>  
>      sset_info.hdr.cmd = ETHTOOL_GSSET_INFO;
>      sset_info.hdr.reserved = 0;
> -    sset_info.hdr.sset_mask = 1ULL << ETH_SS_FEATURES;
> +    sset_info.hdr.sset_mask = 1ULL << string_set;
>  
>      error = netdev_linux_do_ethtool(netdev_get_name(&netdev->up),
>                                      (struct ethtool_cmd *) &sset_info,
> @@ -2450,11 +2451,11 @@ netdev_linux_read_stringset_info(struct netdev_linux 
> *netdev, uint32_t *len)
>      if (error) {
>          return error;
>      }
> -    if (sset_info.hdr.sset_mask & (1ULL << ETH_SS_FEATURES)) {
> +    if (sset_info.hdr.sset_mask & (1ULL << string_set)) {
>          *len = sset_info.sset_len[0];
>          return 0;
>      } else {
> -        /* ETH_SS_FEATURES is not supported. */
> +        /* String set is not supported. */
>          return -EOPNOTSUPP;
>      }
>  }
> @@ -2462,13 +2463,14 @@ netdev_linux_read_stringset_info(struct netdev_linux 
> *netdev, uint32_t *len)
>  
>  static int
>  netdev_linux_read_definitions(struct netdev_linux *netdev,
> +                              uint32_t string_set,

enum ethtool_stringset?

>                                struct ethtool_gstrings **pstrings)
>  {
>      struct ethtool_gstrings *strings = NULL;
>      uint32_t len = 0;
>      int error = 0;
>  
> -    error = netdev_linux_read_stringset_info(netdev, &len);
> +    error = netdev_linux_read_stringset_info(netdev, string_set, &len);
>      if (error) {
>          return error;
>      } else if (!len) {
> @@ -2478,7 +2480,7 @@ netdev_linux_read_definitions(struct netdev_linux 
> *netdev,
>      strings = xzalloc(sizeof *strings + len * ETH_GSTRING_LEN);
>  
>      strings->cmd = ETHTOOL_GSTRINGS;
> -    strings->string_set = ETH_SS_FEATURES;
> +    strings->string_set = string_set;
>      strings->len = len;
>      error = netdev_linux_do_ethtool(netdev_get_name(&netdev->up),
>                                      (struct ethtool_cmd *) strings,
> @@ -2510,7 +2512,7 @@ netdev_linux_set_ol(struct netdev *netdev_)
>  
>      COVERAGE_INC(netdev_get_ethtool);
>  
> -    error = netdev_linux_read_definitions(netdev, &names);
> +    error = netdev_linux_read_definitions(netdev, ETH_SS_FEATURES, &names);
>      if (error) {
>          return;
>      }

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to