 if (!dev) { DMFE_DBUG(1, "dmfe_interrupt() without DEVICE arg", 0); return IRQ_NONE; } 
static irqreturn_t dmfe_interrupt(int irq, void *dev_id, struct pt_regs *regs){	struct DEVICE *dev = dev_id;	struct dmfe_board_info *db = netdev_priv(dev);	unsigned long ioaddr = dev->base_addr;	unsigned long flags;	DMFE_DBUG(0, "dmfe_interrupt()", 0);	if (!dev) {		DMFE_DBUG(1, "dmfe_interrupt() without DEVICE arg", 0);		return IRQ_NONE;	}	spin_lock_irqsave(&db->lock, flags);	/* Got DM910X status */	db->cr5_data = inl(ioaddr + DCR5);	outl(db->cr5_data, ioaddr + DCR5);	if ( !(db->cr5_data & 0xc1) ) {		spin_unlock_irqrestore(&db->lock, flags);		return IRQ_HANDLED;	}	/* Disable all interrupt in CR7 to solve the interrupt edge problem */	outl(0, ioaddr + DCR7);	/* Check system status */	if (db->cr5_data & 0x2000) {		/* system bus error happen */		DMFE_DBUG(1, "System bus error happen. CR5=", db->cr5_data);		db->reset_fatal++;		db->wait_reset = 1;	/* Need to RESET */		spin_unlock_irqrestore(&db->lock, flags);		return IRQ_HANDLED;	}	 /* Received the coming packet */	if ( (db->cr5_data & 0x40) && db->rx_avail_cnt )		dmfe_rx_packet(dev, db);	/* reallocate rx descriptor buffer */	if (db->rx_avail_cnt<RX_DESC_CNT)		allocate_rx_buffer(db);	/* Free the transmitted descriptor */	if ( db->cr5_data & 0x01)		dmfe_free_tx_pkt(dev, db);	/* Mode Check */	if (db->dm910x_chk_mode & 0x2) {		db->dm910x_chk_mode = 0x4;		db->cr6_data |= 0x100;		update_cr6(db->cr6_data, db->ioaddr);	}	/* Restore CR7 to enable interrupt mask */	outl(db->cr7_data, ioaddr + DCR7);	spin_unlock_irqrestore(&db->lock, flags);	return IRQ_HANDLED;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/f3f1546dbed9efe8ac04fe5069772834ae379e16/dmfe.c/clean/drivers/net/tulip/dmfe.c