Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 29 Aug 2008 22:35:37 +0200
From:      Marius Strobl <marius@alchemy.franken.de>
To:        Jacob Owens <jacoblowens@gmail.com>
Cc:        freebsd-net@freebsd.org
Subject:   Re: lagg failover not automatic
Message-ID:  <20080829203537.GA83446@alchemy.franken.de>
In-Reply-To: <c292b6660808282018ib6366f8iffdc3a977bd33385@mail.gmail.com>
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> <c292b6660808282018ib6366f8iffdc3a977bd33385@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080829203537.GA83446>