On Fri, Jun 19, 2020 at 06:39:59PM +0000, Alexander Lobakin wrote:
> The ordering of netdev_features_strings[] makes no sense when it comes
> to user interaction, as list of features in `ethtool -k` input is sorted
> according to the corresponding bit's position.
> Instead, it *does* make sense when it comes to adding new netdev_features
> or modifying existing ones. We have at least 2 occasions of forgetting to
> add the strings for newly introduced features, and one of them existed
> since 3.1x times till now.
> 
> Let's keep this stringtable sorted according to bit's position in enum
> netdev_features, as this simplifies both reading and modification of the
> source code and can help not to miss or forget anything.
> 
> Signed-off-by: Alexander Lobakin <aloba...@pm.me>

Reviewed-by: Michal Kubecek <mkube...@suse.cz>

This would also rather belong to net-next, IMHO.

Michal

> ---
>  net/ethtool/common.c | 26 ++++++++++++++++++++------
>  1 file changed, 20 insertions(+), 6 deletions(-)
> 
> diff --git a/net/ethtool/common.c b/net/ethtool/common.c
> index c8e3fce6e48d..24f35d47832d 100644
> --- a/net/ethtool/common.c
> +++ b/net/ethtool/common.c
> @@ -8,25 +8,25 @@
>  const char netdev_features_strings[NETDEV_FEATURE_COUNT][ETH_GSTRING_LEN] = {
>       [NETIF_F_SG_BIT]                        = "tx-scatter-gather",
>       [NETIF_F_IP_CSUM_BIT]                   = "tx-checksum-ipv4",
> +
> +     /* __UNUSED_NETIF_F_1 - deprecated */
> +
>       [NETIF_F_HW_CSUM_BIT]                   = "tx-checksum-ip-generic",
>       [NETIF_F_IPV6_CSUM_BIT]                 = "tx-checksum-ipv6",
>       [NETIF_F_HIGHDMA_BIT]                   = "highdma",
>       [NETIF_F_FRAGLIST_BIT]                  = "tx-scatter-gather-fraglist",
>       [NETIF_F_HW_VLAN_CTAG_TX_BIT]           = "tx-vlan-hw-insert",
> -
>       [NETIF_F_HW_VLAN_CTAG_RX_BIT]           = "rx-vlan-hw-parse",
>       [NETIF_F_HW_VLAN_CTAG_FILTER_BIT]       = "rx-vlan-filter",
> -     [NETIF_F_HW_VLAN_STAG_TX_BIT]           = "tx-vlan-stag-hw-insert",
> -     [NETIF_F_HW_VLAN_STAG_RX_BIT]           = "rx-vlan-stag-hw-parse",
> -     [NETIF_F_HW_VLAN_STAG_FILTER_BIT]       = "rx-vlan-stag-filter",
>       [NETIF_F_VLAN_CHALLENGED_BIT]           = "vlan-challenged",
>       [NETIF_F_GSO_BIT]                       = "tx-generic-segmentation",
>       [NETIF_F_LLTX_BIT]                      = "tx-lockless",
>       [NETIF_F_NETNS_LOCAL_BIT]               = "netns-local",
>       [NETIF_F_GRO_BIT]                       = "rx-gro",
> -     [NETIF_F_GRO_HW_BIT]                    = "rx-gro-hw",
>       [NETIF_F_LRO_BIT]                       = "rx-lro",
>  
> +     /* NETIF_F_GSO_SHIFT = NETIF_F_TSO_BIT */
> +
>       [NETIF_F_TSO_BIT]                       = "tx-tcp-segmentation",
>       [NETIF_F_GSO_ROBUST_BIT]                = "tx-gso-robust",
>       [NETIF_F_TSO_ECN_BIT]                   = "tx-tcp-ecn-segmentation",
> @@ -43,9 +43,14 @@ const char 
> netdev_features_strings[NETDEV_FEATURE_COUNT][ETH_GSTRING_LEN] = {
>       [NETIF_F_GSO_TUNNEL_REMCSUM_BIT]        = 
> "tx-tunnel-remcsum-segmentation",
>       [NETIF_F_GSO_SCTP_BIT]                  = "tx-sctp-segmentation",
>       [NETIF_F_GSO_ESP_BIT]                   = "tx-esp-segmentation",
> +
> +     /* NETIF_F_GSO_UDP_BIT - deprecated */
> +
>       [NETIF_F_GSO_UDP_L4_BIT]                = "tx-udp-segmentation",
>       [NETIF_F_GSO_FRAGLIST_BIT]              = "tx-gso-list",
>  
> +     /* NETIF_F_GSO_LAST = NETIF_F_GSO_FRAGLIST_BIT */
> +
>       [NETIF_F_FCOE_CRC_BIT]                  = "tx-checksum-fcoe-crc",
>       [NETIF_F_SCTP_CRC_BIT]                  = "tx-checksum-sctp",
>       [NETIF_F_FCOE_MTU_BIT]                  = "fcoe-mtu",
> @@ -56,16 +61,25 @@ const char 
> netdev_features_strings[NETDEV_FEATURE_COUNT][ETH_GSTRING_LEN] = {
>       [NETIF_F_LOOPBACK_BIT]                  = "loopback",
>       [NETIF_F_RXFCS_BIT]                     = "rx-fcs",
>       [NETIF_F_RXALL_BIT]                     = "rx-all",
> +     [NETIF_F_HW_VLAN_STAG_TX_BIT]           = "tx-vlan-stag-hw-insert",
> +     [NETIF_F_HW_VLAN_STAG_RX_BIT]           = "rx-vlan-stag-hw-parse",
> +     [NETIF_F_HW_VLAN_STAG_FILTER_BIT]       = "rx-vlan-stag-filter",
>       [NETIF_F_HW_L2FW_DOFFLOAD_BIT]          = "l2-fwd-offload",
> +
>       [NETIF_F_HW_TC_BIT]                     = "hw-tc-offload",
>       [NETIF_F_HW_ESP_BIT]                    = "esp-hw-offload",
>       [NETIF_F_HW_ESP_TX_CSUM_BIT]            = "esp-tx-csum-hw-offload",
>       [NETIF_F_RX_UDP_TUNNEL_PORT_BIT]        = "rx-udp_tunnel-port-offload",
> -     [NETIF_F_HW_TLS_RECORD_BIT]             = "tls-hw-record",
>       [NETIF_F_HW_TLS_TX_BIT]                 = "tls-hw-tx-offload",
>       [NETIF_F_HW_TLS_RX_BIT]                 = "tls-hw-rx-offload",
> +
> +     [NETIF_F_GRO_HW_BIT]                    = "rx-gro-hw",
> +     [NETIF_F_HW_TLS_RECORD_BIT]             = "tls-hw-record",
>       [NETIF_F_GRO_FRAGLIST_BIT]              = "rx-gro-list",
> +
>       [NETIF_F_HW_MACSEC_BIT]                 = "macsec-hw-offload",
> +
> +     /* NETDEV_FEATURE_COUNT */
>  };
>  
>  const char
> -- 
> 2.27.0
> 
> 

Attachment: signature.asc
Description: PGP signature

Reply via email to