else { 
else if (netif_msg_intr(tp)) { 
rtl8169_interrupt(int irq, void *dev_instance, struct pt_regs *regs){	struct net_device *dev = (struct net_device *) dev_instance;	struct rtl8169_private *tp = netdev_priv(dev);	int boguscnt = max_interrupt_work;	void __iomem *ioaddr = tp->mmio_addr;	int status;	int handled = 0;	do {		status = RTL_R16(IntrStatus);		/* hotplug/major error/no more work/shared irq */		if ((status == 0xFFFF) || !status)			break;		handled = 1;		if (unlikely(!netif_running(dev))) {			rtl8169_asic_down(ioaddr);			goto out;		}		status &= tp->intr_mask;		RTL_W16(IntrStatus,			(status & RxFIFOOver) ? (status | RxOverflow) : status);		if (!(status & rtl8169_intr_mask))			break;		if (unlikely(status & SYSErr)) {			rtl8169_pcierr_interrupt(dev);			break;		}		if (status & LinkChg)			rtl8169_check_link_status(dev, tp, ioaddr);#ifdef CONFIG_R8169_NAPI		RTL_W16(IntrMask, rtl8169_intr_mask & ~rtl8169_napi_event);		tp->intr_mask = ~rtl8169_napi_event;		if (likely(netif_rx_schedule_prep(dev)))			__netif_rx_schedule(dev);		else {			printk(KERN_INFO "%s: interrupt %04x taken in poll\n",			       dev->name, status);			}		break;#else		/* Rx interrupt */		if (status & (RxOK | RxOverflow | RxFIFOOver)) {			rtl8169_rx_interrupt(dev, tp, ioaddr);		}		/* Tx interrupt */		if (status & (TxOK | TxErr))			rtl8169_tx_interrupt(dev, tp, ioaddr);#endif		boguscnt--;	} while (boguscnt > 0);	if (boguscnt <= 0) {		printk(KERN_WARNING "%s: Too much work at interrupt!\n",		       dev->name);		/* Clear all interrupt sources. */		RTL_W16(IntrStatus, 0xffff);	}out:	return IRQ_RETVAL(handled);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/b57b7e5a11c4e45565cf34d786d74ad35483fe83/r8169.c/clean/drivers/net/r8169.c