70 lines
2.0 KiB
Diff
70 lines
2.0 KiB
Diff
From 4b791f8bf67ef9134699039b2758ed4023409621 Mon Sep 17 00:00:00 2001
|
|
From: Alexander Amelkin <alexander@amelkin.msk.ru>
|
|
Date: Tue, 20 Oct 2020 17:15:59 +0300
|
|
Subject: [PATCH] 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 <Ryan.Fang@quantatw.com>
|
|
Signed-off-by: Alexander Amelkin <alexander@amelkin.msk.ru>
|
|
---
|
|
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);
|
|
--
|
|
2.27.0
|
|
|