Enable the read DMA engine's PCI read request burst length long burst
authorbrad <brad@openbsd.org>
Wed, 16 Jul 2008 03:56:25 +0000 (03:56 +0000)
committerbrad <brad@openbsd.org>
Wed, 16 Jul 2008 03:56:25 +0000 (03:56 +0000)
mode (4KB) for PCIe chips. This resolves the poor TX performance for
the PCIe chips. The result being a bit under double the TX performance
on a Gig connection (roughly 495 Mb/s -> 940 Mb/s).

Tested by reyk@, sthen@, brad@ and a few end users.

sys/dev/pci/if_bge.c
sys/dev/pci/if_bgereg.h

index c6a9555..cb093f3 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: if_bge.c,v 1.236 2008/06/07 19:05:11 brad Exp $       */
+/*     $OpenBSD: if_bge.c,v 1.237 2008/07/16 03:56:25 brad Exp $       */
 
 /*
  * Copyright (c) 2001 Wind River Systems
@@ -1669,8 +1669,8 @@ bge_blockinit(struct bge_softc *sc)
                dma_read_modebits =
                  BGE_RDMAMODE_ENABLE | BGE_RDMAMODE_ALL_ATTNS;
 
-               if (sc->bge_flags & BGE_PCIE && 0)
-                       dma_read_modebits |= BGE_RDMA_MODE_FIFO_LONG_BURST;
+               if (sc->bge_flags & BGE_PCIE)
+                       dma_read_modebits |= BGE_RDMAMODE_FIFO_LONG_BURST;
 
                CSR_WRITE_4(sc, BGE_RDMA_MODE, dma_read_modebits);
        }
index 4a6a84b..c482e24 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: if_bgereg.h,v 1.83 2008/04/20 01:32:43 brad Exp $     */
+/*     $OpenBSD: if_bgereg.h,v 1.84 2008/07/16 03:56:25 brad Exp $     */
 
 /*
  * Copyright (c) 2001 Wind River Systems
 #define BGE_RDMAMODE_PCI_FIFOOREAD_ATTN        0x00000100
 #define BGE_RDMAMODE_LOCWRITE_TOOBIG   0x00000200
 #define BGE_RDMAMODE_ALL_ATTNS         0x000003FC
-
-/* Alternate encodings for PCI-Express, from Broadcom-supplied Linux driver */
-#define BGE_RDMA_MODE_FIFO_LONG_BURST  ((1 << 17) || (1 << 16))
-#define BGE_RDMA_MODE_FIFO_SIZE_128    (1 << 17)
+#define BGE_RDMAMODE_FIFO_SIZE_128     0x00020000
+#define BGE_RDMAMODE_FIFO_LONG_BURST   0x00030000
 
 /* Read DMA status register */
 #define BGE_RDMASTAT_PCI_TGT_ABRT_ATTN 0x00000004
 #define BGE_WDMAMODE_PCI_FIFOOREAD_ATTN        0x00000100
 #define BGE_WDMAMODE_LOCREAD_TOOBIG    0x00000200
 #define BGE_WDMAMODE_ALL_ATTNS         0x000003FC
+#define BGE_WDMAMODE_RX_ACCEL          0x00000400
 
 /* Write DMA status register */
 #define BGE_WDMASTAT_PCI_TGT_ABRT_ATTN 0x00000004