nvidia-oem: Implement GetUsbSerialNumber
This command is used by BIOS before creating SMBIOS record
type 42. BIOS gets USBDescription information from BMC.
Note:
The implementation in this PR is for DeviceSerialNumber.
The support for other device descriptors will be added
in upcoming PRs.
Design Document for RHI:
[1] https://gerrit.openbmc.org/c/openbmc/docs/+/79327
Redfish Host Interface specification:
[2] https://www.dmtf.org/sites/default/files/standards/documents/DSP0270_1.3.0.pdf
Tested:
Tested on gb200nvl-obmc platform
root@gb200nvl-obmc:~# ipmitool raw 0x3c 0x31
00
Change-Id: I7a29d8e46d88e4e95142b27eba7d5585fb03bb98
Signed-off-by: Prithvi Pai <ppai@nvidia.com>
diff --git a/oem/nvidia/bootstrap-credentials-oem-cmds.cpp b/oem/nvidia/bootstrap-credentials-oem-cmds.cpp
index 5863306..ba56371 100644
--- a/oem/nvidia/bootstrap-credentials-oem-cmds.cpp
+++ b/oem/nvidia/bootstrap-credentials-oem-cmds.cpp
@@ -37,6 +37,14 @@
return ipmi::responseInvalidFieldRequest();
}
+ipmi::RspType<ipmi::message::Payload> ipmiGetUsbSerialNumber()
+{
+ static constexpr uint8_t usbSerialNumber = 0x00;
+ ipmi::message::Payload usbSerialNumberPayload;
+ usbSerialNumberPayload.pack(usbSerialNumber);
+ return ipmi::responseSuccess(usbSerialNumberPayload);
+}
+
} // namespace ipmi
void registerBootstrapCredentialsOemCommands()
@@ -45,4 +53,9 @@
ipmi::prioOemBase, ipmi::groupNvidia,
ipmi::bootstrap_credentials_oem::cmdGetUsbVendorIdProductId,
ipmi::Privilege::Admin, ipmi::ipmiGetUsbVendorIdProductId);
+
+ ipmi::registerHandler(
+ ipmi::prioOemBase, ipmi::groupNvidia,
+ ipmi::bootstrap_credentials_oem::cmdGetUsbSerialNumber,
+ ipmi::Privilege::Admin, ipmi::ipmiGetUsbSerialNumber);
}