rem: ERROR("ipro1000_read() mbuf not ready\n");
add: ERROROUT("ipro1000_read() mbuf not ready");
context: ipro1000_read(void* cookie, off_t position, void *buf, size_t* num_bytes){	ipro1000_device *device = (ipro1000_device *)cookie;	struct ifnet *ifp = &device->adapter->interface_data.ac_if;	struct mbuf *mb;	status_t stat;	int len;	//	TRACE("ipro1000_read() enter\n");		if (device->closed) {		TRACE("ipro1000_read() interrupted 1\n");		return B_INTERRUPTED;	}retry:	stat = acquire_sem_etc(ifp->if_rcv_sem, 1, B_CAN_INTERRUPT | (device->nonblocking ? B_TIMEOUT : 0), 0);	if (device->closed) {		// TRACE("ipro1000_read() interrupted 2\n"); // net_server will crash if we print this (race condition in net_server?)		return B_INTERRUPTED;	}	if (stat == B_WOULD_BLOCK) {		TRACE("ipro1000_read() would block (OK 0 bytes)\n");		*num_bytes = 0;		return B_OK;	}	if (stat != B_OK) {		TRACE("ipro1000_read() error\n");		return B_ERROR;	}		IF_DEQUEUE(&ifp->if_rcv, mb);	if (!mb) {		ERROR("ipro1000_read() mbuf not ready\n");		goto retry;	}		len = mb->m_len;	if (len < 0)		len = 0;	if (len > (int)*num_bytes)		len = *num_bytes;	memcpy(buf, mtod(mb, uint8 *), len); // XXX this is broken for jumbo frames	*num_bytes = len;		m_freem(mb);	//	TRACE("ipro1000_read() leave, %d bytes\n", len);	return B_OK;}