xref: /openbmc/linux/net/ethtool/common.c (revision d44e13108b6da4e1c4778bd654a470208e02ef37)
1*d44e1310SMichal Kubecek // SPDX-License-Identifier: GPL-2.0-only
2*d44e1310SMichal Kubecek 
3*d44e1310SMichal Kubecek #include "common.h"
4*d44e1310SMichal Kubecek 
5*d44e1310SMichal Kubecek const char netdev_features_strings[NETDEV_FEATURE_COUNT][ETH_GSTRING_LEN] = {
6*d44e1310SMichal Kubecek 	[NETIF_F_SG_BIT] =               "tx-scatter-gather",
7*d44e1310SMichal Kubecek 	[NETIF_F_IP_CSUM_BIT] =          "tx-checksum-ipv4",
8*d44e1310SMichal Kubecek 	[NETIF_F_HW_CSUM_BIT] =          "tx-checksum-ip-generic",
9*d44e1310SMichal Kubecek 	[NETIF_F_IPV6_CSUM_BIT] =        "tx-checksum-ipv6",
10*d44e1310SMichal Kubecek 	[NETIF_F_HIGHDMA_BIT] =          "highdma",
11*d44e1310SMichal Kubecek 	[NETIF_F_FRAGLIST_BIT] =         "tx-scatter-gather-fraglist",
12*d44e1310SMichal Kubecek 	[NETIF_F_HW_VLAN_CTAG_TX_BIT] =  "tx-vlan-hw-insert",
13*d44e1310SMichal Kubecek 
14*d44e1310SMichal Kubecek 	[NETIF_F_HW_VLAN_CTAG_RX_BIT] =  "rx-vlan-hw-parse",
15*d44e1310SMichal Kubecek 	[NETIF_F_HW_VLAN_CTAG_FILTER_BIT] = "rx-vlan-filter",
16*d44e1310SMichal Kubecek 	[NETIF_F_HW_VLAN_STAG_TX_BIT] =  "tx-vlan-stag-hw-insert",
17*d44e1310SMichal Kubecek 	[NETIF_F_HW_VLAN_STAG_RX_BIT] =  "rx-vlan-stag-hw-parse",
18*d44e1310SMichal Kubecek 	[NETIF_F_HW_VLAN_STAG_FILTER_BIT] = "rx-vlan-stag-filter",
19*d44e1310SMichal Kubecek 	[NETIF_F_VLAN_CHALLENGED_BIT] =  "vlan-challenged",
20*d44e1310SMichal Kubecek 	[NETIF_F_GSO_BIT] =              "tx-generic-segmentation",
21*d44e1310SMichal Kubecek 	[NETIF_F_LLTX_BIT] =             "tx-lockless",
22*d44e1310SMichal Kubecek 	[NETIF_F_NETNS_LOCAL_BIT] =      "netns-local",
23*d44e1310SMichal Kubecek 	[NETIF_F_GRO_BIT] =              "rx-gro",
24*d44e1310SMichal Kubecek 	[NETIF_F_GRO_HW_BIT] =           "rx-gro-hw",
25*d44e1310SMichal Kubecek 	[NETIF_F_LRO_BIT] =              "rx-lro",
26*d44e1310SMichal Kubecek 
27*d44e1310SMichal Kubecek 	[NETIF_F_TSO_BIT] =              "tx-tcp-segmentation",
28*d44e1310SMichal Kubecek 	[NETIF_F_GSO_ROBUST_BIT] =       "tx-gso-robust",
29*d44e1310SMichal Kubecek 	[NETIF_F_TSO_ECN_BIT] =          "tx-tcp-ecn-segmentation",
30*d44e1310SMichal Kubecek 	[NETIF_F_TSO_MANGLEID_BIT] =	 "tx-tcp-mangleid-segmentation",
31*d44e1310SMichal Kubecek 	[NETIF_F_TSO6_BIT] =             "tx-tcp6-segmentation",
32*d44e1310SMichal Kubecek 	[NETIF_F_FSO_BIT] =              "tx-fcoe-segmentation",
33*d44e1310SMichal Kubecek 	[NETIF_F_GSO_GRE_BIT] =		 "tx-gre-segmentation",
34*d44e1310SMichal Kubecek 	[NETIF_F_GSO_GRE_CSUM_BIT] =	 "tx-gre-csum-segmentation",
35*d44e1310SMichal Kubecek 	[NETIF_F_GSO_IPXIP4_BIT] =	 "tx-ipxip4-segmentation",
36*d44e1310SMichal Kubecek 	[NETIF_F_GSO_IPXIP6_BIT] =	 "tx-ipxip6-segmentation",
37*d44e1310SMichal Kubecek 	[NETIF_F_GSO_UDP_TUNNEL_BIT] =	 "tx-udp_tnl-segmentation",
38*d44e1310SMichal Kubecek 	[NETIF_F_GSO_UDP_TUNNEL_CSUM_BIT] = "tx-udp_tnl-csum-segmentation",
39*d44e1310SMichal Kubecek 	[NETIF_F_GSO_PARTIAL_BIT] =	 "tx-gso-partial",
40*d44e1310SMichal Kubecek 	[NETIF_F_GSO_SCTP_BIT] =	 "tx-sctp-segmentation",
41*d44e1310SMichal Kubecek 	[NETIF_F_GSO_ESP_BIT] =		 "tx-esp-segmentation",
42*d44e1310SMichal Kubecek 	[NETIF_F_GSO_UDP_L4_BIT] =	 "tx-udp-segmentation",
43*d44e1310SMichal Kubecek 
44*d44e1310SMichal Kubecek 	[NETIF_F_FCOE_CRC_BIT] =         "tx-checksum-fcoe-crc",
45*d44e1310SMichal Kubecek 	[NETIF_F_SCTP_CRC_BIT] =        "tx-checksum-sctp",
46*d44e1310SMichal Kubecek 	[NETIF_F_FCOE_MTU_BIT] =         "fcoe-mtu",
47*d44e1310SMichal Kubecek 	[NETIF_F_NTUPLE_BIT] =           "rx-ntuple-filter",
48*d44e1310SMichal Kubecek 	[NETIF_F_RXHASH_BIT] =           "rx-hashing",
49*d44e1310SMichal Kubecek 	[NETIF_F_RXCSUM_BIT] =           "rx-checksum",
50*d44e1310SMichal Kubecek 	[NETIF_F_NOCACHE_COPY_BIT] =     "tx-nocache-copy",
51*d44e1310SMichal Kubecek 	[NETIF_F_LOOPBACK_BIT] =         "loopback",
52*d44e1310SMichal Kubecek 	[NETIF_F_RXFCS_BIT] =            "rx-fcs",
53*d44e1310SMichal Kubecek 	[NETIF_F_RXALL_BIT] =            "rx-all",
54*d44e1310SMichal Kubecek 	[NETIF_F_HW_L2FW_DOFFLOAD_BIT] = "l2-fwd-offload",
55*d44e1310SMichal Kubecek 	[NETIF_F_HW_TC_BIT] =		 "hw-tc-offload",
56*d44e1310SMichal Kubecek 	[NETIF_F_HW_ESP_BIT] =		 "esp-hw-offload",
57*d44e1310SMichal Kubecek 	[NETIF_F_HW_ESP_TX_CSUM_BIT] =	 "esp-tx-csum-hw-offload",
58*d44e1310SMichal Kubecek 	[NETIF_F_RX_UDP_TUNNEL_PORT_BIT] =	 "rx-udp_tunnel-port-offload",
59*d44e1310SMichal Kubecek 	[NETIF_F_HW_TLS_RECORD_BIT] =	"tls-hw-record",
60*d44e1310SMichal Kubecek 	[NETIF_F_HW_TLS_TX_BIT] =	 "tls-hw-tx-offload",
61*d44e1310SMichal Kubecek 	[NETIF_F_HW_TLS_RX_BIT] =	 "tls-hw-rx-offload",
62*d44e1310SMichal Kubecek };
63*d44e1310SMichal Kubecek 
64*d44e1310SMichal Kubecek const char
65*d44e1310SMichal Kubecek rss_hash_func_strings[ETH_RSS_HASH_FUNCS_COUNT][ETH_GSTRING_LEN] = {
66*d44e1310SMichal Kubecek 	[ETH_RSS_HASH_TOP_BIT] =	"toeplitz",
67*d44e1310SMichal Kubecek 	[ETH_RSS_HASH_XOR_BIT] =	"xor",
68*d44e1310SMichal Kubecek 	[ETH_RSS_HASH_CRC32_BIT] =	"crc32",
69*d44e1310SMichal Kubecek };
70*d44e1310SMichal Kubecek 
71*d44e1310SMichal Kubecek const char
72*d44e1310SMichal Kubecek tunable_strings[__ETHTOOL_TUNABLE_COUNT][ETH_GSTRING_LEN] = {
73*d44e1310SMichal Kubecek 	[ETHTOOL_ID_UNSPEC]     = "Unspec",
74*d44e1310SMichal Kubecek 	[ETHTOOL_RX_COPYBREAK]	= "rx-copybreak",
75*d44e1310SMichal Kubecek 	[ETHTOOL_TX_COPYBREAK]	= "tx-copybreak",
76*d44e1310SMichal Kubecek 	[ETHTOOL_PFC_PREVENTION_TOUT] = "pfc-prevention-tout",
77*d44e1310SMichal Kubecek };
78*d44e1310SMichal Kubecek 
79*d44e1310SMichal Kubecek const char
80*d44e1310SMichal Kubecek phy_tunable_strings[__ETHTOOL_PHY_TUNABLE_COUNT][ETH_GSTRING_LEN] = {
81*d44e1310SMichal Kubecek 	[ETHTOOL_ID_UNSPEC]     = "Unspec",
82*d44e1310SMichal Kubecek 	[ETHTOOL_PHY_DOWNSHIFT]	= "phy-downshift",
83*d44e1310SMichal Kubecek 	[ETHTOOL_PHY_FAST_LINK_DOWN] = "phy-fast-link-down",
84*d44e1310SMichal Kubecek 	[ETHTOOL_PHY_EDPD]	= "phy-energy-detect-power-down",
85*d44e1310SMichal Kubecek };
86