This content is relevant for NVIDIA® BlueField®-3 devices only.
Redfish NIC Subsystem Management
Configuring BlueField Mode of Operation
Refer to "BlueField Modes of Operation Configuration" for information.
Getting Host RShim
curl -k -u root:'<password>' -X GET https://<bmc_ip>/redfish/v1/Systems/Bluefield/Oem/Nvidia
Enabling Host RShim
curl -k -u root:'<password>' -H "Content-Type: application/json" -X POST -d '{"HostRshim":"Enabled"}' https://<bmc_ip>/redfish/v1/Systems/Bluefield/Oem/Nvidia/Actions/HostRshim.Set
Disabling Host RShim
curl -k -u root:'<password>' -H "Content-Type: application/json" -X POST -d '{"HostRshim":"Disabled"}' https://<bmc_ip>/redfish/v1/Systems/Bluefield/Oem/Nvidia/Actions/HostRshim.Set
Getting Strap Options
curl -k -u root:'<password>' -X GET https://<bmc_ip>/redfish/v1/Systems/Bluefield/Oem/Nvidia/Connectx/StrapOptions
Getting External Host Privileges
curl -k -u root:'<password>' -X GET https://<bmc_ip>/redfish/v1/Systems/Bluefield/Oem/Nvidia/Connectx/ExternalHostPrivileges
Setting External Host Privileges
curl -k -u root:'<password>' -H "Content-Type: application/json" -X POST -d '{"HostPrivFwUpdate":"Default","HostPrivNvGlobal":"Enabled" ...}' https://<bmc_ip>/redfish/v1/Systems/Bluefield/Oem/Nvidia/Connectx/ExternalHostPrivileges/Actions/ExternalHostPrivileges.Set
-
The parameterHOST_PRIV_NV_INTERNAL_CPUshould either equal the parameterHOST_PRIV_NV_GLOBALor one of them should be set toDEVICE_DEFAULT. -
If the parameterHOST_PRIV_FLASH_ACCESSis not set toDEVICE_DEFAULTthen the following parameters should all be set toDEVICE_DEFAULTor be equal to the value ofHOST_PRIV_FLASH_ACCESS:HOST_PRIV_NV_HOST,HOST_PRIV_NV_PORT,HOST_PRIV_NV_GLOBAL,HOST_PRIV_NV_INTERNAL_CPU,HOST_PRIV_PCC_UPDATE,HOST_PRIV_FW_UPDATE.
Host Privileges Configuration
This shows the host privileges security configurations using a GET command to the URI of:
https://<bmc_ip>/redfish/v1/Chassis/Card1/NetworkAdapters/NvidiaNetworkAdapter/Oem/Nvidia/HostPrivilegeConfig
This path shows the applied configuration.
PrivilegeMode:
|
Description: |
Defines all privileges under PrivilegeSettings to their desired configuration, |
|
Available options: |
Privileged, Restricted |
|
Preset: |
Privileged: { "FirmwareUpdate": "Enabled", "FlashAccess": "Enabled", "GlobalParametersAccess": "Enabled", "HostParametersAccess": "Enabled", "HostPrivilegeLevel": "Privileged", "InternalCPUAccess": "Enabled", "ManagementInterfaceEnabled": true, "NicReset": "Enabled", "PccUpdate": "Enabled", "PortAccess": "Enabled", "PortOwnerEnabled": true, "ReadCountersEnabled": true, "TracerEnabled": true }Restricted: { "FirmwareUpdate": "Disabled", "FlashAccess": "Disabled", "GlobalParametersAccess": "Disabled", "HostParametersAccess": "Disabled", "HostPrivilegeLevel": "Restricted", "InternalCPUAccess": "Disabled", "ManagementInterfaceEnabled": false, "NicReset": "Disabled", "PccUpdate": "Disabled", "PortAccess": "Disabled", "PortOwnerEnabled": false, "ReadCountersEnabled": false, "TracerEnabled": false} |
|
Notes: |
This configuration is calculated based on the actual state when querying the schema. |
PrivilegeSettings:
FlashAccess
|
Description: |
Defines Host privilege to perform any device flash access |
|
Available options: |
Default, Enable, Disable |
|
Default Value: |
Default |
PccUpdate
|
Description: |
Defines Host privilege to perform PCC algorithm updates |
|
Available options: |
Default, Enable, Disable |
|
Default Value: |
Default |
FirmwareUpdate
|
Description: |
Defines Host privilege to perform firmware updates |
|
Available options: |
Default, Enable, Disable |
|
Default Value: |
Default |
NicReset
|
Description: |
Defines Host privilege to perform a NIC Reset |
|
Available options: |
Default, Enable, Disable |
|
Default Value: |
Default |
GlobalParametersAccess
|
Description: |
Defines Host privilege to access global NV parameters |
|
Available options: |
Default, Enable, Disable |
|
Default Value: |
Default |
HostParametersAccess
|
Description: |
Defines Host privilege to access host NV parameters |
|
Available options: |
Default, Enable, Disable |
|
Default Value: |
Default |
PortAccess
|
Description: |
Defines Host privilege to access port NV parameters |
|
Available options: |
Default, Enable, Disable |
|
Default Value: |
Default |
InternalCPUAccess
|
Description: |
Defines Host privilege to access Int CPU NV parameters |
|
Available options: |
Default, Enable, Disable |
|
Default Value: |
Default |
HostPrivilegeLevel
|
Description: |
When "Restricted", host is not allowed to modify global/
|
|
Available options: |
Privileged, Restricted |
ManagementInterfaceEnabled
|
Description: |
When "false", the host does not have an RSHIM function to access the embedded CPU registers. |
|
Available options: |
true, false |
PortOwnerEnabled
|
Description: |
When "false:, the host will not be allowed to be Port Owner |
|
Available options: |
true, false |
ReadCountersEnabled
|
Description: |
When "false", the host will not be allowed to read Physical port counters |
|
Available options: |
true, false |
TracerEnabled
|
Description: |
When "false", the host will not be allowed to own the Tracer |
|
Available options: |
true, false |
Example:
curl -u 'root':'<password>' -X GET https://<bmc_ip>/redfish/v1/Chassis/Card1/NetworkAdapters/NvidiaNetworkAdapter/Oem/Nvidia/HostPrivilegeConfig
{
"@Redfish.Settings": {
"@odata.type": "#Settings.v1_3_5.Settings",
"SettingsObject": {
"@odata.id": "/redfish/v1/Chassis/Card1/NetworkAdapters/NvidiaNetworkAdapter/Oem/Nvidia/HostPrivilegeConfig/Settings"
}
},
"@odata.id": "/redfish/v1/Chassis/Card1/NetworkAdapters/NvidiaNetworkAdapter/Oem/Nvidia/HostPrivilegeConfig",
"@odata.type": "#NvidiaHostPrivilegeConfig.v1_0_0.NvidiaHostPrivilegeConfig",
"Id": "HostPrivilegeConfig",
"Name": "Host Privilege Configuration",
"PrivilegeMode": "Privileged",
"PrivilegeSettings": {
"FirmwareUpdate": "Enabled",
"FlashAccess": "Enabled",
"GlobalParametersAccess": "Enabled",
"HostParametersAccess": "Enabled",
"HostPrivilegeLevel": "Privileged",
"InternalCPUAccess": "Enabled",
"ManagementInterfaceEnabled": true,
"NicReset": "Enabled",
"PccUpdate": "Enabled",
"PortAccess": "Enabled",
"PortOwnerEnabled": true,
"ReadCountersEnabled": true,
"TracerEnabled": true
}
}
Setting the configuration
The changes will be made to this URI using PATCH:
https://<bmc_ip>/redfish/v1/Chassis/Card1/NetworkAdapters/NvidiaNetworkAdapter/Oem/Nvidia/HostPrivilegeConfig/Settings
This path shows the pending values that will be set.
Examples:
curl -u 'root':'<password>' -X GET https://<bmc_ip>/redfish/v1/Chassis/Card1/NetworkAdapters/NvidiaNetworkAdapter/Oem/Nvidia/HostPrivilegeConfig/Settings
{
"@odata.id": "/redfish/v1/Chassis/Card1/NetworkAdapters/NvidiaNetworkAdapter/Oem/Nvidia/HostPrivilegeConfig/Settings",
"@odata.type": "#NvidiaHostPrivilegeConfig.v1_0_0.NvidiaHostPrivilegeConfig",
"Id": "Settings",
"Name": "Host Privilege Configuration Settings",
"PrivilegeMode": "Privileged",
"PrivilegeMode@Redfish.AllowableValues": ["Privileged", "Restricted"],
"PrivilegeSettings": {
"FirmwareUpdate": "Enabled",
"FlashAccess": "Enabled",
"GlobalParametersAccess": "Enabled",
"HostParametersAccess": "Enabled",
"HostPrivilegeLevel": "Privileged",
"InternalCPUAccess": "Enabled",
"ManagementInterfaceEnabled": true,
"NicReset": "Enabled",
"PccUpdate": "Enabled",
"PortAccess": "Enabled",
"PortOwnerEnabled": true,
"ReadCountersEnabled": true,
"TracerEnabled": true
}
}
Setting PrivilegeMode example:
curl -u 'root':'<password>' -X PATCH -H "Content-Type: application/json" https://<bmc_ip>/redfish/v1/Chassis/Card1/NetworkAdapters/NvidiaNetworkAdapter/Oem/Nvidia/HostPrivilegeConfig/Settings -d '{"PrivilegeMode":"Privileged"}'
Setting specific properties example:
curl -u 'root':'<password>' -X PATCH -H "Content-Type: application/json" https://<bmc_ip>/redfish/v1/Chassis/Card1/NetworkAdapters/NvidiaNetworkAdapter/Oem/Nvidia/HostPrivilegeConfig/Settings -d '{"PrivilegeSettings" : {"NicReset": "Default", "PccUpdate": "Default","PortAccess": "Default","FirmwareUpdate": "Default","FlashAccess": "Disabled","GlobalParametersAccess": "Disabled","HostParametersAccess": "Disabled","InternalCPUAccess": "Disabled", "HostPrivilegeLevel": "Privileged"}}'
Every change must be followed by a System Power Cycle.
When there is a conflict between the parameters from list #1:
"HostParameterAccess, PortAccess, GlobalParameteraccess, InternalCPUAccess, PccUpdate, FirmwareUpdate, FlashAccess, NicReset"
and the parameters from list #2:
"HostPrivilegeLevel, ManagementInterfaceEnabled, PortOwnerEnabled, ReadCountersEnabled, TracerEnabled"
The parameters values from list #1 will be the one to take affect.
When one of the following properties is set to Enabled:
"GlobalParametersAccess,PortAccess,InternalCPUAccess,NicReset,FirmwareUpdate,FlashAccess"Changing HostPrivilegeLevel to "Restricted" requires first setting the conflicting property to "Default".
-
The parameter InternalCPUAccess should either equal the parameter GlobalParameterAccess or one of them should be set to Default.
-
If the parameter FlashAccess is not set to Default then the following parameters should all be set to Default or be equal to the value of FlashAccess: HostParameterAccess, PortAccess, GlobalParameteraccess, InternalCPUAccess, PccUpdate, FirmwareUpdate.
IPMItool NIC Subsystem Management
Since the standard IPMItool commands do not cover all functionality, a set of custom NVIDIA IPMItool raw commands is available to enable configuring the NIC subsystem on the BlueField directly.
IPMItool raw commands follow the following format:
ipmitool -C 17 -I lanplus -H <bmc_ip_addr> -U <username> -P <password> raw <netfunc> <cmd> <data>
Where:
-
netfunc– network function which identifies the functional message class, and clusters IPMI commands into sets -
cmd– one byte command within a network function -
data– optional element which provides additional parameters for a request or response message
The following table lists the supported IPMItool raw commands:
|
netfunc |
cmd |
data |
Description |
||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
N/A |
Get SmartNIC mode. Prints current configuration:
|
||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
Byte0 |
Set SmartNIC mode ( Supported values:
|
||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
N/A |
Get host access. Prints current
|
||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
Byte0 |
Set host access. Sets Supported values:
|
||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
N/A |
Query strap options. Prints current state for all fields:
Each state is represented by binary byte in order. Supported values:
|
||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
N/A |
Get SmartNIC OS State.
|
Setting Operation Mode
|
netfunc |
cmd |
data |
Description |
|---|---|---|---|
|
|
|
|
Set DPU mode |
|
|
|
|
Set NIC mode |
Enabling/Disabling RShim from Host
|
netfunc |
cmd |
data |
Description |
|---|---|---|---|
|
|
|
|
Enable RShim from host |
|
|
|
|
Disable RShim from host |
Last updated: