diff options
author | rwatson <rwatson@FreeBSD.org> | 2003-05-16 01:13:16 +0000 |
---|---|---|
committer | rwatson <rwatson@FreeBSD.org> | 2003-05-16 01:13:16 +0000 |
commit | 49ec42645b698a2d1d13ce453d2f135046098070 (patch) | |
tree | 33e5e974317a9b4e671b864795eec9782b5ebfb0 | |
parent | 19a94ea3a38a44ec60c6ebec5f3a8d99d066c45f (diff) | |
download | FreeBSD-src-49ec42645b698a2d1d13ce453d2f135046098070.zip FreeBSD-src-49ec42645b698a2d1d13ce453d2f135046098070.tar.gz |
Add a tunable/sysctl "hw.fxp_noflow" which disables flow control support
on if_fxp cards. When flow control is enabled, if the operating system
doesn't acknowledge the packet buffer filling, the card will begin to
generate ethernet quench packets, but appears to get into a feedback
loop of some sort, hosing local switches. This is a temporary workaround
for 5.1: the ability to configure flow control should probably be
exposed by some or another management interface on ethernet link layer
devices.
Approved by: re (bmah)
Reviewed by: mux
-rw-r--r-- | sys/dev/fxp/if_fxp.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/dev/fxp/if_fxp.c b/sys/dev/fxp/if_fxp.c index 772ba01..1124ede 100644 --- a/sys/dev/fxp/if_fxp.c +++ b/sys/dev/fxp/if_fxp.c @@ -264,6 +264,10 @@ DRIVER_MODULE(miibus, fxp, miibus_driver, miibus_devclass, 0, 0); static int fxp_rnr; SYSCTL_INT(_hw, OID_AUTO, fxp_rnr, CTLFLAG_RW, &fxp_rnr, 0, "fxp rnr events"); +static int fxp_noflow; +SYSCTL_INT(_hw, OID_AUTO, fxp_noflow, CTLFLAG_RW, &fxp_noflow, 0, "fxp flow control disabled"); +TUNABLE_INT("hw.fxp_noflow", &fxp_noflow); + /* * Wait for the previous command to be accepted (but not necessarily * completed). @@ -2051,7 +2055,7 @@ fxp_init_body(struct fxp_softc *sc) cbp->mc_all = sc->flags & FXP_FLAG_ALL_MCAST ? 1 : 0; cbp->gamla_rx = sc->flags & FXP_FLAG_EXT_RFA ? 1 : 0; - if (sc->revision == FXP_REV_82557) { + if (fxp_noflow || sc->revision == FXP_REV_82557) { /* * The 82557 has no hardware flow control, the values * below are the defaults for the chip. |