From 4b791f8bf67ef9134699039b2758ed4023409621 Mon Sep 17 00:00:00 2001 From: Alexander Amelkin Date: Tue, 20 Oct 2020 17:15:59 +0300 Subject: lan: channel: Fix set alert on/off From IPMI Spec, Chapter 22.22 Set Channel Access Command Table 22, Set Channel Access Command Byte#2, Bit#5 is "PEF Alerting Enable/Disable" And the bit value: 0b = enable PEF Alerting 1b = disable PEF Alerting on this channel In current code, alert "on" set Bit#5 to 1 and alert "off" set Bit#5 to 0, it's straightforward but just opposite of IPMI spec bit definition. Resolves ipmitool/ipmitool#247 Reported-by: Ryan Fang Signed-off-by: Alexander Amelkin --- include/ipmitool/ipmi_channel.h | 10 ++++++++-- lib/ipmi_lanp.c | 6 +++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/include/ipmitool/ipmi_channel.h b/include/ipmitool/ipmi_channel.h index d9be57e..41f1b88 100644 --- a/include/ipmitool/ipmi_channel.h +++ b/include/ipmitool/ipmi_channel.h @@ -89,10 +89,16 @@ struct channel_info_t { uint8_t aux_info[2]; }; -/* (22.23) Get Channel Access */ + +/* (22.22 / 22.23) Set/Get Channel Access */ +typedef enum { + ALERTING_ENABLED = 0, + ALERTING_DISABLED = (1 << 5) /* See Table 22 */ +} alerting_t; + struct channel_access_t { uint8_t access_mode; - uint8_t alerting; + alerting_t alerting; uint8_t channel; uint8_t per_message_auth; uint8_t privilege_limit; diff --git a/lib/ipmi_lanp.c b/lib/ipmi_lanp.c index 16c0d9a..fe0046f 100644 --- a/lib/ipmi_lanp.c +++ b/lib/ipmi_lanp.c @@ -1026,10 +1026,10 @@ ipmi_set_alert_enable(struct ipmi_intf *intf, uint8_t channel, uint8_t enable) channel); return (-1); } - if (enable != 0) { - channel_access.alerting = 1; + if (enable) { + channel_access.alerting = ALERTING_ENABLED; } else { - channel_access.alerting = 0; + channel_access.alerting = ALERTING_DISABLED; } /* non-volatile */ ccode = _ipmi_set_channel_access(intf, channel_access, 1, 0); -- cgit v1.2.1