kernels/linux-2.4.0/drivers/net/tlan.c
/***************************************************************
	 *	TLan_HandleInterrupt
	 *  
	 *	Returns:	
	 *		Nothing
	 *	Parms:
	 *		irq	The line on which the interrupt
	 *			occurred.
	 *		dev_id	A pointer to the device assigned to
	 *			this irq line.
	 *		regs	???
	 *
	 *	This function handles an interrupt generated by its
	 *	assigned TLAN adapter.  The function deactivates
	 *	interrupts on its adapter, records the type of
	 *	interrupt, executes the appropriate subhandler, and
	 *	acknowdges the interrupt to the adapter (thus
	 *	re-enabling adapter interrupts.
	 *
	 **************************************************************/


Nothing
Parms:
irq     The line on which the interrupt
occurred.
dev_id  A pointer to the device assigned to
this irq line.

This function handles an interrupt generated by its
assigned TLAN adapter.  The function deactivates
interrupts on its adapter, records the type of
interrupt, executes the appropriate subhandler, and
acknowdges the interrupt to the adapter (thus
re-enabling adapter interrupts.
Nothing Parms : irq The line on which the interrupt occurred . dev_id A pointer to the device assigned to this irq line . This function handles an interrupt generated by its assigned TLAN adapter . The function deactivates interrupts on its adapter records the type of interrupt executes the appropriate subhandler and acknowdges the interrupt to the adapter ( thus re - enabling adapter interrupts .
static void TLan_HandleInterrupt(int irq, void *dev_id, struct pt_regs *regs)
{
	u32		ack;
	struct net_device	*dev;
	u32		host_cmd;
	u16		host_int;
	int		type;
	TLanPrivateInfo *priv;
	dev = (struct net_device *) dev_id;
	priv = (TLanPrivateInfo *) dev->priv;
	spin_lock(&priv->lock);
	host_int = inw( dev->base_addr + TLAN_HOST_INT );
	outw( host_int, dev->base_addr + TLAN_HOST_INT );
	type = ( host_int & TLAN_HI_IT_MASK ) >> 2;
	ack = TLanIntVector[type]( dev, host_int );
	if ( ack ) {
		host_cmd = TLAN_HC_ACK | ack | ( type << 18 );
		outl( host_cmd, dev->base_addr + TLAN_HOST_CMD );
	}
	spin_unlock(&priv->lock);
}
static void TLan_HandleInterrupt ( int irq , void * dev_id , struct pt_regs * regs ) { u32 ack ; struct net_device * dev ; u32 host_cmd ; u16 host_int ; int type ; TLanPrivateInfo * priv ; dev = ( struct net_device * ) dev_id ; priv = ( TLanPrivateInfo * ) dev -> priv ; spin_lock ( & priv -> lock ) ; host_int = inw ( dev -> base_addr + TLAN_HOST_INT ) ; outw ( host_int , dev -> base_addr + TLAN_HOST_INT ) ; type = ( host_int & TLAN_HI_IT_MASK ) >> 2 ; ack = TLanIntVector [ type ] ( dev , host_int ) ; if ( ack ) { host_cmd = TLAN_HC_ACK | ack | ( type << 18 ) ; outl ( host_cmd , dev -> base_addr + TLAN_HOST_CMD ) ; } spin_unlock ( & priv -> lock ) ; }
TLan_HandleInterrupt
TLan_HandleInterrupt