Logo

Linux 核心

6.16.0-rc4

快速搜尋

目錄

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

本頁

  • 顯示原始碼

Devlink 線卡¶

背景¶

devlink-linecard 機制旨在操作用作模組化交換機系統的可拆卸 PHY 模組的線卡。 提供以下操作

  • 獲取支援的線卡型別列表。

  • 為插槽配置特定線卡型別。

  • 獲取和監視線卡狀態及其更改。

根據型別,線卡可能包含一個或多個齒輪箱,以將具有特定速度的通道與具有不同速度通道的多個埠進行多路複用。 線卡確保交換機 ASIC 模組和物理前面板埠之間的 N:M 對映。

概述¶

每個線卡 devlink 物件都由裝置驅動程式根據裝置上可用的物理線卡插槽建立。

類似於分線器電纜,裝置可能無法檢測分線器電纜的幾何形狀,裝置可能也無法檢測線卡型別。 對於這些裝置,引入了配置的概念。 它允許使用者

  • 使用特定線卡型別配置線卡插槽

    • 裝置驅動程式將指示 ASIC 相應地準備所有資源。 裝置驅動程式將根據線卡型別建立所有例項,即駐留在該線卡上的 devlink 埠和網路裝置

  • 即使在未物理連線或通電的情況下,也可以操作線卡實體

  • 線上卡埠上設定分線器電纜

    • 與普通埠一樣,使用者可以配置某種型別的分線器電纜,而無需物理連線到埠

  • 配置 devlink 埠和網路裝置

網路裝置載波決定如下

  • 線卡未插入或斷電

    • 載波始終斷開

  • 線卡已插入並通電

    • 載波的決定與普通埠網路裝置相同

線卡狀態¶

devlink-linecard 機制支援以下線卡狀態

  • unprovisioned:線卡未在插槽上配置。

  • unprovisioning:線卡插槽當前正在取消配置。

  • provisioning:線卡插槽當前正在配置線卡型別。

  • provisioning_failed:配置不成功。

  • provisioned:線卡插槽已配置型別。

  • active:線卡已通電並處於活動狀態。

下圖提供了 devlink-linecard 狀態轉換的一般概述

                                   +-------------------------+
                                   |                         |
+---------------------------------->      unprovisioned      |
|                                  |                         |
|                                  +--------|-------^--------+
|                                           |       |
|                                           |       |
|                                  +--------v-------|--------+
|                                  |                         |
|                                  |       provisioning      |
|                                  |                         |
|                                  +------------|------------+
|                                               |
|                 +-----------------------------+
|                 |                             |
|    +------------v------------+   +------------v------------+   +-------------------------+
|    |                         |   |                         ---->                         |
+-----   provisioning_failed   |   |       provisioned       |   |         active          |
|    |                         |   |                         <----                         |
|    +------------^------------+   +------------|------------+   +-------------------------+
|                 |                             |
|                 |                             |
|                 |                +------------v------------+
|                 |                |                         |
|                 |                |     unprovisioning      |
|                 |                |                         |
|                 |                +------------|------------+
|                 |                             |
|                 +-----------------------------+
|                                               |
+-----------------------------------------------+

示例用法¶

$ devlink lc show [ DEV [ lc LC_INDEX ] ]
$ devlink lc set DEV lc LC_INDEX [ { type LC_TYPE | notype } ]

# Show current line card configuration and status for all slots:
$ devlink lc

# Set slot 8 to be provisioned with type "16x100G":
$ devlink lc set pci/0000:01:00.0 lc 8 type 16x100G

# Set slot 8 to be unprovisioned:
$ devlink lc set pci/0000:01:00.0 lc 8 notype
©核心開發社群。 | 由 Sphinx 5.3.0 & Alabaster 0.7.16 提供支援 | 頁面原始碼