mlx5 devlink 支持¶
本文档描述了 mlx5
设备驱动程序实现的 devlink 功能。
参数¶
名称 |
模式 |
验证 |
|
driverinit |
类型:布尔值 如果设备支持 RoCE 禁用,则 RoCE 启用状态控制设备对 RoCE 功能的支持。否则,控制发生在驱动程序堆栈中。当 RoCE 在驱动程序级别禁用时,仅支持原始以太网 QP。 |
|
driverinit |
范围在 64 到 4096 之间。 |
|
driverinit |
范围在 64 到 4096 之间。 |
|
driverinit |
范围在 1 到 2^31 之间。仅支持 2 的幂值。 |
mlx5
驱动程序还实现了以下驱动程序特定的参数。
名称 |
类型 |
模式 |
描述 |
|
字符串 |
运行时 |
控制驱动程序的流控制模式
与默认的 DMFS 模式相比,SMFS 模式更快,并提供更好的规则插入速率。 |
|
u32 |
driverinit |
控制 FDB 表中大型组(大小 > 1)的数量。
|
|
布尔值 |
运行时 |
控制多端口 E-Switch 共享 fdb 模式。 一种实验性模式,其中使用单个 E-Switch,并且 NIC 上的所有 vport 和物理端口都连接到它。 一个示例是将流量从在 PF0 上创建的 VF 发送到与 PF1 的上行链路本机关联的上行链路 注意:未来的设备(ConnectX-8 及更高版本)最终将以此作为默认设置,以允许在单个 E-switch 环境中所有 NIC 端口之间进行转发,而双 E-switch 模式可能会被弃用。 默认值:禁用 |
|
布尔值 |
运行时 |
在适用的情况下,禁用 eswitch 元数据可以根据用例和数据包大小将数据包速率提高高达 20%。 Eswitch 端口元数据状态控制是否在内部用元数据标记数据包。多端口 RoCE、表示器之间的故障转移和堆叠设备必须启用元数据标记。默认情况下,在 E-switch 中支持的设备上启用元数据。元数据仅适用于 switchdev 模式下的 E-switch,当以下用例均不使用时,用户可以禁用它:1. HCA 处于双/多端口 RoCE 模式。2. VF/SF 表示器绑定(通常用于实时迁移)3. 堆叠设备 当禁用元数据时,如果用户尝试启用上述用例,则这些用例将无法初始化。 注意:设置此参数不会立即生效。设置必须在传统模式下进行,并且 eswitch 端口元数据在启用 switchdev 模式后生效。 |
|
u32 |
driverinit |
我们将涉及转发的 TC NIC 规则称为“hairpin”。Hairpin 队列是 mlx5 硬件针对此类数据包的硬件转发的特定实现。 控制 hairpin 队列的数量。 |
|
u32 |
driverinit |
控制 hairpin 队列的大小(以数据包为单位)。 |
mlx5
驱动程序支持通过 DEVLINK_CMD_RELOAD
重新加载
信息版本¶
mlx5
驱动程序报告以下版本
名称 |
类型 |
描述 |
|
固定 |
用于表示设备的板 ID。 |
|
已存储,正在运行 |
三位数 major.minor.subminor 固件版本号。 |
健康报告器¶
tx 报告器¶
tx 报告器负责报告和恢复以下三种错误场景
- tx 超时
报告内核 tx 超时检测。通过搜索丢失的中断来恢复。
- tx 错误完成
报告错误 tx 完成。通过刷新 tx 队列并重置它来恢复。
- tx PTP 端口时间戳 CQ 不健康
报告在端口 ts CQ 上从未传递的 CQE 过多。通过刷新并重新创建所有 PTP 通道来恢复。
tx 报告器还支持按需诊断回调,在该回调上它提供其发送队列状态的实时信息。
用户命令示例
诊断发送队列状态
$ devlink health diagnose pci/0000:82:00.0 reporter tx
注意
此命令仅在接口启动时具有有效输出,否则该命令具有空输出。
显示指示的 tx 错误数、成功结束的恢复流程数、是否启用自动恢复以及上次恢复的平缓期
$ devlink health show pci/0000:82:00.0 reporter tx
rx 报告器¶
rx 报告器负责报告和恢复以下两种错误场景
- rx 队列的初始化(填充)超时
通过触发 irq 在 napi 上下文中完成环初始化时 rx 队列描述符的填充。如果无法获得最少数量的描述符,则会发生超时,并且可以通过轮询 EQ(事件队列)来恢复描述符。
- 带有错误的 rx 完成(由 HW 在中断上下文中报告)
报告 rx 完成错误。通过刷新相关队列并重置它来恢复(如果需要)。
rx 报告器还支持按需诊断回调,在该回调上它提供其接收队列状态的实时信息。
诊断 rx 队列的状态和相应的完成队列
$ devlink health diagnose pci/0000:82:00.0 reporter rx
注意
此命令仅在接口启动时具有有效输出。否则,该命令具有空输出。
显示指示的 rx 错误数、成功结束的恢复流程数、是否启用自动恢复以及上次恢复的平缓期
$ devlink health show pci/0000:82:00.0 reporter rx
fw 报告器¶
fw 报告器实现 diagnose 和 dump 回调。它遵循 fw 错误的症状,例如通过触发 fw 核心转储并将其存储到转储缓冲区中的 fw 综合征。用户可以随时触发 fw 报告器诊断命令以检查当前的 fw 状态。
用户命令示例
检查 fw 健康状态
$ devlink health diagnose pci/0000:82:00.0 reporter fw
如果已存储,则读取 FW 核心转储或触发新的核心转储
$ devlink health dump show pci/0000:82:00.0 reporter fw
注意
此命令只能在拥有 fw 跟踪器所有权的 PF 上运行,在其他 PF 或任何 VF 上运行它将返回“不允许操作”。
fw 致命报告器¶
fw 致命报告器实现 dump 和 recover 回调。它遵循通过 CR 空间转储和恢复流程指示的致命错误。CR 空间转储使用 vsc 接口,即使 FW 命令接口不起作用,该接口也有效,这在大多数 FW 致命错误中都是这种情况。恢复函数运行恢复流程,该流程会重新加载驱动程序,并在需要时触发 fw 重置。在固件错误时,健康缓冲区将转储到 dmesg 中。日志级别派生自错误的严重性(在健康缓冲区中给出)。
用户命令示例
手动运行 fw 恢复流程
$ devlink health recover pci/0000:82:00.0 reporter fw_fatal
如果已存储,则读取 FW CR 空间转储或触发新的转储
$ devlink health dump show pci/0000:82:00.1 reporter fw_fatal
注意
此命令只能在 PF 上运行。
vnic 报告器¶
vnic 报告器仅实现 diagnose 回调。它负责从 fw 查询 vnic 诊断计数器并实时显示它们。
vnic 计数器的描述
- total_error_queues
由于异步错误或错误命令而处于错误状态的队列数。
- send_queue_priority_update_flow
QP/SQ 优先级/SL 更新事件的数量。
- cq_overrun
由于溢出而使 CQ 进入错误状态的次数。
- async_eq_overrun
映射到异步事件的 EQ 被溢出的次数。
- comp_eq_overrun
映射到完成事件的 EQ 被溢出的次数。
- quota_exceeded_command
由于超出配额而发出且失败的命令数量。
- invalid_command
由于配额超出以外的任何原因而发出且失败的命令数。
- nic_receive_steering_discard
由于流表中不匹配而被丢弃的已完成 RX 流控制的数据包数。
- generated_pkt_steering_fail
VNIC 生成的在流控制中(在流控制流程的任何点)遇到意外流控制失败的数据包数。
- handled_pkt_steering_fail
由 VNIC 处理的在流控制中(在 VNIC 拥有的流控制流程的任何点,包括 eswitch 所有者的 FDB)遇到意外流控制失败的数据包数。
用户命令示例
诊断 PF/VF vnic 计数器
$ devlink health diagnose pci/0000:82:00.1 reporter vnic
诊断表示器 vnic 计数器(通过提供表示器的 devlink 端口来执行,可以通过 devlink port 命令获取)
$ devlink health diagnose pci/0000:82:00.1/65537 reporter vnic
注意
此命令可以对所有接口运行,例如 PF/VF 和表示器端口。