diff --git a/kern/drivers/net/bxe/bsd_bus.h b/kern/drivers/net/bxe/bsd_bus.h
index 329ba0f..4c9f8ce 100644
--- a/kern/drivers/net/bxe/bsd_bus.h
+++ b/kern/drivers/net/bxe/bsd_bus.h
@@ -108,9 +108,28 @@
 typedef uintptr_t bus_dma_segment_t;
 typedef uintptr_t bus_space_tag_t;
 
-#define bus_dma_tag_create(...) (0)
+/* ret is the location of the tag we create, which is just the size */
+#define bus_get_dma_tag(pcidev) (0)
+#define bus_dma_tag_create(_tag, _align, _bound, _low, _hi, _fil, _filarg,     \
+                           _size, _num, _size2, _flag2, _lock, _lockarg, _ret) \
+({                                                                             \
+	*(size_t*)(_ret) = (size_t)(_size);                                        \
+	0;                                                                         \
+})
 #define bus_dma_tag_destroy(...)
+#define bus_dmamem_alloc(_tag, _vaddraddr, _flags, _map)                       \
+({                                                                             \
+	*(_vaddraddr) = kzmalloc((size_t)(_tag), KMALLOC_WAIT);                    \
+	0;                                                                         \
+})
+#define bus_dmamem_free(_tag, _vaddr, _map) kfree(_vaddr)
 #define bus_dmamap_sync(...)
+/* bxe_dma_map_addr is actually a callback tht does the paddr assignment */
+#define bus_dmamap_load(_tag, _map, _vaddr, _size, _map_addr, _dma, _flag)     \
+({                                                                             \
+	(_dma)->paddr = PADDR((_dma)->vaddr);                                      \
+	0;                                                                         \
+})
 #define bus_dmamap_unload(...)
 #define bus_dmamap_create(...) (0)
 #define bus_dmamap_destroy(...)
diff --git a/kern/drivers/net/bxe/bxe.c b/kern/drivers/net/bxe/bxe.c
index 3a72767..3fec514 100644
--- a/kern/drivers/net/bxe/bxe.c
+++ b/kern/drivers/net/bxe/bxe.c
@@ -844,11 +844,6 @@
     dma->size = size;
     snprintf(dma->msg, sizeof(dma->msg), "%s", msg);
 
-	/* Akaros style */
-	dma->vaddr = kzmalloc(size, KMALLOC_WAIT);
-	dma->paddr = PADDR(dma->vaddr);
-
-#if 0 /* the BSD way */
     rc = bus_dma_tag_create(sc->parent_dma_tag, /* parent tag */
                             BCM_PAGE_SIZE,      /* alignment */
                             0,                  /* boundary limit */
@@ -894,7 +889,9 @@
         memset(dma, 0, sizeof(*dma));
         return (1);
     }
-#endif
+
+	/* might catch buggy BSD-compat macros */
+	assert(dma->paddr == PADDR(dma->vaddr));
     return (0);
 }
 
@@ -903,23 +900,18 @@
              struct bxe_dma   *dma)
 {
     if (dma->size > 0) {
-#if 0
         BLOGD(sc, DBG_LOAD,
               "DMA free '%s': vaddr=%p paddr=%p nseg=%d size=%lu\n",
               dma->msg, dma->vaddr, (void *)dma->paddr,
               dma->nseg, dma->size);
-#endif
 
         DBASSERT(sc, (dma->tag != NULL), ("dma tag is NULL"));
 
-		kfree(dma->vaddr);
-		#if 0 /* the BSD way */
         bus_dmamap_sync(dma->tag, dma->map,
                         (BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE));
         bus_dmamap_unload(dma->tag, dma->map);
         bus_dmamem_free(dma->tag, dma->vaddr, dma->map);
         bus_dma_tag_destroy(dma->tag);
-		#endif
     }
     memset(dma, 0, sizeof(*dma));
 }
diff --git a/kern/drivers/net/bxe/bxe.h b/kern/drivers/net/bxe/bxe.h
index ffc67bb..db606db 100644
--- a/kern/drivers/net/bxe/bxe.h
+++ b/kern/drivers/net/bxe/bxe.h
@@ -52,6 +52,7 @@
 #define __noinline 
 #define ETH_ADDR_LEN 6
 #define MCLBYTES 2048
+#define MJUM9BYTES (9 * 1024)	/* jumbo cluster 9k */
 /* TYPEDEFS for conversion to AKAROS. These are temporary, but it makes it easier to see what is in need of change. */
 typedef struct netif *if_t;
 typedef uint64_t ift_counter;
