CSR配置字典之EthDevice类
更新时间: 2026/06/22
在Gitcode上查看源码

📋 文档信息

项目内容
文档标题EthDevice类配置字典
版本v1.0
创建日期2026-06-22
最后更新2026-06-22
维护状态✅ 活跃维护

📋 变更历史记录

文档变更记录

版本发布日期变更类型变更内容影响范围维护人员
v1.02026-06-22初始版本创建EthDevice类配置字典全新文档系统管理员

🎯 类概览

EthDevice 类

属性
类名称EthDevice
功能描述网口设备配置对象
所属SIG组system
所属组件网络设备管理
责任人系统架构组
最后更新2026-06-22
状态🟢 正常运行

📊 属性定义详表

必选属性

属性名类型默认值取值范围动态关联描述使用场景举例来源分类
PortIdU80~255-口的物理编号,每张网卡从0开始标识网口物理编号0CSR配置软件
LaneIdU80~255-口的逻辑lane编号,每张网卡从0开始标识网口逻辑lane编号0CSR配置软件
SegmentU80~255-多PCI Bridge场景编号多PCI Bridge场景下标识编号0CSR配置软件
SocketIDU80~255-网卡对应的CPU ID标识网口对应的CPU0CSR配置软件
ControllerIndexU80~255-网卡对应的Eth控制器ID标识网口对应的Eth控制器0CSR配置软件

可选属性

属性名类型默认值取值范围动态关联描述使用场景举例来源分类
BusU82550~255-网口设备的Bus标识网口设备的Bus号255CSR配置软件
DeviceU82550~255-网口设备的Device标识网口设备的Device号255CSR配置软件
FunctionU82550~255-网口设备的Function标识网口设备的Function号255CSR配置软件
PortFunctionIdU82550~255-口设备的PortFunctionId标识口设备的PortFunctionId255CSR配置软件

🔗 动态关联机制

语法规范

EthDevice类属性均为静态配置属性,无动态关联机制。


关联说明

  • 无动态关联:EthDevice类所有属性均通过CSR配置直接赋值,不依赖Scanner、Accessor或Component关联
  • SHM共享:Bus、Device、Function、PortFunctionId同时用于CSR和SHM场景,支持跨进程共享

📂 分类标准

硬件属性

  • 无硬件属性:EthDevice类不含直接从硬件获取或控制硬件的参数

软件属性

  • 定义:用于软件层面的网口设备管理和配置
  • 特点:包含端口标识、逻辑编号、PCI地址映射等功能
  • 示例PortId, LaneId, Segment, SocketID, ControllerIndex, Bus, Device, Function, PortFunctionId

📝 配置示例

标准网口设备配置

json
{
  "EthDevice": {
    "PortId": 0,
    "LaneId": 0,
    "Segment": 0,
    "SocketID": 0,
    "ControllerIndex": 0,
    "Bus": 3,
    "Device": 0,
    "Function": 0,
    "PortFunctionId": 1
  }
}

多网口配置(Port1)

json
{
  "EthDevice_Port1": {
    "PortId": 1,
    "LaneId": 1,
    "Segment": 0,
    "SocketID": 0,
    "ControllerIndex": 0,
    "Bus": 3,
    "Device": 0,
    "Function": 1,
    "PortFunctionId": 2
  }
}

多PCI Bridge场景配置

json
{
  "EthDevice_MultiBridge": {
    "PortId": 0,
    "LaneId": 0,
    "Segment": 1,
    "SocketID": 1,
    "ControllerIndex": 1,
    "Bus": 5,
    "Device": 1,
    "Function": 0,
    "PortFunctionId": 1
  }
}

最小化网口设备配置

json
{
  "EthDevice_Minimal": {
    "PortId": 0,
    "LaneId": 0,
    "Segment": 0,
    "SocketID": 0,
    "ControllerIndex": 0
  }
}

🔧 使用指南

配置步骤

  1. 设置端口标识:配置PortId、LaneId
  2. 配置PCI Bridge:设置Segment标识多PCI Bridge场景编号
  3. 设置CPU关联:配置SocketID标识网口对应的CPU
  4. 配置控制器:设置ControllerIndex标识Eth控制器
  5. 可选配置:根据需要配置Bus、Device、Function、PortFunctionId等PCI地址信息

注意事项

  • 路径格式:对象路径为 /bmc/kepler/Systems/${SystemId}/PCIeDevices/EthDevices/${Id}
  • 权限要求:访问需ConfigureSelf权限
  • 编号起点:PortId和LaneId每张网卡从0开始编号
  • 默认值含义:Bus、Device、Function、PortFunctionId默认值为255,表示未指定PCI地址信息
  • SHM共享:Bus、Device、Function、PortFunctionId同时用于CSR和SHM场景

性能建议

  • 端口编号:确保PortId和LaneId在同一网卡内连续编号
  • PCI地址:配置准确的Bus、Device、Function以便PCI设备寻址
  • 多Bridge场景:合理设置Segment以区分不同PCI Bridge下的网口设备
  • 资源优化:最小化配置时可仅配置必选属性

ID体系说明

  • PortId (0-255): 网口物理编号,每张网卡从0开始
  • LaneId (0-255): 网口逻辑lane编号,每张网卡从0开始
  • Segment (0-255): 多PCI Bridge场景编号
  • SocketID (0-255): 网卡对应的CPU ID
  • ControllerIndex (0-255): 网卡对应的Eth控制器ID
  • Bus/Device/Function: PCI设备地址的三元组标识,默认255表示未指定

常见问题

  • Q: PortId和LaneId有什么区别?
    • A: PortId是口的物理编号,LaneId是口的逻辑lane编号,两者每张网卡均从0开始独立编号
  • Q: Bus、Device、Function默认值为什么是255?
    • A: 255是U8类型的最大值,作为未指定PCI地址信息时的占位默认值
  • Q: Segment在什么场景下使用?
    • A: Segment在多PCI Bridge场景下使用,用于区分不同PCI Bridge下的网口设备
  • Q: CSR和SHM的区别是什么?
    • A: Bus、Device、Function、PortFunctionId同时用于CSR(配置存储)和SHM(共享内存)场景,支持跨进程共享配置