Subject: Re: kern/34517 (re(4) drops all traffic in promiscuous mode)
To: None <gnats-bugs@NetBSD.org>
From: Izumi Tsutsui <tsutsui@ceres.dti.ne.jp>
List: netbsd-bugs
Date: 11/27/2006 18:32:56
gson@gson.org wrote:

>  I tried a kernel built from yesterday's -current sources.  It now
>  works better but still not well: packets are still dropped, but now
>  only for the first few seconds after tcpdump is started.  After that,
>  traffic starts flowing again.

In re_init(), mii_mediachg() is called and it seems to take
a few seconds till PHY is settled.
(you could see it by link LEDs)

I'm not sure if such mii_mediachg() is always required on
initialization, but how about the attached patch?
(values in rgephy.c are taken from Realtek's driver)
---
Izumi Tsutsui


Index: dev/ic/rtl8169.c
===================================================================
RCS file: /cvsroot/src/sys/dev/ic/rtl8169.c,v
retrieving revision 1.71
diff -u -u -r1.71 rtl8169.c
--- dev/ic/rtl8169.c	25 Nov 2006 02:42:18 -0000	1.71
+++ dev/ic/rtl8169.c	27 Nov 2006 09:14:48 -0000
@@ -1955,8 +1955,6 @@
 	if (sc->re_testmode)
 		return 0;
 
-	mii_mediachg(&sc->mii);
-
 	CSR_WRITE_1(sc, RTK_CFG1, RTK_CFG1_DRVLOAD | RTK_CFG1_FULLDUPLEX);
 
 	ifp->if_flags |= IFF_RUNNING;
Index: dev/mii/rgephy.c
===================================================================
RCS file: /cvsroot/src/sys/dev/mii/rgephy.c,v
retrieving revision 1.12
diff -u -u -r1.12 rgephy.c
--- dev/mii/rgephy.c	16 Nov 2006 21:24:07 -0000	1.12
+++ dev/mii/rgephy.c	27 Nov 2006 09:14:48 -0000
@@ -551,10 +551,8 @@
 	/* Reset capabilities */
 	/* Step1: write our capability */
 	PHY_WRITE(sc, 0x04,0x01e1); /* 10/100 capability */
-	PHY_WRITE(sc, 0x09,0x0200); /* 1000 capability */
+	PHY_WRITE(sc, 0x09,0x0300); /* 1000 capability */
 
-#ifdef jrs_notyet
 	/* Step2: Restart NWay */
 	PHY_WRITE(sc, 0x00, 0x1200); // NWay enable and Restart NWay
-#endif
 }