> 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.

Reply via email to