lagg failover not automatic
Marius Strobl
marius at alchemy.franken.de
Fri Aug 29 20:55:24 UTC 2008
On Thu, Aug 28, 2008 at 10:18:28PM -0500, Jacob Owens wrote:
> 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
For the records, a more appropriate fix (the above patch just
lets dc(4) bypasse the DC_REDUCED_MII_POLL handling completely)
was commited as r182461.
Marius
More information about the freebsd-net
mailing list