DPUs and SmartNICs

This section provides detail and specificities of Data Processing Units (DPUs) and SmartNICs as introduced by the DMTF in this document.

Nokia Cloud RAN SmartNIC

The data model of the Nokia Cloud RAN SmartNIC card, as well as examples of requests and responses are presented in this paragraph.

Properties

The Nokia Cloud RAN SmartNIC card is modeled in the Redfish tree as a Network Adapter contained in the main Chassis subsystem (/redfish/v1/Chassis/1).

Getting properties

The following example retrieves the properties of a Nokia Cloud RAN SmartNIC card from the NetworkAdapter subsystem, including Status/Health and BootStage.

GET Nokia Network Adapter propertiesNokia Network Adapter output
Copy
Copied
GET '/redfish/v1/Chassis/1/NetworkAdapters/?$expand=.' | \
     jq '.Members[] | select (.Name | contains("RAN Inline"))'
Copy
Copied
{
    "@odata.context": "/redfish/v1/$metadata#NetworkAdapter.NetworkAdapter",
    "@odata.etag": "W/"50C7F594"",
    "@odata.id": "/redfish/v1/Chassis/1/NetworkAdapters/DA000000",
    "@odata.type": "#NetworkAdapter.v1_9_0.NetworkAdapter",
    "Id": "DA000000",
    "@Redfish.Settings": {
        "SettingsObject": {
            "@odata.id": "/redfish/v1/Chassis/1/NetworkAdapters/DA000000/Settings"
        }
    },
    "Controllers": [
        {
            "ControllerCapabilities": {},
            "FirmwarePackageVersion": "N/A",
            "Location": {
                "PartLocation": {
                    "LocationOrdinalValue": 1,
                    "LocationType": "Slot",
                    "ServiceLabel": "PCI-E Slot 1"
                }
            }
        }
    ],
    "Location": {
        "PartLocation": {
            "LocationOrdinalValue": 1,
            "LocationType": "Slot",
            "ServiceLabel": "PCI-E Slot 1"
        }
    },
    "Manufacturer": "Nokia Solutions and Networks",
    "Model": "RAN Inline Accelerator type 2",
    "Name": "RAN Inline Accelerator type 2",
    "Oem": {
        "Hpe": {
            "@odata.context": "/redfish/v1/$metadata#HpeNetworkAdapter.HpeNetworkAdapter",
            "@odata.type": "#HpeNetworkAdapter.v1_10_1.HpeNetworkAdapter",
            "Actions": {
                "#HpeNetworkAdapter.ColdReset": {
                    "target": "/redfish/v1/Chassis/1/NetworkAdapters/DA000000/Actions/Oem/Hpe/HpeNetworkAdapter.ColdReset",
                    "title": "Cold Reset the network adapter "
                },
                "#HpeNetworkAdapter.PowerSaveOff": {
                    "target": "/redfish/v1/Chassis/1/NetworkAdapters/DA000000/Actions/Oem/Hpe/HpeNetworkAdapter.PowerSaveOff",
                    "title": "Enable Power Save off the Network Adapter "
                },
                "#HpeNetworkAdapter.PowerSaveOn": {
                    "target": "/redfish/v1/Chassis/1/NetworkAdapters/DA000000/Actions/Oem/Hpe/HpeNetworkAdapter.PowerSaveOn",
                    "title": "Enable Power Save on the Network Adapter "
                },
                "#HpeNetworkAdapter.WarmReset": {
                    "target": "/redfish/v1/Chassis/1/NetworkAdapters/DA000000/Actions/Oem/Hpe/HpeNetworkAdapter.WarmReset",
                    "title": "Warm Reset the network adapter "
                }
            },
            "BaseMACAddress": "28:74:f5:07:83:66",
            "BootStageSensors": [
                {
                    "BootStage": "U-Boot Boot State - SUCCESS",
                    "Name": "RNIC_BOOT_STATE"
                }
            ],
            "Controllers": [],
            "FlashBankCSControl": 2,
            "FlashBankMuxControl": 0,
            "NextBootFlashBank": "SPI0_CS0_FLASH1",
            "PowerSensors": [
                {
                    "Name": "PCI 1-Power_RNIC_Chip",
                    "PowerCapacityWatts": 29,
                    "SensorId": 0,
                    "Status": {
                        "Health": "OK",
                        "State": "Enabled"
                    }
                },
                {
                    "Name": "PCI 1-Power_RNIC_A12V",
                    "PowerCapacityWatts": 0,
                    "SensorId": 1,
                    "Status": {
                        "Health": "OK",
                        "State": "Enabled"
                    }
                },
                {
                    "Name": "PCI 1-Power_RNIC_P12V",
                    "PowerCapacityWatts": 40,
                    "SensorId": 2,
                    "Status": {
                        "Health": "OK",
                        "State": "Enabled"
                    }
                }
            ],
            "StructuredName": "NIC.Slot.1.1",
            "UEFIDevicePath": "PciRoot(0x1)/Pci(0x1,0x0)/Pci(0x0,0x0)"
        }
    },
    "PartNumber": "A-RINLINE2-B/AF1791.01",
    "Ports": {
        "@odata.id": "/redfish/v1/Chassis/1/NetworkAdapters/DA000000/Ports"
    },
    "SerialNumber": "L1232905899",
    "Status": {
        "Health": "OK",
        "State": "Enabled"
    }
}

