6.3 nfe: strange behavior after hand
Pyun YongHyeon
pyunyh at gmail.com
Tue Feb 26 07:36:45 UTC 2008
On Mon, Feb 25, 2008 at 05:17:03PM +0200, Andriy Gapon wrote:
> on 25/02/2008 15:02 Andriy Gapon said the following:
> > on 04/02/2008 05:52 Pyun YongHyeon said the following:
> >> On Fri, Feb 01, 2008 at 03:56:17PM +0200, Andriy Gapon wrote:
> >> > on 01/02/2008 15:42 Andriy Gapon said the following:
> >> > > on 01/02/2008 14:36 Pyun YongHyeon said the following:
> >> > >> After applying attached patch and let me know the output of
> >> > >> "devid : xxx, revid : xxx, pwr = xxx". It would be even better
> >> > >> if you can show me the above message for working/non-working case.
> >> > >>
> >> > >>
> >> > >
> >> > > Applied the patch with correction to actually print rev instead of dev
> >> > > for the second time :-)
> >> > > This is in working case:
> >> > > devid : 269, revid : a3, pwr = 00000003
> >> >
> >> > A clarification: I just applied the patch, recompiled and re-loaded the
> >> > module. There was no reboot/poweroff/reset in between.
> >> >
> >> > > Will wait for the non-working situation.
> >> > >
> >> >
> >>
> >> Revert previous patch and try attached patch again and let me know
> >> how it goes.
> >>
> >>
> >
> > Tried it - still no joy, the behavior is as before.
> > If I gracefully reboot the machine or power down and then up, then
> > everything is OK. But if I press "reset" button and boot up, the nfe
> > interface is "dead".
> > BTW, I kept the line for printing devid/revid/pwr and output is the same
> > in all cases.
> >
>
> Not sure if that is related but Linux forcedeth driver seems to do some
> stuff that we don't do:
> http://lxr.linux.no/linux+v2.6.24/drivers/net/forcedeth.c#L5271
>
Nice catch!
The register name in nfe(4) for NvRegMIIMask is NFE_SETUP_R4.
According to Linux driver it's used for generating link state
change interrupt. So I guess nfe(4) may have to clear the
register in nfe_stop(). How about clearing the register as
attached patch? (Sorry I couldn't test this ATM...)
--
Regards,
Pyun YongHyeon
-------------- next part --------------
--- if_nfe.c.orig 2008-02-02 04:36:24.000000000 +0900
+++ if_nfe.c 2008-02-26 16:32:45.000000000 +0900
@@ -2925,6 +2925,8 @@
/* disable Rx */
NFE_WRITE(sc, NFE_RX_CTL, 0);
+ NFE_WRITE(sc, NFE_SETUP_R4, 0);
+
/* disable interrupts */
nfe_disable_intr(sc);
More information about the freebsd-stable
mailing list