} else if (smi_info->msg_flags & OEM_DATA_AVAIL) { if (smi_info->oem_data_avail_handler) if (smi_info->oem_data_avail_handler(smi_info)) goto retry; 
static void handle_flags(struct smi_info *smi_info){	if (smi_info->msg_flags & WDT_PRE_TIMEOUT_INT) {		/* Watchdog pre-timeout */		spin_lock(&smi_info->count_lock);		smi_info->watchdog_pretimeouts++;		spin_unlock(&smi_info->count_lock);		start_clear_flags(smi_info);		smi_info->msg_flags &= ~WDT_PRE_TIMEOUT_INT;		spin_unlock(&(smi_info->si_lock));		ipmi_smi_watchdog_pretimeout(smi_info->intf);		spin_lock(&(smi_info->si_lock));	} else if (smi_info->msg_flags & RECEIVE_MSG_AVAIL) {		/* Messages available. */		smi_info->curr_msg = ipmi_alloc_smi_msg();		if (!smi_info->curr_msg) {			disable_si_irq(smi_info);			smi_info->si_state = SI_NORMAL;			return;		}		enable_si_irq(smi_info);		smi_info->curr_msg->data[0] = (IPMI_NETFN_APP_REQUEST << 2);		smi_info->curr_msg->data[1] = IPMI_GET_MSG_CMD;		smi_info->curr_msg->data_size = 2;		smi_info->handlers->start_transaction(			smi_info->si_sm,			smi_info->curr_msg->data,			smi_info->curr_msg->data_size);		smi_info->si_state = SI_GETTING_MESSAGES;	} else if (smi_info->msg_flags & EVENT_MSG_BUFFER_FULL) {		/* Events available. */		smi_info->curr_msg = ipmi_alloc_smi_msg();		if (!smi_info->curr_msg) {			disable_si_irq(smi_info);			smi_info->si_state = SI_NORMAL;			return;		}		enable_si_irq(smi_info);		smi_info->curr_msg->data[0] = (IPMI_NETFN_APP_REQUEST << 2);		smi_info->curr_msg->data[1] = IPMI_READ_EVENT_MSG_BUFFER_CMD;		smi_info->curr_msg->data_size = 2;		smi_info->handlers->start_transaction(			smi_info->si_sm,			smi_info->curr_msg->data,			smi_info->curr_msg->data_size);		smi_info->si_state = SI_GETTING_EVENTS;	} else {		smi_info->si_state = SI_NORMAL;	}}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/3ae0e0f9b15b95a2c3e64088d2a85e3f4a707681/ipmi_si_intf.c/clean/drivers/char/ipmi/ipmi_si_intf.c