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