openbmc/phosphor-host-ipmid

Unable to execute `lan set 1 access off` IPMI command on the AMD EthanolX board

Kostr opened this issue · 0 comments

Kostr commented

I was woking with the openbmc-test-automation framework and have noticed that one of the tests fails on my AMD EthanolX board. The test was executing lan set 1 access off IPMI command. I've checked it on the BMC side and have discovered that the behaviour is persistent:

root@ethanolx:~# ipmitool -C 17 -p 623 lan set 1 access off
IPMI command failed: Unspecified error
Unable to Set Channel Access(non-volatile) for channel 1

The channel 1 is working and it is:

  "1" : {
    "name" : "eth0",
    "is_valid" : true,
    "active_sessions" : 0,
    "channel_info" : {
      "medium_type" : "lan-802.3",
      "protocol_type" : "ipmb-1.0",
      "session_supported" : "multi-session",
      "is_ipmi" : true
    }
  },

The error comes from the setChannelAccessPersistData function

Cc ChannelConfig::setChannelAccessPersistData(const uint8_t chNum,

From this part of code:

            if (0 != setDbusProperty(networkIntfServiceName, networkIntfObj,
                                     networkChConfigIntfName,
                                     privilegePropertyString, privStr))
            {
                log<level::DEBUG>(
                    "Network interface does not exist",
                    entry("INTERFACE=%s", channelData[chNum].chName.c_str()));
                return ccUnspecifiedError;
            }

Here are the constants:

// TODO: Get the service name dynamically..
static constexpr const char* networkIntfServiceName =
    "xyz.openbmc_project.Network";
static constexpr const char* networkIntfObjectBasePath =
    "/xyz/openbmc_project/network";
static constexpr const char* networkChConfigIntfName =
    "xyz.openbmc_project.Channel.ChannelAccess";
static constexpr const char* privilegePropertyString = "MaxPrivilege";
static constexpr const char* dBusPropertiesInterface =
    "org.freedesktop.DBus.Properties";
static constexpr const char* propertiesChangedSignal = "PropertiesChanged";

So the setDbusProperty call looks for xyz.openbmc_project.Channel.ChannelAccess interface, but it appears that there is no such interface on my machine:

root@ethanolx:~# busctl tree xyz.openbmc_project.Network
└─/xyz
  └─/xyz/openbmc_project
    └─/xyz/openbmc_project/network
      ├─/xyz/openbmc_project/network/config
      │ └─/xyz/openbmc_project/network/config/dhcp
      ├─/xyz/openbmc_project/network/eth0
      │ ├─/xyz/openbmc_project/network/eth0/ipv4
      │ │ ├─/xyz/openbmc_project/network/eth0/ipv4/548b9294
      │ │ └─/xyz/openbmc_project/network/eth0/ipv4/f808aaa2
      │ └─/xyz/openbmc_project/network/eth0/ipv6
      │   └─/xyz/openbmc_project/network/eth0/ipv6/8e4e9faf
      └─/xyz/openbmc_project/network/sit0

root@ethanolx:~# busctl introspect xyz.openbmc_project.Network /xyz/openbmc_project/network
NAME                                    TYPE      SIGNATURE  RESULT/VALUE  FLAGS
org.freedesktop.DBus.Introspectable     interface -          -             -
.Introspect                             method    -          s             -
org.freedesktop.DBus.ObjectManager      interface -          -             -
.GetManagedObjects                      method    -          a{oa{sa{sv}}} -
.InterfacesAdded                        signal    oa{sa{sv}} -             -
.InterfacesRemoved                      signal    oas        -             -
org.freedesktop.DBus.Peer               interface -          -             -
.GetMachineId                           method    -          s             -
.Ping                                   method    -          -             -
org.freedesktop.DBus.Properties         interface -          -             -
.Get                                    method    ss         v             -
.GetAll                                 method    s          a{sv}         -
.Set                                    method    ssv        -             -
.PropertiesChanged                      signal    sa{sv}as   -             -
xyz.openbmc_project.Common.FactoryReset interface -          -             -
.Reset                                  method    -          -             -
xyz.openbmc_project.Network.VLAN.Create interface -          -             -
.VLAN                                   method    su         o             -

Does my board lacks some support or is it a common problem?