emx: Cache align software TX/RX descriptors
authorSepherosa Ziehau <sephe@dragonflybsd.org>
Sun, 14 Oct 2012 13:34:28 +0000 (21:34 +0800)
committerSepherosa Ziehau <sephe@dragonflybsd.org>
Sun, 14 Oct 2012 13:34:28 +0000 (21:34 +0800)
sys/dev/netif/emx/if_emx.c

index 014d894..aac7bee 100644 (file)
@@ -2080,8 +2080,9 @@ emx_create_tx_ring(struct emx_txdata *tdata)
                return ENOMEM;
        }
 
-       tdata->tx_buf = kmalloc(sizeof(struct emx_txbuf) * tdata->num_tx_desc,
-                            M_DEVBUF, M_WAITOK | M_ZERO);
+       tsize = __VM_CACHELINE_ALIGN(
+           sizeof(struct emx_txbuf) * tdata->num_tx_desc);
+       tdata->tx_buf = kmalloc_cachealign(tsize, M_DEVBUF, M_WAITOK | M_ZERO);
 
        /*
         * Create DMA tags for tx buffers
@@ -2575,8 +2576,9 @@ emx_create_rx_ring(struct emx_rxdata *rdata)
                return ENOMEM;
        }
 
-       rdata->rx_buf = kmalloc(sizeof(struct emx_rxbuf) * rdata->num_rx_desc,
-                               M_DEVBUF, M_WAITOK | M_ZERO);
+       rsize = __VM_CACHELINE_ALIGN(
+           sizeof(struct emx_rxbuf) * rdata->num_rx_desc);
+       rdata->rx_buf = kmalloc_cachealign(rsize, M_DEVBUF, M_WAITOK | M_ZERO);
 
        /*
         * Create DMA tag for rx buffers