Logo

Linux 内核

6.13.0-rc6

快速搜索

目录

  • 开发流程
  • 提交补丁
  • 行为准则
  • 维护者手册
  • 所有开发流程文档
  • 核心 API
  • 驱动程序 API
  • 子系统
    • 核心子系统
    • 人机接口
    • 网络接口
      • 网络
      • NetLabel
      • InfiniBand
      • ISDN
      • MHI
    • 存储接口
    • 其他子系统
  • 锁定
  • 许可规则
  • 编写文档
  • 开发工具
  • 测试指南
  • 黑客指南
  • 跟踪
  • 故障注入
  • 实时补丁
  • 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 驱动 | 页面源