Disable Idle Power Saver support in efficiency modes
IPS will not be published on DBUS when the PowerMode is set to one of
the newer efficiency modes:
EfficiencyFavorPower
EfficiencyFavorPerformance (OEM only)
This will prevent the Redfish interface from allowing GET/PATCH
commands and provides a way for the GUI to know when to suppress
B
displaying the parameters on the customer GUI.
Testing:
Verified on Rainier.
When in a non-efficiency mode, the Redfish query returns IPS data:
(GET /redfish/v1/Systems/system)
'''
...
"Id": "system",
"IdlePowerSaver": {
"Enabled": true,
"EnterDwellTimeSeconds": 240,
"EnterUtilizationPercent": 8,
"ExitDwellTimeSeconds": 10,
"ExitUtilizationPercent": 12
},
"IndicatorLED": "Off",
...
'''
When in an efficiency mode, the Redfish query does not return IPS data.
'''
...
"Id": "system",
"IndicatorLED": "Off",
...
'''
Verified across re-ipls, OCC resets, app restarts.
Change-Id: I45bb0d8e97dab33a1a66c0d791f7bb4848bfce41
Signed-off-by: Chris Cain <cjcain@us.ibm.com>
diff --git a/occ_status.cpp b/occ_status.cpp
index 7d654b9..4b6e276 100644
--- a/occ_status.cpp
+++ b/occ_status.cpp
@@ -251,6 +251,10 @@
{
CmdStatus status = CmdStatus::SUCCESS;
+ // IPS data will get sent automatically after a mode change if the mode
+ // supports it.
+ pmode->needToSendIPS();
+
status = pmode->sendModeChange();
if (status != CmdStatus::SUCCESS)
{
@@ -263,22 +267,6 @@
// Disable and reset to try recovering
deviceError();
}
-
- status = pmode->sendIpsData();
- if (status != CmdStatus::SUCCESS)
- {
- log<level::ERR>(
- std::format(
- "Status::occsWentActive: Sending Idle Power Save Config data failed with status {}",
- status)
- .c_str());
-
- if (status == CmdStatus::COMM_FAILURE)
- {
- // Disable and reset to try recovering
- deviceError();
- }
- }
}
// Send Ambient and Altitude to the OCC