/* Called whenever an interrupt is generated by the velocity adapter IRQ line. We may not be the source of the interrupt and need to identify initially if we are, and if not exit as efficiently as possible.  */
static irqreturn_t velocity_intr(int irq, void *dev_instance)
/* Called whenever an interrupt is generated by the velocity adapter IRQ line. We may not be the source of the interrupt and need to identify initially if we are, and if not exit as efficiently as possible.  */
static irqreturn_t velocity_intr(int irq, void *dev_instance)
{
	struct net_device *dev = dev_instance;
	struct velocity_info *vptr = netdev_priv(dev);
	u32 isr_status;
	spin_lock(&vptr->lock);
	isr_status = mac_read_isr(vptr->mac_regs);
	if (isr_status == 0) {
		spin_unlock(&vptr->lock);
		return IRQ_NONE;
	}
	mac_write_isr(vptr->mac_regs, isr_status);
	if (likely(napi_schedule_prep(&vptr->napi))) {
		mac_disable_int(vptr->mac_regs);
		__napi_schedule(&vptr->napi);
	}
	if (isr_status & (~(ISR_PRXI | ISR_PPRXI | ISR_PTXI | ISR_PPTXI)))
		velocity_error(vptr, isr_status);
	spin_unlock(&vptr->lock);
	return IRQ_HANDLED;
}