-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'ethtool-netlink-interface-preliminary-part'
Michal Kubecek says: ==================== ethtool netlink interface, preliminary part As Jakub Kicinski suggested in ethtool netlink v7 discussion, this submission consists only of preliminary patches which raised no objections; first four patches already have Acked-by or Reviewed-by. - patch 1 exposes permanent hardware address (as shown by "ethtool -P") via rtnetlink - patch 2 is renames existing netlink helper to a better name - patch 3 and 4 reorganize existing ethtool code (no functional change) - patch 5 makes the table of link mode names available as an ethtool string set (will be needed for the netlink interface) Once we get these out of the way, v8 of the first part of the ethtool netlink interface will follow. Changes from v2 to v3: fix SPDX licence identifiers (patch 3 and 5). Changes from v1 to v2: restore build time check that all link modes have assigned a name (patch 5). ==================== Reviewed-by: Jakub Kicinski <jakub.kicinski@netronome.com> Signed-off-by: David S. Miller <davem@davemloft.net>
- Loading branch information
Showing
11 changed files
with
219 additions
and
90 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
# SPDX-License-Identifier: GPL-2.0-only | ||
|
||
obj-y += ioctl.o common.o |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,171 @@ | ||
// SPDX-License-Identifier: GPL-2.0-only | ||
|
||
#include "common.h" | ||
|
||
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", | ||
[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_TSO_BIT] = "tx-tcp-segmentation", | ||
[NETIF_F_GSO_ROBUST_BIT] = "tx-gso-robust", | ||
[NETIF_F_TSO_ECN_BIT] = "tx-tcp-ecn-segmentation", | ||
[NETIF_F_TSO_MANGLEID_BIT] = "tx-tcp-mangleid-segmentation", | ||
[NETIF_F_TSO6_BIT] = "tx-tcp6-segmentation", | ||
[NETIF_F_FSO_BIT] = "tx-fcoe-segmentation", | ||
[NETIF_F_GSO_GRE_BIT] = "tx-gre-segmentation", | ||
[NETIF_F_GSO_GRE_CSUM_BIT] = "tx-gre-csum-segmentation", | ||
[NETIF_F_GSO_IPXIP4_BIT] = "tx-ipxip4-segmentation", | ||
[NETIF_F_GSO_IPXIP6_BIT] = "tx-ipxip6-segmentation", | ||
[NETIF_F_GSO_UDP_TUNNEL_BIT] = "tx-udp_tnl-segmentation", | ||
[NETIF_F_GSO_UDP_TUNNEL_CSUM_BIT] = "tx-udp_tnl-csum-segmentation", | ||
[NETIF_F_GSO_PARTIAL_BIT] = "tx-gso-partial", | ||
[NETIF_F_GSO_SCTP_BIT] = "tx-sctp-segmentation", | ||
[NETIF_F_GSO_ESP_BIT] = "tx-esp-segmentation", | ||
[NETIF_F_GSO_UDP_L4_BIT] = "tx-udp-segmentation", | ||
|
||
[NETIF_F_FCOE_CRC_BIT] = "tx-checksum-fcoe-crc", | ||
[NETIF_F_SCTP_CRC_BIT] = "tx-checksum-sctp", | ||
[NETIF_F_FCOE_MTU_BIT] = "fcoe-mtu", | ||
[NETIF_F_NTUPLE_BIT] = "rx-ntuple-filter", | ||
[NETIF_F_RXHASH_BIT] = "rx-hashing", | ||
[NETIF_F_RXCSUM_BIT] = "rx-checksum", | ||
[NETIF_F_NOCACHE_COPY_BIT] = "tx-nocache-copy", | ||
[NETIF_F_LOOPBACK_BIT] = "loopback", | ||
[NETIF_F_RXFCS_BIT] = "rx-fcs", | ||
[NETIF_F_RXALL_BIT] = "rx-all", | ||
[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", | ||
}; | ||
|
||
const char | ||
rss_hash_func_strings[ETH_RSS_HASH_FUNCS_COUNT][ETH_GSTRING_LEN] = { | ||
[ETH_RSS_HASH_TOP_BIT] = "toeplitz", | ||
[ETH_RSS_HASH_XOR_BIT] = "xor", | ||
[ETH_RSS_HASH_CRC32_BIT] = "crc32", | ||
}; | ||
|
||
const char | ||
tunable_strings[__ETHTOOL_TUNABLE_COUNT][ETH_GSTRING_LEN] = { | ||
[ETHTOOL_ID_UNSPEC] = "Unspec", | ||
[ETHTOOL_RX_COPYBREAK] = "rx-copybreak", | ||
[ETHTOOL_TX_COPYBREAK] = "tx-copybreak", | ||
[ETHTOOL_PFC_PREVENTION_TOUT] = "pfc-prevention-tout", | ||
}; | ||
|
||
const char | ||
phy_tunable_strings[__ETHTOOL_PHY_TUNABLE_COUNT][ETH_GSTRING_LEN] = { | ||
[ETHTOOL_ID_UNSPEC] = "Unspec", | ||
[ETHTOOL_PHY_DOWNSHIFT] = "phy-downshift", | ||
[ETHTOOL_PHY_FAST_LINK_DOWN] = "phy-fast-link-down", | ||
[ETHTOOL_PHY_EDPD] = "phy-energy-detect-power-down", | ||
}; | ||
|
||
#define __LINK_MODE_NAME(speed, type, duplex) \ | ||
#speed "base" #type "/" #duplex | ||
#define __DEFINE_LINK_MODE_NAME(speed, type, duplex) \ | ||
[ETHTOOL_LINK_MODE(speed, type, duplex)] = \ | ||
__LINK_MODE_NAME(speed, type, duplex) | ||
#define __DEFINE_SPECIAL_MODE_NAME(_mode, _name) \ | ||
[ETHTOOL_LINK_MODE_ ## _mode ## _BIT] = _name | ||
|
||
const char link_mode_names[][ETH_GSTRING_LEN] = { | ||
__DEFINE_LINK_MODE_NAME(10, T, Half), | ||
__DEFINE_LINK_MODE_NAME(10, T, Full), | ||
__DEFINE_LINK_MODE_NAME(100, T, Half), | ||
__DEFINE_LINK_MODE_NAME(100, T, Full), | ||
__DEFINE_LINK_MODE_NAME(1000, T, Half), | ||
__DEFINE_LINK_MODE_NAME(1000, T, Full), | ||
__DEFINE_SPECIAL_MODE_NAME(Autoneg, "Autoneg"), | ||
__DEFINE_SPECIAL_MODE_NAME(TP, "TP"), | ||
__DEFINE_SPECIAL_MODE_NAME(AUI, "AUI"), | ||
__DEFINE_SPECIAL_MODE_NAME(MII, "MII"), | ||
__DEFINE_SPECIAL_MODE_NAME(FIBRE, "FIBRE"), | ||
__DEFINE_SPECIAL_MODE_NAME(BNC, "BNC"), | ||
__DEFINE_LINK_MODE_NAME(10000, T, Full), | ||
__DEFINE_SPECIAL_MODE_NAME(Pause, "Pause"), | ||
__DEFINE_SPECIAL_MODE_NAME(Asym_Pause, "Asym_Pause"), | ||
__DEFINE_LINK_MODE_NAME(2500, X, Full), | ||
__DEFINE_SPECIAL_MODE_NAME(Backplane, "Backplane"), | ||
__DEFINE_LINK_MODE_NAME(1000, KX, Full), | ||
__DEFINE_LINK_MODE_NAME(10000, KX4, Full), | ||
__DEFINE_LINK_MODE_NAME(10000, KR, Full), | ||
__DEFINE_SPECIAL_MODE_NAME(10000baseR_FEC, "10000baseR_FEC"), | ||
__DEFINE_LINK_MODE_NAME(20000, MLD2, Full), | ||
__DEFINE_LINK_MODE_NAME(20000, KR2, Full), | ||
__DEFINE_LINK_MODE_NAME(40000, KR4, Full), | ||
__DEFINE_LINK_MODE_NAME(40000, CR4, Full), | ||
__DEFINE_LINK_MODE_NAME(40000, SR4, Full), | ||
__DEFINE_LINK_MODE_NAME(40000, LR4, Full), | ||
__DEFINE_LINK_MODE_NAME(56000, KR4, Full), | ||
__DEFINE_LINK_MODE_NAME(56000, CR4, Full), | ||
__DEFINE_LINK_MODE_NAME(56000, SR4, Full), | ||
__DEFINE_LINK_MODE_NAME(56000, LR4, Full), | ||
__DEFINE_LINK_MODE_NAME(25000, CR, Full), | ||
__DEFINE_LINK_MODE_NAME(25000, KR, Full), | ||
__DEFINE_LINK_MODE_NAME(25000, SR, Full), | ||
__DEFINE_LINK_MODE_NAME(50000, CR2, Full), | ||
__DEFINE_LINK_MODE_NAME(50000, KR2, Full), | ||
__DEFINE_LINK_MODE_NAME(100000, KR4, Full), | ||
__DEFINE_LINK_MODE_NAME(100000, SR4, Full), | ||
__DEFINE_LINK_MODE_NAME(100000, CR4, Full), | ||
__DEFINE_LINK_MODE_NAME(100000, LR4_ER4, Full), | ||
__DEFINE_LINK_MODE_NAME(50000, SR2, Full), | ||
__DEFINE_LINK_MODE_NAME(1000, X, Full), | ||
__DEFINE_LINK_MODE_NAME(10000, CR, Full), | ||
__DEFINE_LINK_MODE_NAME(10000, SR, Full), | ||
__DEFINE_LINK_MODE_NAME(10000, LR, Full), | ||
__DEFINE_LINK_MODE_NAME(10000, LRM, Full), | ||
__DEFINE_LINK_MODE_NAME(10000, ER, Full), | ||
__DEFINE_LINK_MODE_NAME(2500, T, Full), | ||
__DEFINE_LINK_MODE_NAME(5000, T, Full), | ||
__DEFINE_SPECIAL_MODE_NAME(FEC_NONE, "None"), | ||
__DEFINE_SPECIAL_MODE_NAME(FEC_RS, "RS"), | ||
__DEFINE_SPECIAL_MODE_NAME(FEC_BASER, "BASER"), | ||
__DEFINE_LINK_MODE_NAME(50000, KR, Full), | ||
__DEFINE_LINK_MODE_NAME(50000, SR, Full), | ||
__DEFINE_LINK_MODE_NAME(50000, CR, Full), | ||
__DEFINE_LINK_MODE_NAME(50000, LR_ER_FR, Full), | ||
__DEFINE_LINK_MODE_NAME(50000, DR, Full), | ||
__DEFINE_LINK_MODE_NAME(100000, KR2, Full), | ||
__DEFINE_LINK_MODE_NAME(100000, SR2, Full), | ||
__DEFINE_LINK_MODE_NAME(100000, CR2, Full), | ||
__DEFINE_LINK_MODE_NAME(100000, LR2_ER2_FR2, Full), | ||
__DEFINE_LINK_MODE_NAME(100000, DR2, Full), | ||
__DEFINE_LINK_MODE_NAME(200000, KR4, Full), | ||
__DEFINE_LINK_MODE_NAME(200000, SR4, Full), | ||
__DEFINE_LINK_MODE_NAME(200000, LR4_ER4_FR4, Full), | ||
__DEFINE_LINK_MODE_NAME(200000, DR4, Full), | ||
__DEFINE_LINK_MODE_NAME(200000, CR4, Full), | ||
__DEFINE_LINK_MODE_NAME(100, T1, Full), | ||
__DEFINE_LINK_MODE_NAME(1000, T1, Full), | ||
__DEFINE_LINK_MODE_NAME(400000, KR8, Full), | ||
__DEFINE_LINK_MODE_NAME(400000, SR8, Full), | ||
__DEFINE_LINK_MODE_NAME(400000, LR8_ER8_FR8, Full), | ||
__DEFINE_LINK_MODE_NAME(400000, DR8, Full), | ||
__DEFINE_LINK_MODE_NAME(400000, CR8, Full), | ||
}; | ||
static_assert(ARRAY_SIZE(link_mode_names) == __ETHTOOL_LINK_MODE_MASK_NBITS); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
/* SPDX-License-Identifier: GPL-2.0-only */ | ||
|
||
#ifndef _ETHTOOL_COMMON_H | ||
#define _ETHTOOL_COMMON_H | ||
|
||
#include <linux/ethtool.h> | ||
|
||
/* compose link mode index from speed, type and duplex */ | ||
#define ETHTOOL_LINK_MODE(speed, type, duplex) \ | ||
ETHTOOL_LINK_MODE_ ## speed ## base ## type ## _ ## duplex ## _BIT | ||
|
||
extern const char | ||
netdev_features_strings[NETDEV_FEATURE_COUNT][ETH_GSTRING_LEN]; | ||
extern const char | ||
rss_hash_func_strings[ETH_RSS_HASH_FUNCS_COUNT][ETH_GSTRING_LEN]; | ||
extern const char | ||
tunable_strings[__ETHTOOL_TUNABLE_COUNT][ETH_GSTRING_LEN]; | ||
extern const char | ||
phy_tunable_strings[__ETHTOOL_PHY_TUNABLE_COUNT][ETH_GSTRING_LEN]; | ||
extern const char link_mode_names[][ETH_GSTRING_LEN]; | ||
|
||
#endif /* _ETHTOOL_COMMON_H */ |
Oops, something went wrong.