As a PCIe device, the Nokia Cloud RAN SmartNIC card is a member of the PCIeDevice Collection of the main chassis.

The following example retrieves the PCIe properties of a Nokia Cloud RAN SmartNIC card.

GET Nokia PICe propertiesNokia PCIe properties output
Copy
Copied
GET /redfish/v1/Chassis/1/PCieDevices/?$expand=.' | \
    jq '.Members[] | select (.Name | contains("RAN Inline"))'  
Copy
Copied
{
    "@odata.context": "/redfish/v1/$metadata#PCIeDevice.PCIeDevice",
    "@odata.etag": "W/"4DA55F10"",
    "@odata.id": "/redfish/v1/Chassis/1/PCIeDevices/115",
    "@odata.type": "#PCIeDevice.v1_5_0.PCIeDevice",
    "Id": "115",
    "FirmwareVersion": "N/A",
    "Manufacturer": "Nokia Solutions and Networks",
    "Model": "A-RINLINE2-B/AF1791.01",
    "Name": "RAN Inline Accelerator type 2",
    "PCIeFunctions": {
        "@odata.id": "/redfish/v1/chassis/1/PCIedevices/115/PCIeFunctions"
    },
    "PartNumber": "A-RINLINE2-B/AF1791.01",
    "SKU": "A-RINLINE2-B/AF1791.01",
    "SerialNumber": "L1232905899",
    "Status": {
        "Health": "OK",
        "State": "Enabled"
    }
}

The firmware properties of the Nokia Cloud RAN SmartNIC card can be retrieved from the Firmware Inventory URI of the SoftwareInventory schema as shown in the following example.

GET firmware propertiesfirmware output
Copy
Copied
GET /redfish/v1/UpdateService/FirmwareInventory/?$expand=. | \
    jq '.Members[] | select(.Name | contains("Nokia Cloud"))'
Copy
Copied
  {
    "@odata.context": "/redfish/v1/$metadata#SoftwareInventory.SoftwareInventory",
    "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/14/",
    "@odata.type": "#SoftwareInventory.v1_2_0.SoftwareInventory",
    "Id": "14",
    "Description": "177dbc00177dbc00",
    "Name": "Nokia Cloud RAN SmartNIC 4403",
    "Oem": {
    "Hpe": {
        "@odata.context": "/redfish/v1/$metadata#HpeiLOSoftwareInventory.HpeiLOSoftwareInventory",
        "@odata.type": "#HpeiLOSoftwareInventory.v2_1_0.HpeiLOSoftwareInventory",
        "DeviceClass": null,
        "DeviceContext": "PCI-E Slot 3",
        "DeviceInstance": "PciRoot(0x4)/Pci(0x1,0x0)/Pci(0x0,0x0)",
        "Targets": [
        "a6b1a447-382a-5a4f-177d-bc00177dbc00"
          ]
        }
      },
    "Updateable": false,
    "Version": "SDK12.24.06"
  }

Setting properties

Writeable properties can be modified with a PATCH request against the NetworkAdapter/{item} URI. The following example configures the Nokia SmartNIC card to boot from a specific Bank.

TIP

Property modification are effective immediately after a successful PATCH request (no server restart required).

The BootBankSelected property supports the following values:

  • Bank1
  • Bank2
Generic requestBoot Bank PayloadBody response
Copy
Copied
PATCH /redfish/v1/Chassis/1/NetworkAdapters/{item}/
Copy
Copied
{
  "Oem":
  {
    "Hpe":
      {
      "BootBankSelected":"Bank1"
      }
  }
}
Copy
Copied
{
  "error": {
    "code": "iLO.0.10.ExtendedInfo",
    "message": "See @Message.ExtendedInfo for more information.",
    "@Message.ExtendedInfo": [
      {
      "MessageId": "Base.1.17.Success"
      }
    ]
  }
}

