cvs commit: src/sys/dev/fxp if_fxp.c

Maxime Henrion mux at freebsd.org
Tue Apr 8 10:31:02 PDT 2003


Nate Lawson wrote:
> On Tue, 8 Apr 2003, Maxime Henrion wrote:
> >   Modified files:
> >     sys/dev/fxp          if_fxp.c 
> >   Log:
> >   Fix the hangs people have been seeing.  For some reason, the
> >   atomic operation change caused this, so backout it until I
> >   can figure out what's wrong with it.
> >   
> >   Revision  Changes    Path
> >   1.163     +7 -11     src/sys/dev/fxp/if_fxp.c
> 
> Thank you. 
> 
> > -		atomic_clear_32((u_int32_t *)&last->tx_cb->cb_status,
> > -		    htobe32(bswap16(FXP_CB_COMMAND_S)));
> > -
> > +		atomic_clear_short(&sc->fxp_desc.tx_last->tx_cb->cb_command,
> > +		    FXP_CB_COMMAND_S);
> > +#else
> > +		sc->fxp_desc.tx_last->tx_cb->cb_command &= ~FXP_CB_COMMAND_S;
> > +#endif /*__alpha__*/
> 
> Um, are each of those cases semantically equivalent?

Yes they are.  The only difference, and that's probably where the
problem lies, is that we are now rewriting (but not changing) cb_status.
The cb_status word is probably mapped to a register in the fxp(4) card
and thus rewriting it might not be safe.

Cheers,
Maxime


More information about the cvs-src mailing list