#endif 
static void ipw_irq_tasklet(struct ipw_priv *priv){	u32 inta, inta_mask, handled = 0;	unsigned long flags;	int rc = 0;	spin_lock_irqsave(&priv->lock, flags);	inta = ipw_read32(priv, IPW_INTA_RW);	inta_mask = ipw_read32(priv, IPW_INTA_MASK_R);	inta &= (IPW_INTA_MASK_ALL & inta_mask);	/* Add any cached INTA values that need to be handled */	inta |= priv->isr_inta;	/* handle all the justifications for the interrupt */	if (inta & IPW_INTA_BIT_RX_TRANSFER) {		ipw_rx(priv);		handled |= IPW_INTA_BIT_RX_TRANSFER;	}	if (inta & IPW_INTA_BIT_TX_CMD_QUEUE) {		IPW_DEBUG_HC("Command completed.\n");		rc = ipw_queue_tx_reclaim(priv, &priv->txq_cmd, -1);		priv->status &= ~STATUS_HCMD_ACTIVE;		wake_up_interruptible(&priv->wait_command_queue);		handled |= IPW_INTA_BIT_TX_CMD_QUEUE;	}	if (inta & IPW_INTA_BIT_TX_QUEUE_1) {		IPW_DEBUG_TX("TX_QUEUE_1\n");		rc = ipw_queue_tx_reclaim(priv, &priv->txq[0], 0);		handled |= IPW_INTA_BIT_TX_QUEUE_1;	}	if (inta & IPW_INTA_BIT_TX_QUEUE_2) {		IPW_DEBUG_TX("TX_QUEUE_2\n");		rc = ipw_queue_tx_reclaim(priv, &priv->txq[1], 1);		handled |= IPW_INTA_BIT_TX_QUEUE_2;	}	if (inta & IPW_INTA_BIT_TX_QUEUE_3) {		IPW_DEBUG_TX("TX_QUEUE_3\n");		rc = ipw_queue_tx_reclaim(priv, &priv->txq[2], 2);		handled |= IPW_INTA_BIT_TX_QUEUE_3;	}	if (inta & IPW_INTA_BIT_TX_QUEUE_4) {		IPW_DEBUG_TX("TX_QUEUE_4\n");		rc = ipw_queue_tx_reclaim(priv, &priv->txq[3], 3);		handled |= IPW_INTA_BIT_TX_QUEUE_4;	}	if (inta & IPW_INTA_BIT_STATUS_CHANGE) {		IPW_WARNING("STATUS_CHANGE\n");		handled |= IPW_INTA_BIT_STATUS_CHANGE;	}	if (inta & IPW_INTA_BIT_BEACON_PERIOD_EXPIRED) {		IPW_WARNING("TX_PERIOD_EXPIRED\n");		handled |= IPW_INTA_BIT_BEACON_PERIOD_EXPIRED;	}	if (inta & IPW_INTA_BIT_SLAVE_MODE_HOST_CMD_DONE) {		IPW_WARNING("HOST_CMD_DONE\n");		handled |= IPW_INTA_BIT_SLAVE_MODE_HOST_CMD_DONE;	}	if (inta & IPW_INTA_BIT_FW_INITIALIZATION_DONE) {		IPW_WARNING("FW_INITIALIZATION_DONE\n");		handled |= IPW_INTA_BIT_FW_INITIALIZATION_DONE;	}	if (inta & IPW_INTA_BIT_FW_CARD_DISABLE_PHY_OFF_DONE) {		IPW_WARNING("PHY_OFF_DONE\n");		handled |= IPW_INTA_BIT_FW_CARD_DISABLE_PHY_OFF_DONE;	}	if (inta & IPW_INTA_BIT_RF_KILL_DONE) {		IPW_DEBUG_RF_KILL("RF_KILL_DONE\n");		priv->status |= STATUS_RF_KILL_HW;		wake_up_interruptible(&priv->wait_command_queue);		priv->status &= ~(STATUS_ASSOCIATED | STATUS_ASSOCIATING);		cancel_delayed_work(&priv->request_scan);		schedule_work(&priv->link_down);		queue_delayed_work(priv->workqueue, &priv->rf_kill, 2 * HZ);		handled |= IPW_INTA_BIT_RF_KILL_DONE;	}	if (inta & IPW_INTA_BIT_FATAL_ERROR) {		IPW_ERROR("Firmware error detected.  Restarting.\n");#ifdef CONFIG_IPW_DEBUG		if (ipw_debug_level & IPW_DL_FW_ERRORS) {			ipw_dump_nic_error_log(priv);			ipw_dump_nic_event_log(priv);		}#endif		/* XXX: If hardware encryption is for WPA/WPA2,		 * we have to notify the supplicant. */		if (priv->ieee->sec.encrypt) {			priv->status &= ~STATUS_ASSOCIATED;			notify_wx_assoc_event(priv);		}		/* Keep the restart process from trying to send host		 * commands by clearing the INIT status bit */		priv->status &= ~STATUS_INIT;		/* Cancel currently queued command. */		priv->status &= ~STATUS_HCMD_ACTIVE;		wake_up_interruptible(&priv->wait_command_queue);		queue_work(priv->workqueue, &priv->adapter_restart);		handled |= IPW_INTA_BIT_FATAL_ERROR;	}	if (inta & IPW_INTA_BIT_PARITY_ERROR) {		IPW_ERROR("Parity error\n");		handled |= IPW_INTA_BIT_PARITY_ERROR;	}	if (handled != inta) {		IPW_ERROR("Unhandled INTA bits 0x%08x\n", inta & ~handled);	}	/* enable all interrupts */	ipw_enable_interrupts(priv);	spin_unlock_irqrestore(&priv->lock, flags);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/b39860c60b135ef16c1c16a3e2a757ff8070c5ad/ipw2200.c/buggy/drivers/net/wireless/ipw2200.c