if_msk.c link negotiation / packet drops

YongHyeon PYUN pyunyh at gmail.com
Thu Oct 13 20:49:37 UTC 2011


On Thu, Oct 13, 2011 at 12:59:35AM -0700, perryh at pluto.rain.com wrote:
> YongHyeon PYUN <pyunyh at gmail.com> wrote:
> > On Wed, Oct 12, 2011 at 10:07:02AM -0400, Karim wrote:
> > > ... why are we ORing the same call twice isn't the same thing
> > > as calling it once:
> > > 
> > > bmsr = PHY_READ(sc, E1000_SR) | PHY_READ(sc, E1000_SR);
> >
> > The E1000_SR_LINK_STATUS bit is latched low so it should be read
> > twice.
> 
> It might not be a bad idea to check the generated code to be sure
> that the read _is_ being done twice.  An optimizer might well come
> to the same conclusion as Karim, and discard the "redundant" second
> instance (unless there's a "volatile" declaration somewhere in the
> expansion of PHY_READ, to explicitly indicate that it has side
> effects).

Last time I checked it, compiler generated correct code.
Tried again on amd64 and I can still see the code is there.


More information about the freebsd-net mailing list