if (msg->rsp[2] != 0) { 
if (msg->msg.data[0] != 0) { 
channel_handler(ipmi_smi_t intf, struct ipmi_smi_msg *msg){	int rv = 0;	int chan;	if ((msg->rsp[0] == (IPMI_NETFN_APP_RESPONSE << 2))	    && (msg->rsp[1] == IPMI_GET_CHANNEL_INFO_CMD))	{		/* It's the one we want */		if (msg->rsp[2] != 0) {			/* Got an error from the channel, just go on. */			if (msg->rsp[2] == IPMI_INVALID_COMMAND_ERR) {				/* If the MC does not support this				   command, that is legal.  We just				   assume it has one IPMB at channel				   zero. */				intf->channels[0].medium					= IPMI_CHANNEL_MEDIUM_IPMB;				intf->channels[0].protocol					= IPMI_CHANNEL_PROTOCOL_IPMB;				rv = -ENOSYS;				intf->curr_channel = IPMI_MAX_CHANNELS;				wake_up(&intf->waitq);				goto out;			}			goto next_channel;		}		if (msg->rsp_size < 6) {			/* Message not big enough, just go on. */			goto next_channel;		}		chan = intf->curr_channel;		intf->channels[chan].medium = msg->rsp[4] & 0x7f;		intf->channels[chan].protocol = msg->rsp[5] & 0x1f;	next_channel:		intf->curr_channel++;		if (intf->curr_channel >= IPMI_MAX_CHANNELS)			wake_up(&intf->waitq);		else			rv = send_channel_info_cmd(intf, intf->curr_channel);		if (rv) {			/* Got an error somehow, just give up. */			intf->curr_channel = IPMI_MAX_CHANNELS;			wake_up(&intf->waitq);			printk(KERN_WARNING PFX			       "Error sending channel information: %d\n",			       rv);		}	} out:	return;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/56a55ec64806fb56e0cd43b0f726020b74c6689b/ipmi_msghandler.c/clean/drivers/char/ipmi/ipmi_msghandler.c