if (events & (NVREG_IRQ_TX1|NVREG_IRQ_TX2|NVREG_IRQ_TX_ERR)) { 
if (events & (NVREG_IRQ_TX1|NVREG_IRQ_TX_OK|NVREG_IRQ_TX_ERROR|NVREG_IRQ_TX_ERR)) { 
static irqreturn_t nv_nic_irq(int foo, void *data, struct pt_regs *regs){	struct net_device *dev = (struct net_device *) data;	struct fe_priv *np = get_nvpriv(dev);	u8 __iomem *base = get_hwbase(dev);	u32 events;	int i;	dprintk(KERN_DEBUG "%s: nv_nic_irq\n", dev->name);	for (i=0; ; i++) {		events = readl(base + NvRegIrqStatus) & NVREG_IRQSTAT_MASK;		writel(NVREG_IRQSTAT_MASK, base + NvRegIrqStatus);		pci_push(base);		dprintk(KERN_DEBUG "%s: irq: %08x\n", dev->name, events);		if (!(events & np->irqmask))			break;		if (events & (NVREG_IRQ_TX1|NVREG_IRQ_TX2|NVREG_IRQ_TX_ERR)) {			spin_lock(&np->lock);			nv_tx_done(dev);			spin_unlock(&np->lock);		}		if (events & (NVREG_IRQ_RX_ERROR|NVREG_IRQ_RX|NVREG_IRQ_RX_NOBUF)) {			nv_rx_process(dev);			if (nv_alloc_rx(dev)) {				spin_lock(&np->lock);				if (!np->in_shutdown)					mod_timer(&np->oom_kick, jiffies + OOM_REFILL);				spin_unlock(&np->lock);			}		}		if (events & NVREG_IRQ_LINK) {			spin_lock(&np->lock);			nv_link_irq(dev);			spin_unlock(&np->lock);		}		if (np->need_linktimer && time_after(jiffies, np->link_timeout)) {			spin_lock(&np->lock);			nv_linkchange(dev);			spin_unlock(&np->lock);			np->link_timeout = jiffies + LINK_TIMEOUT;		}		if (events & (NVREG_IRQ_TX_ERR)) {			dprintk(KERN_DEBUG "%s: received irq with events 0x%x. Probably TX fail.\n",						dev->name, events);		}		if (events & (NVREG_IRQ_UNKNOWN)) {			printk(KERN_DEBUG "%s: received irq with unknown events 0x%x. Please report\n",						dev->name, events);		}		if (i > max_interrupt_work) {			spin_lock(&np->lock);			/* disable interrupts on the nic */			writel(0, base + NvRegIrqMask);			pci_push(base);			if (!np->in_shutdown)				mod_timer(&np->nic_poll, jiffies + POLL_WAIT);			printk(KERN_DEBUG "%s: too many iterations (%d) in nv_nic_irq.\n", dev->name, i);			spin_unlock(&np->lock);			break;		}	}	dprintk(KERN_DEBUG "%s: nv_nic_irq completed\n", dev->name);	return IRQ_RETVAL(i);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/c2dba06dae7d6c4d15b83ea12d8c601cffd0aee9/forcedeth.c/buggy/drivers/net/forcedeth.c