rem: wb_disable_interrupts(device);
context: wb_interrupt(void *arg){	struct wb_device *device = (wb_device*)arg;	int32 retval = B_UNHANDLED_INTERRUPT;	uint32 status;			acquire_spinlock(&device->intLock);	wb_disable_interrupts(device);		status = read32(device->reg_base + WB_ISR);			// Did this card request the interrupt ?	if (status & WB_INTRS) {					// Clean all the interrupts bits		if (status)			write32(device->reg_base + WB_ISR, status);				if (status & WB_ISR_ABNORMAL)			LOG((DEVICE_NAME": *** Abnormal Interrupt received ***\n"));		else			LOG((DEVICE_NAME": interrupt received: \n"));					if (status & WB_ISR_RX_EARLY) {			LOG(("WB_ISR_RX_EARLY\n"));		}								if (status & WB_ISR_RX_NOBUF) {			LOG(("WB_ISR_RX_NOBUF\n"));				// Something is screwed		}				if (status & WB_ISR_RX_ERR) {			LOG(("WB_ISR_RX_ERR\n"));			// TODO: Do something useful		}				if (status & WB_ISR_RX_OK) {			LOG(("WB_ISR_RX_OK\n"));			retval = wb_rxok(device);		}				if (status & WB_ISR_RX_IDLE) {			LOG(("WB_ISR_RX_IDLE\n"));			// ???		}				if (status & (WB_ISR_TX_NOBUF | WB_ISR_TX_EARLY)) {			LOG(("WB_ISR_TX_NOBUF/TX_EARLY\n"));			retval = wb_tx_nobuf(device);		}				if (status & WB_ISR_TX_UNDERRUN) {			LOG(("WB_ISR_TX_UNDERRUN\n"));			// TODO: Jack up TX Threshold		}				if (status & WB_ISR_TX_IDLE) {			LOG(("WB_ISR_TX_IDLE\n"));		}				if (status & WB_ISR_TX_OK) {			LOG(("WB_ISR_TX_OK\n"));			// So what ?		}							if (status & WB_ISR_BUS_ERR) {			LOG(("WB_ISR_BUS_ERROR: %lx\n", (status & WB_ISR_BUSERRTYPE) >> 4));			//wb_reset(device);		}					if (status & WB_ISR_TIMER_EXPIRED) {			LOG(("WB_ISR_TIMER_EXPIRED\n"));			// ??		}	}		wb_enable_interrupts(device);	release_spinlock(&device->intLock);		return retval;}