Skip to content

Commit f99bc45

Browse files
harshit-agheraedtanous
authored andcommitted
NetworkAdapter: add support for Network Adapter Port Metrics
This patch enables support for Nvidia ConnectX network cards. Network adapter schemas are restricted to a single URI path format: /redfish/v1/Chassis/{ChassisId}/NetworkAdapters/{NetworkAdaptersId}/. [1] And thus, the port URI follows this structure /redfish/v1/Chassis/{ChassisId}/NetworkAdapters/{NetworkAdaptersId}/ Ports/{PortId}. [2] Route handler for collections and each individual components are added in this patch for each URI resource under /redfish/v1/Chassis/{ChassisId}/NetworkAdapters. Association between Chassis and NetworkAdapter is `containing` and `contained_by`. Association between NetworkAdapter and Port is `connecting` and `connected_to`. This patch enable support for following properties for Port Metrics URI of a Network Port. [3] - TXBytes - RXBytes - RXMulticastFrames - TXMulticastFrames - RXUnicastFrames - TXUnicastFrames - RXBroadcastFrames - TXBroadcastFrames - RXFCSErrors - RXFrameAlignmentErrors - RXFalseCarrierErrors - RXUndersizeFrames - RXOversizeFrames - RXPauseXONFrames - RXPauseXOFFFrames - TXPauseXONFrames - TXPauseXOFFFrames - TXSingleCollisions - TXMultipleCollisions - TXLateCollisions - TXExcessiveCollisions The patch uses "xyz.openbmc_project.Metric.Value" Interface for Network Port Metrics properties. Association between a Metric and a Port is `measuring` and `measured_by`. PDI patch - https://gerrit.openbmc.org/c/openbmc/bmcweb/+/84629 dbus-sensors patches - https://gerrit.openbmc.org/c/openbmc/dbus-sensors/+/84520 Tested: Build an image for nvl32-obmc machine with the following patch cherry picked. https://gerrit.openbmc.org/c/openbmc/dbus-sensors/+/84520 https://gerrit.openbmc.org/c/openbmc/openbmc/+/85490 The openbmc patch cherry-picks the following patches that are currently under review. ``` 1. device tree https://lore.kernel.org/all/aRbLqH8pLWCQryhu@molberding.nvidia.com/ 2. mctpd patches CodeConstruct/mctp#85 3. u-boot changes https://lore.kernel.org/openbmc/20251121-msx4-v1-0-fc0118b666c1@nvidia.com/T/#t 4. kernel changes as specified in the openbmc patch (for espi) 5. entity-manager changes https://gerrit.openbmc.org/c/openbmc/entity-manager/+/85455 6. platform-init changes https://gerrit.openbmc.org/c/openbmc/platform-init/+/85456 7. spi changes https://lore.kernel.org/all/20251121-w25q01jv_fixup-v1-1-3d175050db73@nvidia.com/ ``` redfish service validator is passing. ``` $ curl -s -k -u 'root:0penBmc' https://${bmc_ip}/redfish/v1/Chassis/Nvidia_IMGX_ConnectX8_SuperNIC_Switch/NetworkAdapters { "@odata.id": "/redfish/v1/Chassis/Nvidia_IMGX_ConnectX8_SuperNIC_Switch/NetworkAdapters", "@odata.type": "#NetworkAdapterCollection.NetworkAdapterCollection", "Members": [ { "@odata.id": "/redfish/v1/Chassis/Nvidia_IMGX_ConnectX8_SuperNIC_Switch/NetworkAdapters/Nvidia_ConnectX_0" }, { "@odata.id": "/redfish/v1/Chassis/Nvidia_IMGX_ConnectX8_SuperNIC_Switch/NetworkAdapters/Nvidia_ConnectX_1" }, { "@odata.id": "/redfish/v1/Chassis/Nvidia_IMGX_ConnectX8_SuperNIC_Switch/NetworkAdapters/Nvidia_ConnectX_2" }, { "@odata.id": "/redfish/v1/Chassis/Nvidia_IMGX_ConnectX8_SuperNIC_Switch/NetworkAdapters/Nvidia_ConnectX_3" } ], "Members@odata.count": 4, "Name": "Nvidia_IMGX_ConnectX8_SuperNIC_Switch Network Adapter Collection" }% $ curl -s -k -u 'root:0penBmc' https://${bmc_ip}/redfish/v1/Chassis/Nvidia_IMGX_ConnectX8_SuperNIC_Switch/NetworkAdapters/Nvidia_ConnectX_1 { "@odata.id": "/redfish/v1/Chassis/Nvidia_IMGX_ConnectX8_SuperNIC_Switch/NetworkAdapters/Nvidia_ConnectX_1", "@odata.type": "#NetworkAdapter.v1_11_0.NetworkAdapter", "Id": "Nvidia_ConnectX_1", "Name": "Nvidia_ConnectX_1 Network Adapter", "Ports": { "@odata.id": "/redfish/v1/Chassis/Nvidia_IMGX_ConnectX8_SuperNIC_Switch/NetworkAdapters/Nvidia_ConnectX_1/Ports" }, "Status": { "Health": "OK", "HealthRollup": "OK", "State": "Enabled" } }% $ curl -s -k -u 'root:0penBmc' https://${bmc_ip}/redfish/v1/Chassis/Nvidia_IMGX_ConnectX8_SuperNIC_Switch/NetworkAdapters/Nvidia_ConnectX_1/Ports { "@odata.id": "/redfish/v1/Chassis/Nvidia_IMGX_ConnectX8_SuperNIC_Switch/NetworkAdapters/Nvidia_ConnectX_1/Ports", "@odata.type": "#PortCollection.PortCollection", "Members": [ { "@odata.id": "/redfish/v1/Chassis/Nvidia_IMGX_ConnectX8_SuperNIC_Switch/NetworkAdapters/Nvidia_ConnectX_1/Ports/Port_0" }, { "@odata.id": "/redfish/v1/Chassis/Nvidia_IMGX_ConnectX8_SuperNIC_Switch/NetworkAdapters/Nvidia_ConnectX_1/Ports/Port_1" } ], "Members@odata.count": 2, "Name": "Nvidia_ConnectX_1 Port Collection" }% $ curl -s -k -u 'root:0penBmc' https://${bmc_ip}/redfish/v1/Chassis/Nvidia_IMGX_ConnectX8_SuperNIC_Switch/NetworkAdapters/Nvidia_ConnectX_1/Ports/Port_0/ { "@odata.id": "/redfish/v1/Chassis/Nvidia_IMGX_ConnectX8_SuperNIC_Switch/NetworkAdapters/Nvidia_ConnectX_1/Ports/Port_0", "@odata.type": "#Port.v1_9_0.Port", "Id": "Port_0", "Metrics": { "@odata.id": "/redfish/v1/Chassis/Nvidia_IMGX_ConnectX8_SuperNIC_Switch/NetworkAdapters/Nvidia_ConnectX_1/Ports/Port_0/Metrics" }, "Name": "Nvidia_ConnectX_1 Port_0 Port", "Status": { "Health": "OK", "HealthRollup": "OK", "State": "Enabled" } }% $ curl -s -k -u 'root:0penBmc' https://${bmc_ip}/redfish/v1/Chassis/Nvidia_IMGX_ConnectX8_SuperNIC_Switch/NetworkAdapters/Nvidia_ConnectX_1/Ports/Port_0/Metrics/ { "@odata.id": "/redfish/v1/Chassis/Nvidia_IMGX_ConnectX8_SuperNIC_Switch/NetworkAdapters/Nvidia_ConnectX_1/Ports/Port_0/Metrics", "@odata.type": "#PortMetrics.v1_7_0.PortMetrics", "Id": "Metrics", "Name": "Nvidia_ConnectX_1 Port_0 Port Metrics", "Networking": { "RXBroadcastFrames": 0, "RXFCSErrors": 0, "RXFalseCarrierErrors": 0, "RXFrameAlignmentErrors": 0, "RXMulticastFrames": 0, "RXOversizeFrames": 0, "RXPauseXOFFFrames": 0, "RXPauseXONFrames": 0, "RXUndersizeFrames": 0, "RXUnicastFrames": 0, "TXBroadcastFrames": 0, "TXExcessiveCollisions": 0, "TXLateCollisions": 0, "TXMulticastFrames": 0, "TXMultipleCollisions": 0, "TXPauseXOFFFrames": 0, "TXPauseXONFrames": 0, "TXSingleCollisions": 0, "TXUnicastFrames": 0 }, "RXBytes": 0, "TXBytes": 0 }% ``` [1]: https://redfish.dmtf.org/schemas/v1/NetworkAdapter_v1.xml [2]: https://redfish.dmtf.org/schemas/v1/Port_v1.xml [3]: https://redfish.dmtf.org/schemas/v1/PortMetrics_v1.xml Change-Id: I73c5a39b12f8f0a40026fb50c2ded53e0b225f67 Signed-off-by: Harshit Aghera <haghera@nvidia.com>
1 parent 2fd07a9 commit f99bc45

