From 0cfc19e6565d8e3a1aa563c59edb347f9128026f Mon Sep 17 00:00:00 2001 From: "Jason M. Bills" Date: Mon, 8 Mar 2021 14:14:22 -0800 Subject: Update to internal 0.35 Signed-off-by: Jason M. Bills --- .../0010-fix-get-system-GUID-ipmi-command.patch | 8 +- ...3-Fix-keep-looping-issue-when-entering-OS.patch | 10 +- ...-SetInProgress-to-get-set-boot-option-cmd.patch | 102 ------------------ ...ve-Set-SOL-config-parameter-to-host-ipmid.patch | 10 +- ...ve-Get-SOL-config-parameter-to-host-ipmid.patch | 12 +-- .../0062-Update-IPMI-Chassis-Control-command.patch | 16 +-- ...he-pre-timeout-interrupt-in-dbus-property.patch | 34 +++--- ...-IPv6-Router-Address-Configuration-comman.patch | 120 +++++++++++++++++++++ .../ipmi/phosphor-ipmi-host_%.bbappend | 2 +- 9 files changed, 166 insertions(+), 148 deletions(-) delete mode 100644 meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0056-add-SetInProgress-to-get-set-boot-option-cmd.patch create mode 100644 meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0064-Correct-the-IPv6-Router-Address-Configuration-comman.patch (limited to 'meta-openbmc-mods/meta-common/recipes-phosphor/ipmi') diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0010-fix-get-system-GUID-ipmi-command.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0010-fix-get-system-GUID-ipmi-command.patch index ccf326a91..a7d09f61e 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0010-fix-get-system-GUID-ipmi-command.patch +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0010-fix-get-system-GUID-ipmi-command.patch @@ -1,4 +1,4 @@ -From c1925ab965271875d4e9333be85cdfe8e1516948 Mon Sep 17 00:00:00 2001 +From f18efe239cb4bbfd6996f753ae694f81041d8d43 Mon Sep 17 00:00:00 2001 From: Vernon Mauery Date: Fri, 14 Feb 2020 13:13:06 -0800 Subject: [PATCH] Fix 'Get System GUID' to use settings UUID @@ -15,10 +15,10 @@ Signed-off-by: Vernon Mauery 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/apphandler.cpp b/apphandler.cpp -index dcfda11..780afbc 100644 +index 90818a9..dcf2c86 100644 --- a/apphandler.cpp +++ b/apphandler.cpp -@@ -784,8 +784,6 @@ auto ipmiAppGetBtCapabilities() +@@ -788,8 +788,6 @@ auto ipmiAppGetBtCapabilities() auto ipmiAppGetSystemGuid() -> ipmi::RspType> { @@ -27,7 +27,7 @@ index dcfda11..780afbc 100644 static constexpr auto uuidInterface = "xyz.openbmc_project.Common.UUID"; static constexpr auto uuidProperty = "UUID"; -@@ -794,7 +792,7 @@ auto ipmiAppGetSystemGuid() -> ipmi::RspType> +@@ -798,7 +796,7 @@ auto ipmiAppGetSystemGuid() -> ipmi::RspType> { // Get the Inventory object implementing BMC interface auto busPtr = getSdBus(); diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0053-Fix-keep-looping-issue-when-entering-OS.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0053-Fix-keep-looping-issue-when-entering-OS.patch index 7a7fd0859..941e356ed 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0053-Fix-keep-looping-issue-when-entering-OS.patch +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0053-Fix-keep-looping-issue-when-entering-OS.patch @@ -1,4 +1,4 @@ -From ad93a6e17310d92ef07b8d367b23c93793562d0f Mon Sep 17 00:00:00 2001 +From 58771a22dfcaa1e67bcf4fc0bd2ce0aa28c67e3f Mon Sep 17 00:00:00 2001 From: Cheng C Yang Date: Wed, 23 Jan 2019 17:02:40 +0800 Subject: [PATCH] Fix keep looping issue when entering OS @@ -16,11 +16,11 @@ normally without keep sending READ EVENT MESSAGE BUFFER command. After power on system, enter EFI SHELL, check cmdtool.efi can work correctly through KCS channel. --- - host-cmd-manager.cpp | 24 ++++++++++++++++++------ - 1 file changed, 18 insertions(+), 6 deletions(-) + host-cmd-manager.cpp | 33 ++++++++++++++++++++++++--------- + 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/host-cmd-manager.cpp b/host-cmd-manager.cpp -index f3aba7f..465eb81 100644 +index e52c9bb..b3a5d71 100644 --- a/host-cmd-manager.cpp +++ b/host-cmd-manager.cpp @@ -23,6 +23,8 @@ namespace command @@ -85,5 +85,5 @@ index f3aba7f..465eb81 100644 log("Error in setting SMS attention"); elog(); -- -2.7.4 +2.17.1 diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0056-add-SetInProgress-to-get-set-boot-option-cmd.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0056-add-SetInProgress-to-get-set-boot-option-cmd.patch deleted file mode 100644 index 862e9baa8..000000000 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0056-add-SetInProgress-to-get-set-boot-option-cmd.patch +++ /dev/null @@ -1,102 +0,0 @@ -From d5cfc5a0aaa50cc94054886e5cb7be25ef167c71 Mon Sep 17 00:00:00 2001 -From: huanghe -Date: Sat, 10 Oct 2020 14:40:00 +0800 -Subject: [PATCH 7/7] Add set in progress paramter to set/get boot option - command - -Signed-off-by: huanghe ---- - chassishandler.cpp | 34 ++++++++++++++++++++++++++++++++++ - chassishandler.hpp | 3 +++ - 2 files changed, 37 insertions(+) - -diff --git a/chassishandler.cpp b/chassishandler.cpp -index f043340..322aa9e 100644 ---- a/chassishandler.cpp -+++ b/chassishandler.cpp -@@ -1564,6 +1564,10 @@ static ipmi::Cc setBootMode(const Mode::Modes& mode) - return ipmi::ccSuccess; - } - -+static constexpr uint8_t setComplete = 0x0; -+static constexpr uint8_t setInProgress = 0x1; -+static uint8_t transferStatus = setComplete; -+ - /** @brief implements the Get Chassis system boot option - * @param bootOptionParameter - boot option parameter selector - * @param reserved1 - reserved bit -@@ -1598,6 +1602,14 @@ ipmi::RspType - - IpmiValue bootOption = ipmiDefault; - -+ -+ if (static_cast(bootOptionParameter) == -+ static_cast(BootOptionParameter::setInProgress)) -+ { -+ response.pack(bootOptionParameter,reserved1,transferStatus); -+ return ipmi::responseSuccess(std::move(response)); -+ } -+ - /* - * Parameter #5 means boot flags. Please refer to 28.13 of ipmi doc. - * This is the only parameter used by petitboot. -@@ -1719,6 +1731,28 @@ ipmi::RspType<> ipmiChassisSetSysBootOptions(ipmi::Context::ptr ctx, - using namespace boot_options; - ipmi::Cc rc; - -+ if (parameterSelector == -+ static_cast(BootOptionParameter::setInProgress)) -+ { -+ uint2_t setInProgressFlag; -+ uint6_t rsvd; -+ if (data.unpack(setInProgressFlag,rsvd) != 0 || -+ !data.fullyUnpacked()) -+ { -+ return ipmi::responseReqDataLenInvalid(); -+ } -+ if (rsvd) -+ { -+ return ipmi::responseInvalidFieldRequest(); -+ } -+ if ((transferStatus == setInProgress) && -+ ((uint8_t)setInProgressFlag != setComplete)) -+ { -+ return ipmi::response(IPMI_CC_FAIL_SET_IN_PROGRESS); -+ } -+ transferStatus = (uint8_t)setInProgressFlag; -+ } -+ - /* 000101 - * Parameter #5 means boot flags. Please refer to 28.13 of ipmi doc. - * This is the only parameter used by petitboot. -diff --git a/chassishandler.hpp b/chassishandler.hpp -index 93de2c0..5976abc 100644 ---- a/chassishandler.hpp -+++ b/chassishandler.hpp -@@ -25,6 +25,7 @@ enum ipmi_chassis_return_codes - { - IPMI_OK = 0x0, - IPMI_CC_PARM_NOT_SUPPORTED = 0x80, -+ IPMI_CC_FAIL_SET_IN_PROGRESS = 0x81, - }; - - // Generic completion codes, -@@ -46,6 +47,7 @@ enum ipmi_chassis_control_cmds : uint8_t - }; - enum class BootOptionParameter : size_t - { -+ setInProgress= 0x0, - bootInfo = 0x4, - bootFlags = 0x5, - opalNetworkSettings = 0x61 -@@ -53,6 +55,7 @@ enum class BootOptionParameter : size_t - - enum class BootOptionResponseSize : size_t - { -+ setInProgress = 3, - bootFlags = 5, - opalNetworkSettings = 50 - }; --- -2.17.1 - diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0059-Move-Set-SOL-config-parameter-to-host-ipmid.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0059-Move-Set-SOL-config-parameter-to-host-ipmid.patch index bc8c72f13..ba8896195 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0059-Move-Set-SOL-config-parameter-to-host-ipmid.patch +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0059-Move-Set-SOL-config-parameter-to-host-ipmid.patch @@ -1,7 +1,7 @@ -From 1c8cb6b7c99ad85f470aa87095fcfb4de822ddb1 Mon Sep 17 00:00:00 2001 +From 9f4fb8a6aa076261b19c187aeef840d818158ec7 Mon Sep 17 00:00:00 2001 From: Cheng C Yang Date: Wed, 16 Oct 2019 14:24:20 +0800 -Subject: [PATCH 1/1] Move Set SOL config parameter to host-ipmid +Subject: [PATCH] Move Set SOL config parameter to host-ipmid Move Set SOL config parameter command from net-ipmid to host-ipmid, so that BIOS in Intel platform can enable or disable SOL through KCS. @@ -40,10 +40,10 @@ index 5397115..c93f3b1 100644 0x2C:0x01 //: 0x2C:0x02 //: diff --git a/transporthandler.cpp b/transporthandler.cpp -index 61065ad..59e38ea 100644 +index 0012746..0de76c4 100644 --- a/transporthandler.cpp +++ b/transporthandler.cpp -@@ -1469,8 +1469,298 @@ RspType getLan(uint4_t channelBits, uint3_t, bool revOnly, +@@ -2030,8 +2030,298 @@ RspType getLan(Context::ptr ctx, uint4_t channelBits, } // namespace transport } // namespace ipmi @@ -342,7 +342,7 @@ index 61065ad..59e38ea 100644 void register_netfn_transport_functions() { ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnTransport, -@@ -1479,4 +1769,8 @@ void register_netfn_transport_functions() +@@ -2040,4 +2330,8 @@ void register_netfn_transport_functions() ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnTransport, ipmi::transport::cmdGetLanConfigParameters, ipmi::Privilege::Operator, ipmi::transport::getLan); diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0060-Move-Get-SOL-config-parameter-to-host-ipmid.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0060-Move-Get-SOL-config-parameter-to-host-ipmid.patch index 61ac5fede..d6ba70562 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0060-Move-Get-SOL-config-parameter-to-host-ipmid.patch +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0060-Move-Get-SOL-config-parameter-to-host-ipmid.patch @@ -1,7 +1,7 @@ -From b5400c4bc756a800fbeb4cc53117956fb59dc57d Mon Sep 17 00:00:00 2001 +From ff1d4198e8ad8f824f34fb9d261ea0e25179f070 Mon Sep 17 00:00:00 2001 From: Cheng C Yang Date: Thu, 11 Jul 2019 00:32:58 +0800 -Subject: [PATCH 1/1] Move Get SOL config parameter to host-ipmid +Subject: [PATCH] Move Get SOL config parameter to host-ipmid Move Get SOL config parameter command from net-ipmid to host-ipmid. @@ -41,10 +41,10 @@ index c93f3b1..730437d 100644 0x2C:0x01 //: 0x2C:0x02 //: diff --git a/transporthandler.cpp b/transporthandler.cpp -index 59e38ea..b64953f 100644 +index 0de76c4..b81e0d5 100644 --- a/transporthandler.cpp +++ b/transporthandler.cpp -@@ -1559,6 +1559,28 @@ static int getSOLParameter(const std::string& property, ipmi::Value& value, +@@ -2120,6 +2120,28 @@ static int getSOLParameter(const std::string& property, ipmi::Value& value, return 0; } @@ -73,7 +73,7 @@ index 59e38ea..b64953f 100644 static const constexpr uint8_t encryptMask = 0x80; static const constexpr uint8_t encryptShift = 7; static const constexpr uint8_t authMask = 0x40; -@@ -1761,6 +1783,171 @@ ipmi::RspType<> setSOLConfParams(ipmi::Context::ptr ctx, uint4_t chNum, +@@ -2322,6 +2344,171 @@ ipmi::RspType<> setSOLConfParams(ipmi::Context::ptr ctx, uint4_t chNum, return ipmi::responseSuccess(); } @@ -245,7 +245,7 @@ index 59e38ea..b64953f 100644 void register_netfn_transport_functions() { ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnTransport, -@@ -1773,4 +1960,8 @@ void register_netfn_transport_functions() +@@ -2334,4 +2521,8 @@ void register_netfn_transport_functions() ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnTransport, ipmi::transport::cmdSetSolConfigParameters, ipmi::Privilege::Admin, setSOLConfParams); diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0062-Update-IPMI-Chassis-Control-command.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0062-Update-IPMI-Chassis-Control-command.patch index 96e45cad3..bf1928825 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0062-Update-IPMI-Chassis-Control-command.patch +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0062-Update-IPMI-Chassis-Control-command.patch @@ -1,4 +1,4 @@ -From 92bdbcd90a445e49ba2f8e483d44ec41152d32b4 Mon Sep 17 00:00:00 2001 +From 16eb5d80893406739518e7a56eb5191aa7e68257 Mon Sep 17 00:00:00 2001 From: "Jason M. Bills" Date: Mon, 3 Jun 2019 17:01:47 -0700 Subject: [PATCH] Update IPMI Chassis Control command @@ -21,11 +21,11 @@ ipmitool power soft: soft power-off requested from system software Change-Id: Ic9fba3ca4abd9a758eb88f1e6ee09f7ca64ff80a Signed-off-by: Jason M. Bills --- - chassishandler.cpp | 206 +++++++++++++---------------------------------------- + chassishandler.cpp | 206 +++++++++++---------------------------------- 1 file changed, 50 insertions(+), 156 deletions(-) diff --git a/chassishandler.cpp b/chassishandler.cpp -index 0326806..8bfab88 100644 +index 4ca981d..cd0a13d 100644 --- a/chassishandler.cpp +++ b/chassishandler.cpp @@ -31,6 +31,7 @@ @@ -36,7 +36,7 @@ index 0326806..8bfab88 100644 #include #include -@@ -717,59 +718,63 @@ ipmi::RspType<> ipmiSetChassisCap(bool intrusion, bool fpLockout, +@@ -813,59 +814,63 @@ ipmi::RspType<> ipmiSetChassisCap(bool intrusion, bool fpLockout, //------------------------------------------ // Calls into Host State Manager Dbus object //------------------------------------------ @@ -137,8 +137,8 @@ index 0326806..8bfab88 100644 } //------------------------------------------ -@@ -1071,76 +1076,6 @@ ipmi::RspType ipmiChassisControl(uint8_t chassisControl) +@@ -1380,63 +1315,22 @@ ipmi::RspType<> ipmiChassisControl(uint8_t chassisControl) switch (chassisControl) { case CMD_POWER_ON: @@ -287,5 +287,5 @@ index 0326806..8bfab88 100644 rc = setNmiProperty(true); break; -- -2.7.4 +2.17.1 diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0063-Save-the-pre-timeout-interrupt-in-dbus-property.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0063-Save-the-pre-timeout-interrupt-in-dbus-property.patch index aac0850ea..d0f9331d2 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0063-Save-the-pre-timeout-interrupt-in-dbus-property.patch +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0063-Save-the-pre-timeout-interrupt-in-dbus-property.patch @@ -1,4 +1,4 @@ -From d9c89943d7b0aa00ee99b7c11278ac272a47a790 Mon Sep 17 00:00:00 2001 +From cfb5e13388531e1317eeb3ccf0f8eef0c6eeca60 Mon Sep 17 00:00:00 2001 From: Ren Yu Date: Tue, 28 May 2019 17:11:17 +0800 Subject: [PATCH] Save the pre-timeout interrupt in dbus property @@ -16,24 +16,24 @@ https://BMCIP/redfish/v1/Systems/system/LogServices/EventLog/Entries Signed-off-by: Ren Yu --- - app/watchdog.cpp | 47 +++++++++++++++++++++++++++++++++++++++++++++++ - app/watchdog_service.cpp | 6 ++++++ - app/watchdog_service.hpp | 9 +++++++++ + app/watchdog.cpp | 47 ++++++++++++++++++++++++++++++++++++++++ + app/watchdog_service.cpp | 6 +++++ + app/watchdog_service.hpp | 9 ++++++++ 3 files changed, 62 insertions(+) diff --git a/app/watchdog.cpp b/app/watchdog.cpp -index 2ffaae3..e9b7a9c 100644 +index 03c373e..cb0b1fd 100644 --- a/app/watchdog.cpp +++ b/app/watchdog.cpp -@@ -81,6 +81,7 @@ ipmi::RspType<> ipmiAppResetWatchdogTimer() +@@ -80,6 +80,7 @@ ipmi::RspType<> ipmiAppResetWatchdogTimer() static constexpr uint8_t wd_dont_stop = 0x1 << 6; static constexpr uint8_t wd_timeout_action_mask = 0x3; +static constexpr uint8_t wdPreTimeoutInterruptMask = 0x3; - static constexpr uint8_t wdTimerUseMask = 0x7; static constexpr uint8_t wdTimerUseResTimer1 = 0x0; -@@ -130,6 +131,45 @@ WatchdogService::Action ipmiActionToWdAction(IpmiAction ipmi_action) + static constexpr uint8_t wdTimerUseResTimer2 = 0x6; +@@ -127,6 +128,45 @@ WatchdogService::Action ipmiActionToWdAction(IpmiAction ipmi_action) } } @@ -79,7 +79,7 @@ index 2ffaae3..e9b7a9c 100644 enum class IpmiTimerUse : uint8_t { Reserved = 0x0, -@@ -257,6 +297,13 @@ ipmi_ret_t ipmi_app_watchdog_set(ipmi_netfn_t netfn, ipmi_cmd_t cmd, +@@ -250,6 +290,13 @@ ipmi::RspType<> // Mark as initialized so that future resets behave correctly wd_service.setInitialized(true); @@ -91,15 +91,15 @@ index 2ffaae3..e9b7a9c 100644 + ipmiPreTimeoutInterruptToWdAction(ipmiPreTimeoutInterrupt)); + lastCallSuccessful = true; - return IPMI_CC_OK; + return ipmi::responseSuccess(); } diff --git a/app/watchdog_service.cpp b/app/watchdog_service.cpp -index 77663b4..0c4ea28 100644 +index 3534e89..4df1ab6 100644 --- a/app/watchdog_service.cpp +++ b/app/watchdog_service.cpp -@@ -203,3 +203,9 @@ void WatchdogService::setTimeRemaining(uint64_t timeRemaining) +@@ -198,3 +198,9 @@ void WatchdogService::setInterval(uint64_t interval) { - setProperty("TimeRemaining", timeRemaining); + setProperty("Interval", interval); } + +void WatchdogService::setPreTimeoutInterrupt( @@ -109,7 +109,7 @@ index 77663b4..0c4ea28 100644 +} \ No newline at end of file diff --git a/app/watchdog_service.hpp b/app/watchdog_service.hpp -index ed64a3c..b550f37 100644 +index 141bdb7..32b7461 100644 --- a/app/watchdog_service.hpp +++ b/app/watchdog_service.hpp @@ -15,6 +15,8 @@ class WatchdogService @@ -121,9 +121,9 @@ index ed64a3c..b550f37 100644 using TimerUse = sdbusplus::xyz::openbmc_project::State::server::Watchdog::TimerUse; -@@ -99,6 +101,13 @@ class WatchdogService +@@ -92,6 +94,13 @@ class WatchdogService */ - void setTimeRemaining(uint64_t timeRemaining); + void setInterval(uint64_t interval); + /** @brief Sets the value of the PreTimeoutInterrupt property on the host + * watchdog @@ -136,5 +136,5 @@ index ed64a3c..b550f37 100644 /** @brief sdbusplus handle */ sdbusplus::bus::bus bus; -- -2.7.4 +2.17.1 diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0064-Correct-the-IPv6-Router-Address-Configuration-comman.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0064-Correct-the-IPv6-Router-Address-Configuration-comman.patch new file mode 100644 index 000000000..658f0d8b7 --- /dev/null +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0064-Correct-the-IPv6-Router-Address-Configuration-comman.patch @@ -0,0 +1,120 @@ +From 4d7c0f704df21912fa447caca4dbba246d1b80f6 Mon Sep 17 00:00:00 2001 +From: Johnathan Mantey +Date: Tue, 26 Jan 2021 14:24:53 -0800 +Subject: [PATCH] Correct the IPv6 Router Address Configuration command + +The IPv6 Router Address Configuration Get/Set LAN command was not +reporting or modifying the correct portion of the networking +system. This command is intended to configure the Routing +Advertisement feature of IPv6. It is not a direct reflection of the +DHCP state. + +Systemd-networkd manages the Routing Advertisement via the +IPv6AcceptRA parameter, which according to the networkd documentaion, +enables/disables IPv6 DHCP functionality. + +Tested: +Issued "ipmitool raw 12 2 3 64 0 0" and was able to read the current +state of the IPv6AcceptRA variable. +Issued "ipmitool raw 12 1 3 64 2" and saw the configuration file for +the channel change, and the addition of a new IPv6 address to the +network device. +Issued "ipmitool raw 12 1 3 64 0" and saw that configuration file for +the channel change, and the removal of the IPv6 address from the +network device. + +Change-Id: Id01441f88ccc9d56449ab8115f4855de74e80cfc +Signed-off-by: Johnathan Mantey +--- + transporthandler.cpp | 61 ++++++++++++++++++++++++-------------------- + 1 file changed, 34 insertions(+), 27 deletions(-) + +diff --git a/transporthandler.cpp b/transporthandler.cpp +index b81e0d5..50343c7 100644 +--- a/transporthandler.cpp ++++ b/transporthandler.cpp +@@ -1260,6 +1260,35 @@ SetStatus& getSetStatus(uint8_t channel) + return setStatus[channel] = SetStatus::Complete; + } + ++/** @brief Gets the IPv6 Router Advertisement value ++ * ++ * @param[in] bus - The bus object used for lookups ++ * @param[in] params - The parameters for the channel ++ * @return networkd IPV6AcceptRA value ++ */ ++static bool getIPv6AcceptRA(sdbusplus::bus::bus& bus, ++ const ChannelParams& params) ++{ ++ auto raEnabled = ++ std::get(getDbusProperty(bus, params.service, params.logicalPath, ++ INTF_ETHERNET, "IPv6AcceptRA")); ++ return raEnabled; ++} ++ ++/** @brief Sets the IPv6AcceptRA flag ++ * ++ * @param[in] bus - The bus object used for lookups ++ * @param[in] params - The parameters for the channel ++ * @param[in] ipv6AcceptRA - boolean to enable/disable IPv6 Routing ++ * Advertisement ++ */ ++void setIPv6AcceptRA(sdbusplus::bus::bus& bus, const ChannelParams& params, ++ const bool ipv6AcceptRA) ++{ ++ setDbusProperty(bus, params.service, params.logicalPath, INTF_ETHERNET, ++ "IPv6AcceptRA", ipv6AcceptRA); ++} ++ + /** + * Define placeholder command handlers for the OEM Extension bytes for the Set + * LAN Configuration Parameters and Get LAN Configuration Parameters +@@ -1629,22 +1658,8 @@ RspType<> setLan(Context::ptr ctx, uint4_t channelBits, uint4_t reserved1, + { + return responseReqDataLenInvalid(); + } +- std::bitset<8> expected; +- EthernetInterface::DHCPConf dhcp = +- channelCall(channel); +- if ((dhcp == EthernetInterface::DHCPConf::both) | +- (dhcp == EthernetInterface::DHCPConf::v6)) +- { +- expected[IPv6RouterControlFlag::Dynamic] = 1; +- } +- else +- { +- expected[IPv6RouterControlFlag::Static] = 1; +- } +- if (expected != control) +- { +- return responseInvalidFieldRequest(); +- } ++ bool enableRA = control[IPv6RouterControlFlag::Dynamic]; ++ channelCall(channel, enableRA); + return responseSuccess(); + } + case LanParam::IPv6StaticRouter1IP: +@@ -1948,17 +1963,9 @@ RspType getLan(Context::ptr ctx, uint4_t channelBits, + case LanParam::IPv6RouterControl: + { + std::bitset<8> control; +- EthernetInterface::DHCPConf dhcp = +- channelCall(channel); +- if ((dhcp == EthernetInterface::DHCPConf::both) || +- (dhcp == EthernetInterface::DHCPConf::v6)) +- { +- control[IPv6RouterControlFlag::Dynamic] = 1; +- } +- else +- { +- control[IPv6RouterControlFlag::Static] = 1; +- } ++ control[IPv6RouterControlFlag::Dynamic] = ++ channelCall(channel); ++ control[IPv6RouterControlFlag::Static] = 0; + ret.pack(control); + return responseSuccess(std::move(ret)); + } +-- +2.26.2 + diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend index a3debae71..81cb43ebe 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend @@ -4,11 +4,11 @@ PROJECT_SRC_DIR := "${THISDIR}/${PN}" SRC_URI += "file://phosphor-ipmi-host.service \ file://0010-fix-get-system-GUID-ipmi-command.patch \ file://0053-Fix-keep-looping-issue-when-entering-OS.patch \ - file://0056-add-SetInProgress-to-get-set-boot-option-cmd.patch \ file://0059-Move-Set-SOL-config-parameter-to-host-ipmid.patch \ file://0060-Move-Get-SOL-config-parameter-to-host-ipmid.patch \ file://0062-Update-IPMI-Chassis-Control-command.patch \ file://0063-Save-the-pre-timeout-interrupt-in-dbus-property.patch \ + file://0064-Correct-the-IPv6-Router-Address-Configuration-comman.patch \ " EXTRA_OECONF_append = " --disable-i2c-whitelist-check" -- cgit v1.2.3