[PATCH] IPMI: retry messages on certain error returns

From: Corey Minyard
Date: Wed Nov 08 2006 - 17:06:32 EST


Some errors more from the IPMI send message command are retryable,
but are not being retried by the IPMI code. Make sure they get
retried.

Signed-off-by: Corey Minyard <minyard@xxxxxxx>
Cc: Frederic Lelievre <Frederic.Lelievre@xxxxxxxxxxxxxx>

Index: linux-2.6.18/drivers/char/ipmi/ipmi_msghandler.c
===================================================================
--- linux-2.6.18.orig/drivers/char/ipmi/ipmi_msghandler.c
+++ linux-2.6.18/drivers/char/ipmi/ipmi_msghandler.c
@@ -3468,7 +3468,9 @@ void ipmi_smi_msg_received(ipmi_smi_t
report the error immediately. */
if ((msg->rsp_size >= 3) && (msg->rsp[2] != 0)
&& (msg->rsp[2] != IPMI_NODE_BUSY_ERR)
- && (msg->rsp[2] != IPMI_LOST_ARBITRATION_ERR))
+ && (msg->rsp[2] != IPMI_LOST_ARBITRATION_ERR)
+ && (msg->rsp[2] != IPMI_BUS_ERR)
+ && (msg->rsp[2] != IPMI_NAK_ON_WRITE_ERR))
{
int chan = msg->rsp[3] & 0xf;

Index: linux-2.6.18/include/linux/ipmi_msgdefs.h
===================================================================
--- linux-2.6.18.orig/include/linux/ipmi_msgdefs.h
+++ linux-2.6.18/include/linux/ipmi_msgdefs.h
@@ -80,6 +80,8 @@
#define IPMI_INVALID_COMMAND_ERR 0xc1
#define IPMI_ERR_MSG_TRUNCATED 0xc6
#define IPMI_LOST_ARBITRATION_ERR 0x81
+#define IPMI_BUS_ERR 0x82
+#define IPMI_NAK_ON_WRITE_ERR 0x83
#define IPMI_ERR_UNSPECIFIED 0xff

#define IPMI_CHANNEL_PROTOCOL_IPMB 1
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/