Skip site navigation (1)Skip section navigation (2)
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>