Subject: Re: 10/100 ethernet cards - followup (fxp FIX)
To: Ben Harris <bjh21@cam.ac.uk>
From: Sanjay Lal <sanjayl@iqmail.net>
List: port-macppc
Date: 05/04/2000 08:18:03
Sorry, the date on my email was way off :-).

> Ben Harris wrote:
>
> > In article <v0313030bb5369938f64c@[128.84.235.163]> you write:
> > >Before I add to the FAQ, let me just make sure I've got it all straight:
> >
> > A small discovery from me (I'll send-pr this when I get a chance):
> >
> > Intel 82557-based card (fxp) wedges machine on ifconfig up (only tested
> > once) in -current.
> >
> > --
> > Ben Harris
>
> Hmm, I must have forgotten to submit this fix for the fxp driver. Here it
> goes (sorry I dont have the diffs)
>
> In -current the file in question is .../dev/ice/i82557.c  In both cases the
> bug
> is an endian issue. The driver issued a command to the chip and polls
> a bit waiting for it to complete. however due to the endian swap, the wrong
> bit is polled, and the kernel hangs an in infinite while loop.  I have
> added the htole16() call whithin the while loop.
>
> Regards and thanks
> Sanjay Lal
> Redback Networks
>
> ------------------fxp FIX---------------------------------------
>
> In function fxp_mc_setup().
>  /* ...and wait for it to complete. */
>    1897         do {
>    1898                 FXP_CDMCSSYNC(sc,
>    1899                     BUS_DMASYNC_POSTREAD|BUS_DMASYNC_POSTWRITE);
>    1900         } while ((htole16(mcsp->cb_status) & FXP_CB_STATUS_C) == 0);
>
> And fxp_init()
>
>    1415         do {
>    1416                 FXP_CDCONFIGSYNC(sc,
>    1417                     BUS_DMASYNC_POSTREAD|BUS_DMASYNC_POSTWRITE);
>    1418         } while ((htole16(cbp->cb_status) & FXP_CB_STATUS_C) == 0);