[PATCH] IPMI: fix request events
When the IPMI message handler requested that the interface look for events, the ipmi_si driver would request flags, see if the event buffer full flag was set, then request events. It's better to just send the request for events, as it cuts one message out of the transaction if there happens to be events, and it will fetch events even if the event buffer was not full. Signed-off-by: Corey Minyard <minyard@acm.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
b9675136e2
commit
55162fb165
1 changed files with 13 additions and 11 deletions
|
@ -684,22 +684,24 @@ static enum si_sm_result smi_event_handler(struct smi_info *smi_info,
|
|||
{
|
||||
/* We are idle and the upper layer requested that I fetch
|
||||
events, so do so. */
|
||||
unsigned char msg[2];
|
||||
|
||||
spin_lock(&smi_info->count_lock);
|
||||
smi_info->flag_fetches++;
|
||||
spin_unlock(&smi_info->count_lock);
|
||||
|
||||
atomic_set(&smi_info->req_events, 0);
|
||||
msg[0] = (IPMI_NETFN_APP_REQUEST << 2);
|
||||
msg[1] = IPMI_GET_MSG_FLAGS_CMD;
|
||||
|
||||
smi_info->curr_msg = ipmi_alloc_smi_msg();
|
||||
if (!smi_info->curr_msg)
|
||||
goto out;
|
||||
|
||||
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, msg, 2);
|
||||
smi_info->si_state = SI_GETTING_FLAGS;
|
||||
smi_info->si_sm,
|
||||
smi_info->curr_msg->data,
|
||||
smi_info->curr_msg->data_size);
|
||||
smi_info->si_state = SI_GETTING_EVENTS;
|
||||
goto restart;
|
||||
}
|
||||
|
||||
out:
|
||||
return si_sm_result;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue