NIC Subsystem Management
This content is relevant for BlueField-3 devices only.
Get Operation Mode
            
            curl -k -u root:'<password>' -X GET https://<bmc_ip>/redfish/v1/Systems/Bluefield/Oem/Nvidia
    
See status under Mode.
    
    
        
Change to DPU Mode
            
            curl -k -u root:'<password>' -H "Content-Type: application/json" -X POST -d '{"Mode":"DpuMode"}' https://<bmc_ip>/redfish/v1/Systems/Bluefield/Oem/Nvidia/Actions/Mode.Set
    
    
    
        
Change to NIC Mode
            
            curl -k -u root:'<password>' -H "Content-Type: application/json" -X POST -d '{"Mode":"NicMode"}' https://<bmc_ip>/redfish/v1/Systems/Bluefield/Oem/Nvidia/Actions/Mode.Set
    
    
    
        
Get Host RShim
            
            curl -k -u root:'<password>' -X GET https://<bmc_ip>/redfish/v1/Systems/Bluefield/Oem/Nvidia
    
    
    
        
Host RShim Enable
            
            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
    
    
    
        
Host RShim Disable
            
            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
    
    
    
        
Get Strap Options
            
            curl -k -u root:'<password>' -X GET https://<bmc_ip>/redfish/v1/Systems/Bluefield/Oem/Nvidia/Connectx/StrapOptions
    
    
    
        
Get External Host Privileges
            
            curl -k -u root:'<password>' -X GET https://<bmc_ip>/redfish/v1/Systems/Bluefield/Oem/Nvidia/Connectx/ExternalHostPrivileges
    
    
    
        
Set 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
    
- Currently, firmware does not support the parameters HOST_PRIV_FLASH_ACCESS and HOST_PRIV_PCC_UPDATE. Their value should stay as DEVICE_DEFAULT. 
- 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_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. 
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 DPU 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: 
 Each state is represented by binary byte in order. 
 | ||||||||||||||||||||||||||||||||||||||||||||||||
| 0x32 | 0x9B | Byte0 Byte1 | Set external host privilege. Byte0 selects privilege according to the following table: 
 Byte1 is the value being set. Supported values: 
 Note 
 
 | ||||||||||||||||||||||||||||||||||||||||||||||||
| 0x32 | 0x9C | N/A | Get SmartNIC mode. Prints current configuration: INTERNAL_CPU_OFFLOAD_ENGINE. 
 | ||||||||||||||||||||||||||||||||||||||||||||||||
| 0x32 | 0x9D | Byte0 | Set SmartNIC mode (INTERNAL_CPU_OFFLOAD_ENGINE) to Byte0. Supported values: 
 | ||||||||||||||||||||||||||||||||||||||||||||||||
| 0x32 | 0x9E | N/A | Get host access. Prints current HOST_PRIV_RSHIM. 
 | ||||||||||||||||||||||||||||||||||||||||||||||||
| 0x32 | 0x9F | Byte0 | Set host access. Sets HOST_PRIV_RSHIM to Byte0. Supported values: 
 | ||||||||||||||||||||||||||||||||||||||||||||||||
| 0x32 | 0xA2 | N/A | Query strap options. Prints current state for all fields: 
 Each state is represented by binary byte in order. Supported values: 
 | ||||||||||||||||||||||||||||||||||||||||||||||||
| 0x32 | 0xA3 | N/A | Get SmartNIC OS State. 
 | 
Changing Operation Mode
| netfunc | cmd | data | Description | 
| 0x32 | 0x9D | 0x1 | Change to DPU mode | 
| 0x32 | 0x9D | 0x0 | Change to NIC mode | 
Enable/Disable RShim from Host
| netfunc | cmd | data | Description | 
| 0x32 | 0x9F | 0x1 | Enable RShim from host | 
| 0x32 | 0x9F | 0x0 | Disable RShim from host |