From 5fe22f8b362d9e728a2590870275a2372380001f Mon Sep 17 00:00:00 2001 From: Sepherosa Ziehau Date: Fri, 29 Jun 2012 18:31:10 +0800 Subject: [PATCH] bge: Reduce the number of dropped frames when flow-control is enabled Set the number of RX frames to receive after RX MBUF low watermark has reached. 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 via FreeBSD 213255 --- sys/dev/netif/bge/if_bge.c | 8 ++++++++ sys/dev/netif/bge/if_bgereg.h | 1 + 2 files changed, 9 insertions(+) diff --git a/sys/dev/netif/bge/if_bge.c b/sys/dev/netif/bge/if_bge.c index 6184149e20..187807b31a 100644 --- a/sys/dev/netif/bge/if_bge.c +++ b/sys/dev/netif/bge/if_bge.c @@ -3147,6 +3147,14 @@ bge_init(void *xsc) /* 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/netif/bge/if_bgereg.h b/sys/dev/netif/bge/if_bgereg.h index 42f6f94cb6..d8d011406a 100644 --- a/sys/dev/netif/bge/if_bgereg.h +++ b/sys/dev/netif/bge/if_bgereg.h @@ -607,6 +607,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 -- 2.41.0