summaryrefslogtreecommitdiffstats
path: root/sys/dev
diff options
context:
space:
mode:
authoryongari <yongari@FreeBSD.org>2013-06-07 01:21:09 +0000
committeryongari <yongari@FreeBSD.org>2013-06-07 01:21:09 +0000
commit93e98d543063f23d3559151174982ac08a538229 (patch)
tree6a1a34984a8406f60b322ee90f2d63a0145ab4c3 /sys/dev
parentbcc118f0b2412eff689bca649f50f86801a9cfc1 (diff)
downloadFreeBSD-src-93e98d543063f23d3559151174982ac08a538229.zip
FreeBSD-src-93e98d543063f23d3559151174982ac08a538229.tar.gz
Correct setting TX random backoff register. This register is
implemented as a 10 bits linear feedback shift register so only lower 10 bits are valid. Because this register is used to initialize random backoff interval register only when resolved duplex is half-duplex, it wouldn't have caused issues in these days. Submitted by: Masanobu SAITOH <msaitoh@NetBSD.org>
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/bge/if_bge.c4
-rw-r--r--sys/dev/bge/if_bgereg.h2
2 files changed, 3 insertions, 3 deletions
diff --git a/sys/dev/bge/if_bge.c b/sys/dev/bge/if_bge.c
index fb69410..d6e6e20 100644
--- a/sys/dev/bge/if_bge.c
+++ b/sys/dev/bge/if_bge.c
@@ -2280,9 +2280,9 @@ bge_blockinit(struct bge_softc *sc)
/* Set random backoff seed for TX */
CSR_WRITE_4(sc, BGE_TX_RANDOM_BACKOFF,
- IF_LLADDR(sc->bge_ifp)[0] + IF_LLADDR(sc->bge_ifp)[1] +
+ (IF_LLADDR(sc->bge_ifp)[0] + IF_LLADDR(sc->bge_ifp)[1] +
IF_LLADDR(sc->bge_ifp)[2] + IF_LLADDR(sc->bge_ifp)[3] +
- IF_LLADDR(sc->bge_ifp)[4] + IF_LLADDR(sc->bge_ifp)[5] +
+ IF_LLADDR(sc->bge_ifp)[4] + IF_LLADDR(sc->bge_ifp)[5]) &
BGE_TX_BACKOFF_SEED_MASK);
/* Set inter-packet gap */
diff --git a/sys/dev/bge/if_bgereg.h b/sys/dev/bge/if_bgereg.h
index a19aaaa..760fc85 100644
--- a/sys/dev/bge/if_bgereg.h
+++ b/sys/dev/bge/if_bgereg.h
@@ -797,7 +797,7 @@
#define BGE_LEDCTL_BLINKPERIOD_OVERRIDE 0x80000000
/* TX backoff seed register */
-#define BGE_TX_BACKOFF_SEED_MASK 0x3F
+#define BGE_TX_BACKOFF_SEED_MASK 0x3FF
/* Autopoll status register */
#define BGE_AUTOPOLLSTS_ERROR 0x00000001
OpenPOWER on IntegriCloud