return rc; 
goto exit; 
static int ipw_send_cmd(struct ipw_priv *priv, struct host_cmd *cmd){	int rc = 0;	unsigned long flags;	spin_lock_irqsave(&priv->lock, flags);	if (priv->status & STATUS_HCMD_ACTIVE) {		IPW_ERROR("Failed to send %s: Already sending a command.\n",			  get_cmd_string(cmd->cmd));		spin_unlock_irqrestore(&priv->lock, flags);		return -EAGAIN;	}	priv->status |= STATUS_HCMD_ACTIVE;	IPW_DEBUG_HC("%s command (#%d) %d bytes: 0x%08X\n",		     get_cmd_string(cmd->cmd), cmd->cmd, cmd->len,		     priv->status);	printk_buf(IPW_DL_HOST_COMMAND, (u8 *) cmd->param, cmd->len);	rc = ipw_queue_tx_hcmd(priv, cmd->cmd, &cmd->param, cmd->len, 0);	if (rc) {		priv->status &= ~STATUS_HCMD_ACTIVE;		IPW_ERROR("Failed to send %s: Reason %d\n",			  get_cmd_string(cmd->cmd), rc);		spin_unlock_irqrestore(&priv->lock, flags);		return rc;	}	spin_unlock_irqrestore(&priv->lock, flags);	rc = wait_event_interruptible_timeout(priv->wait_command_queue,					      !(priv->						status & STATUS_HCMD_ACTIVE),					      HOST_COMPLETE_TIMEOUT);	if (rc == 0) {		spin_lock_irqsave(&priv->lock, flags);		if (priv->status & STATUS_HCMD_ACTIVE) {			IPW_ERROR("Failed to send %s: Command timed out.\n",				  get_cmd_string(cmd->cmd));			priv->status &= ~STATUS_HCMD_ACTIVE;			spin_unlock_irqrestore(&priv->lock, flags);			return -EIO;		}		spin_unlock_irqrestore(&priv->lock, flags);	}	if (priv->status & STATUS_RF_KILL_HW) {		IPW_ERROR("Failed to send %s: Aborted due to RF kill switch.\n",			  get_cmd_string(cmd->cmd));		return -EIO;	}	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/f6c5cb7c6f8a85045996bfc3442af963d6578d60/ipw2200.c/buggy/drivers/net/wireless/ipw2200.c