lagg failover not automatic
Jacob Owens
jacoblowens at gmail.com
Fri Aug 29 03:18:30 UTC 2008
To resolve the issue, Pyun first had my patch amphy.c , then the dc driver.
The DC patch fixed my issue. Here is what i had to do:
1. save attached patch to /tmp
2. #cd /usr/src
3. #patch -p0 < /tmp/dc.patch
4. rebuild/install kernel and reboot. i used instructions from here:
http://www.freebsdmadeeasy.com/tutorials/freebsd/recompiling-the-kernel-in-freebsd.php
THANK YOU to Pyun YongHyeon and the freebsd-net group for helping me with
this issue!!!
Save the text below and save as dc.patch. (The first line is 'index:
sys/dev/dc......' ,Last line is ' * When the init.....'
Index: sys/dev/dc/if_dc.c
===================================================================
--- sys/dev/dc/if_dc.c (revision 181654)
+++ sys/dev/dc/if_dc.c (working copy)
@@ -2868,6 +2868,12 @@
ifp = sc->dc_ifp;
mii = device_get_softc(sc->dc_miibus);
+ /*
+ * XXX Can cause autonegotiation failure on certain models
+ * as DC21143 overdrive mii_ticks.
+ */
+ mii_tick(mii);
+
if (sc->dc_flags & DC_REDUCED_MII_POLL) {
if (sc->dc_flags & DC_21143_NWAY) {
r = CSR_READ_4(sc, DC_10BTSTAT);
@@ -2881,19 +2887,15 @@
sc->dc_link = 0;
mii_mediachg(mii);
}
- if (sc->dc_link == 0)
- mii_tick(mii);
} else {
r = CSR_READ_4(sc, DC_ISR);
if ((r & DC_ISR_RX_STATE) == DC_RXSTATE_WAIT &&
sc->dc_cdata.dc_tx_cnt == 0) {
- mii_tick(mii);
if (!(mii->mii_media_status & IFM_ACTIVE))
sc->dc_link = 0;
}
}
- } else
- mii_tick(mii);
+ }
/*
* When the init routine completes, we expect to be able to send
On Tue, Aug 12, 2008 at 11:48 PM, Pyun YongHyeon <pyunyh at gmail.com> wrote:
>
> On Tue, Aug 12, 2008 at 08:49:20AM -0500, Jacob Owens wrote:
> > pyun,
> >
> > Thank you! I am not familiar with patching freebsd. i tried:
> >
> > # patch < amphy.diff
> >
> > then it asked me to pick a file.i entered: /sys/dev/mii/amphy.c
> >
> > then i recompiled my kernel. I don't know if the patch was applied
> > correctly. either way, it didn't change anything.
> >
>
> Thanks for testing! I've checked dc(4) and link state checking code
> in the driver looks questionable. So I made a patch but I don't
> know whether it helps or not. The patch can even break establishing
> link so you should be very careful before applying the patch and
> should not apply the patch if you have no physical acesss to the
> hardware. Would you give it a try?
>
> Note, I'm not familiar with dc(4) and dc(4) supports too many
> variants. It seems that each controller needs different workaround
> to overcome its hardware limitation. Link state handling seems to
> be one of reason why dc(4) didn't periodically invoke link state
> check clock. I would be on vacation from Aug 14 for a week so don't
> expect quick reply.
>
> # You can apply the patch with the following command.
> 1. save attached patch to /tmp
> 2. #cd /usr/src
> 3. #patch -p0 < /tmp/dc.patch
> 4. rebuild/install kernel and reboot.
>
> --
> Regards,
> Pyun YongHyeon
More information about the freebsd-net
mailing list