Date: Wed, 27 Aug 2003 11:35:49 +0200 From: Martin Jessa <freebsd@yazzy.org> To: freebsd-current@freebsd.org Cc: phk@phk.freebsd.dk Subject: Re: if_sis: performance tweaking Message-ID: <20030827113549.5081576e.freebsd@yazzy.org> In-Reply-To: <27210.1061117953@critter.freebsd.dk> References: <27210.1061117953@critter.freebsd.dk>
next in thread | previous in thread | raw e-mail | index | archive | help
Hi Poul-Henning, guys. Are those changes included in 5.1-CURRENT now or should I patch my source in order to test it? On Sun, 17 Aug 2003 12:59:13 +0200 Poul-Henning Kamp <phk@phk.freebsd.dk> wrote: > > This patch tweaks various thresholds in the DP8381[56] chip. > > On my Soekris 4801, the goes from 5-6 Mbit/sec to 30-40 Mbit/sec > with this patch. > > Also included is Sams patch for the "short cable" problem". > > Tests, comments etc most welcome. > > Poul-Henning > > Index: if_sis.c > =================================================================== > RCS file: /home/ncvs/src/sys/pci/if_sis.c,v > retrieving revision 1.80 > diff -u -r1.80 if_sis.c > --- if_sis.c 27 Jul 2003 14:36:02 -0000 1.80 > +++ if_sis.c 17 Aug 2003 10:46:59 -0000 > @@ -107,7 +107,7 @@ > static struct sis_type sis_devs[] = { > { SIS_VENDORID, SIS_DEVICEID_900, "SiS 900 10/100BaseTX" }, > { SIS_VENDORID, SIS_DEVICEID_7016, "SiS 7016 10/100BaseTX" }, > - { NS_VENDORID, NS_DEVICEID_DP83815, "NatSemi DP83815 10/100BaseTX" }, > + { NS_VENDORID, NS_DEVICEID_DP83815, "NatSemi DP83815/6 10/100BaseTX" }, > { 0, 0, NULL } > }; > > @@ -2031,6 +2031,10 @@ > */ > sis_stop(sc); > > + if (sc->sis_type == SIS_TYPE_83815) { > + CSR_WRITE_4(sc, NS_IHR, 0x120); > + } > + > mii = device_get_softc(sc->sis_miibus); > > /* Set MAC address */ > @@ -2121,7 +2125,7 @@ > if (CSR_READ_4(sc, SIS_CFG) & SIS_CFG_EDB_MASTER_EN) { > CSR_WRITE_4(sc, SIS_RX_CFG, SIS_RXCFG64); > } else { > - CSR_WRITE_4(sc, SIS_RX_CFG, SIS_RXCFG256); > + CSR_WRITE_4(sc, SIS_RX_CFG, SIS_RXCFG128); > } > > > @@ -2144,6 +2148,29 @@ > SIS_CLRBIT(sc, SIS_TX_CFG, > (SIS_TXCFG_IGN_HBEAT|SIS_TXCFG_IGN_CARR)); > SIS_CLRBIT(sc, SIS_RX_CFG, SIS_RXCFG_RX_TXPKTS); > + } > + > + if (sc->sis_type == SIS_TYPE_83815 && > + IFM_SUBTYPE(mii->mii_media_active) == IFM_100_TX) { > + uint32_t reg; > + > + /* > + * Some DP83815s experience problems when used with short > + * (< 30m/100ft) Ethernet cables in 100BaseTX mode. This > + * sequence adjusts the DSP's signal attenuation to fix the > + * problem. > + */ > + CSR_WRITE_4(sc, NS_PHY_PAGE, 0x0001); > + > + reg = CSR_READ_4(sc, NS_PHY_DSPCFG); > + CSR_WRITE_4(sc, NS_PHY_DSPCFG, (reg & 0xfff) | 0x1000); > + DELAY(100); > + reg = CSR_READ_4(sc, NS_PHY_TDATA); > + if ((reg & 0x0080) == 0 || (reg & 0xff) >= 0xd8) { > + CSR_WRITE_4(sc, NS_PHY_TDATA, 0x00e8); > + SIS_SETBIT(sc, NS_PHY_DSPCFG, 0x20); > + } > + CSR_WRITE_4(sc, NS_PHY_PAGE, 0); > } > > /* > Index: if_sisreg.h > =================================================================== > RCS file: /home/ncvs/src/sys/pci/if_sisreg.h,v > retrieving revision 1.22 > diff -u -r1.22 if_sisreg.h > --- if_sisreg.h 22 Jul 2003 01:35:09 -0000 1.22 > +++ if_sisreg.h 17 Aug 2003 10:50:12 -0000 > @@ -75,6 +75,7 @@ > #define SIS_GPIO 0xB8 > > /* NS DP83815 registers */ > +#define NS_IHR 0x1C > #define NS_CLKRUN 0x3C > #define NS_BMCR 0x80 > #define NS_BMSR 0x84 > @@ -237,12 +238,12 @@ > #define SIS_TXDMA_256BYTES 0x00700000 > > #define SIS_TXCFG_100 \ > - (SIS_TXDMA_64BYTES|SIS_TXCFG_AUTOPAD|\ > - SIS_TXCFG_FILL(64)|SIS_TXCFG_DRAIN(1536)) > + (SIS_TXDMA_128BYTES|SIS_TXCFG_AUTOPAD|\ > + SIS_TXCFG_FILL(1024)|SIS_TXCFG_DRAIN(128)) > > #define SIS_TXCFG_10 \ > (SIS_TXDMA_32BYTES|SIS_TXCFG_AUTOPAD|\ > - SIS_TXCFG_FILL(64)|SIS_TXCFG_DRAIN(1536)) > + SIS_TXCFG_FILL(64)|SIS_TXCFG_DRAIN(128)) > > #define SIS_RXCFG_DRAIN_THRESH 0x0000003E /* 8-byte units */ > #define SIS_RXCFG_DMABURST 0x00700000 > @@ -262,8 +263,8 @@ > #define SIS_RXDMA_128BYTES 0x00600000 > #define SIS_RXDMA_256BYTES 0x00700000 > > -#define SIS_RXCFG256 \ > - (SIS_RXCFG_DRAIN(64)|SIS_RXDMA_256BYTES) > +#define SIS_RXCFG128 \ > + (SIS_RXCFG_DRAIN(128)|SIS_RXDMA_128BYTES) > #define SIS_RXCFG64 \ > (SIS_RXCFG_DRAIN(64)|SIS_RXDMA_64BYTES) > > -- > Poul-Henning Kamp | UNIX since Zilog Zeus 3.20 > phk@FreeBSD.ORG | TCP/IP since RFC 956 > FreeBSD committer | BSD since 4.3-tahoe > Never attribute to malice what can adequately be explained by incompetence. > _______________________________________________ > freebsd-current@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-current > To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030827113549.5081576e.freebsd>