File tree

4 files changed

+628
-0
lines changed

4 files changed

+628
-0
lines changed

docs/Redfish.md

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -496,6 +496,85 @@ Fields common to all schemas
496496
- SerialNumber
497497
- SparePartNumber
498498

499+
### /redfish/v1/Chassis/{ChassisId}/NetworkAdapters/
500+
501+
#### NetworkAdapterCollection
502+
503+
- @odata.id
504+
- @odata.type
505+
- Members
506+
- `Members@odata.count`
507+
- Name
508+
509+
### /redfish/v1/Chassis/{ChassisId}/NetworkAdapters/{NetworkAdapterId}/
510+
511+
#### NetworkAdapter
512+
513+
- @odata.id
514+
- @odata.type
515+
- Id
516+
- Name
517+
- Ports
518+
- Status
519+
- Health
520+
- HealthRollup
521+
- State
522+
523+
### /redfish/v1/Chassis/{ChassisId}/NetworkAdapters/{NetworkAdapterId}/Ports/
524+
525+
#### PortCollection
526+
527+
- @odata.id
528+
- @odata.type
529+
- Members
530+
- `Members@odata.count`
531+
- Name
532+
533+
### /redfish/v1/Chassis/{ChassisId}/NetworkAdapters/{NetworkAdapterId}/Ports/{PortId}/
534+
535+
#### Port
536+
537+
- @odata.id
538+
- @odata.type
539+
- Id
540+
- Metrics
541+
- Name
542+
- Status
543+
- Health
544+
- HealthRollup
545+
- State
546+
547+
### /redfish/v1/Chassis/{ChassisId}/NetworkAdapters/{NetworkAdapterId}/Ports/{PortId}/Metrics/
548+
549+
#### PortMetrics
550+
551+
- @odata.id
552+
- @odata.type
553+
- Id
554+
- Name
555+
- Networking
556+
- RXBroadcastFrames
557+
- RXFCSErrors
558+
- RXFalseCarrierErrors
559+
- RXFrameAlignmentErrors
560+
- RXMulticastFrames
561+
- RXOversizeFrames
562+
- RXPauseXOFFFrames
563+
- RXPauseXONFrames
564+
- RXUndersizeFrames
565+
- RXUnicastFrames
566+
- TXBroadcastFrames
567+
- TXExcessiveCollisions
568+
- TXLateCollisions
569+
- TXMulticastFrames
570+
- TXMultipleCollisions
571+
- TXPauseXOFFFrames
572+
- TXPauseXONFrames
573+
- TXSingleCollisions
574+
- TXUnicastFrames
575+
- RXBytes
576+
- TXBytes
577+
499578
### /redfish/v1/EventService/
500579

501580
#### EventService

redfish-core/lib/chassis.hpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -468,6 +468,10 @@ inline void handleDecoratorAssetProperties(
468468
asyncResp->res.jsonValue["Assembly"]["@odata.id"] =
469469
boost::urls::format("/redfish/v1/Chassis/{}/Assembly", chassisId);
470470

471+
asyncResp->res.jsonValue["NetworkAdapters"]["@odata.id"] =
472+
boost::urls::format("/redfish/v1/Chassis/{}/NetworkAdapters",
473+
chassisId);
474+
471475
// SensorCollection
472476
asyncResp->res.jsonValue["Sensors"]["@odata.id"] =
473477
boost::urls::format("/redfish/v1/Chassis/{}/Sensors", chassisId);

0 commit comments

Comments
 (0)