ethtool 的 Netlink 接口¶
基本信息¶
ethtool 的 Netlink 接口使用通用 netlink 族 ethtool
(用户空间应用程序应使用 <linux/ethtool_netlink.h>
uapi 头文件中定义的宏 ETHTOOL_GENL_NAME
和 ETHTOOL_GENL_VERSION
)。此族不使用特定的标头,请求和回复中的所有信息都使用 netlink 属性传递。
ethtool netlink 接口使用扩展 ACK 进行错误和警告报告,建议用户空间应用程序开发人员以适当的方式向用户提供这些消息。
请求可以分为三类:“get”(检索信息)、“set”(设置参数)和“action”(调用操作)。
所有“set”和“action”类型请求都需要管理员权限(命名空间中的 CAP_NET_ADMIN
)。大多数“get”类型请求允许任何人执行,但也有例外(其中响应包含敏感信息)。在某些情况下,请求本身允许任何人执行,但非特权用户会省略包含敏感信息(例如,网络唤醒密码)的属性。
约定¶
表示布尔值的属性通常使用 NLA_U8 类型,以便我们可以区分三种状态:“on”、“off”和“not present”(表示该信息在“get”请求中不可用或在“set”请求中不更改值)。对于这些属性,“true”值应作为数字 1 传递,但任何非零值都应被接收者理解为“true”。在下表中,“bool”表示以这种方式解释的 NLA_U8 属性。
在下面的消息结构描述中,如果属性名称后缀为“+”,则父嵌套可以包含多个相同类型的属性。这实现了条目数组。
需要由设备驱动程序填充并根据它们是否有效而转储到用户空间的属性,不应使用零作为有效值。这避免了在设备驱动程序 API 中显式指示属性有效性的需要。
请求标头¶
每个请求或回复消息都包含一个带有公共标头的嵌套属性。此标头的结构为
ETHTOOL_A_HEADER_DEV_INDEX
u32
设备 ifindex
ETHTOOL_A_HEADER_DEV_NAME
字符串
设备名称
ETHTOOL_A_HEADER_FLAGS
u32
所有请求通用的标志
ETHTOOL_A_HEADER_PHY_INDEX
u32
物理设备索引
ETHTOOL_A_HEADER_DEV_INDEX
和 ETHTOOL_A_HEADER_DEV_NAME
标识消息所关联的设备。其中一个在请求中就足够了,如果同时使用,它们必须标识同一设备。某些请求(例如,全局字符串集)不需要设备标识。大多数 GET
请求还允许在没有设备标识的情况下进行转储请求,以查询所有提供该信息的设备的相同信息(每个设备都在单独的消息中)。
ETHTOOL_A_HEADER_FLAGS
是所有请求类型通用的请求标志位图。这些标志的解释对于所有请求类型都是相同的,但这些标志可能不适用于某些请求。可识别的标志有
ETHTOOL_FLAG_COMPACT_BITSETS
在回复中使用紧凑格式的位集
ETHTOOL_FLAG_OMIT_REPLY
省略可选回复(_SET 和 _ACT)
ETHTOOL_FLAG_STATS
包含可选设备统计信息
新的请求标志应遵循以下一般想法:如果未设置该标志,则行为是向后兼容的,即来自不了解该标志的旧客户端的请求应以客户端期望的方式进行解释。客户端不得设置它不理解的标志。
ETHTOOL_A_HEADER_PHY_INDEX
标识消息所关联的以太网 PHY。由于有许多与 PHY 配置相关的命令,并且因为链路上可能有多个 PHY,因此可以在需要它的命令的请求中传递 PHY 索引。但是,它不是强制性的,如果未针对目标为 PHY 的命令传递它,则使用 net_device.phydev 指针。
位集¶
对于短的(合理)固定长度的位图,使用标准的 NLA_BITFIELD32
类型。对于任意长度的位图,ethtool netlink 使用一个嵌套属性,其中包含两种形式之一的内容:紧凑(两个二进制位图,分别表示位值和受影响位的掩码)和逐位(由索引或名称标识的位列表)。
详细(逐位)位集允许发送位的符号名称及其值,这节省了一次往返行程(当在请求中传递位集时)或至少第二次请求(当位集在回复中时)。这对于像传统的 ethtool 命令这样的单次应用程序非常有用。另一方面,像 ethtool 监视器(显示通知)或网络管理守护程序这样的长期运行的应用程序可能更喜欢仅获取一次名称,并使用紧凑形式来节省消息大小。来自 ethtool netlink 接口的通知始终对位集使用紧凑形式。
位集可以表示值/掩码对(未设置 ETHTOOL_A_BITSET_NOMASK
)或单个位图(设置 ETHTOOL_A_BITSET_NOMASK
)。在修改位图的请求中,前者将掩码中的位设置为值中设置的值,并保留其余的位;后者设置位图中设置的位,并清除其余的位。
紧凑形式:嵌套(位集)属性内容
ETHTOOL_A_BITSET_NOMASK
标志
无掩码,仅列表
ETHTOOL_A_BITSET_SIZE
u32
有效位的数量
ETHTOOL_A_BITSET_VALUE
二进制
位值的位图
ETHTOOL_A_BITSET_MASK
二进制
有效位的位图
值和掩码的长度必须至少为 ETHTOOL_A_BITSET_SIZE
位,并向上舍入为 32 位的倍数。它们由主机字节顺序的 32 位字组成,这些字从最低有效位到最高有效位排序(即,与使用 ioctl 接口传递位图的方式相同)。
对于紧凑形式,ETHTOOL_A_BITSET_SIZE
和 ETHTOOL_A_BITSET_VALUE
是强制性的。如果未设置 ETHTOOL_A_BITSET_NOMASK
(位集表示值/掩码对),则 ETHTOOL_A_BITSET_MASK
属性是强制性的;如果未设置 ETHTOOL_A_BITSET_NOMASK
,则不允许使用 ETHTOOL_A_BITSET_MASK
(位集表示单个位图)。
如果较旧的应用程序在新内核上使用,或者反之亦然,则内核位集长度可能与用户空间长度不同。如果用户空间位图更长,则只有当请求实际尝试设置内核无法识别的某些位的值时,才会发出错误。
逐位形式:嵌套(位集)属性内容
ETHTOOL_A_BITSET_NOMASK
标志
无掩码,仅列表
ETHTOOL_A_BITSET_SIZE
u32
有效位的数量
ETHTOOL_A_BITSET_BITS
嵌套
位数组
ETHTOOL_A_BITSET_BITS_BIT+
嵌套
一位
ETHTOOL_A_BITSET_BIT_INDEX
u32
位索引(LSB 为 0)
ETHTOOL_A_BITSET_BIT_NAME
字符串
位名称
ETHTOOL_A_BITSET_BIT_VALUE
标志
如果设置了位,则存在
位大小对于逐位形式是可选的。ETHTOOL_A_BITSET_BITS
嵌套只能包含 ETHTOOL_A_BITSET_BITS_BIT
属性,但可以有任意数量的属性。位可以通过其索引或名称来标识。当在请求中使用时,根据 ETHTOOL_A_BITSET_BIT_VALUE
将列出的位设置为 0 或 1,其余的位保留。如果索引超出内核位长度或名称无法识别,则请求失败。
当存在 ETHTOOL_A_BITSET_NOMASK
标志时,位集被解释为简单的位图。在这种情况下,不使用 ETHTOOL_A_BITSET_BIT_VALUE
属性。这样的位集表示一个位图中列出的位设置为 1,其余位为零。
在请求中,应用程序可以使用任何一种形式。内核在回复中使用的形式由请求标头的标志字段中的 ETHTOOL_FLAG_COMPACT_BITSETS
标志确定。值和掩码的语义取决于属性。
消息类型列表¶
所有标识消息类型的常量都使用 ETHTOOL_CMD_
前缀和根据消息目的的后缀
_GET
用户空间请求以检索数据
_SET
用户空间请求以设置数据
_ACT
用户空间请求以执行操作
_GET_REPLY
内核对
GET
请求的回复
_SET_REPLY
内核对
SET
请求的回复
_ACT_REPLY
内核对
ACT
请求的回复
_NTF
内核通知
用户空间到内核
ETHTOOL_MSG_STRSET_GET
获取字符串集
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
获取 EEE 设置
ETHTOOL_MSG_EEE_SET
设置 EEE 设置
ETHTOOL_MSG_TSINFO_GET
获取时间戳信息
ETHTOOL_MSG_CABLE_TEST_ACT
启动电缆测试
ETHTOOL_MSG_CABLE_TEST_TDR_ACT
启动原始 TDR 电缆测试
ETHTOOL_MSG_TUNNEL_INFO_GET
获取隧道卸载信息
ETHTOOL_MSG_FEC_GET
获取 FEC 设置
ETHTOOL_MSG_FEC_SET
设置 FEC 设置
ETHTOOL_MSG_MODULE_EEPROM_GET
读取 SFP 模块 EEPROM
ETHTOOL_MSG_STATS_GET
获取标准统计信息
ETHTOOL_MSG_PHC_VCLOCKS_GET
获取 PHC 虚拟时钟信息
ETHTOOL_MSG_MODULE_SET
设置收发器模块参数
ETHTOOL_MSG_MODULE_GET
获取收发器模块参数
ETHTOOL_MSG_PSE_SET
设置 PSE 参数
ETHTOOL_MSG_PSE_GET
获取 PSE 参数
ETHTOOL_MSG_RSS_GET
获取 RSS 设置
ETHTOOL_MSG_PLCA_GET_CFG
获取 PLCA RS 参数
ETHTOOL_MSG_PLCA_SET_CFG
设置 PLCA RS 参数
ETHTOOL_MSG_PLCA_GET_STATUS
获取 PLCA RS 状态
ETHTOOL_MSG_MM_GET
获取 MAC 合并层状态
ETHTOOL_MSG_MM_SET
设置 MAC 合并层参数
ETHTOOL_MSG_MODULE_FW_FLASH_ACT
刷写收发器模块固件
ETHTOOL_MSG_PHY_GET
获取以太网 PHY 信息
内核到用户空间
ETHTOOL_MSG_STRSET_GET_REPLY
字符串集内容
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
对 FEATURES_SET 的可选回复
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
EEE 设置
ETHTOOL_MSG_EEE_NTF
EEE 设置
ETHTOOL_MSG_TSINFO_GET_REPLY
时间戳信息
ETHTOOL_MSG_CABLE_TEST_NTF
电缆测试结果
ETHTOOL_MSG_CABLE_TEST_TDR_NTF
电缆测试 TDR 结果
ETHTOOL_MSG_TUNNEL_INFO_GET_REPLY
隧道卸载信息
ETHTOOL_MSG_FEC_GET_REPLY
FEC 设置
ETHTOOL_MSG_FEC_NTF
FEC 设置
ETHTOOL_MSG_MODULE_EEPROM_GET_REPLY
读取 SFP 模块 EEPROM
ETHTOOL_MSG_STATS_GET_REPLY
标准统计信息
ETHTOOL_MSG_PHC_VCLOCKS_GET_REPLY
PHC 虚拟时钟信息
ETHTOOL_MSG_MODULE_GET_REPLY
收发器模块参数
ETHTOOL_MSG_PSE_GET_REPLY
PSE 参数
ETHTOOL_MSG_RSS_GET_REPLY
RSS 设置
ETHTOOL_MSG_PLCA_GET_CFG_REPLY
PLCA RS 参数
ETHTOOL_MSG_PLCA_GET_STATUS_REPLY
PLCA RS 状态
ETHTOOL_MSG_PLCA_NTF
PLCA RS 参数
ETHTOOL_MSG_MM_GET_REPLY
MAC 合并层状态
ETHTOOL_MSG_MODULE_FW_FLASH_NTF
收发器模块刷写更新
ETHTOOL_MSG_PHY_GET_REPLY
以太网 PHY 信息
ETHTOOL_MSG_PHY_NTF
以太网 PHY 信息更改
用户空间应用程序发送 GET
请求以检索设备信息。它们通常不包含任何特定于消息的属性。内核使用相应的“GET_REPLY”消息进行回复。对于大多数类型,可以使用带有 NLM_F_DUMP
且没有设备标识的 GET
请求来查询支持该请求的所有设备的信息。
如果数据也可以修改,则使用与相应 GET_REPLY
布局相同的相应 SET
消息来请求更改。此类请求中仅包含请求更改的属性(此外,并非所有属性都可以更改)。对大多数 SET
请求的回复仅包含错误代码和 extack;如果内核提供其他数据,则以相应 SET_REPLY
消息的形式发送,可以通过在请求标头中设置 ETHTOOL_FLAG_OMIT_REPLY
标志来禁止该消息。
数据修改还会触发发送带有通知的 NTF
消息。这些通常仅包含受更改影响的属性的子集。如果使用其他方式(主要是 ioctl ethtool 接口)修改数据,则会发出相同的通知。与仅在实际发生更改时才发送的来自 ethtool netlink 代码的通知不同,即使请求实际上未更改任何数据,也可能会发送由 ioctl 接口触发的通知。
ACT
消息请求内核(驱动程序)执行特定操作。如果内核报告某些信息(可以通过在请求标头中设置 ETHTOOL_FLAG_OMIT_REPLY
标志来禁止),则回复采用 ACT_REPLY
消息的形式。执行操作还会触发通知(NTF
消息)。
后面的章节描述了这些消息的格式和语义。
STRSET_GET¶
请求由 ioctl 命令 ETHTOOL_GSSET_INFO
和 ETHTOOL_GSTRINGS.
提供的字符串集内容。字符串集不是用户可写的,因此相应的 STRSET_SET
消息仅在内核回复中使用。字符串集有两种类型:全局的(独立于设备,例如设备特性名称)和特定于设备的(例如设备私有标志)。
请求内容
ETHTOOL_A_STRSET_HEADER
嵌套
请求头
ETHTOOL_A_STRSET_STRINGSETS
嵌套
要请求的字符串集
ETHTOOL_A_STRINGSETS_STRINGSET+
嵌套
一个字符串集
ETHTOOL_A_STRINGSET_ID
u32
设置 ID
内核响应内容
ETHTOOL_A_STRSET_HEADER
嵌套
回复头
ETHTOOL_A_STRSET_STRINGSETS
嵌套
字符串集数组
ETHTOOL_A_STRINGSETS_STRINGSET+
嵌套
一个字符串集
ETHTOOL_A_STRINGSET_ID
u32
设置 ID
ETHTOOL_A_STRINGSET_COUNT
u32
字符串数量
ETHTOOL_A_STRINGSET_STRINGS
嵌套
字符串数组
ETHTOOL_A_STRINGS_STRING+
嵌套
一个字符串
ETHTOOL_A_STRING_INDEX
u32
字符串索引
ETHTOOL_A_STRING_VALUE
字符串
字符串值
ETHTOOL_A_STRSET_COUNTS_ONLY
标志
仅返回计数
请求标头中的设备标识是可选的。根据其存在和 NLM_F_DUMP
标志,有三种类型的 STRSET_GET
请求
没有
NLM_F_DUMP
,没有设备:获取“全局”字符串集没有
NLM_F_DUMP
,带有设备:获取与设备相关的字符串集
NLM_F_DUMP
,没有设备:获取所有设备的设备相关字符串集
如果没有 ETHTOOL_A_STRSET_STRINGSETS
数组,则返回请求类型的所有字符串集,否则仅返回请求中指定的字符串集。标志 ETHTOOL_A_STRSET_COUNTS_ONLY
告诉内核仅返回集合的字符串计数,而不是实际字符串。
LINKINFO_GET¶
请求 ETHTOOL_GLINKSETTINGS
提供的链路设置,但链路模式和自动协商相关信息除外。该请求不使用任何属性。
请求内容
ETHTOOL_A_LINKINFO_HEADER
嵌套
请求头
内核响应内容
ETHTOOL_A_LINKINFO_HEADER
嵌套
回复头
ETHTOOL_A_LINKINFO_PORT
u8
物理端口
ETHTOOL_A_LINKINFO_PHYADDR
u8
phy MDIO 地址
ETHTOOL_A_LINKINFO_TP_MDIX
u8
MDI(-X) 状态
ETHTOOL_A_LINKINFO_TP_MDIX_CTRL
u8
MDI(-X) 控制
ETHTOOL_A_LINKINFO_TRANSCEIVER
u8
收发器
属性及其值与相应 ioctl 结构的匹配成员具有相同的含义。
LINKINFO_GET
允许转储请求(内核返回支持该请求的所有设备的回复消息)。
LINKINFO_SET¶
LINKINFO_SET
请求允许设置 LINKINFO_GET
报告的某些属性。
请求内容
ETHTOOL_A_LINKINFO_HEADER
嵌套
请求头
ETHTOOL_A_LINKINFO_PORT
u8
物理端口
ETHTOOL_A_LINKINFO_PHYADDR
u8
phy MDIO 地址
ETHTOOL_A_LINKINFO_TP_MDIX_CTRL
u8
MDI(-X) 控制
MDI(-X) 状态和收发器无法设置,具有相应属性的请求将被拒绝。
LINKMODES_GET¶
请求 ETHTOOL_GLINKSETTINGS
提供的链路模式(支持的、通告的和对等通告的)以及相关信息(自动协商状态、链路速度和双工)。该请求不使用任何属性。
请求内容
ETHTOOL_A_LINKMODES_HEADER
嵌套
请求头
内核响应内容
ETHTOOL_A_LINKMODES_HEADER
嵌套
回复头
ETHTOOL_A_LINKMODES_AUTONEG
u8
自动协商状态
ETHTOOL_A_LINKMODES_OURS
位集
通告的链路模式
ETHTOOL_A_LINKMODES_PEER
位集
伙伴链路模式
ETHTOOL_A_LINKMODES_SPEED
u32
链路速度 (Mb/s)
ETHTOOL_A_LINKMODES_DUPLEX
u8
双工模式
ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG
u8
主/从端口模式
ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE
u8
主/从端口状态
ETHTOOL_A_LINKMODES_RATE_MATCHING
u8
PHY 速率匹配
对于 ETHTOOL_A_LINKMODES_OURS
,值表示通告的模式,掩码表示支持的模式。回复中的 ETHTOOL_A_LINKMODES_PEER
是位列表。
LINKMODES_GET
允许转储请求(内核返回支持该请求的所有设备的回复消息)。
LINKMODES_SET¶
请求内容
ETHTOOL_A_LINKMODES_HEADER
嵌套
请求头
ETHTOOL_A_LINKMODES_AUTONEG
u8
自动协商状态
ETHTOOL_A_LINKMODES_OURS
位集
通告的链路模式
ETHTOOL_A_LINKMODES_PEER
位集
伙伴链路模式
ETHTOOL_A_LINKMODES_SPEED
u32
链路速度 (Mb/s)
ETHTOOL_A_LINKMODES_DUPLEX
u8
双工模式
ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG
u8
主/从端口模式
ETHTOOL_A_LINKMODES_RATE_MATCHING
u8
PHY 速率匹配
ETHTOOL_A_LINKMODES_LANES
u32
通道
ETHTOOL_A_LINKMODES_OURS
位集允许设置通告的链路模式。如果自动协商已打开(现在设置或从以前保留),则不会更改通告的模式(没有 ETHTOOL_A_LINKMODES_OURS
属性),并且至少指定了速度、双工和通道中的一个,则内核会将通告的模式调整为与速度、双工、通道或所有(无论指定什么)匹配的所有支持的模式。此自动选择在 ethtool 端使用 ioctl 接口完成,netlink 接口应该允许请求更改,而无需知道内核具体支持什么。
LINKSTATE_GET¶
请求链路状态信息。提供链路状态(由 ETHTOOL_GLINK
ioctl 命令提供)的 up/down 标志。可选地,也可以提供扩展状态。一般来说,扩展状态描述端口关闭的原因,或端口以某种不明显模式运行的原因。此请求没有任何属性。
请求内容
ETHTOOL_A_LINKSTATE_HEADER
嵌套
请求头
内核响应内容
ETHTOOL_A_LINKSTATE_HEADER
嵌套
回复头
ETHTOOL_A_LINKSTATE_LINK
bool
链路状态(up/down)
ETHTOOL_A_LINKSTATE_SQI
u32
当前信号质量索引
ETHTOOL_A_LINKSTATE_SQI_MAX
u32
最大支持 SQI 值
ETHTOOL_A_LINKSTATE_EXT_STATE
u8
链路扩展状态
ETHTOOL_A_LINKSTATE_EXT_SUBSTATE
u8
链路扩展子状态
ETHTOOL_A_LINKSTATE_EXT_DOWN_CNT
u32
链路断开事件计数
对于大多数网卡驱动程序,ETHTOOL_A_LINKSTATE_LINK
的值返回由 netif_carrier_ok()
提供的载波标志,但也有驱动程序定义了自己的处理程序。
ETHTOOL_A_LINKSTATE_EXT_STATE
和 ETHTOOL_A_LINKSTATE_EXT_SUBSTATE
是可选值。ethtool 核心可以提供 ETHTOOL_A_LINKSTATE_EXT_STATE
和 ETHTOOL_A_LINKSTATE_EXT_SUBSTATE
,或者只提供 ETHTOOL_A_LINKSTATE_EXT_STATE
,或者都不提供。
LINKSTATE_GET
允许转储请求(内核返回所有支持该请求的设备的回复消息)。
链路扩展状态
ETHTOOL_LINK_EXT_STATE_AUTONEG
与自动协商或其中问题相关的状态
ETHTOOL_LINK_EXT_STATE_LINK_TRAINING_FAILURE
链路训练期间的失败
ETHTOOL_LINK_EXT_STATE_LINK_LOGICAL_MISMATCH
物理编码子层或前向纠错子层中的逻辑不匹配
ETHTOOL_LINK_EXT_STATE_BAD_SIGNAL_INTEGRITY
信号完整性问题
ETHTOOL_LINK_EXT_STATE_NO_CABLE
未连接电缆
ETHTOOL_LINK_EXT_STATE_CABLE_ISSUE
失败与电缆有关,例如,不支持的电缆
ETHTOOL_LINK_EXT_STATE_EEPROM_ISSUE
失败与 EEPROM 有关,例如,读取或解析数据期间的失败
ETHTOOL_LINK_EXT_STATE_CALIBRATION_FAILURE
校准算法期间的失败
ETHTOOL_LINK_EXT_STATE_POWER_BUDGET_EXCEEDED
硬件无法从电缆或模块提供所需的功率
ETHTOOL_LINK_EXT_STATE_OVERHEAT
模块过热
ETHTOOL_LINK_EXT_STATE_MODULE
收发器模块问题
链路扩展子状态
自动协商子状态
ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED
对端已关闭
ETHTOOL_LINK_EXT_SUBSTATE_AN_ACK_NOT_RECEIVED
未收到来自对端的 ACK
ETHTOOL_LINK_EXT_SUBSTATE_AN_NEXT_PAGE_EXCHANGE_FAILED
下一页交换失败
ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED_FORCE_MODE
强制模式下对端已关闭,或速度未达成一致
ETHTOOL_LINK_EXT_SUBSTATE_AN_FEC_MISMATCH_DURING_OVERRIDE
两侧的前向纠错模式不匹配
ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_HCD
没有最高公约数
链路训练子状态
ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_FRAME_LOCK_NOT_ACQUIRED
帧未被识别,锁定失败
ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_INHIBIT_TIMEOUT
锁定未在超时前发生
ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_PARTNER_DID_NOT_SET_RECEIVER_READY
对端未在训练过程后发送就绪信号
ETHTOOL_LINK_EXT_SUBSTATE_LT_REMOTE_FAULT
远端尚未准备好
链路逻辑不匹配子状态
ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_BLOCK_LOCK
物理编码子层未在第一阶段锁定 - 块锁定
ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_AM_LOCK
物理编码子层未在第二阶段锁定 - 对齐标记锁定
ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_GET_ALIGN_STATUS
物理编码子层未获得对齐状态
ETHTOOL_LINK_EXT_SUBSTATE_LLM_FC_FEC_IS_NOT_LOCKED
FC 前向纠错未锁定
ETHTOOL_LINK_EXT_SUBSTATE_LLM_RS_FEC_IS_NOT_LOCKED
RS 前向纠错未锁定
不良信号完整性子状态
ETHTOOL_LINK_EXT_SUBSTATE_BSI_LARGE_NUMBER_OF_PHYSICAL_ERRORS
大量物理错误
ETHTOOL_LINK_EXT_SUBSTATE_BSI_UNSUPPORTED_RATE
系统尝试以非正式支持的速率运行电缆,导致信号完整性问题
ETHTOOL_LINK_EXT_SUBSTATE_BSI_SERDES_REFERENCE_CLOCK_LOST
SerDes 的外部时钟信号太弱或不可用。
ETHTOOL_LINK_EXT_SUBSTATE_BSI_SERDES_ALOS
由于模拟信号丢失,SerDes 的接收信号太弱。
电缆问题子状态
ETHTOOL_LINK_EXT_SUBSTATE_CI_UNSUPPORTED_CABLE
不支持的电缆
ETHTOOL_LINK_EXT_SUBSTATE_CI_CABLE_TEST_FAILURE
电缆测试失败
收发器模块问题子状态
ETHTOOL_LINK_EXT_SUBSTATE_MODULE_CMIS_NOT_READY
CMIS 模块状态机未达到 ModuleReady 状态。例如,如果模块停留在 ModuleFault 状态
DEBUG_GET¶
请求设备的调试设置。目前,仅提供消息掩码。
请求内容
ETHTOOL_A_DEBUG_HEADER
嵌套
请求头
内核响应内容
ETHTOOL_A_DEBUG_HEADER
嵌套
回复头
ETHTOOL_A_DEBUG_MSGMASK
位集
消息掩码
消息掩码 (ETHTOOL_A_DEBUG_MSGMASK
) 等于 ioctl 接口中 ETHTOOL_GMSGLVL
提供的消息级别,并由 ETHTOOL_SMSGLVL
设置。虽然出于历史原因它被称为消息级别,但大多数驱动程序和几乎所有较新的驱动程序都将其用作已启用消息类别的掩码(由 NETIF_MSG_*
常量表示);因此,netlink 接口遵循其在实践中的实际使用。
DEBUG_GET
允许转储请求(内核返回所有支持该请求的设备的回复消息)。
DEBUG_SET¶
设置或更新设备的调试设置。目前,仅支持消息掩码。
请求内容
ETHTOOL_A_DEBUG_HEADER
嵌套
请求头
ETHTOOL_A_DEBUG_MSGMASK
位集
消息掩码
ETHTOOL_A_DEBUG_MSGMASK
位设置允许设置或修改设备已启用的调试消息类型的掩码。
WOL_GET¶
查询设备的唤醒局域网设置。与大多数“GET”类型请求不同,ETHTOOL_MSG_WOL_GET
需要 (netns) CAP_NET_ADMIN
权限,因为它(可能)提供机密 SecureOn(tm) 密码。
请求内容
ETHTOOL_A_WOL_HEADER
嵌套
请求头
内核响应内容
ETHTOOL_A_WOL_HEADER
嵌套
回复头
ETHTOOL_A_WOL_MODES
位集
已启用 WoL 模式的掩码
ETHTOOL_A_WOL_SOPASS
二进制
SecureOn(tm) 密码
在回复中,ETHTOOL_A_WOL_MODES
掩码由设备支持的模式、已启用模式的值组成。ETHTOOL_A_WOL_SOPASS
仅在支持 WAKE_MAGICSECURE
模式时才包含在回复中。
WOL_SET¶
设置或更新唤醒局域网设置。
请求内容
ETHTOOL_A_WOL_HEADER
嵌套
请求头
ETHTOOL_A_WOL_MODES
位集
已启用的 WoL 模式
ETHTOOL_A_WOL_SOPASS
二进制
SecureOn(tm) 密码
仅当设备支持 WAKE_MAGICSECURE
模式时才允许使用 ETHTOOL_A_WOL_SOPASS
。
FEATURES_GET¶
获取网络设备功能,如 ETHTOOL_GFEATURES
ioctl 请求。
请求内容
ETHTOOL_A_FEATURES_HEADER
嵌套
请求头
内核响应内容
ETHTOOL_A_FEATURES_HEADER
嵌套
回复头
ETHTOOL_A_FEATURES_HW
位集
dev->hw_features
ETHTOOL_A_FEATURES_WANTED
位集
dev->wanted_features
ETHTOOL_A_FEATURES_ACTIVE
位集
dev->features
ETHTOOL_A_FEATURES_NOCHANGE
位集
NETIF_F_NEVER_CHANGE
内核响应中的位图与 ioctl 干扰中使用的位图具有相同的含义,但属性名称不同(它们基于 struct net_device
的相应成员)。不提供旧的“标志”,如果用户空间需要它们(最有可能只是为了向后兼容的 ethtool),它可以自行从相关功能位计算它们的值。ETHA_FEATURES_HW 使用由内核识别的所有功能组成的掩码(在使用详细的位图格式时提供所有名称),其他三个不使用掩码(简单的位列表)。
FEATURES_SET¶
请求设置网络设备功能,如 ETHTOOL_SFEATURES
ioctl 请求。
请求内容
ETHTOOL_A_FEATURES_HEADER
嵌套
请求头
ETHTOOL_A_FEATURES_WANTED
位集
请求的功能
内核响应内容
ETHTOOL_A_FEATURES_HEADER
嵌套
回复头
ETHTOOL_A_FEATURES_WANTED
位集
想要的与结果的差异
ETHTOOL_A_FEATURES_ACTIVE
位集
旧的与新的活动差异
请求仅包含一个位集,它可以是值/掩码对(请求更改特定功能位并保留其余部分),也可以只是一个值(请求将所有功能设置为指定的集合)。
由于请求受 netdev_change_features()
的健全性检查,可选内核回复(可以通过请求标头中的 ETHTOOL_FLAG_OMIT_REPLY
标志抑制)通知客户端实际结果。ETHTOOL_A_FEATURES_WANTED
报告客户端请求和实际结果之间的差异:掩码由请求功能和结果(操作后的 dev->features)之间不同的位组成,值由请求中这些位的值组成(即,来自结果功能的否定值)。ETHTOOL_A_FEATURES_ACTIVE
报告旧的 dev->features 和新的 dev->features 之间的差异:掩码由已更改的位组成,值是它们在新的 dev->features 中的值(操作后)。
不仅在使用 ETHTOOL_MSG_FEATURES_SET
请求或 ethtool ioctl 请求之一修改设备功能时,而且每次使用 netdev_update_features()
或 netdev_change_features()
修改功能时,都会发送 ETHTOOL_MSG_FEATURES_NTF
通知。
PRIVFLAGS_GET¶
获取私有标志,如 ETHTOOL_GPFLAGS
ioctl 请求。
请求内容
ETHTOOL_A_PRIVFLAGS_HEADER
嵌套
请求头
内核响应内容
ETHTOOL_A_PRIVFLAGS_HEADER
嵌套
回复头
ETHTOOL_A_PRIVFLAGS_FLAGS
位集
私有标志
ETHTOOL_A_PRIVFLAGS_FLAGS
是一个位集,包含设备私有标志的值。这些标志由驱动程序定义,它们的数量和名称(以及含义)都取决于设备。为了实现紧凑的位集格式,可以以 ETH_SS_PRIV_FLAGS
字符串集的形式检索名称。如果请求详细的位集格式,则响应会使用设备支持的所有私有标志作为掩码,以便客户端获得完整的信息,而无需获取包含名称的字符串集。
PRIVFLAGS_SET¶
设置或修改设备私有标志的值,类似于 ETHTOOL_SPFLAGS
ioctl 请求。
请求内容
ETHTOOL_A_PRIVFLAGS_HEADER
嵌套
请求头
ETHTOOL_A_PRIVFLAGS_FLAGS
位集
私有标志
ETHTOOL_A_PRIVFLAGS_FLAGS
可以设置整个私有标志集,也可以仅修改其中一些标志的值。
RINGS_GET¶
获取环形缓冲区大小,类似于 ETHTOOL_GRINGPARAM
ioctl 请求。
请求内容
ETHTOOL_A_RINGS_HEADER
嵌套
请求头
内核响应内容
ETHTOOL_A_RINGS_HEADER
嵌套
回复头
ETHTOOL_A_RINGS_RX_MAX
u32
接收环形缓冲区的最大大小
ETHTOOL_A_RINGS_RX_MINI_MAX
u32
接收迷你环形缓冲区的最大大小
ETHTOOL_A_RINGS_RX_JUMBO_MAX
u32
接收巨型环形缓冲区的最大大小
ETHTOOL_A_RINGS_TX_MAX
u32
发送环形缓冲区的最大大小
ETHTOOL_A_RINGS_RX
u32
接收环形缓冲区的大小
ETHTOOL_A_RINGS_RX_MINI
u32
接收迷你环形缓冲区的大小
ETHTOOL_A_RINGS_RX_JUMBO
u32
接收巨型环形缓冲区的大小
ETHTOOL_A_RINGS_TX
u32
发送环形缓冲区的大小
ETHTOOL_A_RINGS_RX_BUF_LEN
u32
环形缓冲区上缓冲区的大小
ETHTOOL_A_RINGS_TCP_DATA_SPLIT
u8
TCP 报头/数据分割
ETHTOOL_A_RINGS_CQE_SIZE
u32
发送/接收 CQE 的大小
ETHTOOL_A_RINGS_TX_PUSH
u8
发送推送模式的标志
ETHTOOL_A_RINGS_RX_PUSH
u8
接收推送模式的标志
ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN
u32
发送推送缓冲区的大小
ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN_MAX
u32
发送推送缓冲区的最大大小
ETHTOOL_A_RINGS_TCP_DATA_SPLIT
指示设备是否可用于页面翻转 TCP 零拷贝接收 (getsockopt(TCP_ZEROCOPY_RECEIVE)
)。如果启用,设备将被配置为将帧头和数据放入单独的缓冲区。设备配置必须允许接收完整的内存页数据,例如,因为 MTU 足够高,或者通过 HW-GRO。
ETHTOOL_A_RINGS_[RX|TX]_PUSH
标志用于启用描述符快速路径来发送或接收数据包。在普通路径中,驱动程序在 DRAM 中填充描述符并通知 NIC 硬件。在快速路径中,驱动程序通过 MMIO 写入将描述符推送到设备,从而减少延迟。但是,启用此功能可能会增加 CPU 开销。驱动程序可能会强制执行额外的按数据包资格检查(例如,针对数据包大小)。
ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN
指定驱动程序可以直接将传输数据包的最大字节数推送到底层设备(“推送”模式)。将某些有效负载字节推送到设备具有以下优点:通过避免 DMA 映射来减少小数据包的延迟(与 ETHTOOL_A_RINGS_TX_PUSH
参数相同),以及允许底层设备在获取其有效负载之前处理数据包头。这可以帮助设备基于数据包的头执行快速操作。这类似于“tx-copybreak”参数,该参数将数据包复制到预先分配的 DMA 内存区域,而不是映射新的内存。但是,tx-push-buff 参数将数据包直接复制到设备,以允许设备对数据包执行更快的操作。
RINGS_SET¶
设置环形缓冲区大小,类似于 ETHTOOL_SRINGPARAM
ioctl 请求。
请求内容
ETHTOOL_A_RINGS_HEADER
嵌套
回复头
ETHTOOL_A_RINGS_RX
u32
接收环形缓冲区的大小
ETHTOOL_A_RINGS_RX_MINI
u32
接收迷你环形缓冲区的大小
ETHTOOL_A_RINGS_RX_JUMBO
u32
接收巨型环形缓冲区的大小
ETHTOOL_A_RINGS_TX
u32
发送环形缓冲区的大小
ETHTOOL_A_RINGS_RX_BUF_LEN
u32
环形缓冲区上缓冲区的大小
ETHTOOL_A_RINGS_CQE_SIZE
u32
发送/接收 CQE 的大小
ETHTOOL_A_RINGS_TX_PUSH
u8
发送推送模式的标志
ETHTOOL_A_RINGS_RX_PUSH
u8
接收推送模式的标志
ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN
u32
发送推送缓冲区的大小
内核会检查请求的环形缓冲区大小是否超过驱动程序报告的限制。驱动程序可能会施加额外的约束,并且可能不支持所有属性。
ETHTOOL_A_RINGS_CQE_SIZE
指定完成队列事件的大小。完成队列事件 (CQE) 是 NIC 发布以指示数据包完成状态的事件,例如,数据包发送成功或错误,或者数据包接收(例如指向数据包片段的指针)。如果 NIC 支持,则 CQE 大小参数可以修改默认大小之外的 CQE 大小。较大的 CQE 可以具有更多的接收缓冲区指针,反过来 NIC 可以从线路传输更大的帧。根据 NIC 硬件,如果修改了 CQE 大小,则可以在驱动程序中调整整体完成队列大小。
CHANNELS_GET¶
获取通道计数,类似于 ETHTOOL_GCHANNELS
ioctl 请求。
请求内容
ETHTOOL_A_CHANNELS_HEADER
嵌套
请求头
内核响应内容
ETHTOOL_A_CHANNELS_HEADER
嵌套
回复头
ETHTOOL_A_CHANNELS_RX_MAX
u32
最大接收通道数
ETHTOOL_A_CHANNELS_TX_MAX
u32
最大发送通道数
ETHTOOL_A_CHANNELS_OTHER_MAX
u32
最大其他通道数
ETHTOOL_A_CHANNELS_COMBINED_MAX
u32
最大组合通道数
ETHTOOL_A_CHANNELS_RX_COUNT
u32
接收通道计数
ETHTOOL_A_CHANNELS_TX_COUNT
u32
发送通道计数
ETHTOOL_A_CHANNELS_OTHER_COUNT
u32
其他通道计数
ETHTOOL_A_CHANNELS_COMBINED_COUNT
u32
组合通道计数
CHANNELS_SET¶
设置通道计数,类似于 ETHTOOL_SCHANNELS
ioctl 请求。
请求内容
ETHTOOL_A_CHANNELS_HEADER
嵌套
请求头
ETHTOOL_A_CHANNELS_RX_COUNT
u32
接收通道计数
ETHTOOL_A_CHANNELS_TX_COUNT
u32
发送通道计数
ETHTOOL_A_CHANNELS_OTHER_COUNT
u32
其他通道计数
ETHTOOL_A_CHANNELS_COMBINED_COUNT
u32
组合通道计数
内核会检查请求的通道计数是否超过驱动程序报告的限制。驱动程序可能会施加额外的约束,并且可能不支持所有属性。
COALESCE_GET¶
获取合并参数,类似于 ETHTOOL_GCOALESCE
ioctl 请求。
请求内容
ETHTOOL_A_COALESCE_HEADER
嵌套
请求头
内核响应内容
ETHTOOL_A_COALESCE_HEADER
嵌套
回复头
ETHTOOL_A_COALESCE_RX_USECS
u32
延迟 (us),正常接收
ETHTOOL_A_COALESCE_RX_MAX_FRAMES
u32
最大数据包数,正常接收
ETHTOOL_A_COALESCE_RX_USECS_IRQ
u32
延迟 (us),中断中的接收
ETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ
u32
最大数据包数,中断中的接收
ETHTOOL_A_COALESCE_TX_USECS
u32
延迟 (us),正常发送
ETHTOOL_A_COALESCE_TX_MAX_FRAMES
u32
最大数据包数,正常发送
ETHTOOL_A_COALESCE_TX_USECS_IRQ
u32
延迟 (us),中断中的发送
ETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ
u32
中断中的数据包数,中断中的发送
ETHTOOL_A_COALESCE_STATS_BLOCK_USECS
u32
统计信息更新的延迟
ETHTOOL_A_COALESCE_USE_ADAPTIVE_RX
bool
自适应接收合并
ETHTOOL_A_COALESCE_USE_ADAPTIVE_TX
bool
自适应发送合并
ETHTOOL_A_COALESCE_PKT_RATE_LOW
u32
低速率的阈值
ETHTOOL_A_COALESCE_RX_USECS_LOW
u32
延迟 (us),低接收
ETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW
u32
最大数据包数,低接收
ETHTOOL_A_COALESCE_TX_USECS_LOW
u32
延迟 (us),低发送
ETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW
u32
最大数据包数,低发送
ETHTOOL_A_COALESCE_PKT_RATE_HIGH
u32
高速率的阈值
ETHTOOL_A_COALESCE_RX_USECS_HIGH
u32
延迟 (us),高接收
ETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH
u32
最大数据包数,高接收
ETHTOOL_A_COALESCE_TX_USECS_HIGH
u32
延迟 (us),高发送
ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH
u32
最大数据包数,高发送
ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL
u32
速率采样间隔
ETHTOOL_A_COALESCE_USE_CQE_TX
bool
计时器重置模式,发送
ETHTOOL_A_COALESCE_USE_CQE_RX
bool
计时器重置模式,接收
ETHTOOL_A_COALESCE_TX_AGGR_MAX_BYTES
u32
最大聚合大小,发送
ETHTOOL_A_COALESCE_TX_AGGR_MAX_FRAMES
u32
最大聚合数据包数,发送
ETHTOOL_A_COALESCE_TX_AGGR_TIME_USECS
u32
时间 (us),聚合,发送
ETHTOOL_A_COALESCE_RX_PROFILE
嵌套
DIM 的配置文件,接收
ETHTOOL_A_COALESCE_TX_PROFILE
嵌套
DIM 的配置文件,发送
只有当属性值不为零或者设置了 ethtool_ops::supported_coalesce_params
中的相应位(即,它们被驱动程序声明为支持)时,才会将其包含在回复中。
计时器重置模式 (ETHTOOL_A_COALESCE_USE_CQE_TX
和 ETHTOOL_A_COALESCE_USE_CQE_RX
) 控制数据包到达与各种基于时间的延迟参数之间的交互。默认情况下,计时器旨在限制任何数据包到达/离开与相应中断之间的最大延迟。在此模式下,计时器应由数据包到达(有时是上次中断的传递)启动,并在中断传递时重置。将适当的属性设置为 1 将启用 CQE
模式,其中每个数据包事件都会重置计时器。在此模式下,计时器用于强制中断(如果队列处于空闲状态),而繁忙的队列依赖于数据包限制来触发中断。
发送聚合包括将帧复制到连续的缓冲区中,以便可以将它们作为单个 IO 操作提交。ETHTOOL_A_COALESCE_TX_AGGR_MAX_BYTES
描述了提交的缓冲区的最大字节大小。ETHTOOL_A_COALESCE_TX_AGGR_MAX_FRAMES
描述了可以聚合到单个缓冲区中的最大帧数。ETHTOOL_A_COALESCE_TX_AGGR_TIME_USECS
描述了自聚合块中第一个数据包到达后开始计算的时间量(以微秒为单位),此后应发送该块。此功能主要针对特定的 USB 设备,这些设备不能很好地处理频繁的小型 URB 传输。
ETHTOOL_A_COALESCE_RX_PROFILE
和 ETHTOOL_A_COALESCE_TX_PROFILE
指的是 DIM 参数,请参见 通用网络动态中断调节 (Net DIM)。
COALESCE_SET¶
设置合并参数,类似于 ETHTOOL_SCOALESCE
ioctl 请求。
请求内容
ETHTOOL_A_COALESCE_HEADER
嵌套
请求头
ETHTOOL_A_COALESCE_RX_USECS
u32
延迟 (us),正常接收
ETHTOOL_A_COALESCE_RX_MAX_FRAMES
u32
最大数据包数,正常接收
ETHTOOL_A_COALESCE_RX_USECS_IRQ
u32
延迟 (us),中断中的接收
ETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ
u32
最大数据包数,中断中的接收
ETHTOOL_A_COALESCE_TX_USECS
u32
延迟 (us),正常发送
ETHTOOL_A_COALESCE_TX_MAX_FRAMES
u32
最大数据包数,正常发送
ETHTOOL_A_COALESCE_TX_USECS_IRQ
u32
延迟 (us),中断中的发送
ETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ
u32
中断中的数据包数,中断中的发送
ETHTOOL_A_COALESCE_STATS_BLOCK_USECS
u32
统计信息更新的延迟
ETHTOOL_A_COALESCE_USE_ADAPTIVE_RX
bool
自适应接收合并
ETHTOOL_A_COALESCE_USE_ADAPTIVE_TX
bool
自适应发送合并
ETHTOOL_A_COALESCE_PKT_RATE_LOW
u32
低速率的阈值
ETHTOOL_A_COALESCE_RX_USECS_LOW
u32
延迟 (us),低接收
ETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW
u32
最大数据包数,低接收
ETHTOOL_A_COALESCE_TX_USECS_LOW
u32
延迟 (us),低发送
ETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW
u32
最大数据包数,低发送
ETHTOOL_A_COALESCE_PKT_RATE_HIGH
u32
高速率的阈值
ETHTOOL_A_COALESCE_RX_USECS_HIGH
u32
延迟 (us),高接收
ETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH
u32
最大数据包数,高接收
ETHTOOL_A_COALESCE_TX_USECS_HIGH
u32
延迟 (us),高发送
ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH
u32
最大数据包数,高发送
ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL
u32
速率采样间隔
ETHTOOL_A_COALESCE_USE_CQE_TX
bool
计时器重置模式,发送
ETHTOOL_A_COALESCE_USE_CQE_RX
bool
计时器重置模式,接收
ETHTOOL_A_COALESCE_TX_AGGR_MAX_BYTES
u32
最大聚合大小,发送
ETHTOOL_A_COALESCE_TX_AGGR_MAX_FRAMES
u32
最大聚合数据包数,发送
ETHTOOL_A_COALESCE_TX_AGGR_TIME_USECS
u32
时间 (us),聚合,发送
ETHTOOL_A_COALESCE_RX_PROFILE
嵌套
DIM 的配置文件,接收
ETHTOOL_A_COALESCE_TX_PROFILE
嵌套
DIM 的配置文件,发送
如果请求声明为驱动程序不支持的属性(即,ethtool_ops::supported_coalesce_params
中未设置相应位),则无论其值如何,都会被拒绝。驱动程序可能会对合并参数及其值施加额外的约束。
与通过 ioctl()
发出的请求相比,此请求的网络链接版本将更加努力地确保应用了用户指定的值,并且可能会两次调用驱动程序。
PAUSE_GET¶
获取暂停帧设置,类似于 ETHTOOL_GPAUSEPARAM
ioctl 请求。
请求内容
ETHTOOL_A_PAUSE_HEADER
嵌套
请求头
ETHTOOL_A_PAUSE_STATS_SRC
u32
统计信息的来源
ETHTOOL_A_PAUSE_STATS_SRC
是可选的。它采用以下值:
-
enum ethtool_mac_stats_src¶
ethtool MAC 统计信息的来源
常量
ETHTOOL_MAC_STATS_SRC_AGGREGATE
如果设备支持 MAC 合并层,则检索 eMAC 和 pMAC 的聚合统计信息。否则,只检索单个(快速)MAC 的统计信息。
ETHTOOL_MAC_STATS_SRC_EMAC
如果设备支持 MM 层,则检索 eMAC 统计信息。否则,检索单个(快速)MAC 的统计信息。
ETHTOOL_MAC_STATS_SRC_PMAC
如果设备支持 MM 层,则检索 pMAC 统计信息。
如果请求中缺少此项,则统计信息将在响应中提供一个 ETHTOOL_A_PAUSE_STATS_SRC
属性,其值等于 ETHTOOL_MAC_STATS_SRC_AGGREGATE
。
内核响应内容
ETHTOOL_A_PAUSE_HEADER
嵌套
请求头
ETHTOOL_A_PAUSE_AUTONEG
bool
暂停自动协商
ETHTOOL_A_PAUSE_RX
bool
接收暂停帧
ETHTOOL_A_PAUSE_TX
bool
发送暂停帧
ETHTOOL_A_PAUSE_STATS
嵌套
暂停统计信息
如果 ETHTOOL_A_HEADER_FLAGS
中设置了 ETHTOOL_FLAG_STATS
,则报告 ETHTOOL_A_PAUSE_STATS
。如果驱动程序未报告任何统计信息,则它将为空。驱动程序在以下结构中填写统计信息
-
struct ethtool_pause_stats¶
IEEE 802.3x 暂停帧的统计信息
定义:
struct ethtool_pause_stats {
enum ethtool_mac_stats_src src;
u64 tx_pause_frames;
u64 rx_pause_frames;
};
成员
src
输入字段,表示是否应从 eMAC 或 pMAC 查询统计信息(如果支持 MM 层)。否则将被忽略。
tx_pause_frames
已发送的暂停帧计数。作为
ETHTOOL_A_PAUSE_STAT_TX_FRAMES
报告给用户空间。等效于标准的 30.3.4.2 aPAUSEMACCtrlFramesTransmitted。
rx_pause_frames
接收到的暂停帧计数。作为
ETHTOOL_A_PAUSE_STAT_RX_FRAMES
报告给用户空间。等效于等效于标准的 30.3.4.3 aPAUSEMACCtrlFramesReceived。
每个成员都有一个对应的属性定义。
PAUSE_SET¶
设置暂停参数,如 ETHTOOL_GPAUSEPARAM
ioctl 请求。
请求内容
ETHTOOL_A_PAUSE_HEADER
嵌套
请求头
ETHTOOL_A_PAUSE_AUTONEG
bool
暂停自动协商
ETHTOOL_A_PAUSE_RX
bool
接收暂停帧
ETHTOOL_A_PAUSE_TX
bool
发送暂停帧
EEE_GET¶
获取节能以太网设置,如 ETHTOOL_GEEE
ioctl 请求。
请求内容
ETHTOOL_A_EEE_HEADER
嵌套
请求头
内核响应内容
ETHTOOL_A_EEE_HEADER
嵌套
请求头
ETHTOOL_A_EEE_MODES_OURS
bool
支持/通告的模式
ETHTOOL_A_EEE_MODES_PEER
bool
对等端通告的链路模式
ETHTOOL_A_EEE_ACTIVE
bool
EEE 正在积极使用
ETHTOOL_A_EEE_ENABLED
bool
EEE 已启用
ETHTOOL_A_EEE_TX_LPI_ENABLED
bool
Tx lpi 已启用
ETHTOOL_A_EEE_TX_LPI_TIMER
u32
Tx lpi 超时(以微秒为单位)
在 ETHTOOL_A_EEE_MODES_OURS
中,掩码包含启用 EEE 的链路模式,以及通告 EEE 的链路模式的值。对等端通告 EEE 的链路模式在 ETHTOOL_A_EEE_MODES_PEER
中列出(无掩码)。netlink 接口允许报告所有链路模式的 EEE 状态,但 ethtool_ops
回调仅提供前 32 个。
EEE_SET¶
设置节能以太网参数,如 ETHTOOL_SEEE
ioctl 请求。
请求内容
ETHTOOL_A_EEE_HEADER
嵌套
请求头
ETHTOOL_A_EEE_MODES_OURS
bool
通告的模式
ETHTOOL_A_EEE_ENABLED
bool
EEE 已启用
ETHTOOL_A_EEE_TX_LPI_ENABLED
bool
Tx lpi 已启用
ETHTOOL_A_EEE_TX_LPI_TIMER
u32
Tx lpi 超时(以微秒为单位)
ETHTOOL_A_EEE_MODES_OURS
用于列出要通告 EEE 的链路模式(如果没有掩码),或指定列表的更改(如果有掩码)。netlink 接口允许报告所有链路模式的 EEE 状态,但目前只能设置前 32 个,因为这是 ethtool_ops
回调支持的。
TSINFO_GET¶
获取时间戳信息,如 ETHTOOL_GET_TS_INFO
ioctl 请求。
请求内容
ETHTOOL_A_TSINFO_HEADER
嵌套
请求头
内核响应内容
ETHTOOL_A_TSINFO_HEADER
嵌套
请求头
ETHTOOL_A_TSINFO_TIMESTAMPING
位集
SO_TIMESTAMPING 标志
ETHTOOL_A_TSINFO_TX_TYPES
位集
支持的 Tx 类型
ETHTOOL_A_TSINFO_RX_FILTERS
位集
支持的 Rx 过滤器
ETHTOOL_A_TSINFO_PHC_INDEX
u32
PTP hw 时钟索引
ETHTOOL_A_TSINFO_STATS
嵌套
硬件时间戳统计信息
如果没有关联的 PHC,则不存在 ETHTOOL_A_TSINFO_PHC_INDEX
(这种情况没有特殊值)。如果位集属性为空(未设置任何位),则会省略它们。
其他硬件时间戳统计信息响应内容
ETHTOOL_A_TS_STAT_TX_PKTS
uint
带有 Tx HW 时间戳的数据包
ETHTOOL_A_TS_STAT_TX_LOST
uint
Tx HW 时间戳未到达计数
ETHTOOL_A_TS_STAT_TX_ERR
uint
请求 Tx 时间戳的 HW 错误计数
CABLE_TEST¶
启动电缆测试。
请求内容
ETHTOOL_A_CABLE_TEST_HEADER
嵌套
请求头
通知内容
以太网电缆通常包含 1、2 或 4 对。只有当线对中存在故障并因此产生反射时,才能测量线对的长度。有关故障的信息可能不可用,具体取决于特定硬件。因此,通知消息的内容大多是可选的。对于任意数量的线对,可以以任意顺序重复任意次数的属性。
该示例显示了为 T2 电缆(即两对线)完成测试时发送的通知。其中一对线正常,因此没有长度信息。第二对线有故障,因此有长度信息。
ETHTOOL_A_CABLE_TEST_HEADER
嵌套
回复头
ETHTOOL_A_CABLE_TEST_STATUS
u8
已完成
ETHTOOL_A_CABLE_TEST_NTF_NEST
嵌套
所有结果
ETHTOOL_A_CABLE_NEST_RESULT
嵌套
电缆测试结果
ETHTOOL_A_CABLE_RESULTS_PAIR
u8
线对编号
ETHTOOL_A_CABLE_RESULTS_CODE
u8
结果代码
ETHTOOL_A_CABLE_NEST_RESULT
嵌套
电缆测试结果
ETHTOOL_A_CABLE_RESULTS_PAIR
u8
线对编号
ETHTOOL_A_CABLE_RESULTS_CODE
u8
结果代码
ETHTOOL_A_CABLE_RESULT_SRC
u32
信息来源
ETHTOOL_A_CABLE_NEST_FAULT_LENGTH
嵌套
电缆长度
ETHTOOL_A_CABLE_FAULT_LENGTH_PAIR
u8
线对编号
ETHTOOL_A_CABLE_FAULT_LENGTH_CM
u32
长度(以厘米为单位)
ETHTOOL_A_CABLE_FAULT_LENGTH_SRC
u32
信息来源
CABLE_TEST TDR¶
启动电缆测试并报告原始 TDR 数据
请求内容
ETHTOOL_A_CABLE_TEST_TDR_HEADER
嵌套
回复头
ETHTOOL_A_CABLE_TEST_TDR_CFG
嵌套
测试配置
ETHTOOL_A_CABLE_STEP_FIRST_DISTANCE
u32
第一个数据距离
ETHTOOL_A_CABLE_STEP_LAST_DISTANCE
u32
最后一个数据距离
ETHTOOL_A_CABLE_STEP_STEP_DISTANCE
u32
每个步骤的距离
ETHTOOL_A_CABLE_TEST_TDR_CFG_PAIR
u8
要测试的线对
ETHTOOL_A_CABLE_TEST_TDR_CFG 是可选的,以及嵌套的所有成员。所有距离均以厘米表示。PHY 将距离作为指导,并四舍五入到其真正支持的最接近的距离。如果传递了线对,则仅测试该线对。否则,将测试所有线对。
通知内容
通过沿电缆发送脉冲并记录给定距离的反射脉冲幅度来收集原始 TDR 数据。
收集 TDR 数据可能需要几秒钟,尤其是当以 1 米间隔探测完整的 100 米时。启动测试时,将发送一个仅包含 ETHTOOL_A_CABLE_TEST_TDR_STATUS 的通知,其值为 ETHTOOL_A_CABLE_TEST_NTF_STATUS_STARTED。
测试完成后,将发送第二个通知,其中包含 ETHTOOL_A_CABLE_TEST_TDR_STATUS,其值为 ETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED 和 TDR 数据。
该消息可以选择包含沿电缆发送的脉冲幅度。以 mV 为单位测量。反射不应大于发送的脉冲。
在原始 TDR 数据之前,应有一个 ETHTOOL_A_CABLE_TDR_NEST_STEP 嵌套,其中包含有关电缆上第一个读数、最后一个读数以及每个读数之间步长的距离的信息。距离以厘米为单位测量。这些应该是 PHY 使用的精确值。如果本机测量分辨率大于 1 厘米,则这些值可能与用户请求的值不同。
对于沿电缆的每个步骤,使用 ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE 来报告给定线对的反射幅度。
ETHTOOL_A_CABLE_TEST_TDR_HEADER
嵌套
回复头
ETHTOOL_A_CABLE_TEST_TDR_STATUS
u8
已完成
ETHTOOL_A_CABLE_TEST_TDR_NTF_NEST
嵌套
所有结果
ETHTOOL_A_CABLE_TDR_NEST_PULSE
嵌套
TX 脉冲幅度
ETHTOOL_A_CABLE_PULSE_mV
s16
脉冲幅度
ETHTOOL_A_CABLE_NEST_STEP
嵌套
TDR 步骤信息
ETHTOOL_A_CABLE_STEP_FIRST_DISTANCE
u32
第一个数据距离
ETHTOOL_A_CABLE_STEP_LAST_DISTANCE
u32
最后一个数据距离
ETHTOOL_A_CABLE_STEP_STEP_DISTANCE
u32
每个步骤的距离
ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE
嵌套
反射幅度
ETHTOOL_A_CABLE_RESULTS_PAIR
u8
线对编号
ETHTOOL_A_CABLE_AMPLITUDE_mV
s16
反射幅度
ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE
嵌套
反射幅度
ETHTOOL_A_CABLE_RESULTS_PAIR
u8
线对编号
ETHTOOL_A_CABLE_AMPLITUDE_mV
s16
反射幅度
ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE
嵌套
反射幅度
ETHTOOL_A_CABLE_RESULTS_PAIR
u8
线对编号
ETHTOOL_A_CABLE_AMPLITUDE_mV
s16
反射幅度
TUNNEL_INFO¶
获取有关 NIC 感知的隧道状态的信息。
请求内容
ETHTOOL_A_TUNNEL_INFO_HEADER
嵌套
请求头
内核响应内容
ETHTOOL_A_TUNNEL_INFO_HEADER
嵌套
回复头
ETHTOOL_A_TUNNEL_INFO_UDP_PORTS
嵌套
所有 UDP 端口表
ETHTOOL_A_TUNNEL_UDP_TABLE
嵌套
一个 UDP 端口表
ETHTOOL_A_TUNNEL_UDP_TABLE_SIZE
u32
表的最大大小
ETHTOOL_A_TUNNEL_UDP_TABLE_TYPES
位集
表可以容纳的隧道类型
ETHTOOL_A_TUNNEL_UDP_TABLE_ENTRY
嵌套
卸载的 UDP 端口
ETHTOOL_A_TUNNEL_UDP_ENTRY_PORT
be16
UDP 端口
ETHTOOL_A_TUNNEL_UDP_ENTRY_TYPE
u32
隧道类型
对于 UDP 隧道表,空 ETHTOOL_A_TUNNEL_UDP_TABLE_TYPES
表示该表包含静态条目,由 NIC 硬编码。
FEC_GET¶
获取 FEC 配置和状态,如 ETHTOOL_GFECPARAM
ioctl 请求。
请求内容
ETHTOOL_A_FEC_HEADER
嵌套
请求头
内核响应内容
ETHTOOL_A_FEC_HEADER
嵌套
请求头
ETHTOOL_A_FEC_MODES
位集
配置的模式
ETHTOOL_A_FEC_AUTO
bool
FEC 模式自动选择
ETHTOOL_A_FEC_ACTIVE
u32
活动 FEC 模式的索引
ETHTOOL_A_FEC_STATS
嵌套
FEC 统计信息
ETHTOOL_A_FEC_ACTIVE
是接口上当前活动的 FEC 链路模式的位索引。如果设备不支持 FEC,则此属性可能不存在。
ETHTOOL_A_FEC_MODES
和 ETHTOOL_A_FEC_AUTO
仅在禁用自动协商时才有意义。如果 ETHTOOL_A_FEC_AUTO
为非零值,驱动程序将根据 SFP 模块的参数自动选择 FEC 模式。这等效于 ioctl 接口的 ETHTOOL_FEC_AUTO
位。ETHTOOL_A_FEC_MODES
使用链路模式位(而不是旧的 ETHTOOL_FEC_*
位)来携带当前的 FEC 配置。
如果在 ETHTOOL_A_HEADER_FLAGS
中设置了 ETHTOOL_FLAG_STATS
,则会报告 ETHTOOL_A_FEC_STATS
。每个属性都带有一个 64 位统计数据的数组。数组中的第一个条目包含端口上的事件总数,而后续条目是对应于通道/PCS 实例的计数器。数组中的条目数将是
0 |
设备不支持 FEC 统计信息 |
1 |
设备不支持按通道细分 |
1 + #通道数 |
设备完全支持 FEC 统计信息 |
驱动程序在以下结构中填充统计信息
-
struct ethtool_fec_stats¶
IEEE 802.3 FEC 的统计信息
定义:
struct ethtool_fec_stats {
struct ethtool_fec_stat {
u64 total;
u64 lanes[ETHTOOL_MAX_LANES];
} corrected_blocks, uncorrectable_blocks, corrected_bits;
};
成员
corrected_blocks
FEC 校正的接收块数。以
ETHTOOL_A_FEC_STAT_CORRECTED
的形式报告给用户空间。等效于标准的 30.5.1.1.17 aFECCorrectedBlocks。
uncorrectable_blocks
FEC 无法校正的接收块数。以
ETHTOOL_A_FEC_STAT_UNCORR
的形式报告给用户空间。等效于标准的 30.5.1.1.18 aFECUncorrectableBlocks。
corrected_bits
FEC 校正的位数。与 corrected_blocks 类似,但计算的是单个位的更改,而不是整个 FEC 数据块。这是一个非标准统计数据。以
ETHTOOL_A_FEC_STAT_CORR_BITS
的形式报告给用户空间。
描述
对于上述每个字段,两个子结构成员是
lanes:根据标准定义的每个通道/PCS 实例计数
- total:整个端口的错误计数,适用于无法报告
每个通道的统计信息的驱动程序
驱动程序应仅填写总统计信息或每个通道的统计信息,核心将负责将通道值加起来以生成总计。
FEC_SET¶
设置 FEC 参数,如 ETHTOOL_SFECPARAM
ioctl 请求。
请求内容
ETHTOOL_A_FEC_HEADER
嵌套
请求头
ETHTOOL_A_FEC_MODES
位集
配置的模式
ETHTOOL_A_FEC_AUTO
bool
FEC 模式自动选择
FEC_SET
仅在禁用自动协商时才有意义。否则,FEC 模式会作为自动协商的一部分进行选择。
ETHTOOL_A_FEC_MODES
选择应使用哪种 FEC 模式。建议只设置一位,如果设置了多位,驱动程序可能会以特定于实现的方式在它们之间进行选择。
ETHTOOL_A_FEC_AUTO
请求驱动程序根据 SFP 模块参数选择 FEC 模式。这并不意味着自动协商。
MODULE_EEPROM_GET¶
获取模块 EEPROM 数据转储。此接口旨在允许一次最多转储 1/2 页。这意味着只允许转储 128 个(或更少)字节,而不会跨越位于偏移量 128 的半页边界。对于 0 以外的页面,只能访问高 128 个字节。
请求内容
ETHTOOL_A_MODULE_EEPROM_HEADER
嵌套
请求头
ETHTOOL_A_MODULE_EEPROM_OFFSET
u32
页面内的偏移量
ETHTOOL_A_MODULE_EEPROM_LENGTH
u32
要读取的字节数
ETHTOOL_A_MODULE_EEPROM_PAGE
u8
页码
ETHTOOL_A_MODULE_EEPROM_BANK
u8
存储区号
ETHTOOL_A_MODULE_EEPROM_I2C_ADDRESS
u8
页面 I2C 地址
如果未指定 ETHTOOL_A_MODULE_EEPROM_BANK
,则假定为存储区 0。
内核响应内容
ETHTOOL_A_MODULE_EEPROM_HEADER
嵌套
回复头
ETHTOOL_A_MODULE_EEPROM_DATA
二进制
模块 EEPROM 中的字节数组
ETHTOOL_A_MODULE_EEPROM_DATA
的属性长度等于驱动程序实际读取的字节数。
STATS_GET¶
获取接口的标准统计信息。请注意,这不是对暴露驱动程序定义的统计信息的 ETHTOOL_GSTATS
的重新实现。
请求内容
ETHTOOL_A_STATS_HEADER
嵌套
请求头
ETHTOOL_A_STATS_SRC
u32
统计信息的来源
ETHTOOL_A_STATS_GROUPS
位集
请求的统计信息组
内核响应内容
ETHTOOL_A_STATS_HEADER
嵌套
回复头
ETHTOOL_A_STATS_SRC
u32
统计信息的来源
ETHTOOL_A_STATS_GRP
嵌套
一个或多个统计信息组
ETHTOOL_A_STATS_GRP_ID
u32
组 ID -
ETHTOOL_STATS_*
ETHTOOL_A_STATS_GRP_SS_ID
u32
名称的字符串集 ID
ETHTOOL_A_STATS_GRP_STAT
嵌套
包含统计信息的嵌套
ETHTOOL_A_STATS_GRP_HIST_RX
嵌套
直方图统计信息 (Rx)
ETHTOOL_A_STATS_GRP_HIST_TX
嵌套
直方图统计信息 (Tx)
用户通过 ETHTOOL_A_STATS_GROUPS
位集指定他们请求的统计信息组。当前定义的值为
ETHTOOL_STATS_ETH_MAC
eth-mac
基本 IEEE 802.3 MAC 统计信息 (30.3.1.1.*)
ETHTOOL_STATS_ETH_PHY
eth-phy
基本 IEEE 802.3 PHY 统计信息 (30.3.2.1.*)
ETHTOOL_STATS_ETH_CTRL
eth-ctrl
基本 IEEE 802.3 MAC Ctrl 统计信息 (30.3.3.*)
ETHTOOL_STATS_RMON
rmon
RMON (RFC 2819) 统计信息
每个组都应在回复中有一个对应的 ETHTOOL_A_STATS_GRP
。ETHTOOL_A_STATS_GRP_ID
标识哪个组的统计信息包含在嵌套中。ETHTOOL_A_STATS_GRP_SS_ID
标识组中统计信息名称的字符串集 ID(如果可用)。
统计信息将添加到 ETHTOOL_A_STATS_GRP
嵌套中的 ETHTOOL_A_STATS_GRP_STAT
下面。ETHTOOL_A_STATS_GRP_STAT
应包含一个内部的 8 字节 (u64) 属性 - 该属性的类型是统计信息 ID,值是统计信息的值。每个组都有其对统计信息 ID 的自己的解释。属性 ID 对应于由 ETHTOOL_A_STATS_GRP_SS_ID
标识的字符串集中包含的字符串。复杂的统计信息(如 RMON 直方图条目)也列在 ETHTOOL_A_STATS_GRP
内部,并且在字符串集中没有定义字符串。
RMON“直方图”计数器计算给定大小范围内的数据包数量。由于 RFC 没有指定超出标准 1518 MTU 范围的范围,因此设备在存储桶的定义上有所不同。因此,数据包范围的定义留给每个驱动程序。
ETHTOOL_A_STATS_GRP_HIST_RX
和 ETHTOOL_A_STATS_GRP_HIST_TX
嵌套包含以下属性
ETHTOOL_A_STATS_RMON_HIST_BKT_LOW
u32
数据包大小存储桶的下限
ETHTOOL_A_STATS_RMON_HIST_BKT_HI
u32
存储桶的上限
ETHTOOL_A_STATS_RMON_HIST_VAL
u64
数据包计数器
下限和上限是包含的,例如
RFC 统计信息
下限
上限
etherStatsPkts64Octets
0
64
etherStatsPkts512to1023Octets
512
1023
ETHTOOL_A_STATS_SRC
是可选的。与 PAUSE_GET
类似,它从 enum ethtool_mac_stats_src
中获取值。如果请求中不存在,则将使用响应中的 ETHTOOL_A_STATS_SRC
属性提供统计信息,该属性等于 ETHTOOL_MAC_STATS_SRC_AGGREGATE
。
PHC_VCLOCKS_GET¶
查询设备 PHC 虚拟时钟信息。
请求内容
ETHTOOL_A_PHC_VCLOCKS_HEADER
嵌套
请求头
内核响应内容
ETHTOOL_A_PHC_VCLOCKS_HEADER
嵌套
回复头
ETHTOOL_A_PHC_VCLOCKS_NUM
u32
PHC 虚拟时钟数
ETHTOOL_A_PHC_VCLOCKS_INDEX
s32
PHC 索引数组
MODULE_GET¶
获取收发器模块参数。
请求内容
ETHTOOL_A_MODULE_HEADER
嵌套
请求头
内核响应内容
ETHTOOL_A_MODULE_HEADER
嵌套
回复头
ETHTOOL_A_MODULE_POWER_MODE_POLICY
u8
电源模式策略
ETHTOOL_A_MODULE_POWER_MODE
u8
运行电源模式
可选的 ETHTOOL_A_MODULE_POWER_MODE_POLICY
属性编码主机强制执行的收发器模块电源模式策略。默认策略取决于驱动程序,但“auto”是推荐的默认值,应由新驱动程序和不严格要求符合旧行为的驱动程序实现。
可选的 ETHTHOOL_A_MODULE_POWER_MODE
属性编码收发器模块的运行电源模式策略。仅在插入模块时报告。可能的值为
-
enum ethtool_module_power_mode¶
插入式模块电源模式
常量
ETHTOOL_MODULE_POWER_MODE_LOW
模块处于低功耗模式。
ETHTOOL_MODULE_POWER_MODE_HIGH
模块处于高功耗模式。
MODULE_SET¶
设置收发器模块参数。
请求内容
ETHTOOL_A_MODULE_HEADER
嵌套
请求头
ETHTOOL_A_MODULE_POWER_MODE_POLICY
u8
电源模式策略
设置时,可选的 ETHTOOL_A_MODULE_POWER_MODE_POLICY
属性用于设置主机强制执行的收发器模块电源策略。可能的值为
-
enum ethtool_module_power_mode_policy¶
插入式模块电源模式策略
常量
ETHTOOL_MODULE_POWER_MODE_POLICY_HIGH
模块始终处于高功耗模式。
ETHTOOL_MODULE_POWER_MODE_POLICY_AUTO
当第一个使用它的端口以管理方式启动时,模块由主机转换为高功耗模式;当最后一个使用它的端口以管理方式关闭时,模块由主机转换为低功耗模式。
对于 SFF-8636 模块,低功耗模式由主机根据规范 2.10a 修订版中的表 6-10 强制执行。
对于 CMIS 模块,低功耗模式由主机根据规范 5.0 修订版中的表 6-12 强制执行。
PSE_GET¶
获取 PSE 属性。
请求内容
ETHTOOL_A_PSE_HEADER
嵌套
请求头
内核响应内容
ETHTOOL_A_PSE_HEADER
嵌套
回复头
ETHTOOL_A_PODL_PSE_ADMIN_STATE
u32
PoDL PSE 功能的运行状态
ETHTOOL_A_PODL_PSE_PW_D_STATUS
u32
PoDL PSE 的电源检测状态。
ETHTOOL_A_C33_PSE_ADMIN_STATE
u32
PoE PSE 功能的运行状态。
ETHTOOL_A_C33_PSE_PW_D_STATUS
u32
PoE PSE 的电源检测状态。
ETHTOOL_A_C33_PSE_PW_CLASS
u32
PoE PSE 的电源等级。
ETHTOOL_A_C33_PSE_ACTUAL_PW
u32
PoE PSE 上消耗的实际功率。
ETHTOOL_A_C33_PSE_EXT_STATE
u32
PoE PSE 的电源扩展状态。
ETHTOOL_A_C33_PSE_EXT_SUBSTATE
u32
PoE PSE 的电源扩展子状态。
ETHTOOL_A_C33_PSE_AVAIL_PW_LIMIT
u32
PoE PSE 当前配置的功率限制。
ETHTOOL_A_C33_PSE_PW_LIMIT_RANGES
嵌套
支持的功率限制配置范围。
设置后,可选的 ETHTOOL_A_PODL_PSE_ADMIN_STATE
属性标识 PoDL PSE 功能的运行状态。可以使用 ETHTOOL_A_PODL_PSE_ADMIN_CONTROL
操作更改 PSE 功能的运行状态。此属性对应于 IEEE 802.3-2018
30.15.1.1.2 aPoDLPSEAdminState。 可能的值如下:
-
enum ethtool_podl_pse_admin_state¶
PoDL PSE 功能的运行状态。IEEE 802.3-2018 30.15.1.1.2 aPoDLPSEAdminState
常量
ETHTOOL_PODL_PSE_ADMIN_STATE_UNKNOWN
PoDL PSE 功能的状态未知
ETHTOOL_PODL_PSE_ADMIN_STATE_DISABLED
PoDL PSE 功能已禁用
ETHTOOL_PODL_PSE_ADMIN_STATE_ENABLED
PoDL PSE 功能已启用
对于实现 IEEE 802.3-2022
30.9.1.1.2 aPSEAdminState 的 ETHTOOL_A_C33_PSE_ADMIN_STATE
也是如此。
-
enum ethtool_c33_pse_admin_state¶
PoDL PSE 功能的运行状态。IEEE 802.3-2022 30.9.1.1.2 aPSEAdminState
常量
ETHTOOL_C33_PSE_ADMIN_STATE_UNKNOWN
PSE 功能的状态未知
ETHTOOL_C33_PSE_ADMIN_STATE_DISABLED
PSE 功能已禁用
ETHTOOL_C33_PSE_ADMIN_STATE_ENABLED
PSE 功能已启用
设置后,可选的 ETHTOOL_A_PODL_PSE_PW_D_STATUS
属性标识 PoDL PSE 的功率检测状态。 该状态取决于内部 PSE 状态机和自动 PD 分类支持。此属性对应于 IEEE 802.3-2018
30.15.1.1.3 aPoDLPSEPowerDetectionStatus。 可能的值如下:
-
enum ethtool_podl_pse_pw_d_status¶
PoDL PSE 的功率检测状态。IEEE 802.3-2018 30.15.1.1.3 aPoDLPSEPowerDetectionStatus
常量
ETHTOOL_PODL_PSE_PW_D_STATUS_UNKNOWN
PoDL PSE
ETHTOOL_PODL_PSE_PW_D_STATUS_DISABLED
“当 PoDL PSE 状态图变量 mr_pse_enable 为 false 时,断言枚举“disabled”为真”
ETHTOOL_PODL_PSE_PW_D_STATUS_SEARCHING
“当 PSE 状态图变量 pi_detecting 或 pi_classifying 中任一为真时,断言枚举“searching”为真。”
ETHTOOL_PODL_PSE_PW_D_STATUS_DELIVERING
“当 PoDL PSE 状态图变量 pi_powered 为真时,断言枚举“deliveringPower”为真。”
ETHTOOL_PODL_PSE_PW_D_STATUS_SLEEP
“当 PoDL PSE 状态图变量 pi_sleeping 为真时,断言枚举“sleep”为真。”
ETHTOOL_PODL_PSE_PW_D_STATUS_IDLE
“当 PoDL PSE 状态图变量 pi_prebiased*!pi_sleeping 的逻辑组合为真时,断言枚举“idle”为真。”
ETHTOOL_PODL_PSE_PW_D_STATUS_ERROR
“当 PoDL PSE 状态图变量 overload_held 为真时,断言枚举“error”为真。”
对于实现 IEEE 802.3-2022
30.9.1.1.5 aPSEPowerDetectionStatus 的 ETHTOOL_A_C33_PSE_ADMIN_PW_D_STATUS
也是如此。
-
enum ethtool_c33_pse_pw_d_status¶
PSE 的功率检测状态。IEEE 802.3-2022 30.9.1.1.3 aPoDLPSEPowerDetectionStatus
常量
ETHTOOL_C33_PSE_PW_D_STATUS_UNKNOWN
PSE 状态未知
ETHTOOL_C33_PSE_PW_D_STATUS_DISABLED
枚举“disabled”表示 PSE 状态图处于 DISABLED 状态。
ETHTOOL_C33_PSE_PW_D_STATUS_SEARCHING
枚举“searching”表示 PSE 状态图处于除所列状态之外的状态。
ETHTOOL_C33_PSE_PW_D_STATUS_DELIVERING
枚举“deliveringPower”表示 PSE 状态图处于 POWER_ON 状态。
ETHTOOL_C33_PSE_PW_D_STATUS_TEST
枚举“test”表示 PSE 状态图处于 TEST_MODE 状态。
ETHTOOL_C33_PSE_PW_D_STATUS_FAULT
枚举“fault”表示 PSE 状态图处于 TEST_ERROR 状态。
ETHTOOL_C33_PSE_PW_D_STATUS_OTHERFAULT
枚举“otherFault”表示由于变量 error_condition = true,PSE 状态图处于 IDLE 状态。
设置后,可选的 ETHTOOL_A_C33_PSE_PW_CLASS
属性标识 C33 PSE 的功率等级。 这取决于 PSE 和 PD 之间协商的等级。此属性对应于 IEEE 802.3-2022
30.9.1.1.8 aPSEPowerClassification。
设置后,可选的 ETHTOOL_A_C33_PSE_ACTUAL_PW
属性标识 C33 PSE 汲取的实际功率。 此属性对应于 IEEE 802.3-2022
30.9.1.1.23 aPSEActualPower。 实际功率以 mW 为单位报告。
设置后,可选的 ETHTOOL_A_C33_PSE_EXT_STATE
属性标识 C33 PSE 的扩展错误状态。 可能的值如下:
-
enum ethtool_c33_pse_ext_state¶
PSE 扩展状态功能组。IEEE 802.3-2022 33.2.4.4 变量
常量
ETHTOOL_C33_PSE_EXT_STATE_ERROR_CONDITION
error_condition 状态组
ETHTOOL_C33_PSE_EXT_STATE_MR_MPS_VALID
mr_mps_valid 状态组
ETHTOOL_C33_PSE_EXT_STATE_MR_PSE_ENABLE
mr_pse_enable 状态组
ETHTOOL_C33_PSE_EXT_STATE_OPTION_DETECT_TED
option_detect_ted 状态组
ETHTOOL_C33_PSE_EXT_STATE_OPTION_VPORT_LIM
option_vport_lim 状态组
ETHTOOL_C33_PSE_EXT_STATE_OVLD_DETECTED
ovld_detected 状态组
ETHTOOL_C33_PSE_EXT_STATE_PD_DLL_POWER_TYPE
pd_dll_power_type 状态组
ETHTOOL_C33_PSE_EXT_STATE_POWER_NOT_AVAILABLE
power_not_available 状态组
ETHTOOL_C33_PSE_EXT_STATE_SHORT_DETECTED
short_detected 状态组
设置后,可选的 ETHTOOL_A_C33_PSE_EXT_SUBSTATE
属性标识 C33 PSE 的扩展错误状态。 可能的值如下: 可能的值如下:
-
enum ethtool_c33_pse_ext_substate_error_condition¶
error_condition 状态功能。IEEE 802.3-2022 33.2.4.4 变量
常量
ETHTOOL_C33_PSE_EXT_SUBSTATE_ERROR_CONDITION_NON_EXISTING_PORT
不存在的端口号
ETHTOOL_C33_PSE_EXT_SUBSTATE_ERROR_CONDITION_UNDEFINED_PORT
未定义的端口
ETHTOOL_C33_PSE_EXT_SUBSTATE_ERROR_CONDITION_INTERNAL_HW_FAULT
内部硬件故障
ETHTOOL_C33_PSE_EXT_SUBSTATE_ERROR_CONDITION_COMM_ERROR_AFTER_FORCE_ON
强制开启后的通信错误
ETHTOOL_C33_PSE_EXT_SUBSTATE_ERROR_CONDITION_UNKNOWN_PORT_STATUS
未知的端口状态
ETHTOOL_C33_PSE_EXT_SUBSTATE_ERROR_CONDITION_HOST_CRASH_TURN_OFF
主机崩溃关闭
ETHTOOL_C33_PSE_EXT_SUBSTATE_ERROR_CONDITION_HOST_CRASH_FORCE_SHUTDOWN
主机崩溃强制关机
ETHTOOL_C33_PSE_EXT_SUBSTATE_ERROR_CONDITION_CONFIG_CHANGE
配置更改
ETHTOOL_C33_PSE_EXT_SUBSTATE_ERROR_CONDITION_DETECTED_OVER_TEMP
检测到过温
描述
error_condition 是一个变量,指示特定于实现的故障条件或可选的其他系统故障的状态,这些故障会阻止 PSE 满足表 33-11 中的规范,并且要求 PSE 不提供电源。这些错误条件与图 33-10 中的状态图监控的错误条件不同。
-
enum ethtool_c33_pse_ext_substate_mr_pse_enable¶
mr_pse_enable 状态功能。IEEE 802.3-2022 33.2.4.4 变量
常量
ETHTOOL_C33_PSE_EXT_SUBSTATE_MR_PSE_ENABLE_DISABLE_PIN_ACTIVE
禁用引脚激活
描述
mr_pse_enable 是选择 PSE 操作和测试功能的控制变量。
-
enum ethtool_c33_pse_ext_substate_option_detect_ted¶
option_detect_ted 状态功能。IEEE 802.3-2022 33.2.4.4 变量
常量
ETHTOOL_C33_PSE_EXT_SUBSTATE_OPTION_DETECT_TED_DET_IN_PROCESS
正在进行检测
ETHTOOL_C33_PSE_EXT_SUBSTATE_OPTION_DETECT_TED_CONNECTION_CHECK_ERROR
连接检查错误
描述
option_detect_ted 是一个变量,指示 PSE 是否可以在 ted_timer 时间间隔内执行检测。
-
enum ethtool_c33_pse_ext_substate_option_vport_lim¶
option_vport_lim 状态功能。IEEE 802.3-2022 33.2.4.4 变量
常量
ETHTOOL_C33_PSE_EXT_SUBSTATE_OPTION_VPORT_LIM_HIGH_VOLTAGE
主电源电压高
ETHTOOL_C33_PSE_EXT_SUBSTATE_OPTION_VPORT_LIM_LOW_VOLTAGE
主电源电压低
ETHTOOL_C33_PSE_EXT_SUBSTATE_OPTION_VPORT_LIM_VOLTAGE_INJECTION
向端口注入电压
描述
option_vport_lim 是一个可选变量,指示 VPSE 在正常运行状态期间是否超出运行范围。
-
enum ethtool_c33_pse_ext_substate_ovld_detected¶
ovld_detected 状态功能。IEEE 802.3-2022 33.2.4.4 变量
常量
ETHTOOL_C33_PSE_EXT_SUBSTATE_OVLD_DETECTED_OVERLOAD
过载状态
描述
ovld_detected 是一个变量,指示 PSE 输出电流是否在至少 TCUT 的一秒滑动时间内处于过载状态(参见 33.2.7.6)。
-
enum ethtool_c33_pse_ext_substate_power_not_available¶
power_not_available 状态功能。IEEE 802.3-2022 33.2.4.4 变量
常量
ETHTOOL_C33_PSE_EXT_SUBSTATE_POWER_NOT_AVAILABLE_BUDGET_EXCEEDED
控制器的电源预算超支
ETHTOOL_C33_PSE_EXT_SUBSTATE_POWER_NOT_AVAILABLE_PORT_PW_LIMIT_EXCEEDS_CONTROLLER_BUDGET
配置的端口功率限制超出控制器电源预算
ETHTOOL_C33_PSE_EXT_SUBSTATE_POWER_NOT_AVAILABLE_PD_REQUEST_EXCEEDS_PORT_LIMIT
来自 PD 的功率请求超出端口限制
ETHTOOL_C33_PSE_EXT_SUBSTATE_POWER_NOT_AVAILABLE_HW_PW_LIMIT
由于硬件功率限制而拒绝供电
描述
当 PSE 不再能够提供足够的电源来支持所连接的 PD 时,power_not_available 变量会以实现相关的方式被断言。足够的电源由分类定义;请参阅 33.2.6。
-
enum ethtool_c33_pse_ext_substate_short_detected¶
short_detected 状态功能。 IEEE 802.3-2022 33.2.4.4 变量
常量
ETHTOOL_C33_PSE_EXT_SUBSTATE_SHORT_DETECTED_SHORT_CONDITION
检测到短路情况
描述
short_detected 是一个变量,指示 PSE 输出电流是否在滑动窗口内的 TLIM 时间内处于短路状态(请参阅 33.2.7.7)。
设置后,可选的 ETHTOOL_A_C33_PSE_AVAIL_PW_LIMIT
属性标识 C33 PSE 的功率限制,单位为 mW。
设置后,可选的 ETHTOOL_A_C33_PSE_PW_LIMIT_RANGES
嵌套属性通过 ETHTOOL_A_C33_PSE_PWR_VAL_LIMIT_RANGE_MIN
和 ETHTOOL_A_C33_PSE_PWR_VAL_LIMIT_RANGE_MAX
标识 C33 PSE 的功率限制范围。如果控制器使用固定类,则最小值和最大值将相等。
PSE_SET¶
设置 PSE 参数。
请求内容
ETHTOOL_A_PSE_HEADER
嵌套
请求头
ETHTOOL_A_PODL_PSE_ADMIN_CONTROL
u32
控制 PoDL PSE 管理状态
ETHTOOL_A_C33_PSE_ADMIN_CONTROL
u32
控制 PSE 管理状态
ETHTOOL_A_C33_PSE_AVAIL_PWR_LIMIT
u32
控制 PoE PSE 可用功率限制
设置后,可选的 ETHTOOL_A_PODL_PSE_ADMIN_CONTROL
属性用于控制 PoDL PSE 管理功能。此选项实现 IEEE 802.3-2018
30.15.1.2.1 acPoDLPSEAdminControl。有关支持的值,请参阅 ETHTOOL_A_PODL_PSE_ADMIN_STATE
。
ETHTOOL_A_C33_PSE_ADMIN_CONTROL
也一样,它实现了 IEEE 802.3-2022
30.9.1.2.1 acPSEAdminControl。
设置后,可选的 ETHTOOL_A_C33_PSE_AVAIL_PWR_LIMIT
属性用于控制 C33 PSE 的可用功率值限制,单位为毫瓦。此属性对应于 IEEE 802.3-2022
33.2.4.4 变量中描述的 pse_available_power 变量和 145.2.5.4 变量中的 pse_avail_pwr,它们在功率等级中进行了描述。
决定使用毫瓦作为此接口的单位,以便与其他也使用毫瓦的功率监控接口统一,并与各种现有产品(以瓦特而不是类来记录功耗)保持一致。如果需要基于类的功率限制配置,则可以在用户空间中进行转换,例如使用 ethtool。
RSS_GET¶
获取与接口的 RSS 上下文关联的间接表、哈希键和哈希函数信息,类似于 ETHTOOL_GRSSH
ioctl 请求。
请求内容
|
嵌套 |
请求头 |
|
u32 |
上下文编号 |
|
u32 |
起始上下文编号(转储) |
ETHTOOL_A_RSS_CONTEXT
指定要查询的 RSS 上下文编号,如果未设置,则查询上下文 0(主上下文)。转储可以按设备进行过滤(仅列出给定 netdev 的上下文)。不支持过滤单个上下文编号,但可以使用 ETHTOOL_A_RSS_START_CONTEXT
从给定编号开始转储上下文(主要用于忽略上下文 0 并仅转储其他上下文)。
内核响应内容
|
嵌套 |
回复头 |
|
u32 |
上下文编号 |
|
u32 |
RSS 哈希函数 |
|
二进制 |
间接表字节 |
|
二进制 |
哈希键字节 |
|
u32 |
RSS 输入数据转换 |
ETHTOOL_A_RSS_HFUNC 属性是位图,指示正在使用的哈希函数。当前支持的选项有 toeplitz、xor 或 crc32。ETHTOOL_A_RSS_INDIR 属性返回 RSS 间接表,其中每个字节指示队列编号。ETHTOOL_A_RSS_INPUT_XFRM 属性是一个位图,指示在将输入协议字段提供给 RSS hfunc 之前对其应用的转换类型。当前支持的选项是对称异或。
PLCA_GET_CFG¶
获取 IEEE 802.3cg-2019 第 148 条物理层冲突避免 (PLCA) 协调子层 (RS) 属性。
请求内容
ETHTOOL_A_PLCA_HEADER
嵌套
请求头
内核响应内容
ETHTOOL_A_PLCA_HEADER
嵌套
回复头
ETHTOOL_A_PLCA_VERSION
u16
支持的 PLCA 管理接口标准/版本
ETHTOOL_A_PLCA_ENABLED
u8
PLCA 管理状态
ETHTOOL_A_PLCA_NODE_ID
u32
PLCA 唯一的本地节点 ID
ETHTOOL_A_PLCA_NODE_CNT
u32
网络上 PLCA 节点的数量,包括协调器
ETHTOOL_A_PLCA_TO_TMR
u32
以比特时间 (BT) 为单位的传输机会计时器值
ETHTOOL_A_PLCA_BURST_CNT
u32
节点在单个 TO 中允许发送的额外数据包数量
ETHTOOL_A_PLCA_BURST_TMR
u32
在终止突发之前,等待 MAC 发送新帧的时间
设置后,可选的 ETHTOOL_A_PLCA_VERSION
属性指示 PLCA 管理接口所符合的标准和版本。如果未设置,则该接口是供应商特定的,并且(可能)由驱动程序提供。OPEN Alliance SIG 指定了 10BASE-T1S PHY 的标准寄存器映射,其中嵌入了 PLCA 协调子层。请参阅 https://www.opensig.org/about/specifications/ 中的“10BASE-T1S PLCA Management Registers”。
设置后,可选的 ETHTOOL_A_PLCA_ENABLED
属性指示 PLCA RS 的管理状态。如果未设置,则节点以“普通”CSMA/CD 模式运行。此选项对应于 IEEE 802.3cg-2019
30.16.1.1.1 aPLCAAdminState / 30.16.1.2.1 acPLCAAdminControl。
设置后,可选的 ETHTOOL_A_PLCA_NODE_ID
属性指示 PHY 的配置的本地节点 ID。此 ID 确定为节点预留哪个传输机会 (TO) 进行传输。此选项对应于 IEEE 802.3cg-2019
30.16.1.1.4 aPLCALocalNodeID。此属性的有效范围为 [0 .. 255],其中 255 表示“未配置”。
设置后,可选的 ETHTOOL_A_PLCA_NODE_CNT
属性指示混合段上配置的最大 PLCA 节点数。此数字确定在 PLCA 周期内生成的传输机会的总数。此属性仅与 PLCA 协调器相关,PLCA 协调器是 aPLCALocalNodeID 设置为 0 的节点。跟随器节点忽略此设置。此选项对应于 IEEE 802.3cg-2019
30.16.1.1.3 aPLCANodeCount。此属性的有效范围为 [1 .. 255]。
设置后,可选的 ETHTOOL_A_PLCA_TO_TMR
属性指示以比特时间为单位的传输机会计时器的配置值。对于 PLCA 的正常工作,必须在共享介质的所有节点上将此值设置为相等。此选项对应于 IEEE 802.3cg-2019
30.16.1.1.5 aPLCATransmitOpportunityTimer。此属性的有效范围为 [0 .. 255]。
设置后,可选的 ETHTOOL_A_PLCA_BURST_CNT
属性指示节点在单个传输机会期间允许发送的额外数据包的配置数量。默认情况下,此属性为 0,这意味着每个 TO 节点只能发送一个帧。当大于 0 时,PLCA RS 在任何传输后都会保持 TO,等待 MAC 最多在 aPLCABurstTimer BTs 内发送新帧。在每个 PLCA 周期内,这种情况只能发生多次,直到此参数的值。之后,突发结束,TO 的正常计数恢复。此选项对应于 IEEE 802.3cg-2019
30.16.1.1.6 aPLCAMaxBurstCount。此属性的有效范围为 [0 .. 255]。
设置后,可选的 ETHTOOL_A_PLCA_BURST_TMR
属性指示当 aPLCAMaxBurstCount 大于 0 时,PLCA RS 等待 MAC 启动新传输的比特时间数。如果 MAC 未能在此时间内发送新帧,则突发结束,TO 的计数恢复。否则,新帧将作为当前突发的一部分发送。此选项对应于 IEEE 802.3cg-2019
30.16.1.1.7 aPLCABurstTimer。此属性的有效范围为 [0 .. 255]。但是,该值应设置为大于 MAC 的帧间间隙 (IFG) 时间(加上一些裕量),以便 PLCA 突发模式按预期工作。
PLCA_SET_CFG¶
设置 PLCA RS 参数。
请求内容
ETHTOOL_A_PLCA_HEADER
嵌套
请求头
ETHTOOL_A_PLCA_ENABLED
u8
PLCA 管理状态
ETHTOOL_A_PLCA_NODE_ID
u8
PLCA 唯一的本地节点 ID
ETHTOOL_A_PLCA_NODE_CNT
u8
网络上 PLCA 节点的数量,包括协调器
ETHTOOL_A_PLCA_TO_TMR
u8
以比特时间 (BT) 为单位的传输机会计时器值
ETHTOOL_A_PLCA_BURST_CNT
u8
节点在单个 TO 中允许发送的额外数据包数量
ETHTOOL_A_PLCA_BURST_TMR
u8
在终止突发之前,等待 MAC 发送新帧的时间
有关每个属性的说明,请参阅 PLCA_GET_CFG
。
PLCA_GET_STATUS¶
获取 PLCA RS 状态信息。
请求内容
ETHTOOL_A_PLCA_HEADER
嵌套
请求头
内核响应内容
ETHTOOL_A_PLCA_HEADER
嵌套
回复头
ETHTOOL_A_PLCA_STATUS
u8
PLCA RS 运行状态
设置后,ETHTOOL_A_PLCA_STATUS
属性指示节点是否正在检测网络上是否存在 BEACON。此标志对应于 IEEE 802.3cg-2019
30.16.1.1.2 aPLCAStatus。
MM_GET¶
检索 802.3 MAC 合并参数。
请求内容
ETHTOOL_A_MM_HEADER
嵌套
请求头
内核响应内容
ETHTOOL_A_MM_HEADER
嵌套
请求头
ETHTOOL_A_MM_PMAC_ENABLED
bool
如果启用了可抢占和 SMD-V 帧的 RX,则设置此项
ETHTOOL_A_MM_TX_ENABLED
bool
如果在管理上启用了可抢占帧的 TX,则设置此项(如果验证失败,则可能处于非活动状态)
ETHTOOL_A_MM_TX_ACTIVE
bool
如果操作上启用了可抢占帧的 TX,则设置此项
ETHTOOL_A_MM_TX_MIN_FRAG_SIZE
u32
以八位字节为单位的已传输非最终分段的最小大小
ETHTOOL_A_MM_RX_MIN_FRAG_SIZE
u32
以八位字节为单位的已接收非最终分段的最小大小
ETHTOOL_A_MM_VERIFY_ENABLED
bool
如果在管理上启用了 SMD-V 帧的 TX,则设置此项
ETHTOOL_A_MM_VERIFY_STATUS
u8
验证功能的状态
ETHTOOL_A_MM_VERIFY_TIME
u32
两次验证尝试之间的延迟
ETHTOOL_A_MM_MAX_VERIFY_TIME
u32
设备支持的最大验证间隔
ETHTOOL_A_MM_STATS
嵌套
IEEE 802.3-2018 子条款 30.14.1 oMACMergeEntity 统计计数器
属性由设备驱动程序通过以下结构填充
-
struct ethtool_mm_state¶
802.3 MAC 合并层状态
定义:
struct ethtool_mm_state {
u32 verify_time;
u32 max_verify_time;
enum ethtool_mm_verify_status verify_status;
bool tx_enabled;
bool tx_active;
bool pmac_enabled;
bool verify_enabled;
u32 tx_min_frag_size;
u32 rx_min_frag_size;
};
成员
verify_time
验证尝试之间的等待时间,单位为毫秒(根据条款 30.14.1.6 aMACMergeVerifyTime)
max_verify_time
设置请求中 verify_time 变量接受的最大值
verify_status
MM 层验证状态机的状态(根据条款 30.14.1.2 aMACMergeStatusVerify)
tx_enabled
如果 MM 层在 TX 方向上以管理方式启用,则设置此项(根据条款 30.14.1.3 aMACMergeEnableTx)
tx_active
如果 MM 层在 TX 方向上启用,则设置此项,这使得 FP 成为可能(根据 30.14.1.5 aMACMergeStatusTx)。如果启用了 MM,并且验证状态为已验证或已禁用,则此值应为 true。
pmac_enabled
设置是否启用可抢占 MAC,使其能够接收可抢占数据包并响应验证帧。
verify_enabled
设置 MM 层(发送 SMD-V 验证请求)的验证功能是否已通过管理方式启用(无论它当前是否处于 ETHTOOL_MM_VERIFY_STATUS_DISABLED 状态),根据条款 30.14.1.4 aMACMergeVerifyDisableTx (但使用正逻辑而不是负逻辑)。只要设置了 pmac_enabled,设备应始终响应接收到的 SMD-V 请求。
tx_min_frag_size
链路伙伴支持接收的非最终 mPacket 分片的最小大小,以字节表示。与条款 30.14.1.7 aMACMergeAddFragSize 的定义(范围为 0 到 3,需要根据公式 64 * (1 + addFragSize) - 4 转换为字节大小)相比,此处可以指定一个连续且无界的值范围。
rx_min_frag_size
此设备支持接收的非最终 mPacket 分片的最小大小,以字节表示。
ETHTOOL_A_MM_VERIFY_STATUS
将报告以下枚举值之一
-
enum ethtool_mm_verify_status¶
MAC 合并验证功能的状态
常量
ETHTOOL_MM_VERIFY_STATUS_UNKNOWN
验证状态未知
ETHTOOL_MM_VERIFY_STATUS_INITIAL
802.3 验证状态图处于 INIT_VERIFICATION 状态
ETHTOOL_MM_VERIFY_STATUS_VERIFYING
验证状态图处于 VERIFICATION_IDLE、SEND_VERIFY 或 WAIT_FOR_RESPONSE 状态
ETHTOOL_MM_VERIFY_STATUS_SUCCEEDED
表示验证状态图处于 VERIFIED 状态
ETHTOOL_MM_VERIFY_STATUS_FAILED
验证状态图处于 VERIFY_FAIL 状态
ETHTOOL_MM_VERIFY_STATUS_DISABLED
禁用抢占操作的验证
如果在 MM_SET
命令中将 ETHTOOL_A_MM_VERIFY_ENABLED
传递为 false,则 ETHTOOL_A_MM_VERIFY_STATUS
将报告 ETHTOOL_MM_VERIFY_STATUS_INITIAL
或 ETHTOOL_MM_VERIFY_STATUS_DISABLED
,否则它应该报告其他状态之一。
建议驱动程序在默认情况下禁用 pMAC,并在用户空间请求时启用它。还建议用户空间不要依赖于来自 ETHTOOL_MSG_MM_GET
请求的默认值。
如果在 ETHTOOL_A_HEADER_FLAGS
中设置了 ETHTOOL_FLAG_STATS
,则会报告 ETHTOOL_A_MM_STATS
。如果驱动程序未报告任何统计信息,则该属性将为空。驱动程序在以下结构中填写统计信息
-
struct ethtool_mm_stats¶
802.3 MAC 合并层统计信息
定义:
struct ethtool_mm_stats {
u64 MACMergeFrameAssErrorCount;
u64 MACMergeFrameSmdErrorCount;
u64 MACMergeFrameAssOkCount;
u64 MACMergeFragCountRx;
u64 MACMergeFragCountTx;
u64 MACMergeHoldCount;
};
成员
MACMergeFrameAssErrorCount
接收到的具有重组错误的 MAC 帧
MACMergeFrameSmdErrorCount
由于未知或不正确的 SMD 而被拒绝的接收到的 MAC 帧/分片
MACMergeFrameAssOkCount
接收到的已成功重组并传递上去的 MAC 帧
MACMergeFragCountRx
由于抢占而接收到的附加正确 SMD-C mPacket 的数量
MACMergeFragCountTx
由于抢占而发送的附加 mPacket 的数量
MACMergeHoldCount
MM 层进入 HOLD 状态的次数,该状态会阻止可抢占流量的传输
MM_SET¶
修改 802.3 MAC 合并层的配置。
请求内容
ETHTOOL_A_MM_VERIFY_TIME
u32
请参阅 MM_GET 的描述
ETHTOOL_A_MM_VERIFY_ENABLED
bool
请参阅 MM_GET 的描述
ETHTOOL_A_MM_TX_ENABLED
bool
请参阅 MM_GET 的描述
ETHTOOL_A_MM_PMAC_ENABLED
bool
请参阅 MM_GET 的描述
ETHTOOL_A_MM_TX_MIN_FRAG_SIZE
u32
请参阅 MM_GET 的描述
这些属性通过以下结构传递给驱动程序
-
struct ethtool_mm_cfg¶
802.3 MAC 合并层配置
定义:
struct ethtool_mm_cfg {
u32 verify_time;
bool verify_enabled;
bool tx_enabled;
bool pmac_enabled;
u32 tx_min_frag_size;
};
成员
verify_time
verify_enabled
tx_enabled
pmac_enabled
tx_min_frag_size
MODULE_FW_FLASH_ACT¶
刷新收发器模块固件。
请求内容
ETHTOOL_A_MODULE_FW_FLASH_HEADER
嵌套
请求头
ETHTOOL_A_MODULE_FW_FLASH_FILE_NAME
字符串
固件映像文件名
ETHTOOL_A_MODULE_FW_FLASH_PASSWORD
u32
收发器模块密码
固件更新过程包括三个逻辑步骤
将固件映像下载到收发器模块并验证它。
运行固件映像。
提交固件映像,使其在重置时运行。
当给出 flash 命令时,将按顺序执行这三个步骤。
此消息仅计划更新过程并立即返回而不阻塞。然后该过程异步运行。由于它可能需要几分钟才能完成,因此在更新过程中,内核会向用户空间发出通知,告知其状态和进度。
ETHTOOL_A_MODULE_FW_FLASH_FILE_NAME
属性编码固件映像文件名。固件映像被下载到收发器模块、验证、运行并提交。
可选的 ETHTOOL_A_MODULE_FW_FLASH_PASSWORD
属性编码密码,该密码可能作为收发器模块固件更新过程的一部分是必需的。
固件更新过程可能需要几分钟才能完成。因此,在更新过程中,内核会向用户空间发出通知,告知其状态和进度。
通知内容
ETHTOOL_A_MODULE_FW_FLASH_HEADER
嵌套
回复头
ETHTOOL_A_MODULE_FW_FLASH_STATUS
u32
状态
ETHTOOL_A_MODULE_FW_FLASH_STATUS_MSG
字符串
状态消息
ETHTOOL_A_MODULE_FW_FLASH_DONE
uint
进度
ETHTOOL_A_MODULE_FW_FLASH_TOTAL
uint
总计
ETHTOOL_A_MODULE_FW_FLASH_STATUS
属性编码固件更新过程的当前状态。可能的值为
-
enum ethtool_module_fw_flash_status¶
插件模块固件刷写状态
常量
ETHTOOL_MODULE_FW_FLASH_STATUS_STARTED
固件刷写过程已启动。
ETHTOOL_MODULE_FW_FLASH_STATUS_IN_PROGRESS
固件刷写过程正在进行中。
ETHTOOL_MODULE_FW_FLASH_STATUS_COMPLETED
固件刷写过程已成功完成。
ETHTOOL_MODULE_FW_FLASH_STATUS_ERROR
由于错误,固件刷写过程已停止。
ETHTOOL_A_MODULE_FW_FLASH_STATUS_MSG
属性编码状态消息字符串。
ETHTOOL_A_MODULE_FW_FLASH_DONE
和 ETHTOOL_A_MODULE_FW_FLASH_TOTAL
属性分别编码已完成的工作量和总工作量。
PHY_GET¶
检索有关链路上给定以太网 PHY 的信息。DO 操作返回有关 dev->phydev 的所有可用信息。用户还可以指定 PHY_INDEX,在这种情况下,DO 请求返回有关该特定 PHY 的信息。
由于可以有多个 PHY,因此可以使用 DUMP 操作来列出给定接口上存在的 PHY,方法是在 dump 请求中传递接口索引或名称。
有关详细信息,请参阅 PHY 链路拓扑
请求内容
ETHTOOL_A_PHY_HEADER
嵌套
请求头
内核响应内容
ETHTOOL_A_PHY_HEADER
嵌套
请求头
ETHTOOL_A_PHY_INDEX
u32
phy 的唯一索引,可用于 phy 特定的请求
ETHTOOL_A_PHY_DRVNAME
字符串
phy 驱动程序名称
ETHTOOL_A_PHY_NAME
字符串
phy 设备名称
ETHTOOL_A_PHY_UPSTREAM_TYPE
u32
此 phy 连接的设备类型
ETHTOOL_A_PHY_UPSTREAM_INDEX
u32
上游 PHY 的 PHY 索引
ETHTOOL_A_PHY_UPSTREAM_SFP_NAME
字符串
如果此 PHY 通过 SFP 总线连接到其父 PHY,则此 SFP 总线的名称
ETHTOOL_A_PHY_DOWNSTREAM_SFP_NAME
字符串
如果 phy 控制 SFP 总线,则 SFP 总线的名称
当 ETHTOOL_A_PHY_UPSTREAM_TYPE
为 PHY_UPSTREAM_PHY 时,PHY 的父级是另一个 PHY。
请求转换¶
下表将 ioctl 命令映射到提供其功能的 netlink 命令。右列中具有“n/a”的条目是尚未有其 netlink 替换的命令。左列中具有“n/a”的条目是仅限 netlink 的命令。
ioctl 命令
netlink 命令
ETHTOOL_GSET
ETHTOOL_MSG_LINKINFO_GET
ETHTOOL_MSG_LINKMODES_GET
ETHTOOL_SSET
ETHTOOL_MSG_LINKINFO_SET
ETHTOOL_MSG_LINKMODES_SET
ETHTOOL_GDRVINFO
n/a
ETHTOOL_GREGS
n/a
ETHTOOL_GWOL
ETHTOOL_MSG_WOL_GET
ETHTOOL_SWOL
ETHTOOL_MSG_WOL_SET
ETHTOOL_GMSGLVL
ETHTOOL_MSG_DEBUG_GET
ETHTOOL_SMSGLVL
ETHTOOL_MSG_DEBUG_SET
ETHTOOL_NWAY_RST
n/a
ETHTOOL_GLINK
ETHTOOL_MSG_LINKSTATE_GET
ETHTOOL_GEEPROM
n/a
ETHTOOL_SEEPROM
n/a
ETHTOOL_GCOALESCE
ETHTOOL_MSG_COALESCE_GET
ETHTOOL_SCOALESCE
ETHTOOL_MSG_COALESCE_SET
ETHTOOL_GRINGPARAM
ETHTOOL_MSG_RINGS_GET
ETHTOOL_SRINGPARAM
ETHTOOL_MSG_RINGS_SET
ETHTOOL_GPAUSEPARAM
ETHTOOL_MSG_PAUSE_GET
ETHTOOL_SPAUSEPARAM
ETHTOOL_MSG_PAUSE_SET
ETHTOOL_GRXCSUM
ETHTOOL_MSG_FEATURES_GET
ETHTOOL_SRXCSUM
ETHTOOL_MSG_FEATURES_SET
ETHTOOL_GTXCSUM
ETHTOOL_MSG_FEATURES_GET
ETHTOOL_STXCSUM
ETHTOOL_MSG_FEATURES_SET
ETHTOOL_GSG
ETHTOOL_MSG_FEATURES_GET
ETHTOOL_SSG
ETHTOOL_MSG_FEATURES_SET
ETHTOOL_TEST
n/a
ETHTOOL_GSTRINGS
ETHTOOL_MSG_STRSET_GET
ETHTOOL_PHYS_ID
n/a
ETHTOOL_GSTATS
n/a
ETHTOOL_GTSO
ETHTOOL_MSG_FEATURES_GET
ETHTOOL_STSO
ETHTOOL_MSG_FEATURES_SET
ETHTOOL_GPERMADDR
rtnetlink
RTM_GETLINK
ETHTOOL_GUFO
ETHTOOL_MSG_FEATURES_GET
ETHTOOL_SUFO
ETHTOOL_MSG_FEATURES_SET
ETHTOOL_GGSO
ETHTOOL_MSG_FEATURES_GET
ETHTOOL_SGSO
ETHTOOL_MSG_FEATURES_SET
ETHTOOL_GFLAGS
ETHTOOL_MSG_FEATURES_GET
ETHTOOL_SFLAGS
ETHTOOL_MSG_FEATURES_SET
ETHTOOL_GPFLAGS
ETHTOOL_MSG_PRIVFLAGS_GET
ETHTOOL_SPFLAGS
ETHTOOL_MSG_PRIVFLAGS_SET
ETHTOOL_GRXFH
n/a
ETHTOOL_SRXFH
n/a
ETHTOOL_GGRO
ETHTOOL_MSG_FEATURES_GET
ETHTOOL_SGRO
ETHTOOL_MSG_FEATURES_SET
ETHTOOL_GRXRINGS
n/a
ETHTOOL_GRXCLSRLCNT
n/a
ETHTOOL_GRXCLSRULE
n/a
ETHTOOL_GRXCLSRLALL
n/a
ETHTOOL_SRXCLSRLDEL
n/a
ETHTOOL_SRXCLSRLINS
n/a
ETHTOOL_FLASHDEV
n/a
ETHTOOL_RESET
n/a
ETHTOOL_SRXNTUPLE
n/a
ETHTOOL_GRXNTUPLE
n/a
ETHTOOL_GSSET_INFO
ETHTOOL_MSG_STRSET_GET
ETHTOOL_GRXFHINDIR
n/a
ETHTOOL_SRXFHINDIR
n/a
ETHTOOL_GFEATURES
ETHTOOL_MSG_FEATURES_GET
ETHTOOL_SFEATURES
ETHTOOL_MSG_FEATURES_SET
ETHTOOL_GCHANNELS
ETHTOOL_MSG_CHANNELS_GET
ETHTOOL_SCHANNELS
ETHTOOL_MSG_CHANNELS_SET
ETHTOOL_SET_DUMP
n/a
ETHTOOL_GET_DUMP_FLAG
n/a
ETHTOOL_GET_DUMP_DATA
n/a
ETHTOOL_GET_TS_INFO
ETHTOOL_MSG_TSINFO_GET
ETHTOOL_GMODULEINFO
ETHTOOL_MSG_MODULE_EEPROM_GET
ETHTOOL_GMODULEEEPROM
ETHTOOL_MSG_MODULE_EEPROM_GET
ETHTOOL_GEEE
ETHTOOL_MSG_EEE_GET
ETHTOOL_SEEE
ETHTOOL_MSG_EEE_SET
ETHTOOL_GRSSH
ETHTOOL_MSG_RSS_GET
ETHTOOL_SRSSH
n/a
ETHTOOL_GTUNABLE
n/a
ETHTOOL_STUNABLE
n/a
ETHTOOL_GPHYSTATS
n/a
ETHTOOL_PERQUEUE
n/a
ETHTOOL_GLINKSETTINGS
ETHTOOL_MSG_LINKINFO_GET
ETHTOOL_MSG_LINKMODES_GET
ETHTOOL_SLINKSETTINGS
ETHTOOL_MSG_LINKINFO_SET
ETHTOOL_MSG_LINKMODES_SET
ETHTOOL_PHY_GTUNABLE
n/a
ETHTOOL_PHY_STUNABLE
n/a
ETHTOOL_GFECPARAM
ETHTOOL_MSG_FEC_GET
ETHTOOL_SFECPARAM
ETHTOOL_MSG_FEC_SET
n/a
ETHTOOL_MSG_CABLE_TEST_ACT
n/a
ETHTOOL_MSG_CABLE_TEST_TDR_ACT
n/a
ETHTOOL_MSG_TUNNEL_INFO_GET
n/a
ETHTOOL_MSG_PHC_VCLOCKS_GET
n/a
ETHTOOL_MSG_MODULE_GET
n/a
ETHTOOL_MSG_MODULE_SET
n/a
ETHTOOL_MSG_PLCA_GET_CFG
n/a
ETHTOOL_MSG_PLCA_SET_CFG
n/a
ETHTOOL_MSG_PLCA_GET_STATUS
n/a
ETHTOOL_MSG_MM_GET
n/a
ETHTOOL_MSG_MM_SET
n/a
ETHTOOL_MSG_MODULE_FW_FLASH_ACT
n/a
ETHTOOL_MSG_PHY_GET