[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20200622221020.budxdjdoxwvqd42q@lion.mk-sys.cz>
Date: Tue, 23 Jun 2020 00:10:20 +0200
From: Michal Kubecek <mkubecek@...e.cz>
To: netdev@...r.kernel.org
Cc: Alexander Lobakin <alobakin@...me>,
"David S. Miller" <davem@...emloft.net>,
Jakub Kicinski <kuba@...nel.org>,
Florian Fainelli <f.fainelli@...il.com>,
Andrew Lunn <andrew@...n.ch>, Jiri Pirko <jiri@...lanox.com>,
Antoine Tenart <antoine.tenart@...tlin.com>,
Steffen Klassert <steffen.klassert@...unet.com>,
Aya Levin <ayal@...lanox.com>,
Tom Herbert <therbert@...gle.com>, linux-kernel@...r.kernel.org
Subject: Re: [PATCH net 3/3] net: ethtool: sync netdev_features_strings order
with enum netdev_features
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@...me>
Reviewed-by: Michal Kubecek <mkubecek@...e.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
>
>
Download attachment "signature.asc" of type "application/pgp-signature" (489 bytes)
Powered by blists - more mailing lists