mlx5 devlink 支援¶
本文件描述了 mlx5 裝置驅動程式所實現的 devlink 功能。
引數¶
名稱 |
模式 |
驗證 |
|
driverinit |
型別: 布林值 如果裝置支援 RoCE 停用,則 RoCE 啟用狀態控制裝置對 RoCE 功能的支援。否則,控制發生在驅動程式堆疊中。當在驅動程式級別停用 RoCE 時,僅支援原始乙太網 QP。 |
|
driverinit |
範圍在 64 到 4096 之間。 |
|
driverinit |
範圍在 64 到 4096 之間。 |
|
driverinit |
範圍在 1 到 2^31 之間。僅支援 2 的冪值。 |
mlx5 驅動程式還實現了以下驅動程式特定引數。
名稱 |
型別 |
模式 |
描述 |
|
string |
runtime |
控制驅動程式的流轉向模式
與預設 DMFS 模式相比,SMFS 模式更快,並提供更好的規則插入速率。 |
|
u32 |
driverinit |
控制 FDB 表中大型組(大小 > 1)的數量。
|
|
布林值 |
runtime |
控制多埠 E-Switch 共享 FDB 模式。 一種實驗模式,其中使用單個 E-Switch,並且 NIC 上的所有虛擬埠和物理埠都連線到它。 一個示例是將流量從在 PF0 上建立的 VF 傳送到與 PF1 上行鏈路原生關聯的上行鏈路。 注意:未來的裝置,ConnectX-8 及更高版本,最終將預設啟用此功能,以允許在單個 E-Switch 環境中的所有 NIC 埠之間進行轉發,而雙 E-Switch 模式可能會被棄用。 預設:停用 |
|
布林值 |
runtime |
在適用情況下,停用 E-Switch 元資料可根據用例和資料包大小將資料包速率提高多達 20%。 E-Switch 埠元資料狀態控制是否在內部用元資料標記資料包。對於多埠 RoCE、代表器之間的故障轉移和堆疊裝置,必須啟用元資料標記。預設情況下,E-Switch 中支援的裝置上啟用元資料。元資料僅適用於 Switchdev 模式下的 E-Switch,當不使用以下任何用例時,使用者可以停用它:1. HCA 處於雙/多埠 RoCE 模式。2. VF/SF 代表器繫結(通常用於即時遷移)3. 堆疊裝置 當元資料被停用時,如果使用者嘗試啟用上述用例,它們將無法初始化。 注意:設定此引數不會立即生效。設定必須在傳統模式下進行,並且 E-Switch 埠元資料在啟用 Switchdev 模式後生效。 |
|
u32 |
driverinit |
我們將涉及轉發的 TC NIC 規則稱為“髮夾(hairpin)”。髮夾佇列是 mlx5 硬體特有的實現,用於此類資料包的硬體轉發。 控制髮夾佇列的數量。 |
|
u32 |
driverinit |
控制髮夾佇列的大小(以資料包為單位)。 |
mlx5 驅動程式支援透過 DEVLINK_CMD_RELOAD 進行重新載入
資訊版本¶
mlx5 驅動程式報告以下版本
名稱 |
型別 |
描述 |
|
固定 |
用於表示裝置的板 ID。 |
|
已儲存, 正在執行 |
三位主要.次要.修訂韌體版本號。 |
健康報告器¶
tx 報告器¶
tx 報告器負責報告和恢復以下三種錯誤場景:
- tx 超時
報告核心 tx 超時檢測。透過搜尋丟失的中斷來恢復。
- tx 錯誤完成
報告錯誤 tx 完成。透過重新整理 tx 佇列並重置它來恢復。
- tx PTP 埠時間戳 CQ 不健康
報告埠時間戳 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 佇列初始化(填充)超時
rx 佇列描述符在環初始化時的填充是在 napi 上下文中透過觸發中斷完成的。如果未能獲得最小數量的描述符,將發生超時,並且可以透過輪詢 EQ(事件佇列)來恢復描述符。
- rx 錯誤完成(由硬體在中斷上下文中報告)
報告 rx 完成錯誤。透過重新整理相關佇列並重置它來恢復(如果需要)。
rx 報告器還支援按需診斷回撥,它提供其接收佇列的即時狀態資訊。
診斷 rx 佇列狀態及相應的完成佇列
$ devlink health diagnose pci/0000:82:00.0 reporter rx
注意
此命令僅在介面啟動時才具有有效輸出。否則,命令輸出為空。
顯示指示的 rx 錯誤數量、成功結束的恢復流數量、是否啟用自動恢復以及自上次恢復以來的寬限期
$ devlink health show pci/0000:82:00.0 reporter rx
韌體報告器¶
韌體報告器實現了 diagnose 和 dump 回撥。它透過觸發韌體核心轉儲並將其儲存到轉儲緩衝區中來跟蹤韌體錯誤(例如韌體綜合症)的症狀。使用者可以隨時觸發韌體報告器診斷命令來檢查當前韌體狀態。
使用者命令示例
檢查韌體健康狀態
$ devlink health diagnose pci/0000:82:00.0 reporter fw
讀取已儲存的韌體核心轉儲或觸發新的轉儲
$ devlink health dump show pci/0000:82:00.0 reporter fw
注意
此命令只能在擁有韌體跟蹤器所有權的 PF 上執行,在其他 PF 或任何 VF 上執行將返回“操作不允許”。
韌體致命錯誤報告器¶
韌體致命錯誤報告器實現了 dump 和 recover 回撥。它透過 CR 空間轉儲和恢復流程跟蹤致命錯誤指示。CR 空間轉儲使用 vsc 介面,即使韌體命令介面不工作,它也有效,這在大多數韌體致命錯誤中都是如此。恢復功能執行恢復流程,如果需要,會重新載入驅動程式並觸發韌體重置。韌體錯誤時,健康緩衝區會被轉儲到 dmesg 中。日誌級別根據錯誤的嚴重性(在健康緩衝區中給出)確定。
使用者命令示例
手動執行韌體恢復流程
$ devlink health recover pci/0000:82:00.0 reporter fw_fatal
讀取已儲存的韌體 CR 空間轉儲或觸發新的轉儲
$ devlink health dump show pci/0000:82:00.1 reporter fw_fatal
注意
此命令只能在 PF 上執行。
vnic 報告器¶
vnic 報告器僅實現了 diagnose 回撥。它負責從韌體查詢 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 擁有的轉向流的任何點都遇到了意外的轉向失敗(包括 E-Switch 所有者的 FDB)。
- icm_consumption
vnic 消耗的互連主機記憶體 (ICM) 量,以 4KB 為粒度。ICM 是軟體根據 HCA 請求分配的主機記憶體,用於儲存控制 HCA 操作的資料結構。
使用者命令示例
診斷 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 和代表器埠)上執行。