Date: Thu, 28 Aug 2008 22:18:28 -0500 From: "Jacob Owens" <jacoblowens@gmail.com> To: freebsd-net@freebsd.org Subject: Re: lagg failover not automatic Message-ID: <c292b6660808282018ib6366f8iffdc3a977bd33385@mail.gmail.com> In-Reply-To: <20080813044809.GD58659@cdnetworks.co.kr> References: <c292b6660808082149m421d1a96q53d8a6934e11ed70@mail.gmail.com> <20080809082539.GC42339@cdnetworks.co.kr> <c292b6660808111801l7a584aa1r4aa6c324c3c9a1f7@mail.gmail.com> <20080812013739.GB54362@cdnetworks.co.kr> <c292b6660808120649s52dba0ct4d523f64062d597d@mail.gmail.com> <20080813044809.GD58659@cdnetworks.co.kr>
next in thread | previous in thread | raw e-mail | index | archive | help
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@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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?c292b6660808282018ib6366f8iffdc3a977bd33385>