> Date: Wed, 26 Sep 2012 00:46:29 -0400 > From: Brad Smith <[email protected]> > > On Sat, Jul 25, 2009 at 07:14:42AM -0400, Brad wrote: > > Please test the following diff which adds flow control support > > with any gem(4) adapter. > > > > Please provide a dmesg and "ifconfig gemX" output. > > No one ever reported any issues with this so I'd like to get this > in. > > OK?
What hardware did this get tested on that actually supports flow control? > > Index: gem.c > > =================================================================== > > RCS file: /cvs/src/sys/dev/ic/gem.c,v > > retrieving revision 1.92 > > diff -u -p -r1.92 gem.c > > --- gem.c 18 Jul 2009 14:42:47 -0000 1.92 > > +++ gem.c 25 Jul 2009 10:22:23 -0000 > > @@ -134,7 +134,7 @@ gem_config(struct gem_softc *sc) > > struct ifnet *ifp = &sc->sc_arpcom.ac_if; > > struct mii_data *mii = &sc->sc_mii; > > struct mii_softc *child; > > - int i, error, phyad; > > + int i, error, mii_flags, phyad; > > struct ifmedia_entry *ifm; > > > > /* Make sure the chip is stopped. */ > > @@ -248,6 +248,8 @@ gem_config(struct gem_softc *sc) > > > > gem_mifinit(sc); > > > > + mii_flags = MIIF_DOPAUSE; > > + > > /* > > * Look for an external PHY. > > */ > > @@ -266,7 +268,7 @@ gem_config(struct gem_softc *sc) > > } > > > > mii_attach(&sc->sc_dev, mii, 0xffffffff, phyad, > > - MII_OFFSET_ANY, 0); > > + MII_OFFSET_ANY, mii_flags); > > } > > > > /* > > @@ -292,7 +294,7 @@ gem_config(struct gem_softc *sc) > > } > > > > mii_attach(&sc->sc_dev, mii, 0xffffffff, phyad, > > - MII_OFFSET_ANY, 0); > > + MII_OFFSET_ANY, mii_flags); > > } > > > > /* > > @@ -314,8 +316,10 @@ gem_config(struct gem_softc *sc) > > mii->mii_readreg = gem_pcs_readreg; > > mii->mii_writereg = gem_pcs_writereg; > > > > + mii_flags |= MIIF_NOISOLATE; > > + > > mii_attach(&sc->sc_dev, mii, 0xffffffff, MII_PHY_ANY, > > - MII_OFFSET_ANY, MIIF_NOISOLATE); > > + MII_OFFSET_ANY, mii_flags); > > } > > > > child = LIST_FIRST(&mii->mii_phys); > > @@ -873,8 +877,8 @@ gem_init_regs(struct gem_softc *sc) > > bus_space_write_4(t, h, GEM_MAC_RX_CRC_ERR_CNT, 0); > > bus_space_write_4(t, h, GEM_MAC_RX_CODE_VIOL, 0); > > > > - /* Un-pause stuff */ > > - bus_space_write_4(t, h, GEM_MAC_SEND_PAUSE_CMD, 0); > > + /* Set XOFF PAUSE time */ > > + bus_space_write_4(t, h, GEM_MAC_SEND_PAUSE_CMD, 0x1BF0); > > > > /* > > * Set the internal arbitration to "infinite" bursts of the > > @@ -1331,6 +1335,17 @@ gem_mii_statchg(struct device *dev) > > v &= ~GEM_MAC_XIF_GMII_MODE; > > } > > bus_space_write_4(t, mac, GEM_MAC_XIF_CONFIG, v); > > + > > + /* > > + * 802.3x flow control > > + */ > > + v = bus_space_read_4(t, mac, GEM_MAC_CONTROL_CONFIG); > > + v &= ~(GEM_MAC_CC_RX_PAUSE | GEM_MAC_CC_TX_PAUSE); > > + if ((IFM_OPTIONS(sc->sc_mii.mii_media_active) & IFM_ETH_RXPAUSE) != 0) > > + v |= GEM_MAC_CC_RX_PAUSE; > > + if ((IFM_OPTIONS(sc->sc_mii.mii_media_active) & IFM_ETH_TXPAUSE) != 0) > > + v |= GEM_MAC_CC_TX_PAUSE; > > + bus_space_write_4(t, mac, GEM_MAC_CONTROL_CONFIG, v); > > } > > > > int > > > > -- > > This message has been scanned for viruses and > > dangerous content by MailScanner, and is > > believed to be clean. > > > > -- > This message has been scanned for viruses and > dangerous content by MailScanner, and is > believed to be clean.
