summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMyung Bae <myungbae@us.ibm.com>2022-11-17 02:40:40 +0300
committerMyung Bae <myungbae@us.ibm.com>2023-01-19 01:41:37 +0300
commit703f67418ae1915e49ac32d475de872da3ab2819 (patch)
treed824bac5faeb9cbf69037d8b3f65da97f7330212
parent3ccb3adb9a14783f6bef601506de9f8bcae22d51 (diff)
downloadbmcweb-703f67418ae1915e49ac32d475de872da3ab2819.tar.xz
Add Get for PCIe property LanesInUse
Added Redfish property 'LanesInUse' to PCIeDevices under redfish/v1/Systems. LanesInUse maps to dbus LanesInUse property for the Inventory.Item.PCIeDevice interface. Note: GUI might map this property to 'LinkWidth' Tested: 1) Redfish validator passed 2) Curl testing curl -k <token> \ https://$bmc/redfish/v1/Systems/system/PCIeDevices/pcie_card8 { "@odata.id": "/redfish/v1/Systems/system/PCIeDevices/pcie_card8", "@odata.type": "#PCIeDevice.v1_9_0.PCIeDevice", ... "PCIeInterface": { "LanesInUse": 16, "PCIeType": "Gen4" }, ... } Signed-off-by: Myung Bae <myungbae@us.ibm.com> Change-Id: I896abe44f55414f25d01c5a93a31bb585264657e
-rw-r--r--Redfish.md5
-rw-r--r--redfish-core/lib/pcie.hpp11
2 files changed, 15 insertions, 1 deletions
diff --git a/Redfish.md b/Redfish.md
index cc714eb349..3f65de81df 100644
--- a/Redfish.md
+++ b/Redfish.md
@@ -768,6 +768,11 @@ other.
- Members
- Members@odata.count
+### /redfish/v1/Systems/system/PCIeDevices/{PCIeDevice}/
+
+- PCIeInterface
+ - LanesInUse
+
### /redfish/v1/Systems/system/Processors/
#### ProcessorCollection
diff --git a/redfish-core/lib/pcie.hpp b/redfish-core/lib/pcie.hpp
index c91e52dd48..77afd0acd6 100644
--- a/redfish-core/lib/pcie.hpp
+++ b/redfish-core/lib/pcie.hpp
@@ -192,11 +192,12 @@ inline void requestRoutesSystemPCIeDevice(App& app)
const std::string* manufacturer = nullptr;
const std::string* deviceType = nullptr;
const std::string* generationInUse = nullptr;
+ const size_t* lanesInUse = nullptr;
const bool success = sdbusplus::unpackPropertiesNoThrow(
dbus_utils::UnpackErrorPrinter(), pcieDevProperties,
"Manufacturer", manufacturer, "DeviceType", deviceType,
- "GenerationInUse", generationInUse);
+ "LanesInUse", lanesInUse, "GenerationInUse", generationInUse);
if (!success)
{
@@ -204,6 +205,14 @@ inline void requestRoutesSystemPCIeDevice(App& app)
return;
}
+ // The default value of LanesInUse is 0, and the field will be
+ // left as off if it is a default value.
+ if (lanesInUse != nullptr && *lanesInUse != 0)
+ {
+ asyncResp->res.jsonValue["PCIeInterface"]["LanesInUse"] =
+ *lanesInUse;
+ }
+
if (generationInUse != nullptr)
{
std::optional<pcie_device::PCIeTypes> redfishGenerationInUse =