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 提供支持 | 页面源码