ipmi_serial_alert now returns the correct value when an alert is detected
from the BMC

Signed-off-by: David Griego <[EMAIL PROTECTED]>
---
diff -Naurp linux-2.6.10/drivers/char/ipmi/ipmi_serial_intf.c 
linux-2.6.10-work/drivers/char/ipmi/ipmi_serial_intf.c
--- linux-2.6.10/drivers/char/ipmi/ipmi_serial_intf.c   2007-03-29 
17:19:25.000000000 -0700
+++ linux-2.6.10-work/drivers/char/ipmi/ipmi_serial_intf.c      2007-03-29 
17:13:14.000000000 -0700
@@ -348,12 +348,11 @@ ipmi_serial_write(struct si_sm_data *ser
 }
 
 static unsigned char 
-ipmi_serial_read_data(struct si_sm_data *serial,int *error)
+ipmi_serial_read_data(struct si_sm_data *serial)
 {
        unsigned char retval;
        struct tty_struct *tty = serial->port->info->tty;
        unsigned long flags;
-       *error = 0;
        retval = tty->read_buf[tty->read_tail];
        spin_lock_irqsave(&tty->read_lock, flags);
        tty->read_tail = (tty->read_tail + 1) & (N_TTY_BUF_SIZE-1);
@@ -428,11 +427,9 @@ ipmi_serial_start_error_recovery(struct 
 static int 
 ipmi_serial_alert(struct si_sm_data *serial)
 {
-       int error;
-       ipmi_serial_read_data(serial,&error);
-       if(error)
-               return 0;
-       if(serial->enc_read_msg[serial->read_pos] != serial->codec->alert_char)
+       unsigned char ret_char;
+       ret_char = ipmi_serial_read_data(serial);
+       if(ret_char == serial->codec->alert_char)
                return 1;
        return 0;
 }
@@ -459,7 +449,7 @@ ipmi_serial_read_next_byte(struct si_sm_
 
        if (serial->read_pos > IPMI_ENC_MAX_MESSAGE_LEN) {
                /* Throw the data away and mark it truncated. */
-               ipmi_serial_read_data(serial,&error);
+               ipmi_serial_read_data(serial);
                serial->truncated = 1;
                serial->enc_read_msg[IPMI_ENC_MAX_MESSAGE_LEN] = 
                        serial->codec->eom_char;
@@ -478,13 +468,7 @@ ipmi_serial_read_next_byte(struct si_sm_
                serial->end_of_rx = 1;
                serial->read_pos = IPMI_ENC_MAX_MESSAGE_LEN;
        } else {
-               serial->enc_read_msg[serial->read_pos] = 
ipmi_serial_read_data(serial,&error);
-               if(error)
-               {
-                       ipmi_serial_start_error_recovery(serial,"read returned 
error");
-                       serial->rx_timeout -= time;
-                       return;
-               }
+               serial->enc_read_msg[serial->read_pos] = 
ipmi_serial_read_data(serial);
                /* See if this is an alert char */
                if((serial->codec->alert_char) && 
                                (serial->enc_read_msg[serial->read_pos] ==
@@ -606,9 +590,8 @@ ipmi_serial_event(struct si_sm_data *ser
                                 * some concern
                                 */
                                if(serial->codec->alert_char){
-                                       if(!ipmi_serial_alert(serial))
-                                                       return SI_SM_IDLE;
-                                       return SI_SM_ATTN;
+                                       if(ipmi_serial_alert(serial))
+                                               return SI_SM_ATTN;
                                }
                                return SI_SM_IDLE;
                        }

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Openipmi-developer mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openipmi-developer

Reply via email to