BXE: fixes ECORE sleep loops

It's waiting on something from a taskqueue.  The IRQ fires and executes
(hooray!), but the task wouldn't run since we're non-preemptive.  The solution
is to kthread_usleep().
diff --git a/kern/drivers/net/bxe/ecore_sp.c b/kern/drivers/net/bxe/ecore_sp.c
index 27b2187..7a3c114 100644
--- a/kern/drivers/net/bxe/ecore_sp.c
+++ b/kern/drivers/net/bxe/ecore_sp.c
@@ -312,7 +312,7 @@
 			return ECORE_SUCCESS;
 		}
 
-		ECORE_WAIT(sc, delay_us);
+		ECORE_WAIT(sc, 1000);
 
 		if (sc->panic)
 			return ECORE_IO;
diff --git a/kern/drivers/net/bxe/ecore_sp.h b/kern/drivers/net/bxe/ecore_sp.h
index 467bfc7..5f97f92 100644
--- a/kern/drivers/net/bxe/ecore_sp.h
+++ b/kern/drivers/net/bxe/ecore_sp.h
@@ -134,8 +134,10 @@
 #define ECORE_CPU_TO_LE16(x) cpu_to_le16(x)
 #define ECORE_CPU_TO_LE32(x) cpu_to_le32(x)
 
-#define ECORE_WAIT(_s, _t) udelay(1000)
-#define ECORE_MSLEEP(_t)   udelay((_t) * 1000)
+/* On BSD wait is a udelay.  ECORE uses it to wait for a taskqueue, which won't
+ * run preemptively on Akaros. */
+#define ECORE_WAIT(_s, _t) kthread_usleep((_t))
+#define ECORE_MSLEEP(_t)   kthread_usleep((_t) * 1000)
 
 #define ECORE_LIKELY(x)   (x)
 #define ECORE_UNLIKELY(x) (x)