本文档主要介绍如何适配一张网卡的CSR(这里的1.0指的是走非南向设备树机制),这里以一张SP680网卡举例,详细介绍涉及的对象,属性如何配置;
文件名定义
-
非天池加载:Bom_Id_AuxId.sr
通常PCIe标卡,OCP网卡,sdi/dpu,其中:
Bom:14220247-ocp卡,14140130-标卡/sdi/dpu
Id:由网卡的VendorID + DeviceID拼接而成
AuxId:由网卡的SubsystemVendorID + SubsystemDeviceID拼接而成,
例如SP680网卡的文件名为14140130_19e50222_19e50052.sr -
天池加载:Bom_Id.sr
通常是NIC卡和板载网卡,其中:
Bom: 14220246
Id: 从eeprom中读取
例如SF221Q网卡的文件名为14220246_00000001100302023955.sr
涉及对象及属性配置
硬件拓扑对象
配置网卡的总线,chip相关信息,每种型号的网卡可能有所差异,这是通用的CSR硬件拓扑配置机制,具体配置方法参考CSR相关知识硬件自描述文件(CSR) | 文档中心 | openUBMC
"ManagementTopology": {
"Anchor": {
"Buses": [
"I2cMux_9545Chan3"
]
},
"I2cMux_9545Chan3": {
"Chips": [
"Chip_Hi1822",
"Pca9555_PCIe",
"Eeprom_NetCard"
]
}
}
硬件芯片对象
以下对象也是每个网卡存在对应的芯片才需要配置
//1822芯片
"Chip_Hi1822": {
"OffsetWidth": 0,
"AddrWidth": 1,
"Address": 232,
"WriteTmout": 100,
"ReadTmout": 100,
"HealthStatus": 0,
"WriteRetryTimes": 2,
"ReadRetryTimes": 0
},
//Pca9555芯片
"Pca9555_PCIe": {
"OffsetWidth": 1,
"AddrWidth": 1,
"Address": 68,
"WriteTmout": 100,
"ReadTmout": 100,
"HealthStatus": 0
},
//eeprom对象
"Eeprom_NetCard": {
"OffsetWidth": 2,
"AddrWidth": 1,
"Address": 172,
"WriteTmout": 100,
"ReadTmout": 100,
"RwBlockSize": 32,
"WriteInterval": 20,
"HealthStatus": 0
}
Scanner/Accessor对象
主要用于读写上面的芯片
"Accessor_WP": {
"Chip": "#/Pca9555_PCIe",
"Offset": 1,
"Size": 1,
"Mask": 8,
"Type": 0,
"Value": 0
},
"Accessor_PcbID": {
"Chip": "#/Pca9555_PCIe",
"Offset": 1,
"Size": 1,
"Mask": 7,
"Type": 0,
"Value": 0
},
"Scanner_PowerGood": {
"Chip": "#/Pca9555_PCIe",
"Offset": 1,
"Size": 1,
"Mask": 64,
"Type": 0,
"Value": 0,
"Period": 1000,
"Debounce": "#/ContBin_H5L40"
},
"Scanner_BoardID": {
"Chip": "#/Pca9555_PCIe",
"Offset": 0,
"Size": 1,
"Mask": 255,
"Type": 0,
"Period": 5000,
"Debounce": "#/Cont_BoardID",
"Value": 0
}
Fru相关对象
有eeprom的网卡才需要配置
"FruData_Fru0": {
"FruId": 1,
"FruDev": "#/Eeprom_NetCard",
"EepromWp": "#/Accessor_WP.Value",
"BoardPartNumber": "N/A",
"BoardSerialNumber": "N/A",
"StorageType": "EepromV2"
},
"Fru_PCIeCard": {
"PcbId": "#/Accessor_PcbID.Value",
"FruId": 1,
"FruName": "SP680",
"ConnectorGroupId": "${GroupId}",
"BoardId": 65535,
"UniqueId": "N/A",
"PcbVersion": ".A",
"PowerState": 1,
"Health": 0,
"EepStatus": "<=/Eeprom_NetCard.HealthStatus",
"Type": 8,
"FruDataId": "#/FruData_Fru0"
}
Component对象
//网卡Component对象
"Component_PCIeCard": {
"FruId": 255,
"Instance": "<=/PCIeDevice_1.SlotID",
"Type": 8,
"BoardId": 255,
"Name": "<=/PCIeDevice_1.DeviceName",
"Location": "<=/PCIeDevice_1.Position",
"Manufacturer": "Huawei",
"PartNumber": "<=/FruData_Fru0.BoardPartNumber",
"UniqueId": "N/A",
"Presence": 1,
"Health": 0,
"Function": "PCIe device",
"GroupId": 1,
"PowerState": 1,
"ReplaceFlag": 0,
"PreviousSN": "",
"SerialNumber": "<=/FruData_Fru0.BoardSerialNumber",
"NodeId": "1"
},
//网口Component对象,有几个网口就配置几个
"Component_Port1": {
"FruId": 255,
"Instance": 1,
"Type": 41,
"Name": "Port1",
"Presence": 1,
"Health": 0,
"PowerState": 1
}
BoardPCIeCard对象(NIC卡这里应替换为BoardNICCard对象)
"BoardPCIeCard_1": {
"Slot": 1,
"UID": "N/A",
"Name": "BC53ETH130",
"Manufacturer": "Huawei",
"Type": "PCIeCard",
"Description": "4*25GE",
"PartNumber": "02314CRR",
"PcbVersion": "<=/Fru_PCIeCard.PcbVersion",
"LogicVersion": "N/A",
"BoardID": 65535,
"BoardType": "BoardPCIeCard",
"Number": 1,
"DeviceName": "<=/PCIeDevice_1.DeviceName",
"Position": "<=/PCIeDevice_1.Position",
"LinkWidthCapability": "<=/NetworkAdapter_1.LinkWidthCapability",
"LinkSpeedCapability": "<=/NetworkAdapter_1.LinkSpeedCapability",
"LinkWidth": "<=/NetworkAdapter_1.LinkWidth",
"LinkSpeed": "<=/NetworkAdapter_1.LinkSpeed",
"BoardNodeId": "<=/PCIeDevice_1.DeviceName",
"FruID": "<=/Fru_PCIeCard.FruId"
}
PCIe设备对象
配置PCIe设备名称,类型,槽位等信息
"PCIeDevice_1": {
"DeviceName": "PCIe Card ${Slot} (SP680)",//名称
"FunctionClass": 2,//功能分类 0:未知、1:RAID、2:网卡、3:GPU卡、4:存储卡(SSD卡/M.2卡)、5:SDI卡、6:加速卡、7:扩展卡(PCIe Riser)、8:FPGA卡、9:NPU卡
"Container": "${Container}",//容器信息
"GroupPosition": "PCIeDevice_${GroupPosition}",//用于对象主键,持久化用
"DeviceType": 8,// 设备类型:PCIe标卡-8,NIC卡-13,OCP卡-83
"PCIeDeviceType": "MultiFunction",//PCIe设备类型,具体参考redfish规范
"SlotType": "FullLength",//PCIe槽位类型,具体参考redfish规范
"FunctionProtocol": "PCIe",//PCIe功能协议,具体参考redfish规范
"FunctionType": "Physical"//PCIe功能类型,具体参考redfish规范
}
PCIe卡对象(OCP卡这里应该替换为OCPCard对象)
"SlotID": "<=/PCIeDevice_1.SlotID",//槽位号,关联PCIeDevice对象的SlotID即可
"NodeID": "<=/PCIeDevice_1.SlotID |> string.format('PCIeCard%s',$1)",//唯一ID
"Name": "SP680",//名称
"BoardName": "SP680",//板卡名称,通常和Name一致
"BoardID": 65535,//单板ID,不存在时默认值配65535
"Description": "25Gb/s Quad port card",//网卡描述信息
"FunctionClass": 2,//同PCIeDevice对象
"VendorID": 6629,//厂商ID
"DeviceID": 546,//设备ID
"SubVendorID": 6629,//子厂商ID
"SubDeviceID": 82,//子设备ID
"Position": "<=/PCIeDevice_1.Position",//位置信息
"LaneOwner": "<=/PCIeDevice_1.SocketID",资源归属,表示当前卡挂在哪个CPU下
"Manufacturer": "Huawei",//厂商名称
"PartNumber": "02314CRR",//部件编码,没有部件编码配置默认值N/A
"RefChip": "#/Chip_Hi1822",//关联的芯片,当前只有Hi182x网卡才需要配置
"Protocol": "SmBus",//芯片支持的协议,当前只有Hi182x网卡才需要配置
"FirmwareVersion": "<=/NetworkAdapter_1.FirmwareVersion",//版本号,关联NetworkAdapter对象的版本号
"MaxFrameLen": 64,//协议最大帧长度,当前只有Hi182x网卡才需要配置
"Model": "Hi1822",//芯片型号
"DeviceName": "<=/PCIeDevice_1.DeviceName",//设备名称
"PcbID": "#/Accessor_PcbID.Value",//PcbID
"PcbVersion": ".A",//Pcb版本
"Health": "<=/Component_PCIeCard.Health",//健康状态
"Bus": "<=/PCIeDevice_1.Bus",//root port Bus
"Device": "<=/PCIeDevice_1.Device",//root port Device
"Function": "<=/PCIeDevice_1.Function",// root port Function
"DevBus": "<=/PCIeDevice_1.DevBus",// 设备总线
"DevDevice": "<=/PCIeDevice_1.DevDevice",//设备Device
"DevFunction": "<=/PCIeDevice_1.DevFunction",//设备Function
"SerialNumber": "<=/FruData_Fru0.BoardSerialNumber"//序列号,有eeprom的配置成同步FruData对象的BoardSerialNumber,没有eeprom的不用配置
网卡对象
"NetworkAdapter_1": {
"SystemID": 1,//系统ID,属于哪个host
"SlotNumber": "<=/PCIeDevice_1.SlotID",//槽位号
"Name": "SP680",//网卡名称
"Manufacturer": "Huawei",//厂商名称
"Description": "4*25GE",//网卡描述信息,主要是支持的网口数及规格
"Position": "<=/PCIeDevice_1.Position",//网卡位置
"DeviceLocator": "<=/PCIeDevice_1.DeviceName",//网卡名称(包含所在槽位号)
"Type": 3,//网卡类型:1-NIC,3-PCIe,10-OCP
"Model": "Hi1822",//芯片型号
"ModelDescription": "4*25GE",//芯片描述
"ChipManufacturer": "Huawei",//芯片厂商
"NetworkPortCount": 4,//网口数量
"BoardName": "BC53ETH130",//板卡名称
"VendorID": "0x19e5",//厂商ID
"DeviceID": "0x0222",//设备ID
"SubsystemVendorID": "0x19e5",//子厂商ID
"SubsystemDeviceID": "0x0052",//子设备ID
"ComponentUniqueID": "N/A",//天池加载的网卡才有,没有默认值配N/A
"PCBVersion": "<=/PCIeCard_1.PcbVersion",//Pcb版本
"FruId": "<=/Fru_PCIeCard.FruId",//FruID
"@Default": {
"PCBVersion": ".A"
},
"SupportedMctp": true,//是否支持mctp,不支持不用配置
"SupportedLLDP": true,//是否支持LLDP,不支持不用配置
"HotPluggable": false,//是否支持热插拔,通常是插在FlexIO槽才支持,不支持不用配置
"AttentionHotPlugState": 255,//热插拔状态:0 - 不可操作;1 - 可拔出;2 - 可插入;其他 - 未知
"SocketId": "<=/PCIeDevice_1.SocketID",//所属CPU
"Bus": "<=/PCIeDevice_1.Bus",
"Device": "<=/PCIeDevice_1.Device",
"Function": "<=/PCIeDevice_1.Function",
"DevBus": "<=/PCIeDevice_1.DevBus",
"DevDevice": "<=/PCIeDevice_1.DevDevice",
"DevFunction": "<=/PCIeDevice_1.DevFunction",
"RefChip": "#/Chip_Hi1822",//关联的芯片,当前只有Hi182x需要配置
"LinkWidthCapability": "N/A",//网卡支持的最大带宽能力
"LinkSpeedCapability": "N/A",//网卡支持的最大速率能力
"LinkWidth": "N/A",//网卡实际带宽
"LinkSpeed": "N/A",//网卡实际速率
"TemperatureStatus": 3,//网卡温度获取状态:0-正常获取到温度,1-获取温度失败,除1外的值当前不处理
"ParentCardSlotId": 255,//关联上一级卡的槽位号
"Health": "<=/Component_PCIeCard.Health",//健康状态
"BandwidthThresholdPercent": 100,//网口宽带占用率阈值
"SerialNumber": "<=/PCIeCard_1.SerialNumber",//序列号
"PowerScanner": "<=/Scanner_PowerGood.Value"//上下电状态,用于电源故障告警,当前只有Hi182x网卡需要配置
}
网口对象
有几个网口这里就配几个对象
"NetworkPort_0": {
"@Parent": "NetworkAdapter_1",//父对象
"SystemID": 1,//系统ID,所属host
"PortID": 0,//网口ID,从0开始后面的网口递增
"NetDevFuncType": 1,//网络设备功能类型,0:Disabled 1:Ethernet 2:FC 4:iSCSI 8:FCoE 16:OPA 32:IB
"MediumType": "FiberOptic",//网口介质类型:光纤-FiberOptic,铜缆-Copper
"SupportedLinkCapability": "25GE"//支持的传输速率
}
光模块对象(电口网卡不用配置)
每个网口对应一个光模块
"OpticalModule_0": {
"@Parent": "NetworkPort_0",//父对象
"ChannelNum": 1,//通道号,从1开始,后面依次递增
}
告警配置
网口链接断开告警(每个网口都需配置)
"Event_Port1LinkDown": {
"EventKeyId": "Port.PortDisconnected",
"Condition": 0,
"Reading": "<=/NetworkPort_0.LinkStatusNumeric",
"@Default": {
"Reading": 255
},
"OperatorId": 8,
"Enabled": true,
"DescArg1": "#/PCIeCard_1.DeviceName",
"DescArg3": "Port 1",
"Component": "#/Component_Port1"
}