summaryrefslogtreecommitdiffstats
path: root/sys/dev/bge
diff options
context:
space:
mode:
authoryongari <yongari@FreeBSD.org>2010-09-29 00:00:45 +0000
committeryongari <yongari@FreeBSD.org>2010-09-29 00:00:45 +0000
commit018d101e23c0b00e0eac3c07fa0341bd0a2a2c91 (patch)
tree0eb739aa3a9dfa3a2161f6f6029a948ae6154b95 /sys/dev/bge
parentc0dff81a760d578b010415f095a0a01e2657eced (diff)
downloadFreeBSD-src-018d101e23c0b00e0eac3c07fa0341bd0a2a2c91.zip
FreeBSD-src-018d101e23c0b00e0eac3c07fa0341bd0a2a2c91.tar.gz
Set the number of RX frames to receive after RX MBUF low watermark
has reached. This reduced number of dropped frames when flow-control is enabled. Previously it dropped incoming frames once RX MBUF low watermark has reached. The value used in MAC RX MBUF low watermark is greater than or equal to 4 so receiving two more RX frames should not be a problem. Obtained from: OpenBSD
Diffstat (limited to 'sys/dev/bge')
-rw-r--r--sys/dev/bge/if_bge.c8
-rw-r--r--sys/dev/bge/if_bgereg.h1
2 files changed, 9 insertions, 0 deletions
diff --git a/sys/dev/bge/if_bge.c b/sys/dev/bge/if_bge.c
index 1ff206d..9bc7026 100644
--- a/sys/dev/bge/if_bge.c
+++ b/sys/dev/bge/if_bge.c
@@ -4220,6 +4220,14 @@ bge_init_locked(struct bge_softc *sc)
/* Turn on receiver. */
BGE_SETBIT(sc, BGE_RX_MODE, BGE_RXMODE_ENABLE);
+ /*
+ * Set the number of good frames to receive after RX MBUF
+ * Low Watermark has been reached. After the RX MAC receives
+ * this number of frames, it will drop subsequent incoming
+ * frames until the MBUF High Watermark is reached.
+ */
+ CSR_WRITE_4(sc, BGE_MAX_RX_FRAME_LOWAT, 2);
+
/* Tell firmware we're alive. */
BGE_SETBIT(sc, BGE_MODE_CTL, BGE_MODECTL_STACKUP);
diff --git a/sys/dev/bge/if_bgereg.h b/sys/dev/bge/if_bgereg.h
index d17d56d..f6d2c7b 100644
--- a/sys/dev/bge/if_bgereg.h
+++ b/sys/dev/bge/if_bgereg.h
@@ -632,6 +632,7 @@
#define BGE_RX_BD_RULES_CTL15 0x04F8
#define BGE_RX_BD_RULES_MASKVAL15 0x04FC
#define BGE_RX_RULES_CFG 0x0500
+#define BGE_MAX_RX_FRAME_LOWAT 0x0504
#define BGE_SERDES_CFG 0x0590
#define BGE_SERDES_STS 0x0594
#define BGE_SGDIG_CFG 0x05B0
OpenPOWER on IntegriCloud