diff mbox series

[net,3/3] net: ethtool: sync netdev_features_strings order with enum netdev_features

Message ID sqZrzUWnFxtxVcoxsWQF4Nv8G9fd9g61ZQV90btG1FJpZVRU1lf2Wa6pX4XBQq1fkkUxaotZDm9Bb0z01hODC2HEhShi_GOVWqLE7pDSr8w=@pm.me
State Changes Requested
Delegated to: David Miller
Headers show
Series net: ethtool: netdev_features_strings[] cleanup | expand

Commit Message

Alexander Lobakin June 19, 2020, 6:39 p.m. UTC
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 <alobakin@pm.me>
---
 net/ethtool/common.c | 26 ++++++++++++++++++++------
 1 file changed, 20 insertions(+), 6 deletions(-)

Comments

Michal Kubecek June 22, 2020, 10:10 p.m. UTC | #1
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 <alobakin@pm.me>

Reviewed-by: Michal Kubecek <mkubecek@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
> 
>
diff mbox series

Patch

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