[PATCH] IPMI: retry messages on certain error returns
Corey Minyard [Thu, 9 Nov 2006 01:44:55 +0000 (17:44 -0800)]
Some more errors 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@acm.org>
Cc: Frederic Lelievre <Frederic.Lelievre@ca.kontron.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

drivers/char/ipmi/ipmi_msghandler.c
include/linux/ipmi_msgdefs.h

index e55a0d2..0b07ca1 100644 (file)
@@ -3242,7 +3242,9 @@ void ipmi_smi_msg_received(ipmi_smi_t          intf,
                    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 22f5e2a..4d04d8b 100644 (file)
@@ -75,6 +75,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