Networking NVIDIA BlueField BMC Software

NIC Subsystem Management



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 parameter HOST_PRIV_NV_INTERNAL_CPU should either equal the parameter HOST_PRIV_NV_GLOBAL or one of them should be set to DEVICE_DEFAULT.

  • If the parameter HOST_PRIV_FLASH_ACCESS is not set to DEVICE_DEFAULT then the following parameters should all be set to DEVICE_DEFAULT or be equal to the value of HOST_PRIV_FLASH_ACCESSHOST_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/
per port/parameters or access other hosts 
parameters

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

0x32

0x9A

N/A

Get external host privileges.

Prints current state for all fields:

Byte

Field

0

HOST_PRIV_FLASH_ACCESS

1

HOST_PRIV_FW_UPDATE

2

HOST_PRIV_NIC_RESET

3

HOST_PRIV_NV_GLOBAL

4

HOST_PRIV_NV_HOST

5

HOST_PRIV_NV_INTERNAL_CPU

6

HOST_PRIV_NV_PORT

7

HOST_PRIV_PCC_UPDATE

Each state is represented by binary byte in order.

  • 00 – Default

  • 01 – Enabled

  • 02 – Disabled

0x32

0x9B

Byte0 Byte1

Set external host privilege.

Byte0 selects privilege according to the following table:

Byte

Field

0

HOST_PRIV_FLASH_ACCESS

1

HOST_PRIV_FW_UPDATE

2

HOST_PRIV_NIC_RESET

3

HOST_PRIV_NV_GLOBAL

4

HOST_PRIV_NV_HOST

5

HOST_PRIV_NV_INTERNAL_CPU

6

HOST_PRIV_NV_PORT

7

HOST_PRIV_PCC_UPDATE

Byte1 is the value being set.

Supported values:

  • 00 – Default

  • 01 – Enabled

  • 02 – Disabled

Firmware notes
  • The parameter HOST_PRIV_NV_INTERNAL_CPU should either equal the parameter HOST_PRIV_NV_GLOBAL or one of them should be set to DEVICE_DEFAULT.

  • If the parameter HOST_PRIV_FLASH_ACCESS is not set to DEVICE_DEFAULT then the following parameters should all be set to DEVICE_DEFAULT or be equal to the value of HOST_PRIV_FLASH_ACCESSHOST_PRIV_NV_HOST, HOST_PRIV_NV_PORT, HOST_PRIV_NV_GLOBAL, HOST_PRIV_NV_INTERNAL_CPU, HOST_PRIV_PCC_UPDATE, HOST_PRIV_FW_UPDATE.


0x32

0x9C

N/A

Get SmartNIC mode. Prints current configuration: INTERNAL_CPU_OFFLOAD_ENGINE.

  • 00 – Disabled

  • 01 – Enabled

0x32

0x9D

Byte0

Set SmartNIC mode (INTERNAL_CPU_OFFLOAD_ENGINE) to Byte0.

Supported values:

  • 00 – Disabled

  • 01 – Enabled

0x32

0x9E

N/A

Get host access. Prints current HOST_PRIV_RSHIM.

  • 00 – Disabled

  • 01 – Enabled

0x32

0x9F

Byte0

Set host access. Sets HOST_PRIV_RSHIM to Byte0.

Supported values:

  • 00 – Disabled

  • 01 – Enabled

0x32

0xA2

N/A

Query strap options. Prints current state for all fields: 

Byte

Field

0

VERSION

1

DISABLE_INBAND_RECOVER_VALUE

2

PRIMARY_IS_PCORE_1_VALUE

3

2PCORE_ACTIVE_VALUE

4

SOCKET_DIRECT_VALUE

5

PCI_REVERSAL_VALUE

6

PCI_PARTITION_1_VALUE

7

PCI_PARTITION_0_VALUE

8

OSC_FREQ_1_VALUE

9

OSC_FREQ_0_VALUE

10

CORE_BYPASS_N_VALUE

11

FNP_VALUE

12

DISABLE_INBAND_RECOVER_VALUE

13

PRIMARY_IS_PCORE_1_MASK

14

2PCORE_ACTIVE_MASK

15

SOCKET_DIRECT_MASK

16

PCI_REVERSAL_MASK

17

PCI_PARTITION_1_MASK

18

PCI_PARTITION_0_MASK

19

OSC_FREQ_1_MASK

20

OSC_FREQ_0_MASK

21

CORE_BYPASS_N_MASK

22

FNP_MASK

Each state is represented by binary byte in order.

Supported values:

  • 00 – Disabled

  • 01 – Enabled

0x32

0xA3

N/A

Get SmartNIC OS State.

  • 00 – BootRom

  • 01 – BL2

  • 02 – BL31

  • 03 – UEFI

  • 04 – OsStarting

  • 05 – OsIsRunning

  • 06 – LowPowerStandby

  • 07 – FirmwareUpdateInProgress

  • 08 – OsCrashDumpInProgress

  • 09 – OsCrashDumpIsComplete

  • 0A – FWFaultCrashDumpInProgress

  • 0B – FWFaultCrashDumpIsComplete

  • 0C – Invalid

Setting Operation Mode

netfunc

cmd

data

Description

0x32

0x9D

0x1

Set DPU mode

0x32

0x9D

0x0

Set NIC mode

Enabling/Disabling RShim from Host

netfunc

cmd

data

Description

0x32

0x9F

0x1

Enable RShim from host

0x32

0x9F

0x0

Disable RShim from host


Last updated: