2024-12-04 15:55:47 +00:00
|
|
|
/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
|
2024-12-04 15:55:49 +00:00
|
|
|
/* Do not edit directly, auto-generated from: */
|
|
|
|
|
/* Documentation/netlink/specs/ethtool.yaml */
|
|
|
|
|
/* YNL-GEN uapi header */
|
|
|
|
|
|
2024-12-04 15:55:47 +00:00
|
|
|
#ifndef _UAPI_LINUX_ETHTOOL_NETLINK_GENERATED_H
|
|
|
|
|
#define _UAPI_LINUX_ETHTOOL_NETLINK_GENERATED_H
|
|
|
|
|
|
2025-06-17 20:22:40 +00:00
|
|
|
#define ETHTOOL_GENL_NAME "ethtool"
|
|
|
|
|
#define ETHTOOL_GENL_VERSION 1
|
2024-12-04 15:55:49 +00:00
|
|
|
|
2024-12-04 15:55:47 +00:00
|
|
|
enum {
|
|
|
|
|
ETHTOOL_UDP_TUNNEL_TYPE_VXLAN,
|
|
|
|
|
ETHTOOL_UDP_TUNNEL_TYPE_GENEVE,
|
|
|
|
|
ETHTOOL_UDP_TUNNEL_TYPE_VXLAN_GPE,
|
|
|
|
|
|
2024-12-04 15:55:49 +00:00
|
|
|
/* private: */
|
|
|
|
|
__ETHTOOL_UDP_TUNNEL_TYPE_CNT,
|
|
|
|
|
ETHTOOL_UDP_TUNNEL_TYPE_MAX = (__ETHTOOL_UDP_TUNNEL_TYPE_CNT - 1)
|
2024-12-04 15:55:47 +00:00
|
|
|
};
|
|
|
|
|
|
2024-12-04 15:55:49 +00:00
|
|
|
/**
|
|
|
|
|
* enum ethtool_header_flags - common ethtool header flags
|
|
|
|
|
* @ETHTOOL_FLAG_COMPACT_BITSETS: use compact bitsets in reply
|
|
|
|
|
* @ETHTOOL_FLAG_OMIT_REPLY: provide optional reply for SET or ACT requests
|
|
|
|
|
* @ETHTOOL_FLAG_STATS: request statistics, if supported by the driver
|
|
|
|
|
*/
|
2024-12-04 15:55:47 +00:00
|
|
|
enum ethtool_header_flags {
|
2024-12-04 15:55:49 +00:00
|
|
|
ETHTOOL_FLAG_COMPACT_BITSETS = 1,
|
|
|
|
|
ETHTOOL_FLAG_OMIT_REPLY = 2,
|
|
|
|
|
ETHTOOL_FLAG_STATS = 4,
|
2024-12-04 15:55:47 +00:00
|
|
|
};
|
|
|
|
|
|
2024-12-04 15:55:49 +00:00
|
|
|
enum ethtool_tcp_data_split {
|
|
|
|
|
ETHTOOL_TCP_DATA_SPLIT_UNKNOWN,
|
2024-12-04 15:55:47 +00:00
|
|
|
ETHTOOL_TCP_DATA_SPLIT_DISABLED,
|
|
|
|
|
ETHTOOL_TCP_DATA_SPLIT_ENABLED,
|
|
|
|
|
};
|
|
|
|
|
|
2025-05-19 08:45:05 +00:00
|
|
|
/**
|
|
|
|
|
* enum hwtstamp_source - Source of the hardware timestamp
|
|
|
|
|
* @HWTSTAMP_SOURCE_NETDEV: Hardware timestamp comes from a MAC or a device
|
|
|
|
|
* which has MAC and PHY integrated
|
|
|
|
|
* @HWTSTAMP_SOURCE_PHYLIB: Hardware timestamp comes from one PHY device of the
|
|
|
|
|
* network topology
|
|
|
|
|
*/
|
|
|
|
|
enum hwtstamp_source {
|
|
|
|
|
HWTSTAMP_SOURCE_NETDEV = 1,
|
|
|
|
|
HWTSTAMP_SOURCE_PHYLIB,
|
|
|
|
|
};
|
|
|
|
|
|
2025-06-17 12:12:01 +00:00
|
|
|
/**
|
|
|
|
|
* enum ethtool_pse_event - PSE event list for the PSE controller
|
|
|
|
|
* @ETHTOOL_PSE_EVENT_OVER_CURRENT: PSE output current is too high
|
|
|
|
|
* @ETHTOOL_PSE_EVENT_OVER_TEMP: PSE in over temperature state
|
net: pse-pd: Add support for budget evaluation strategies
This patch introduces the ability to configure the PSE PI budget evaluation
strategies. Budget evaluation strategies is utilized by PSE controllers to
determine which ports to turn off first in scenarios such as power budget
exceedance.
The pis_prio_max value is used to define the maximum priority level
supported by the controller. Both the current priority and the maximum
priority are exposed to the user through the pse_ethtool_get_status call.
This patch add support for two mode of budget evaluation strategies.
1. Static Method:
This method involves distributing power based on PD classification.
It’s straightforward and stable, the PSE core keeping track of the
budget and subtracting the power requested by each PD’s class.
Advantages: Every PD gets its promised power at any time, which
guarantees reliability.
Disadvantages: PD classification steps are large, meaning devices
request much more power than they actually need. As a result, the power
supply may only operate at, say, 50% capacity, which is inefficient and
wastes money.
Priority max value is matching the number of PSE PIs within the PSE.
2. Dynamic Method:
To address the inefficiencies of the static method, vendors like
Microchip have introduced dynamic power budgeting, as seen in the
PD692x0 firmware. This method monitors the current consumption per port
and subtracts it from the available power budget. When the budget is
exceeded, lower-priority ports are shut down.
Advantages: This method optimizes resource utilization, saving costs.
Disadvantages: Low-priority devices may experience instability.
Priority max value is set by the PSE controller driver.
For now, budget evaluation methods are not configurable and cannot be
mixed. They are hardcoded in the PSE driver itself, as no current PSE
controller supports both methods.
Signed-off-by: Kory Maincent (Dent Project) <kory.maincent@bootlin.com>
Acked-by: Oleksij Rempel <o.rempel@pengutronix.de>
Link: https://patch.msgid.link/20250617-feature_poe_port_prio-v14-7-78a1a645e2ee@bootlin.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2025-06-17 12:12:06 +00:00
|
|
|
* @ETHTOOL_C33_PSE_EVENT_DETECTION: detection process occur on the PSE. IEEE
|
|
|
|
|
* 802.3-2022 33.2.5 and 145.2.6 PSE detection of PDs. IEEE 802.3-202
|
|
|
|
|
* 30.9.1.1.5 aPSEPowerDetectionStatus
|
|
|
|
|
* @ETHTOOL_C33_PSE_EVENT_CLASSIFICATION: classification process occur on the
|
|
|
|
|
* PSE. IEEE 802.3-2022 33.2.6 and 145.2.8 classification of PDs mutual
|
|
|
|
|
* identification. IEEE 802.3-2022 30.9.1.1.8 aPSEPowerClassification.
|
|
|
|
|
* @ETHTOOL_C33_PSE_EVENT_DISCONNECTION: PD has been disconnected on the PSE.
|
|
|
|
|
* IEEE 802.3-2022 33.3.8 and 145.3.9 PD Maintain Power Signature. IEEE
|
|
|
|
|
* 802.3-2022 33.5.1.2.9 MPS Absent. IEEE 802.3-2022 30.9.1.1.20
|
|
|
|
|
* aPSEMPSAbsentCounter.
|
|
|
|
|
* @ETHTOOL_PSE_EVENT_OVER_BUDGET: PSE turned off due to over budget situation
|
|
|
|
|
* @ETHTOOL_PSE_EVENT_SW_PW_CONTROL_ERROR: PSE faced an error managing the
|
|
|
|
|
* power control from software
|
2025-06-17 12:12:01 +00:00
|
|
|
*/
|
|
|
|
|
enum ethtool_pse_event {
|
|
|
|
|
ETHTOOL_PSE_EVENT_OVER_CURRENT = 1,
|
|
|
|
|
ETHTOOL_PSE_EVENT_OVER_TEMP = 2,
|
net: pse-pd: Add support for budget evaluation strategies
This patch introduces the ability to configure the PSE PI budget evaluation
strategies. Budget evaluation strategies is utilized by PSE controllers to
determine which ports to turn off first in scenarios such as power budget
exceedance.
The pis_prio_max value is used to define the maximum priority level
supported by the controller. Both the current priority and the maximum
priority are exposed to the user through the pse_ethtool_get_status call.
This patch add support for two mode of budget evaluation strategies.
1. Static Method:
This method involves distributing power based on PD classification.
It’s straightforward and stable, the PSE core keeping track of the
budget and subtracting the power requested by each PD’s class.
Advantages: Every PD gets its promised power at any time, which
guarantees reliability.
Disadvantages: PD classification steps are large, meaning devices
request much more power than they actually need. As a result, the power
supply may only operate at, say, 50% capacity, which is inefficient and
wastes money.
Priority max value is matching the number of PSE PIs within the PSE.
2. Dynamic Method:
To address the inefficiencies of the static method, vendors like
Microchip have introduced dynamic power budgeting, as seen in the
PD692x0 firmware. This method monitors the current consumption per port
and subtracts it from the available power budget. When the budget is
exceeded, lower-priority ports are shut down.
Advantages: This method optimizes resource utilization, saving costs.
Disadvantages: Low-priority devices may experience instability.
Priority max value is set by the PSE controller driver.
For now, budget evaluation methods are not configurable and cannot be
mixed. They are hardcoded in the PSE driver itself, as no current PSE
controller supports both methods.
Signed-off-by: Kory Maincent (Dent Project) <kory.maincent@bootlin.com>
Acked-by: Oleksij Rempel <o.rempel@pengutronix.de>
Link: https://patch.msgid.link/20250617-feature_poe_port_prio-v14-7-78a1a645e2ee@bootlin.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2025-06-17 12:12:06 +00:00
|
|
|
ETHTOOL_C33_PSE_EVENT_DETECTION = 4,
|
|
|
|
|
ETHTOOL_C33_PSE_EVENT_CLASSIFICATION = 8,
|
|
|
|
|
ETHTOOL_C33_PSE_EVENT_DISCONNECTION = 16,
|
|
|
|
|
ETHTOOL_PSE_EVENT_OVER_BUDGET = 32,
|
|
|
|
|
ETHTOOL_PSE_EVENT_SW_PW_CONTROL_ERROR = 64,
|
2025-06-17 12:12:01 +00:00
|
|
|
};
|
|
|
|
|
|
2024-12-04 15:55:47 +00:00
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_HEADER_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_HEADER_DEV_INDEX,
|
|
|
|
|
ETHTOOL_A_HEADER_DEV_NAME,
|
|
|
|
|
ETHTOOL_A_HEADER_FLAGS,
|
|
|
|
|
ETHTOOL_A_HEADER_PHY_INDEX,
|
2024-12-04 15:55:47 +00:00
|
|
|
|
|
|
|
|
__ETHTOOL_A_HEADER_CNT,
|
2024-12-04 15:55:49 +00:00
|
|
|
ETHTOOL_A_HEADER_MAX = (__ETHTOOL_A_HEADER_CNT - 1)
|
2024-12-04 15:55:47 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_BITSET_BIT_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_BITSET_BIT_INDEX,
|
|
|
|
|
ETHTOOL_A_BITSET_BIT_NAME,
|
|
|
|
|
ETHTOOL_A_BITSET_BIT_VALUE,
|
2024-12-04 15:55:47 +00:00
|
|
|
|
|
|
|
|
__ETHTOOL_A_BITSET_BIT_CNT,
|
2024-12-04 15:55:49 +00:00
|
|
|
ETHTOOL_A_BITSET_BIT_MAX = (__ETHTOOL_A_BITSET_BIT_CNT - 1)
|
2024-12-04 15:55:47 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_BITSET_BITS_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_BITSET_BITS_BIT,
|
2024-12-04 15:55:47 +00:00
|
|
|
|
|
|
|
|
__ETHTOOL_A_BITSET_BITS_CNT,
|
2024-12-04 15:55:49 +00:00
|
|
|
ETHTOOL_A_BITSET_BITS_MAX = (__ETHTOOL_A_BITSET_BITS_CNT - 1)
|
2024-12-04 15:55:47 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_BITSET_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_BITSET_NOMASK,
|
|
|
|
|
ETHTOOL_A_BITSET_SIZE,
|
|
|
|
|
ETHTOOL_A_BITSET_BITS,
|
|
|
|
|
ETHTOOL_A_BITSET_VALUE,
|
|
|
|
|
ETHTOOL_A_BITSET_MASK,
|
2024-12-04 15:55:47 +00:00
|
|
|
|
|
|
|
|
__ETHTOOL_A_BITSET_CNT,
|
2024-12-04 15:55:49 +00:00
|
|
|
ETHTOOL_A_BITSET_MAX = (__ETHTOOL_A_BITSET_CNT - 1)
|
2024-12-04 15:55:47 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_STRING_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_STRING_INDEX,
|
|
|
|
|
ETHTOOL_A_STRING_VALUE,
|
2024-12-04 15:55:47 +00:00
|
|
|
|
|
|
|
|
__ETHTOOL_A_STRING_CNT,
|
2024-12-04 15:55:49 +00:00
|
|
|
ETHTOOL_A_STRING_MAX = (__ETHTOOL_A_STRING_CNT - 1)
|
2024-12-04 15:55:47 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_STRINGS_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_STRINGS_STRING,
|
2024-12-04 15:55:47 +00:00
|
|
|
|
|
|
|
|
__ETHTOOL_A_STRINGS_CNT,
|
2024-12-04 15:55:49 +00:00
|
|
|
ETHTOOL_A_STRINGS_MAX = (__ETHTOOL_A_STRINGS_CNT - 1)
|
2024-12-04 15:55:47 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_STRINGSET_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_STRINGSET_ID,
|
|
|
|
|
ETHTOOL_A_STRINGSET_COUNT,
|
|
|
|
|
ETHTOOL_A_STRINGSET_STRINGS,
|
2024-12-04 15:55:47 +00:00
|
|
|
|
|
|
|
|
__ETHTOOL_A_STRINGSET_CNT,
|
2024-12-04 15:55:49 +00:00
|
|
|
ETHTOOL_A_STRINGSET_MAX = (__ETHTOOL_A_STRINGSET_CNT - 1)
|
2024-12-04 15:55:47 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_STRINGSETS_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_STRINGSETS_STRINGSET,
|
2024-12-04 15:55:47 +00:00
|
|
|
|
|
|
|
|
__ETHTOOL_A_STRINGSETS_CNT,
|
2024-12-04 15:55:49 +00:00
|
|
|
ETHTOOL_A_STRINGSETS_MAX = (__ETHTOOL_A_STRINGSETS_CNT - 1)
|
2024-12-04 15:55:47 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_STRSET_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_STRSET_HEADER,
|
|
|
|
|
ETHTOOL_A_STRSET_STRINGSETS,
|
|
|
|
|
ETHTOOL_A_STRSET_COUNTS_ONLY,
|
2024-12-04 15:55:47 +00:00
|
|
|
|
|
|
|
|
__ETHTOOL_A_STRSET_CNT,
|
2024-12-04 15:55:49 +00:00
|
|
|
ETHTOOL_A_STRSET_MAX = (__ETHTOOL_A_STRSET_CNT - 1)
|
2024-12-04 15:55:47 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_PRIVFLAGS_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_PRIVFLAGS_HEADER,
|
|
|
|
|
ETHTOOL_A_PRIVFLAGS_FLAGS,
|
2024-12-04 15:55:47 +00:00
|
|
|
|
|
|
|
|
__ETHTOOL_A_PRIVFLAGS_CNT,
|
2024-12-04 15:55:49 +00:00
|
|
|
ETHTOOL_A_PRIVFLAGS_MAX = (__ETHTOOL_A_PRIVFLAGS_CNT - 1)
|
2024-12-04 15:55:47 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_RINGS_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_RINGS_HEADER,
|
|
|
|
|
ETHTOOL_A_RINGS_RX_MAX,
|
|
|
|
|
ETHTOOL_A_RINGS_RX_MINI_MAX,
|
|
|
|
|
ETHTOOL_A_RINGS_RX_JUMBO_MAX,
|
|
|
|
|
ETHTOOL_A_RINGS_TX_MAX,
|
|
|
|
|
ETHTOOL_A_RINGS_RX,
|
|
|
|
|
ETHTOOL_A_RINGS_RX_MINI,
|
|
|
|
|
ETHTOOL_A_RINGS_RX_JUMBO,
|
|
|
|
|
ETHTOOL_A_RINGS_TX,
|
|
|
|
|
ETHTOOL_A_RINGS_RX_BUF_LEN,
|
|
|
|
|
ETHTOOL_A_RINGS_TCP_DATA_SPLIT,
|
|
|
|
|
ETHTOOL_A_RINGS_CQE_SIZE,
|
|
|
|
|
ETHTOOL_A_RINGS_TX_PUSH,
|
|
|
|
|
ETHTOOL_A_RINGS_RX_PUSH,
|
|
|
|
|
ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN,
|
|
|
|
|
ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN_MAX,
|
2025-01-14 14:28:44 +00:00
|
|
|
ETHTOOL_A_RINGS_HDS_THRESH,
|
|
|
|
|
ETHTOOL_A_RINGS_HDS_THRESH_MAX,
|
2024-12-04 15:55:48 +00:00
|
|
|
|
2024-12-04 15:55:47 +00:00
|
|
|
__ETHTOOL_A_RINGS_CNT,
|
|
|
|
|
ETHTOOL_A_RINGS_MAX = (__ETHTOOL_A_RINGS_CNT - 1)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_MM_STAT_UNSPEC,
|
|
|
|
|
ETHTOOL_A_MM_STAT_PAD,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_MM_STAT_REASSEMBLY_ERRORS,
|
|
|
|
|
ETHTOOL_A_MM_STAT_SMD_ERRORS,
|
|
|
|
|
ETHTOOL_A_MM_STAT_REASSEMBLY_OK,
|
|
|
|
|
ETHTOOL_A_MM_STAT_RX_FRAG_COUNT,
|
|
|
|
|
ETHTOOL_A_MM_STAT_TX_FRAG_COUNT,
|
|
|
|
|
ETHTOOL_A_MM_STAT_HOLD_COUNT,
|
2024-12-04 15:55:47 +00:00
|
|
|
|
|
|
|
|
__ETHTOOL_A_MM_STAT_CNT,
|
|
|
|
|
ETHTOOL_A_MM_STAT_MAX = (__ETHTOOL_A_MM_STAT_CNT - 1)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_MM_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_MM_HEADER,
|
|
|
|
|
ETHTOOL_A_MM_PMAC_ENABLED,
|
|
|
|
|
ETHTOOL_A_MM_TX_ENABLED,
|
|
|
|
|
ETHTOOL_A_MM_TX_ACTIVE,
|
|
|
|
|
ETHTOOL_A_MM_TX_MIN_FRAG_SIZE,
|
|
|
|
|
ETHTOOL_A_MM_RX_MIN_FRAG_SIZE,
|
|
|
|
|
ETHTOOL_A_MM_VERIFY_ENABLED,
|
|
|
|
|
ETHTOOL_A_MM_VERIFY_STATUS,
|
|
|
|
|
ETHTOOL_A_MM_VERIFY_TIME,
|
|
|
|
|
ETHTOOL_A_MM_MAX_VERIFY_TIME,
|
|
|
|
|
ETHTOOL_A_MM_STATS,
|
|
|
|
|
|
2024-12-04 15:55:47 +00:00
|
|
|
__ETHTOOL_A_MM_CNT,
|
|
|
|
|
ETHTOOL_A_MM_MAX = (__ETHTOOL_A_MM_CNT - 1)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_LINKINFO_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_LINKINFO_HEADER,
|
|
|
|
|
ETHTOOL_A_LINKINFO_PORT,
|
|
|
|
|
ETHTOOL_A_LINKINFO_PHYADDR,
|
|
|
|
|
ETHTOOL_A_LINKINFO_TP_MDIX,
|
|
|
|
|
ETHTOOL_A_LINKINFO_TP_MDIX_CTRL,
|
|
|
|
|
ETHTOOL_A_LINKINFO_TRANSCEIVER,
|
|
|
|
|
|
2024-12-04 15:55:47 +00:00
|
|
|
__ETHTOOL_A_LINKINFO_CNT,
|
2024-12-04 15:55:49 +00:00
|
|
|
ETHTOOL_A_LINKINFO_MAX = (__ETHTOOL_A_LINKINFO_CNT - 1)
|
2024-12-04 15:55:47 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_LINKMODES_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_LINKMODES_HEADER,
|
|
|
|
|
ETHTOOL_A_LINKMODES_AUTONEG,
|
|
|
|
|
ETHTOOL_A_LINKMODES_OURS,
|
|
|
|
|
ETHTOOL_A_LINKMODES_PEER,
|
|
|
|
|
ETHTOOL_A_LINKMODES_SPEED,
|
|
|
|
|
ETHTOOL_A_LINKMODES_DUPLEX,
|
|
|
|
|
ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG,
|
|
|
|
|
ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE,
|
|
|
|
|
ETHTOOL_A_LINKMODES_LANES,
|
|
|
|
|
ETHTOOL_A_LINKMODES_RATE_MATCHING,
|
|
|
|
|
|
2024-12-04 15:55:47 +00:00
|
|
|
__ETHTOOL_A_LINKMODES_CNT,
|
2024-12-04 15:55:49 +00:00
|
|
|
ETHTOOL_A_LINKMODES_MAX = (__ETHTOOL_A_LINKMODES_CNT - 1)
|
2024-12-04 15:55:47 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_LINKSTATE_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_LINKSTATE_HEADER,
|
|
|
|
|
ETHTOOL_A_LINKSTATE_LINK,
|
|
|
|
|
ETHTOOL_A_LINKSTATE_SQI,
|
|
|
|
|
ETHTOOL_A_LINKSTATE_SQI_MAX,
|
|
|
|
|
ETHTOOL_A_LINKSTATE_EXT_STATE,
|
|
|
|
|
ETHTOOL_A_LINKSTATE_EXT_SUBSTATE,
|
|
|
|
|
ETHTOOL_A_LINKSTATE_EXT_DOWN_CNT,
|
|
|
|
|
|
2024-12-04 15:55:47 +00:00
|
|
|
__ETHTOOL_A_LINKSTATE_CNT,
|
2024-12-04 15:55:49 +00:00
|
|
|
ETHTOOL_A_LINKSTATE_MAX = (__ETHTOOL_A_LINKSTATE_CNT - 1)
|
2024-12-04 15:55:47 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_DEBUG_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_DEBUG_HEADER,
|
|
|
|
|
ETHTOOL_A_DEBUG_MSGMASK,
|
2024-12-04 15:55:47 +00:00
|
|
|
|
|
|
|
|
__ETHTOOL_A_DEBUG_CNT,
|
2024-12-04 15:55:49 +00:00
|
|
|
ETHTOOL_A_DEBUG_MAX = (__ETHTOOL_A_DEBUG_CNT - 1)
|
2024-12-04 15:55:47 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_WOL_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_WOL_HEADER,
|
|
|
|
|
ETHTOOL_A_WOL_MODES,
|
|
|
|
|
ETHTOOL_A_WOL_SOPASS,
|
2024-12-04 15:55:47 +00:00
|
|
|
|
|
|
|
|
__ETHTOOL_A_WOL_CNT,
|
2024-12-04 15:55:49 +00:00
|
|
|
ETHTOOL_A_WOL_MAX = (__ETHTOOL_A_WOL_CNT - 1)
|
2024-12-04 15:55:47 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_FEATURES_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_FEATURES_HEADER,
|
|
|
|
|
ETHTOOL_A_FEATURES_HW,
|
|
|
|
|
ETHTOOL_A_FEATURES_WANTED,
|
|
|
|
|
ETHTOOL_A_FEATURES_ACTIVE,
|
|
|
|
|
ETHTOOL_A_FEATURES_NOCHANGE,
|
2024-12-04 15:55:47 +00:00
|
|
|
|
|
|
|
|
__ETHTOOL_A_FEATURES_CNT,
|
2024-12-04 15:55:49 +00:00
|
|
|
ETHTOOL_A_FEATURES_MAX = (__ETHTOOL_A_FEATURES_CNT - 1)
|
2024-12-04 15:55:47 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_CHANNELS_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_CHANNELS_HEADER,
|
|
|
|
|
ETHTOOL_A_CHANNELS_RX_MAX,
|
|
|
|
|
ETHTOOL_A_CHANNELS_TX_MAX,
|
|
|
|
|
ETHTOOL_A_CHANNELS_OTHER_MAX,
|
|
|
|
|
ETHTOOL_A_CHANNELS_COMBINED_MAX,
|
|
|
|
|
ETHTOOL_A_CHANNELS_RX_COUNT,
|
|
|
|
|
ETHTOOL_A_CHANNELS_TX_COUNT,
|
|
|
|
|
ETHTOOL_A_CHANNELS_OTHER_COUNT,
|
|
|
|
|
ETHTOOL_A_CHANNELS_COMBINED_COUNT,
|
|
|
|
|
|
2024-12-04 15:55:47 +00:00
|
|
|
__ETHTOOL_A_CHANNELS_CNT,
|
|
|
|
|
ETHTOOL_A_CHANNELS_MAX = (__ETHTOOL_A_CHANNELS_CNT - 1)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_IRQ_MODERATION_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_IRQ_MODERATION_USEC,
|
|
|
|
|
ETHTOOL_A_IRQ_MODERATION_PKTS,
|
|
|
|
|
ETHTOOL_A_IRQ_MODERATION_COMPS,
|
2024-12-04 15:55:47 +00:00
|
|
|
|
|
|
|
|
__ETHTOOL_A_IRQ_MODERATION_CNT,
|
|
|
|
|
ETHTOOL_A_IRQ_MODERATION_MAX = (__ETHTOOL_A_IRQ_MODERATION_CNT - 1)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_PROFILE_UNSPEC,
|
|
|
|
|
ETHTOOL_A_PROFILE_IRQ_MODERATION,
|
2024-12-04 15:55:49 +00:00
|
|
|
|
2024-12-04 15:55:47 +00:00
|
|
|
__ETHTOOL_A_PROFILE_CNT,
|
|
|
|
|
ETHTOOL_A_PROFILE_MAX = (__ETHTOOL_A_PROFILE_CNT - 1)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_COALESCE_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_COALESCE_HEADER,
|
|
|
|
|
ETHTOOL_A_COALESCE_RX_USECS,
|
|
|
|
|
ETHTOOL_A_COALESCE_RX_MAX_FRAMES,
|
|
|
|
|
ETHTOOL_A_COALESCE_RX_USECS_IRQ,
|
|
|
|
|
ETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ,
|
|
|
|
|
ETHTOOL_A_COALESCE_TX_USECS,
|
|
|
|
|
ETHTOOL_A_COALESCE_TX_MAX_FRAMES,
|
|
|
|
|
ETHTOOL_A_COALESCE_TX_USECS_IRQ,
|
|
|
|
|
ETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ,
|
|
|
|
|
ETHTOOL_A_COALESCE_STATS_BLOCK_USECS,
|
|
|
|
|
ETHTOOL_A_COALESCE_USE_ADAPTIVE_RX,
|
|
|
|
|
ETHTOOL_A_COALESCE_USE_ADAPTIVE_TX,
|
|
|
|
|
ETHTOOL_A_COALESCE_PKT_RATE_LOW,
|
|
|
|
|
ETHTOOL_A_COALESCE_RX_USECS_LOW,
|
|
|
|
|
ETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW,
|
|
|
|
|
ETHTOOL_A_COALESCE_TX_USECS_LOW,
|
|
|
|
|
ETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW,
|
|
|
|
|
ETHTOOL_A_COALESCE_PKT_RATE_HIGH,
|
|
|
|
|
ETHTOOL_A_COALESCE_RX_USECS_HIGH,
|
|
|
|
|
ETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH,
|
|
|
|
|
ETHTOOL_A_COALESCE_TX_USECS_HIGH,
|
|
|
|
|
ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH,
|
|
|
|
|
ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL,
|
|
|
|
|
ETHTOOL_A_COALESCE_USE_CQE_MODE_TX,
|
|
|
|
|
ETHTOOL_A_COALESCE_USE_CQE_MODE_RX,
|
|
|
|
|
ETHTOOL_A_COALESCE_TX_AGGR_MAX_BYTES,
|
|
|
|
|
ETHTOOL_A_COALESCE_TX_AGGR_MAX_FRAMES,
|
|
|
|
|
ETHTOOL_A_COALESCE_TX_AGGR_TIME_USECS,
|
2024-12-04 15:55:47 +00:00
|
|
|
ETHTOOL_A_COALESCE_RX_PROFILE,
|
|
|
|
|
ETHTOOL_A_COALESCE_TX_PROFILE,
|
|
|
|
|
|
|
|
|
|
__ETHTOOL_A_COALESCE_CNT,
|
|
|
|
|
ETHTOOL_A_COALESCE_MAX = (__ETHTOOL_A_COALESCE_CNT - 1)
|
|
|
|
|
};
|
|
|
|
|
|
2025-09-30 13:45:06 +00:00
|
|
|
enum {
|
2024-12-04 15:55:47 +00:00
|
|
|
ETHTOOL_A_PAUSE_STAT_UNSPEC,
|
|
|
|
|
ETHTOOL_A_PAUSE_STAT_PAD,
|
|
|
|
|
ETHTOOL_A_PAUSE_STAT_TX_FRAMES,
|
|
|
|
|
ETHTOOL_A_PAUSE_STAT_RX_FRAMES,
|
|
|
|
|
|
|
|
|
|
__ETHTOOL_A_PAUSE_STAT_CNT,
|
|
|
|
|
ETHTOOL_A_PAUSE_STAT_MAX = (__ETHTOOL_A_PAUSE_STAT_CNT - 1)
|
|
|
|
|
};
|
|
|
|
|
|
2025-09-30 13:45:06 +00:00
|
|
|
enum {
|
2024-12-04 15:55:47 +00:00
|
|
|
ETHTOOL_A_PAUSE_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_PAUSE_HEADER,
|
|
|
|
|
ETHTOOL_A_PAUSE_AUTONEG,
|
|
|
|
|
ETHTOOL_A_PAUSE_RX,
|
|
|
|
|
ETHTOOL_A_PAUSE_TX,
|
|
|
|
|
ETHTOOL_A_PAUSE_STATS,
|
|
|
|
|
ETHTOOL_A_PAUSE_STATS_SRC,
|
|
|
|
|
|
2024-12-04 15:55:47 +00:00
|
|
|
__ETHTOOL_A_PAUSE_CNT,
|
|
|
|
|
ETHTOOL_A_PAUSE_MAX = (__ETHTOOL_A_PAUSE_CNT - 1)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_EEE_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_EEE_HEADER,
|
|
|
|
|
ETHTOOL_A_EEE_MODES_OURS,
|
|
|
|
|
ETHTOOL_A_EEE_MODES_PEER,
|
|
|
|
|
ETHTOOL_A_EEE_ACTIVE,
|
|
|
|
|
ETHTOOL_A_EEE_ENABLED,
|
|
|
|
|
ETHTOOL_A_EEE_TX_LPI_ENABLED,
|
|
|
|
|
ETHTOOL_A_EEE_TX_LPI_TIMER,
|
|
|
|
|
|
2024-12-04 15:55:47 +00:00
|
|
|
__ETHTOOL_A_EEE_CNT,
|
|
|
|
|
ETHTOOL_A_EEE_MAX = (__ETHTOOL_A_EEE_CNT - 1)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_TS_STAT_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_TS_STAT_TX_PKTS,
|
|
|
|
|
ETHTOOL_A_TS_STAT_TX_LOST,
|
|
|
|
|
ETHTOOL_A_TS_STAT_TX_ERR,
|
net: ethtool: ts: add separate counter for unconfirmed one-step TX timestamps
For packets with two-step timestamp requests, the hardware timestamp
comes back to the driver through a confirmation mechanism of sorts,
which allows the driver to confidently bump the successful "pkts"
counter.
For one-step PTP, the NIC is supposed to autonomously insert its
hardware TX timestamp in the packet headers while simultaneously
transmitting it. There may be a confirmation that this was done
successfully, or there may not.
None of the current drivers which implement ethtool_ops :: get_ts_stats()
also support HWTSTAMP_TX_ONESTEP_SYNC or HWTSTAMP_TX_ONESTEP_SYNC, so it
is a bit unclear which model to follow. But there are NICs, such as DSA,
where there is no transmit confirmation at all. Here, it would be wrong /
misleading to increment the successful "pkts" counter, because one-step
PTP packets can be dropped on TX just like any other packets.
So introduce a special counter which signifies "yes, an attempt was made,
but we don't know whether it also exited the port or not". I expect that
for one-step PTP packets where a confirmation is available, the "pkts"
counter would be bumped.
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Reviewed-by: Jakub Kicinski <kuba@kernel.org>
Link: https://patch.msgid.link/20250116104628.123555-2-vladimir.oltean@nxp.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2025-01-16 10:46:25 +00:00
|
|
|
ETHTOOL_A_TS_STAT_TX_ONESTEP_PKTS_UNCONFIRMED,
|
2024-12-04 15:55:47 +00:00
|
|
|
|
|
|
|
|
__ETHTOOL_A_TS_STAT_CNT,
|
|
|
|
|
ETHTOOL_A_TS_STAT_MAX = (__ETHTOOL_A_TS_STAT_CNT - 1)
|
|
|
|
|
};
|
|
|
|
|
|
2024-12-12 17:06:44 +00:00
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_TS_HWTSTAMP_PROVIDER_UNSPEC,
|
|
|
|
|
ETHTOOL_A_TS_HWTSTAMP_PROVIDER_INDEX,
|
|
|
|
|
ETHTOOL_A_TS_HWTSTAMP_PROVIDER_QUALIFIER,
|
|
|
|
|
|
|
|
|
|
__ETHTOOL_A_TS_HWTSTAMP_PROVIDER_CNT,
|
|
|
|
|
ETHTOOL_A_TS_HWTSTAMP_PROVIDER_MAX = (__ETHTOOL_A_TS_HWTSTAMP_PROVIDER_CNT - 1)
|
|
|
|
|
};
|
|
|
|
|
|
2024-12-04 15:55:47 +00:00
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_TSINFO_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_TSINFO_HEADER,
|
|
|
|
|
ETHTOOL_A_TSINFO_TIMESTAMPING,
|
|
|
|
|
ETHTOOL_A_TSINFO_TX_TYPES,
|
|
|
|
|
ETHTOOL_A_TSINFO_RX_FILTERS,
|
|
|
|
|
ETHTOOL_A_TSINFO_PHC_INDEX,
|
|
|
|
|
ETHTOOL_A_TSINFO_STATS,
|
2024-12-12 17:06:44 +00:00
|
|
|
ETHTOOL_A_TSINFO_HWTSTAMP_PROVIDER,
|
2025-05-19 08:45:05 +00:00
|
|
|
ETHTOOL_A_TSINFO_HWTSTAMP_SOURCE,
|
|
|
|
|
ETHTOOL_A_TSINFO_HWTSTAMP_PHYINDEX,
|
2024-12-04 15:55:48 +00:00
|
|
|
|
2024-12-04 15:55:47 +00:00
|
|
|
__ETHTOOL_A_TSINFO_CNT,
|
|
|
|
|
ETHTOOL_A_TSINFO_MAX = (__ETHTOOL_A_TSINFO_CNT - 1)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_CABLE_RESULT_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_CABLE_RESULT_PAIR,
|
|
|
|
|
ETHTOOL_A_CABLE_RESULT_CODE,
|
|
|
|
|
ETHTOOL_A_CABLE_RESULT_SRC,
|
2024-12-04 15:55:47 +00:00
|
|
|
|
|
|
|
|
__ETHTOOL_A_CABLE_RESULT_CNT,
|
|
|
|
|
ETHTOOL_A_CABLE_RESULT_MAX = (__ETHTOOL_A_CABLE_RESULT_CNT - 1)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_CABLE_FAULT_LENGTH_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_CABLE_FAULT_LENGTH_PAIR,
|
|
|
|
|
ETHTOOL_A_CABLE_FAULT_LENGTH_CM,
|
|
|
|
|
ETHTOOL_A_CABLE_FAULT_LENGTH_SRC,
|
2024-12-04 15:55:47 +00:00
|
|
|
|
|
|
|
|
__ETHTOOL_A_CABLE_FAULT_LENGTH_CNT,
|
|
|
|
|
ETHTOOL_A_CABLE_FAULT_LENGTH_MAX = (__ETHTOOL_A_CABLE_FAULT_LENGTH_CNT - 1)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_CABLE_NEST_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_CABLE_NEST_RESULT,
|
|
|
|
|
ETHTOOL_A_CABLE_NEST_FAULT_LENGTH,
|
|
|
|
|
|
2024-12-04 15:55:47 +00:00
|
|
|
__ETHTOOL_A_CABLE_NEST_CNT,
|
|
|
|
|
ETHTOOL_A_CABLE_NEST_MAX = (__ETHTOOL_A_CABLE_NEST_CNT - 1)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_CABLE_TEST_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_CABLE_TEST_HEADER,
|
2024-12-04 15:55:47 +00:00
|
|
|
|
|
|
|
|
__ETHTOOL_A_CABLE_TEST_CNT,
|
2024-12-04 15:55:49 +00:00
|
|
|
ETHTOOL_A_CABLE_TEST_MAX = (__ETHTOOL_A_CABLE_TEST_CNT - 1)
|
2024-12-04 15:55:47 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_CABLE_TEST_NTF_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_CABLE_TEST_NTF_HEADER,
|
|
|
|
|
ETHTOOL_A_CABLE_TEST_NTF_STATUS,
|
|
|
|
|
ETHTOOL_A_CABLE_TEST_NTF_NEST,
|
2024-12-04 15:55:47 +00:00
|
|
|
|
|
|
|
|
__ETHTOOL_A_CABLE_TEST_NTF_CNT,
|
|
|
|
|
ETHTOOL_A_CABLE_TEST_NTF_MAX = (__ETHTOOL_A_CABLE_TEST_NTF_CNT - 1)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_CABLE_TEST_TDR_CFG_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_CABLE_TEST_TDR_CFG_FIRST,
|
|
|
|
|
ETHTOOL_A_CABLE_TEST_TDR_CFG_LAST,
|
|
|
|
|
ETHTOOL_A_CABLE_TEST_TDR_CFG_STEP,
|
|
|
|
|
ETHTOOL_A_CABLE_TEST_TDR_CFG_PAIR,
|
2024-12-04 15:55:47 +00:00
|
|
|
|
|
|
|
|
__ETHTOOL_A_CABLE_TEST_TDR_CFG_CNT,
|
2024-12-04 15:55:49 +00:00
|
|
|
ETHTOOL_A_CABLE_TEST_TDR_CFG_MAX = (__ETHTOOL_A_CABLE_TEST_TDR_CFG_CNT - 1)
|
2024-12-04 15:55:47 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_CABLE_TEST_TDR_NTF_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_CABLE_TEST_TDR_NTF_HEADER,
|
|
|
|
|
ETHTOOL_A_CABLE_TEST_TDR_NTF_STATUS,
|
|
|
|
|
ETHTOOL_A_CABLE_TEST_TDR_NTF_NEST,
|
2024-12-04 15:55:47 +00:00
|
|
|
|
|
|
|
|
__ETHTOOL_A_CABLE_TEST_TDR_NTF_CNT,
|
2024-12-04 15:55:49 +00:00
|
|
|
ETHTOOL_A_CABLE_TEST_TDR_NTF_MAX = (__ETHTOOL_A_CABLE_TEST_TDR_NTF_CNT - 1)
|
2024-12-04 15:55:47 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_CABLE_TEST_TDR_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_CABLE_TEST_TDR_HEADER,
|
|
|
|
|
ETHTOOL_A_CABLE_TEST_TDR_CFG,
|
2024-12-04 15:55:47 +00:00
|
|
|
|
|
|
|
|
__ETHTOOL_A_CABLE_TEST_TDR_CNT,
|
2024-12-04 15:55:49 +00:00
|
|
|
ETHTOOL_A_CABLE_TEST_TDR_MAX = (__ETHTOOL_A_CABLE_TEST_TDR_CNT - 1)
|
2024-12-04 15:55:47 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_TUNNEL_UDP_ENTRY_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_TUNNEL_UDP_ENTRY_PORT,
|
|
|
|
|
ETHTOOL_A_TUNNEL_UDP_ENTRY_TYPE,
|
2024-12-04 15:55:47 +00:00
|
|
|
|
|
|
|
|
__ETHTOOL_A_TUNNEL_UDP_ENTRY_CNT,
|
|
|
|
|
ETHTOOL_A_TUNNEL_UDP_ENTRY_MAX = (__ETHTOOL_A_TUNNEL_UDP_ENTRY_CNT - 1)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_TUNNEL_UDP_TABLE_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_TUNNEL_UDP_TABLE_SIZE,
|
|
|
|
|
ETHTOOL_A_TUNNEL_UDP_TABLE_TYPES,
|
|
|
|
|
ETHTOOL_A_TUNNEL_UDP_TABLE_ENTRY,
|
2024-12-04 15:55:47 +00:00
|
|
|
|
|
|
|
|
__ETHTOOL_A_TUNNEL_UDP_TABLE_CNT,
|
|
|
|
|
ETHTOOL_A_TUNNEL_UDP_TABLE_MAX = (__ETHTOOL_A_TUNNEL_UDP_TABLE_CNT - 1)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_TUNNEL_UDP_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_TUNNEL_UDP_TABLE,
|
2024-12-04 15:55:47 +00:00
|
|
|
|
|
|
|
|
__ETHTOOL_A_TUNNEL_UDP_CNT,
|
|
|
|
|
ETHTOOL_A_TUNNEL_UDP_MAX = (__ETHTOOL_A_TUNNEL_UDP_CNT - 1)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_TUNNEL_INFO_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_TUNNEL_INFO_HEADER,
|
|
|
|
|
ETHTOOL_A_TUNNEL_INFO_UDP_PORTS,
|
2024-12-04 15:55:47 +00:00
|
|
|
|
|
|
|
|
__ETHTOOL_A_TUNNEL_INFO_CNT,
|
|
|
|
|
ETHTOOL_A_TUNNEL_INFO_MAX = (__ETHTOOL_A_TUNNEL_INFO_CNT - 1)
|
|
|
|
|
};
|
|
|
|
|
|
2025-09-24 12:40:33 +00:00
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_FEC_HIST_PAD = 1,
|
|
|
|
|
ETHTOOL_A_FEC_HIST_BIN_LOW,
|
|
|
|
|
ETHTOOL_A_FEC_HIST_BIN_HIGH,
|
|
|
|
|
ETHTOOL_A_FEC_HIST_BIN_VAL,
|
|
|
|
|
ETHTOOL_A_FEC_HIST_BIN_VAL_PER_LANE,
|
|
|
|
|
|
|
|
|
|
__ETHTOOL_A_FEC_HIST_CNT,
|
|
|
|
|
ETHTOOL_A_FEC_HIST_MAX = (__ETHTOOL_A_FEC_HIST_CNT - 1)
|
|
|
|
|
};
|
|
|
|
|
|
2024-12-04 15:55:47 +00:00
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_FEC_STAT_UNSPEC,
|
|
|
|
|
ETHTOOL_A_FEC_STAT_PAD,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_FEC_STAT_CORRECTED,
|
|
|
|
|
ETHTOOL_A_FEC_STAT_UNCORR,
|
|
|
|
|
ETHTOOL_A_FEC_STAT_CORR_BITS,
|
2025-09-24 12:40:33 +00:00
|
|
|
ETHTOOL_A_FEC_STAT_HIST,
|
2024-12-04 15:55:47 +00:00
|
|
|
|
|
|
|
|
__ETHTOOL_A_FEC_STAT_CNT,
|
|
|
|
|
ETHTOOL_A_FEC_STAT_MAX = (__ETHTOOL_A_FEC_STAT_CNT - 1)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_FEC_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_FEC_HEADER,
|
|
|
|
|
ETHTOOL_A_FEC_MODES,
|
|
|
|
|
ETHTOOL_A_FEC_AUTO,
|
|
|
|
|
ETHTOOL_A_FEC_ACTIVE,
|
|
|
|
|
ETHTOOL_A_FEC_STATS,
|
2024-12-04 15:55:47 +00:00
|
|
|
|
|
|
|
|
__ETHTOOL_A_FEC_CNT,
|
|
|
|
|
ETHTOOL_A_FEC_MAX = (__ETHTOOL_A_FEC_CNT - 1)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_MODULE_EEPROM_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_MODULE_EEPROM_HEADER,
|
|
|
|
|
ETHTOOL_A_MODULE_EEPROM_OFFSET,
|
|
|
|
|
ETHTOOL_A_MODULE_EEPROM_LENGTH,
|
|
|
|
|
ETHTOOL_A_MODULE_EEPROM_PAGE,
|
|
|
|
|
ETHTOOL_A_MODULE_EEPROM_BANK,
|
|
|
|
|
ETHTOOL_A_MODULE_EEPROM_I2C_ADDRESS,
|
|
|
|
|
ETHTOOL_A_MODULE_EEPROM_DATA,
|
2024-12-04 15:55:47 +00:00
|
|
|
|
|
|
|
|
__ETHTOOL_A_MODULE_EEPROM_CNT,
|
|
|
|
|
ETHTOOL_A_MODULE_EEPROM_MAX = (__ETHTOOL_A_MODULE_EEPROM_CNT - 1)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_STATS_GRP_UNSPEC,
|
|
|
|
|
ETHTOOL_A_STATS_GRP_PAD,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_STATS_GRP_ID,
|
|
|
|
|
ETHTOOL_A_STATS_GRP_SS_ID,
|
|
|
|
|
ETHTOOL_A_STATS_GRP_STAT,
|
|
|
|
|
ETHTOOL_A_STATS_GRP_HIST_RX,
|
|
|
|
|
ETHTOOL_A_STATS_GRP_HIST_TX,
|
|
|
|
|
ETHTOOL_A_STATS_GRP_HIST_BKT_LOW,
|
|
|
|
|
ETHTOOL_A_STATS_GRP_HIST_BKT_HI,
|
|
|
|
|
ETHTOOL_A_STATS_GRP_HIST_VAL,
|
2024-12-04 15:55:47 +00:00
|
|
|
|
|
|
|
|
__ETHTOOL_A_STATS_GRP_CNT,
|
|
|
|
|
ETHTOOL_A_STATS_GRP_MAX = (__ETHTOOL_A_STATS_GRP_CNT - 1)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_STATS_UNSPEC,
|
|
|
|
|
ETHTOOL_A_STATS_PAD,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_STATS_HEADER,
|
|
|
|
|
ETHTOOL_A_STATS_GROUPS,
|
|
|
|
|
ETHTOOL_A_STATS_GRP,
|
|
|
|
|
ETHTOOL_A_STATS_SRC,
|
2024-12-04 15:55:47 +00:00
|
|
|
|
|
|
|
|
__ETHTOOL_A_STATS_CNT,
|
|
|
|
|
ETHTOOL_A_STATS_MAX = (__ETHTOOL_A_STATS_CNT - 1)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_PHC_VCLOCKS_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_PHC_VCLOCKS_HEADER,
|
|
|
|
|
ETHTOOL_A_PHC_VCLOCKS_NUM,
|
|
|
|
|
ETHTOOL_A_PHC_VCLOCKS_INDEX,
|
2024-12-04 15:55:47 +00:00
|
|
|
|
|
|
|
|
__ETHTOOL_A_PHC_VCLOCKS_CNT,
|
|
|
|
|
ETHTOOL_A_PHC_VCLOCKS_MAX = (__ETHTOOL_A_PHC_VCLOCKS_CNT - 1)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_MODULE_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_MODULE_HEADER,
|
|
|
|
|
ETHTOOL_A_MODULE_POWER_MODE_POLICY,
|
|
|
|
|
ETHTOOL_A_MODULE_POWER_MODE,
|
2024-12-04 15:55:47 +00:00
|
|
|
|
|
|
|
|
__ETHTOOL_A_MODULE_CNT,
|
|
|
|
|
ETHTOOL_A_MODULE_MAX = (__ETHTOOL_A_MODULE_CNT - 1)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_C33_PSE_PW_LIMIT_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_C33_PSE_PW_LIMIT_MIN,
|
|
|
|
|
ETHTOOL_A_C33_PSE_PW_LIMIT_MAX,
|
2024-12-04 15:55:49 +00:00
|
|
|
|
|
|
|
|
__ETHTOOL_A_C33_PSE_PW_LIMIT_CNT,
|
|
|
|
|
__ETHTOOL_A_C33_PSE_PW_LIMIT_MAX = (__ETHTOOL_A_C33_PSE_PW_LIMIT_CNT - 1)
|
2024-12-04 15:55:47 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_PSE_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_PSE_HEADER,
|
|
|
|
|
ETHTOOL_A_PODL_PSE_ADMIN_STATE,
|
|
|
|
|
ETHTOOL_A_PODL_PSE_ADMIN_CONTROL,
|
|
|
|
|
ETHTOOL_A_PODL_PSE_PW_D_STATUS,
|
|
|
|
|
ETHTOOL_A_C33_PSE_ADMIN_STATE,
|
|
|
|
|
ETHTOOL_A_C33_PSE_ADMIN_CONTROL,
|
|
|
|
|
ETHTOOL_A_C33_PSE_PW_D_STATUS,
|
|
|
|
|
ETHTOOL_A_C33_PSE_PW_CLASS,
|
|
|
|
|
ETHTOOL_A_C33_PSE_ACTUAL_PW,
|
|
|
|
|
ETHTOOL_A_C33_PSE_EXT_STATE,
|
|
|
|
|
ETHTOOL_A_C33_PSE_EXT_SUBSTATE,
|
|
|
|
|
ETHTOOL_A_C33_PSE_AVAIL_PW_LIMIT,
|
|
|
|
|
ETHTOOL_A_C33_PSE_PW_LIMIT_RANGES,
|
2025-06-17 12:12:04 +00:00
|
|
|
ETHTOOL_A_PSE_PW_D_ID,
|
2025-06-17 12:12:07 +00:00
|
|
|
ETHTOOL_A_PSE_PRIO_MAX,
|
|
|
|
|
ETHTOOL_A_PSE_PRIO,
|
2024-12-04 15:55:48 +00:00
|
|
|
|
2024-12-04 15:55:47 +00:00
|
|
|
__ETHTOOL_A_PSE_CNT,
|
|
|
|
|
ETHTOOL_A_PSE_MAX = (__ETHTOOL_A_PSE_CNT - 1)
|
|
|
|
|
};
|
|
|
|
|
|
ethtool: rss: report which fields are configured for hashing
Implement ETHTOOL_GRXFH over Netlink. The number of flow types is
reasonable (around 20) so report all of them at once for simplicity.
Do not maintain the flow ID mapping with ioctl at the uAPI level.
This gives us a chance to clean up the confusion that come from
RxNFC vs RxFH (flow direction vs hashing) in the ioctl.
Try to align with the names used in ethtool CLI, they seem to have
stood the test of time just fine. One annoyance is that we still
call L4 ports the weird names, but I guess they also apply to IPSec
(where they cover the SPI) so it is what it is.
$ ynl --family ethtool --dump rss-get
{
"header": {
"dev-index": 1,
"dev-name": "enp1s0"
},
"hfunc": 1,
"hkey": b"...",
"indir": [0, 1, ...],
"flow-hash": {
"ether": {"l2da"},
"ah-esp4": {"ip-src", "ip-dst"},
"ah-esp6": {"ip-src", "ip-dst"},
"ah4": {"ip-src", "ip-dst"},
"ah6": {"ip-src", "ip-dst"},
"esp4": {"ip-src", "ip-dst"},
"esp6": {"ip-src", "ip-dst"},
"ip4": {"ip-src", "ip-dst"},
"ip6": {"ip-src", "ip-dst"},
"sctp4": {"ip-src", "ip-dst"},
"sctp6": {"ip-src", "ip-dst"},
"udp4": {"ip-src", "ip-dst"},
"udp6": {"ip-src", "ip-dst"}
"tcp4": {"l4-b-0-1", "l4-b-2-3", "ip-src", "ip-dst"},
"tcp6": {"l4-b-0-1", "l4-b-2-3", "ip-src", "ip-dst"},
},
}
Link: https://patch.msgid.link/20250708220640.2738464-5-kuba@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2025-07-08 22:06:39 +00:00
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_FLOW_ETHER = 1,
|
|
|
|
|
ETHTOOL_A_FLOW_IP4,
|
|
|
|
|
ETHTOOL_A_FLOW_IP6,
|
|
|
|
|
ETHTOOL_A_FLOW_TCP4,
|
|
|
|
|
ETHTOOL_A_FLOW_TCP6,
|
|
|
|
|
ETHTOOL_A_FLOW_UDP4,
|
|
|
|
|
ETHTOOL_A_FLOW_UDP6,
|
|
|
|
|
ETHTOOL_A_FLOW_SCTP4,
|
|
|
|
|
ETHTOOL_A_FLOW_SCTP6,
|
|
|
|
|
ETHTOOL_A_FLOW_AH4,
|
|
|
|
|
ETHTOOL_A_FLOW_AH6,
|
|
|
|
|
ETHTOOL_A_FLOW_ESP4,
|
|
|
|
|
ETHTOOL_A_FLOW_ESP6,
|
|
|
|
|
ETHTOOL_A_FLOW_AH_ESP4,
|
|
|
|
|
ETHTOOL_A_FLOW_AH_ESP6,
|
|
|
|
|
ETHTOOL_A_FLOW_GTPU4,
|
|
|
|
|
ETHTOOL_A_FLOW_GTPU6,
|
|
|
|
|
ETHTOOL_A_FLOW_GTPC4,
|
|
|
|
|
ETHTOOL_A_FLOW_GTPC6,
|
|
|
|
|
ETHTOOL_A_FLOW_GTPC_TEID4,
|
|
|
|
|
ETHTOOL_A_FLOW_GTPC_TEID6,
|
|
|
|
|
ETHTOOL_A_FLOW_GTPU_EH4,
|
|
|
|
|
ETHTOOL_A_FLOW_GTPU_EH6,
|
|
|
|
|
ETHTOOL_A_FLOW_GTPU_UL4,
|
|
|
|
|
ETHTOOL_A_FLOW_GTPU_UL6,
|
|
|
|
|
ETHTOOL_A_FLOW_GTPU_DL4,
|
|
|
|
|
ETHTOOL_A_FLOW_GTPU_DL6,
|
|
|
|
|
|
|
|
|
|
__ETHTOOL_A_FLOW_CNT,
|
|
|
|
|
ETHTOOL_A_FLOW_MAX = (__ETHTOOL_A_FLOW_CNT - 1)
|
|
|
|
|
};
|
|
|
|
|
|
2024-12-04 15:55:47 +00:00
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_RSS_UNSPEC,
|
|
|
|
|
ETHTOOL_A_RSS_HEADER,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_RSS_CONTEXT,
|
|
|
|
|
ETHTOOL_A_RSS_HFUNC,
|
|
|
|
|
ETHTOOL_A_RSS_INDIR,
|
|
|
|
|
ETHTOOL_A_RSS_HKEY,
|
|
|
|
|
ETHTOOL_A_RSS_INPUT_XFRM,
|
|
|
|
|
ETHTOOL_A_RSS_START_CONTEXT,
|
ethtool: rss: report which fields are configured for hashing
Implement ETHTOOL_GRXFH over Netlink. The number of flow types is
reasonable (around 20) so report all of them at once for simplicity.
Do not maintain the flow ID mapping with ioctl at the uAPI level.
This gives us a chance to clean up the confusion that come from
RxNFC vs RxFH (flow direction vs hashing) in the ioctl.
Try to align with the names used in ethtool CLI, they seem to have
stood the test of time just fine. One annoyance is that we still
call L4 ports the weird names, but I guess they also apply to IPSec
(where they cover the SPI) so it is what it is.
$ ynl --family ethtool --dump rss-get
{
"header": {
"dev-index": 1,
"dev-name": "enp1s0"
},
"hfunc": 1,
"hkey": b"...",
"indir": [0, 1, ...],
"flow-hash": {
"ether": {"l2da"},
"ah-esp4": {"ip-src", "ip-dst"},
"ah-esp6": {"ip-src", "ip-dst"},
"ah4": {"ip-src", "ip-dst"},
"ah6": {"ip-src", "ip-dst"},
"esp4": {"ip-src", "ip-dst"},
"esp6": {"ip-src", "ip-dst"},
"ip4": {"ip-src", "ip-dst"},
"ip6": {"ip-src", "ip-dst"},
"sctp4": {"ip-src", "ip-dst"},
"sctp6": {"ip-src", "ip-dst"},
"udp4": {"ip-src", "ip-dst"},
"udp6": {"ip-src", "ip-dst"}
"tcp4": {"l4-b-0-1", "l4-b-2-3", "ip-src", "ip-dst"},
"tcp6": {"l4-b-0-1", "l4-b-2-3", "ip-src", "ip-dst"},
},
}
Link: https://patch.msgid.link/20250708220640.2738464-5-kuba@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2025-07-08 22:06:39 +00:00
|
|
|
ETHTOOL_A_RSS_FLOW_HASH,
|
2024-12-04 15:55:47 +00:00
|
|
|
|
|
|
|
|
__ETHTOOL_A_RSS_CNT,
|
2024-12-04 15:55:49 +00:00
|
|
|
ETHTOOL_A_RSS_MAX = (__ETHTOOL_A_RSS_CNT - 1)
|
2024-12-04 15:55:47 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_PLCA_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_PLCA_HEADER,
|
|
|
|
|
ETHTOOL_A_PLCA_VERSION,
|
|
|
|
|
ETHTOOL_A_PLCA_ENABLED,
|
|
|
|
|
ETHTOOL_A_PLCA_STATUS,
|
|
|
|
|
ETHTOOL_A_PLCA_NODE_CNT,
|
|
|
|
|
ETHTOOL_A_PLCA_NODE_ID,
|
|
|
|
|
ETHTOOL_A_PLCA_TO_TMR,
|
|
|
|
|
ETHTOOL_A_PLCA_BURST_CNT,
|
|
|
|
|
ETHTOOL_A_PLCA_BURST_TMR,
|
|
|
|
|
|
2024-12-04 15:55:47 +00:00
|
|
|
__ETHTOOL_A_PLCA_CNT,
|
|
|
|
|
ETHTOOL_A_PLCA_MAX = (__ETHTOOL_A_PLCA_CNT - 1)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_MODULE_FW_FLASH_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_MODULE_FW_FLASH_HEADER,
|
|
|
|
|
ETHTOOL_A_MODULE_FW_FLASH_FILE_NAME,
|
|
|
|
|
ETHTOOL_A_MODULE_FW_FLASH_PASSWORD,
|
|
|
|
|
ETHTOOL_A_MODULE_FW_FLASH_STATUS,
|
|
|
|
|
ETHTOOL_A_MODULE_FW_FLASH_STATUS_MSG,
|
|
|
|
|
ETHTOOL_A_MODULE_FW_FLASH_DONE,
|
|
|
|
|
ETHTOOL_A_MODULE_FW_FLASH_TOTAL,
|
|
|
|
|
|
2024-12-04 15:55:47 +00:00
|
|
|
__ETHTOOL_A_MODULE_FW_FLASH_CNT,
|
|
|
|
|
ETHTOOL_A_MODULE_FW_FLASH_MAX = (__ETHTOOL_A_MODULE_FW_FLASH_CNT - 1)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_PHY_UNSPEC,
|
2024-12-04 15:55:48 +00:00
|
|
|
ETHTOOL_A_PHY_HEADER,
|
|
|
|
|
ETHTOOL_A_PHY_INDEX,
|
|
|
|
|
ETHTOOL_A_PHY_DRVNAME,
|
|
|
|
|
ETHTOOL_A_PHY_NAME,
|
|
|
|
|
ETHTOOL_A_PHY_UPSTREAM_TYPE,
|
|
|
|
|
ETHTOOL_A_PHY_UPSTREAM_INDEX,
|
|
|
|
|
ETHTOOL_A_PHY_UPSTREAM_SFP_NAME,
|
|
|
|
|
ETHTOOL_A_PHY_DOWNSTREAM_SFP_NAME,
|
|
|
|
|
|
2024-12-04 15:55:47 +00:00
|
|
|
__ETHTOOL_A_PHY_CNT,
|
|
|
|
|
ETHTOOL_A_PHY_MAX = (__ETHTOOL_A_PHY_CNT - 1)
|
|
|
|
|
};
|
|
|
|
|
|
2024-12-12 17:06:45 +00:00
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_TSCONFIG_UNSPEC,
|
|
|
|
|
ETHTOOL_A_TSCONFIG_HEADER,
|
|
|
|
|
ETHTOOL_A_TSCONFIG_HWTSTAMP_PROVIDER,
|
|
|
|
|
ETHTOOL_A_TSCONFIG_TX_TYPES,
|
|
|
|
|
ETHTOOL_A_TSCONFIG_RX_FILTERS,
|
|
|
|
|
ETHTOOL_A_TSCONFIG_HWTSTAMP_FLAGS,
|
|
|
|
|
|
|
|
|
|
__ETHTOOL_A_TSCONFIG_CNT,
|
|
|
|
|
ETHTOOL_A_TSCONFIG_MAX = (__ETHTOOL_A_TSCONFIG_CNT - 1)
|
|
|
|
|
};
|
|
|
|
|
|
2025-06-17 12:12:01 +00:00
|
|
|
enum {
|
|
|
|
|
ETHTOOL_A_PSE_NTF_HEADER = 1,
|
|
|
|
|
ETHTOOL_A_PSE_NTF_EVENTS,
|
|
|
|
|
|
|
|
|
|
__ETHTOOL_A_PSE_NTF_CNT,
|
|
|
|
|
ETHTOOL_A_PSE_NTF_MAX = (__ETHTOOL_A_PSE_NTF_CNT - 1)
|
|
|
|
|
};
|
|
|
|
|
|
2024-12-04 15:55:47 +00:00
|
|
|
enum {
|
2024-12-04 15:55:49 +00:00
|
|
|
ETHTOOL_MSG_USER_NONE = 0,
|
|
|
|
|
ETHTOOL_MSG_STRSET_GET = 1,
|
2024-12-04 15:55:47 +00:00
|
|
|
ETHTOOL_MSG_LINKINFO_GET,
|
|
|
|
|
ETHTOOL_MSG_LINKINFO_SET,
|
|
|
|
|
ETHTOOL_MSG_LINKMODES_GET,
|
|
|
|
|
ETHTOOL_MSG_LINKMODES_SET,
|
|
|
|
|
ETHTOOL_MSG_LINKSTATE_GET,
|
|
|
|
|
ETHTOOL_MSG_DEBUG_GET,
|
|
|
|
|
ETHTOOL_MSG_DEBUG_SET,
|
|
|
|
|
ETHTOOL_MSG_WOL_GET,
|
|
|
|
|
ETHTOOL_MSG_WOL_SET,
|
|
|
|
|
ETHTOOL_MSG_FEATURES_GET,
|
|
|
|
|
ETHTOOL_MSG_FEATURES_SET,
|
|
|
|
|
ETHTOOL_MSG_PRIVFLAGS_GET,
|
|
|
|
|
ETHTOOL_MSG_PRIVFLAGS_SET,
|
|
|
|
|
ETHTOOL_MSG_RINGS_GET,
|
|
|
|
|
ETHTOOL_MSG_RINGS_SET,
|
|
|
|
|
ETHTOOL_MSG_CHANNELS_GET,
|
|
|
|
|
ETHTOOL_MSG_CHANNELS_SET,
|
|
|
|
|
ETHTOOL_MSG_COALESCE_GET,
|
|
|
|
|
ETHTOOL_MSG_COALESCE_SET,
|
|
|
|
|
ETHTOOL_MSG_PAUSE_GET,
|
|
|
|
|
ETHTOOL_MSG_PAUSE_SET,
|
|
|
|
|
ETHTOOL_MSG_EEE_GET,
|
|
|
|
|
ETHTOOL_MSG_EEE_SET,
|
|
|
|
|
ETHTOOL_MSG_TSINFO_GET,
|
|
|
|
|
ETHTOOL_MSG_CABLE_TEST_ACT,
|
|
|
|
|
ETHTOOL_MSG_CABLE_TEST_TDR_ACT,
|
|
|
|
|
ETHTOOL_MSG_TUNNEL_INFO_GET,
|
|
|
|
|
ETHTOOL_MSG_FEC_GET,
|
|
|
|
|
ETHTOOL_MSG_FEC_SET,
|
|
|
|
|
ETHTOOL_MSG_MODULE_EEPROM_GET,
|
|
|
|
|
ETHTOOL_MSG_STATS_GET,
|
|
|
|
|
ETHTOOL_MSG_PHC_VCLOCKS_GET,
|
|
|
|
|
ETHTOOL_MSG_MODULE_GET,
|
|
|
|
|
ETHTOOL_MSG_MODULE_SET,
|
|
|
|
|
ETHTOOL_MSG_PSE_GET,
|
|
|
|
|
ETHTOOL_MSG_PSE_SET,
|
|
|
|
|
ETHTOOL_MSG_RSS_GET,
|
|
|
|
|
ETHTOOL_MSG_PLCA_GET_CFG,
|
|
|
|
|
ETHTOOL_MSG_PLCA_SET_CFG,
|
|
|
|
|
ETHTOOL_MSG_PLCA_GET_STATUS,
|
|
|
|
|
ETHTOOL_MSG_MM_GET,
|
|
|
|
|
ETHTOOL_MSG_MM_SET,
|
|
|
|
|
ETHTOOL_MSG_MODULE_FW_FLASH_ACT,
|
|
|
|
|
ETHTOOL_MSG_PHY_GET,
|
2024-12-12 17:06:45 +00:00
|
|
|
ETHTOOL_MSG_TSCONFIG_GET,
|
|
|
|
|
ETHTOOL_MSG_TSCONFIG_SET,
|
ethtool: rss: initial RSS_SET (indirection table handling)
Add initial support for RSS_SET, for now only operations on
the indirection table are supported.
Unlike the ioctl don't check if at least one parameter is
being changed. This is how other ethtool-nl ops behave,
so pick the ethtool-nl consistency vs copying ioctl behavior.
There are two special cases here:
1) resetting the table to defaults;
2) support for tables of different size.
For (1) I use an empty Netlink attribute (array of size 0).
(2) may require some background. AFAICT a lot of modern devices
allow allocating RSS tables of different sizes. mlx5 can upsize
its tables, bnxt has some "table size calculation", and Intel
folks asked about RSS table sizing in context of resource allocation
in the past. The ethtool IOCTL API has a concept of table size,
but right now the user is expected to provide a table exactly
the size the device requests. Some drivers may change the table
size at runtime (in response to queue count changes) but the
user is not in control of this. What's not great is that all
RSS contexts share the same table size. For example a device
with 128 queues enabled, 16 RSS contexts 8 queues in each will
likely have 256 entry tables for each of the 16 contexts,
while 32 would be more than enough given each context only has
8 queues. To address this the Netlink API should avoid enforcing
table size at the uAPI level, and should allow the user to express
the min table size they expect.
To fully solve (2) we will need more driver plumbing but
at the uAPI level this patch allows the user to specify
a table size smaller than what the device advertises. The device
table size must be a multiple of the user requested table size.
We then replicate the user-provided table to fill the full device
size table. This addresses the "allow the user to express the min
table size" objective, while not enforcing any fixed size.
From Netlink perspective .get_rxfh_indir_size() is now de facto
the "max" table size supported by the device.
We may choose to support table replication in ethtool, too,
when we actually plumb this thru the device APIs.
Initially I was considering moving full pattern generation
to the kernel (which queues to use, at which frequency and
what min sequence length). I don't think this complexity
would buy us much and most if not all devices have pow-2
table sizes, which simplifies the replication a lot.
Reviewed-by: Gal Pressman <gal@nvidia.com>
Link: https://patch.msgid.link/20250716000331.1378807-2-kuba@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2025-07-16 00:03:21 +00:00
|
|
|
ETHTOOL_MSG_RSS_SET,
|
2025-07-17 23:43:41 +00:00
|
|
|
ETHTOOL_MSG_RSS_CREATE_ACT,
|
2025-07-17 23:43:42 +00:00
|
|
|
ETHTOOL_MSG_RSS_DELETE_ACT,
|
2024-12-04 15:55:47 +00:00
|
|
|
|
|
|
|
|
__ETHTOOL_MSG_USER_CNT,
|
2024-12-04 15:55:49 +00:00
|
|
|
ETHTOOL_MSG_USER_MAX = (__ETHTOOL_MSG_USER_CNT - 1)
|
2024-12-04 15:55:47 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
2024-12-04 15:55:49 +00:00
|
|
|
ETHTOOL_MSG_KERNEL_NONE = 0,
|
|
|
|
|
ETHTOOL_MSG_STRSET_GET_REPLY = 1,
|
2024-12-04 15:55:47 +00:00
|
|
|
ETHTOOL_MSG_LINKINFO_GET_REPLY,
|
|
|
|
|
ETHTOOL_MSG_LINKINFO_NTF,
|
|
|
|
|
ETHTOOL_MSG_LINKMODES_GET_REPLY,
|
|
|
|
|
ETHTOOL_MSG_LINKMODES_NTF,
|
|
|
|
|
ETHTOOL_MSG_LINKSTATE_GET_REPLY,
|
|
|
|
|
ETHTOOL_MSG_DEBUG_GET_REPLY,
|
|
|
|
|
ETHTOOL_MSG_DEBUG_NTF,
|
|
|
|
|
ETHTOOL_MSG_WOL_GET_REPLY,
|
|
|
|
|
ETHTOOL_MSG_WOL_NTF,
|
|
|
|
|
ETHTOOL_MSG_FEATURES_GET_REPLY,
|
|
|
|
|
ETHTOOL_MSG_FEATURES_SET_REPLY,
|
|
|
|
|
ETHTOOL_MSG_FEATURES_NTF,
|
|
|
|
|
ETHTOOL_MSG_PRIVFLAGS_GET_REPLY,
|
|
|
|
|
ETHTOOL_MSG_PRIVFLAGS_NTF,
|
|
|
|
|
ETHTOOL_MSG_RINGS_GET_REPLY,
|
|
|
|
|
ETHTOOL_MSG_RINGS_NTF,
|
|
|
|
|
ETHTOOL_MSG_CHANNELS_GET_REPLY,
|
|
|
|
|
ETHTOOL_MSG_CHANNELS_NTF,
|
|
|
|
|
ETHTOOL_MSG_COALESCE_GET_REPLY,
|
|
|
|
|
ETHTOOL_MSG_COALESCE_NTF,
|
|
|
|
|
ETHTOOL_MSG_PAUSE_GET_REPLY,
|
|
|
|
|
ETHTOOL_MSG_PAUSE_NTF,
|
|
|
|
|
ETHTOOL_MSG_EEE_GET_REPLY,
|
|
|
|
|
ETHTOOL_MSG_EEE_NTF,
|
|
|
|
|
ETHTOOL_MSG_TSINFO_GET_REPLY,
|
|
|
|
|
ETHTOOL_MSG_CABLE_TEST_NTF,
|
|
|
|
|
ETHTOOL_MSG_CABLE_TEST_TDR_NTF,
|
|
|
|
|
ETHTOOL_MSG_TUNNEL_INFO_GET_REPLY,
|
|
|
|
|
ETHTOOL_MSG_FEC_GET_REPLY,
|
|
|
|
|
ETHTOOL_MSG_FEC_NTF,
|
|
|
|
|
ETHTOOL_MSG_MODULE_EEPROM_GET_REPLY,
|
|
|
|
|
ETHTOOL_MSG_STATS_GET_REPLY,
|
|
|
|
|
ETHTOOL_MSG_PHC_VCLOCKS_GET_REPLY,
|
|
|
|
|
ETHTOOL_MSG_MODULE_GET_REPLY,
|
|
|
|
|
ETHTOOL_MSG_MODULE_NTF,
|
|
|
|
|
ETHTOOL_MSG_PSE_GET_REPLY,
|
|
|
|
|
ETHTOOL_MSG_RSS_GET_REPLY,
|
|
|
|
|
ETHTOOL_MSG_PLCA_GET_CFG_REPLY,
|
|
|
|
|
ETHTOOL_MSG_PLCA_GET_STATUS_REPLY,
|
|
|
|
|
ETHTOOL_MSG_PLCA_NTF,
|
|
|
|
|
ETHTOOL_MSG_MM_GET_REPLY,
|
|
|
|
|
ETHTOOL_MSG_MM_NTF,
|
|
|
|
|
ETHTOOL_MSG_MODULE_FW_FLASH_NTF,
|
|
|
|
|
ETHTOOL_MSG_PHY_GET_REPLY,
|
|
|
|
|
ETHTOOL_MSG_PHY_NTF,
|
2024-12-12 17:06:45 +00:00
|
|
|
ETHTOOL_MSG_TSCONFIG_GET_REPLY,
|
|
|
|
|
ETHTOOL_MSG_TSCONFIG_SET_REPLY,
|
2025-06-17 12:12:01 +00:00
|
|
|
ETHTOOL_MSG_PSE_NTF,
|
2025-06-23 23:17:18 +00:00
|
|
|
ETHTOOL_MSG_RSS_NTF,
|
2025-07-17 23:43:41 +00:00
|
|
|
ETHTOOL_MSG_RSS_CREATE_ACT_REPLY,
|
|
|
|
|
ETHTOOL_MSG_RSS_CREATE_NTF,
|
2025-07-17 23:43:42 +00:00
|
|
|
ETHTOOL_MSG_RSS_DELETE_NTF,
|
2024-12-04 15:55:47 +00:00
|
|
|
|
|
|
|
|
__ETHTOOL_MSG_KERNEL_CNT,
|
2024-12-04 15:55:49 +00:00
|
|
|
ETHTOOL_MSG_KERNEL_MAX = (__ETHTOOL_MSG_KERNEL_CNT - 1)
|
2024-12-04 15:55:47 +00:00
|
|
|
};
|
|
|
|
|
|
2025-06-23 23:17:13 +00:00
|
|
|
#define ETHTOOL_MCGRP_MONITOR_NAME "monitor"
|
|
|
|
|
|
2024-12-04 15:55:47 +00:00
|
|
|
#endif /* _UAPI_LINUX_ETHTOOL_NETLINK_GENERATED_H */
|