The following example configures two OEM specific properties with a PATCH request.

Generic requestOem payloadBodyResponse
Copy
Copied
PATCH /redfish/v1/Chassis/1/NetworkAdapters/{item}
Copy
Copied
{
  "Oem":
    {
    "Hpe":
      {
      "FlashBankCSControl":3
      "FlashBankMuxControl":1
      }
    }
}
Copy
Copied
{
  "error": {
    "code": "iLO.0.10.ExtendedInfo",
    "message": "See @Message.ExtendedInfo for more information.",
      "@Message.ExtendedInfo": [
        {
        "MessageId": "Base.1.17.Success"
        }
      ]
    }
}

Sensors

Power information can be retrieved from the Power subsystem, under the main chassis, as shown in the following example.

GET Nokia PowerNokia Power output
Copy
Copied
GET /redfish/v1/Chassis/1/Power | jq '.Voltages'
Copy
Copied
{
    "Voltages": [
        {
            "@odata.id": "/redfish/v1/Chassis/1/Power#Voltages/1",
            "LowerThresholdCritical": 0.6750,
            "LowerThresholdFatal": 0.650,
            "LowerThresholdNonCritical": 0.70,
            "MemberId": "1",
            "Name": "PCI 1-Volt_RNIC_VSYS",
            "ReadingVolts": 0.7210,
            "Status": {
                "Health": "OK",
                "State": "Enabled"
            },
            "UpperThresholdCritical": 0.9750,
            "UpperThresholdFatal": 1.0,
            "UpperThresholdNonCritical": 0.950
        },
        {
            "@odata.id": "/redfish/v1/Chassis/1/Power#Voltages/2",
            "LowerThresholdCritical": 10.0,
            "LowerThresholdFatal": 0.0,
            "LowerThresholdNonCritical": 0.0,
            "MemberId": "2",
            "Name": "PCI 1-Volt_RNIC_A12V",
            "ReadingVolts": 0.0,
            "Status": {
                "Health": "OK",
                "State": "Enabled"
            },
            "UpperThresholdCritical": 13.0,
            "UpperThresholdFatal": 0.0,
            "UpperThresholdNonCritical": 0.0
        },
        {
            "@odata.id": "/redfish/v1/Chassis/1/Power#Voltages/3",
            "LowerThresholdCritical": 10.0,
            "LowerThresholdFatal": 0.0,
            "LowerThresholdNonCritical": 0.0,
            "MemberId": "3",
            "Name": "PCI 1-Volt_RNIC_P12V",
            "ReadingVolts": 12.0,
            "Status": {
                "Health": "OK",
                "State": "Enabled"
            },
            "UpperThresholdCritical": 13.0,
            "UpperThresholdFatal": 0.0,
            "UpperThresholdNonCritical": 0.0
        }
    ]
}

Temperature information can be retrieved from the Thermal subsystem, under the main chassis, as shown in the following example.

GET Nokia TemperaturesNokia Temp output
Copy
Copied
GET  /redfish/v1/Chassis/1/Thermal | \
     jq '.Temperatures[] | select(.Name | contains("RNIC"))'
