summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryongari <yongari@FreeBSD.org>2010-07-06 02:07:59 +0000
committeryongari <yongari@FreeBSD.org>2010-07-06 02:07:59 +0000
commit5fdc7b79a532f9a129422750e3b1fef5a6d72efc (patch)
treef465dea67ab49f97d669c7e193f05d78612ef503
parent15a394fbbad37497967f317055562bc99c9e78a3 (diff)
downloadFreeBSD-src-5fdc7b79a532f9a129422750e3b1fef5a6d72efc.zip
FreeBSD-src-5fdc7b79a532f9a129422750e3b1fef5a6d72efc.tar.gz
It seems read DMA mode register requires both IPv4 TSO and IPv6 TSO
configuration to get IPv4 TSO work on BCM57780. While I'm here apply the same fix to BCM5785 which shares similar hardware feature of BCM57780. This change makes TSO work on BCM57780. Tested by: Tong Liu <nemoliu <> gmail dot com>
-rw-r--r--sys/dev/bge/if_bge.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/dev/bge/if_bge.c b/sys/dev/bge/if_bge.c
index c8151fc..ec6ef2d 100644
--- a/sys/dev/bge/if_bge.c
+++ b/sys/dev/bge/if_bge.c
@@ -1834,8 +1834,12 @@ bge_blockinit(struct bge_softc *sc)
BGE_RDMAMODE_MBUF_SBD_CRPT_ATTN;
if (sc->bge_flags & BGE_FLAG_PCIE)
val |= BGE_RDMAMODE_FIFO_LONG_BURST;
- if (sc->bge_flags & BGE_FLAG_TSO)
+ if (sc->bge_flags & BGE_FLAG_TSO) {
val |= BGE_RDMAMODE_TSO4_ENABLE;
+ if (sc->bge_asicrev == BGE_ASICREV_BCM5785 ||
+ sc->bge_asicrev == BGE_ASICREV_BCM57780)
+ val |= BGE_RDMAMODE_TSO6_ENABLE;
+ }
CSR_WRITE_4(sc, BGE_RDMA_MODE, val);
DELAY(40);
OpenPOWER on IntegriCloud