Logo

Linux 核心

6.16.0-rc4

快速搜尋

目錄

  • 開發流程
  • 提交補丁
  • 行為準則
  • 維護者手冊
  • 所有開發流程文件
  • 核心 API
  • 驅動 API
  • 子系統
    • 核心子系統
    • 人機介面
    • 網路介面
      • 網路
      • NetLabel
      • InfiniBand
      • ISDN
      • MHI
    • 儲存介面
    • 其他子系統
  • 鎖定
  • 許可規則
  • 編寫文件
  • 開發工具
  • 測試指南
  • 開發指南
  • 追蹤
  • 故障注入
  • 熱補丁
  • Rust
  • 管理
  • 構建系統
  • 報告問題
  • 使用者空間工具
  • 使用者空間 API
  • 韌體
  • 韌體和裝置樹
  • CPU 架構
  • 未分類文件
  • 翻譯

本頁

  • 顯示原始檔

mlx5 devlink 支援¶

本文件描述了 mlx5 裝置驅動程式所實現的 devlink 功能。

引數¶

已實現的通用引數¶

名稱

模式

驗證

enable_roce

driverinit

型別: 布林值

如果裝置支援 RoCE 停用,則 RoCE 啟用狀態控制裝置對 RoCE 功能的支援。否則,控制發生在驅動程式堆疊中。當在驅動程式級別停用 RoCE 時,僅支援原始乙太網 QP。

io_eq_size

driverinit

範圍在 64 到 4096 之間。

event_eq_size

driverinit

範圍在 64 到 4096 之間。

max_macs

driverinit

範圍在 1 到 2^31 之間。僅支援 2 的冪值。

mlx5 驅動程式還實現了以下驅動程式特定引數。

已實現的驅動程式特定引數¶

名稱

型別

模式

描述

flow_steering_mode

string

runtime

控制驅動程式的流轉向模式

  • dmfs 裝置管理流轉向。在 DMFS 模式下,硬體轉向實體透過韌體建立和管理。

  • smfs 軟體管理流轉向。在 SMFS 模式下,硬體轉向實體透過驅動程式建立和管理,無需韌體干預。

  • hmfs 硬體管理流轉向。在 HMFS 模式下,驅動程式使用工作佇列和一種特殊的新型 WQE(工作佇列元素)直接向硬體配置轉向規則。

與預設 DMFS 模式相比,SMFS 模式更快,並提供更好的規則插入速率。

fdb_large_groups

u32

driverinit

控制 FDB 表中大型組(大小 > 1)的數量。

  • 預設值為 15,範圍在 1 到 1024 之間。

esw_multiport

布林值

runtime

控制多埠 E-Switch 共享 FDB 模式。

一種實驗模式,其中使用單個 E-Switch,並且 NIC 上的所有虛擬埠和物理埠都連線到它。

一個示例是將流量從在 PF0 上建立的 VF 傳送到與 PF1 上行鏈路原生關聯的上行鏈路。

注意:未來的裝置,ConnectX-8 及更高版本,最終將預設啟用此功能,以允許在單個 E-Switch 環境中的所有 NIC 埠之間進行轉發,而雙 E-Switch 模式可能會被棄用。

預設:停用

esw_port_metadata

布林值

runtime

在適用情況下,停用 E-Switch 元資料可根據用例和資料包大小將資料包速率提高多達 20%。

E-Switch 埠元資料狀態控制是否在內部用元資料標記資料包。對於多埠 RoCE、代表器之間的故障轉移和堆疊裝置,必須啟用元資料標記。預設情況下,E-Switch 中支援的裝置上啟用元資料。元資料僅適用於 Switchdev 模式下的 E-Switch,當不使用以下任何用例時,使用者可以停用它:1. HCA 處於雙/多埠 RoCE 模式。2. VF/SF 代表器繫結(通常用於即時遷移)3. 堆疊裝置

當元資料被停用時,如果使用者嘗試啟用上述用例,它們將無法初始化。

注意:設定此引數不會立即生效。設定必須在傳統模式下進行,並且 E-Switch 埠元資料在啟用 Switchdev 模式後生效。

hairpin_num_queues

u32

driverinit

我們將涉及轉發的 TC NIC 規則稱為“髮夾(hairpin)”。髮夾佇列是 mlx5 硬體特有的實現,用於此類資料包的硬體轉發。

控制髮夾佇列的數量。

hairpin_queue_size

u32

driverinit

控制髮夾佇列的大小(以資料包為單位)。

mlx5 驅動程式支援透過 DEVLINK_CMD_RELOAD 進行重新載入

資訊版本¶

mlx5 驅動程式報告以下版本

已實現的 devlink 資訊版本¶

名稱

型別

描述

fw.psid

固定

用於表示裝置的板 ID。

fw.version

已儲存, 正在執行

三位主要.次要.修訂韌體版本號。

健康報告器¶

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 和代表器埠)上執行。

©核心開發社群。| 由 Sphinx 5.3.0 & Alabaster 0.7.16 提供技術支援 | 頁面源