Copy
Copied
    {
        "@odata.id": "/redfish/v1/Chassis/1/Thermal#Temperatures/23",
        "MemberId": "23",
        "Name": "20.2-PCI 1-Temp_RNIC_Front",
        "Oem": {
            "Hpe": {
                "@odata.context": "/redfish/v1/$metadata#HpeSeaOfSensors.HpeSeaOfSensors",
                "@odata.type": "#HpeSeaOfSensors.v2_1_0.HpeSeaOfSensors",
                "LocationXmm": 2,
                "LocationYmm": 4,
                "MainSensorName": "20-PCI 1"
            }
        },
        "PhysicalContext": "SystemBoard",
        "ReadingCelsius": 37,
        "SensorNumber": 23,
        "Status": {
            "Health": "OK",
            "State": "Enabled"
        },
        "UpperThresholdCritical": 70,
        "UpperThresholdFatal": null,
        "UpperThresholdNonCritical": 65
    },
    {
        "@odata.id": "/redfish/v1/Chassis/1/Thermal#Temperatures/24",
        "MemberId": "24",
        "Name": "20.3-PCI 1-Temp_RNIC_Rear",
        "Oem": {
            "Hpe": {
                "@odata.context": "/redfish/v1/$metadata#HpeSeaOfSensors.HpeSeaOfSensors",
                "@odata.type": "#HpeSeaOfSensors.v2_1_0.HpeSeaOfSensors",
                "LocationXmm": 2,
                "LocationYmm": 4,
                "MainSensorName": "20-PCI 1"
            }
        },
        "PhysicalContext": "SystemBoard",
        "ReadingCelsius": 55,
        "SensorNumber": 23,
        "Status": {
            "Health": "OK",
            "State": "Enabled"
        },
        "UpperThresholdCritical": 80,
        "UpperThresholdFatal": null,
        "UpperThresholdNonCritical": 75
    },
    {
        "@odata.id": "/redfish/v1/Chassis/1/Thermal#Temperatures/25",
        "MemberId": "25",
        "Name": "24.1-PCI 3-chip_temp",
        "Oem": {
            "Hpe": {
                "@odata.context": "/redfish/v1/$metadata#HpeSeaOfSensors.HpeSeaOfSensors",
                "@odata.type": "#HpeSeaOfSensors.v2_1_0.HpeSeaOfSensors",
                "LocationXmm": 6,
                "LocationYmm": 3,
                "MainSensorName": "24-PCI 3"
            }
        },
        "PhysicalContext": "SystemBoard",
        "ReadingCelsius": 90,
        "SensorNumber": 24,
        "Status": {
            "Health": "OK",
            "State": "Enabled"
        },
        "UpperThresholdCritical": 110,
        "UpperThresholdFatal": 130,
        "UpperThresholdNonCritical": 100
    },
    {
        "@odata.id": "/redfish/v1/Chassis/1/Thermal#Temperatures/26",
        "MemberId": "26",
        "Name": "24.2-PCI 3-Temp_RNIC_Front",
        "Oem": {
            "Hpe": {
                "@odata.context": "/redfish/v1/$metadata#HpeSeaOfSensors.HpeSeaOfSensors",
                "@odata.type": "#HpeSeaOfSensors.v2_1_0.HpeSeaOfSensors",
                "LocationXmm": 6,
                "LocationYmm": 3,
                "MainSensorName": "24-PCI 3"
            }
        },
        "PhysicalContext": "SystemBoard",
        "ReadingCelsius": 39,
        "SensorNumber": 24,
        "Status": {
            "Health": "OK",
            "State": "Enabled"
        },
        "UpperThresholdCritical": 70,
        "UpperThresholdFatal": null,
        "UpperThresholdNonCritical": 65
    },
    {
        "@odata.id": "/redfish/v1/Chassis/1/Thermal#Temperatures/27",
        "MemberId": "27",
        "Name": "24.3-PCI 3-Temp_RNIC_Rear",
        "Oem": {
            "Hpe": {
                "@odata.context": "/redfish/v1/$metadata#HpeSeaOfSensors.HpeSeaOfSensors",
                "@odata.type": "#HpeSeaOfSensors.v2_1_0.HpeSeaOfSensors",
                "LocationXmm": 6,
                "LocationYmm": 3,
                "MainSensorName": "24-PCI 3"
            }
        },
        "PhysicalContext": "SystemBoard",
        "ReadingCelsius": 68,
        "SensorNumber": 24,
        "Status": {
            "Health": "OK",
            "State": "Enabled"
        },
        "UpperThresholdCritical": 80,
        "UpperThresholdFatal": null,
        "UpperThresholdNonCritical": 75
    }

Actions

The Nokia Cloud RAN SmartNIC card supports several OEM extension actions listed in the Network Adapter properties.

Among them are ColdReset and WarmReset. Send a POST request to their respective target with a null payload. You should receive a Success message in return.

POST ColdResetPOST WarmResetBody response
Copy
Copied
POST /redfish/v1/Chassis/1/NetworkAdapters/DA000000/Actions/Oem/Hpe/HpeNetworkAdapter.ColdReset
Copy
Copied
POST /redfish/v1/Chassis/1/NetworkAdapters/DA000000/Actions/Oem/Hpe/HpeNetworkAdapter.WarmReset
Copy
Copied
  {
    "error": {
    "code": "iLO.0.10.ExtendedInfo",
    "message": "See @Message.ExtendedInfo for more information.",
    "@Message.ExtendedInfo": [
        {
          "MessageId": "Base.1.17.Success"
        }
      ]
    }
  }