Logo

Linux 内核

6.13.0-rc6

快速搜索

目录

  • 开发流程
  • 提交补丁
  • 行为准则
  • 维护者手册
  • 所有开发流程文档
  • 核心 API
  • 驱动 API
  • 子系统
    • 核心子系统
    • 人机界面
    • 网络接口
      • 网络
      • NetLabel
      • InfiniBand
      • ISDN
      • MHI
    • 存储接口
    • 其他子系统
  • 锁定
  • 许可规则
  • 编写文档
  • 开发工具
  • 测试指南
  • 黑客指南
  • 跟踪
  • 故障注入
  • 热补丁
  • Rust
  • 管理
  • 构建系统
  • 报告问题
  • 用户空间工具
  • 用户空间 API
  • 固件
  • 固件和设备树
  • CPU 架构
  • 未分类文档
  • 翻译

本页

  • 显示源

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 请求。

请求内容

ETHTOOL_A_RSS_HEADER

嵌套

请求头

ETHTOOL_A_RSS_CONTEXT

u32

上下文编号

ETHTOOL_A_RSS_START_CONTEXT

u32

起始上下文编号(转储)

ETHTOOL_A_RSS_CONTEXT 指定要查询的 RSS 上下文编号,如果未设置,则查询上下文 0(主上下文)。转储可以按设备进行过滤(仅列出给定 netdev 的上下文)。不支持过滤单个上下文编号,但可以使用 ETHTOOL_A_RSS_START_CONTEXT 从给定编号开始转储上下文(主要用于忽略上下文 0 并仅转储其他上下文)。

内核响应内容

ETHTOOL_A_RSS_HEADER

嵌套

回复头

ETHTOOL_A_RSS_CONTEXT

u32

上下文编号

ETHTOOL_A_RSS_HFUNC

u32

RSS 哈希函数

ETHTOOL_A_RSS_INDIR

二进制

间接表字节

ETHTOOL_A_RSS_HKEY

二进制

哈希键字节

ETHTOOL_A_RSS_INPUT_XFRM

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

请参阅 struct ethtool_mm_state

verify_enabled

请参阅 struct ethtool_mm_state

tx_enabled

请参阅 struct ethtool_mm_state

pmac_enabled

请参阅 struct ethtool_mm_state

tx_min_frag_size

请参阅 struct ethtool_mm_state

MODULE_FW_FLASH_ACT¶

刷新收发器模块固件。

请求内容

ETHTOOL_A_MODULE_FW_FLASH_HEADER

嵌套

请求头

ETHTOOL_A_MODULE_FW_FLASH_FILE_NAME

字符串

固件映像文件名

ETHTOOL_A_MODULE_FW_FLASH_PASSWORD

u32

收发器模块密码

固件更新过程包括三个逻辑步骤

  1. 将固件映像下载到收发器模块并验证它。

  2. 运行固件映像。

  3. 提交固件映像,使其在重置时运行。

当给出 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

©内核开发社区。 | 由 Sphinx 5.3.0 & Alabaster 0.7.16 驱动 | 页面源