From owner-freebsd-net@FreeBSD.ORG Tue Apr 3 06:54:35 2012 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 74CB21065673 for ; Tue, 3 Apr 2012 06:54:35 +0000 (UTC) (envelope-from pyunyh@gmail.com) Received: from mail-pb0-f54.google.com (mail-pb0-f54.google.com [209.85.160.54]) by mx1.freebsd.org (Postfix) with ESMTP id 3D78E8FC12 for ; Tue, 3 Apr 2012 06:54:35 +0000 (UTC) Received: by pbcwz17 with SMTP id wz17so5635281pbc.13 for ; Mon, 02 Apr 2012 23:54:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:date:to:cc:subject:message-id:reply-to:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; bh=bc3wgJ6EcfFU4Vq/yjl8N+mZgmQuSrxcTtl4suTiQos=; b=iBh3PMpLq15yKBcoxy5pxKoErGZyoYl/O68RQq0Y/htfpd1gnkxK3hxh6Xz4tG+yk4 6h49buZSf8BWlJ4yxN3fR/yWM4k/lcGvfraTCJ0WPseKduu+g4fM5z/Dss1ILw06galg zxV1hQ13Ju+KGEdY0E5BA3MmGTrvQfw98QwfZ60Ob82YYJm7TZLOidYNTRzpGqM6Oa9I UY9MO07QZjZEVaV9RXxEeU7o1j2AJyJKyZbkBc7Glf95/bNT0SYrilN1riNoilCMthIM d/wVsQam/L41jOtEYIIN+xiB/F4N9CsXjtxlrwEnPp6HvBWd3eX75zntadqJUZu1NT3N ufbw== Received: by 10.68.201.201 with SMTP id kc9mr5604105pbc.50.1333436074789; Mon, 02 Apr 2012 23:54:34 -0700 (PDT) Received: from pyunyh@gmail.com ([114.111.62.249]) by mx.google.com with ESMTPS id f7sm15696024pbr.3.2012.04.02.23.54.32 (version=TLSv1/SSLv3 cipher=OTHER); Mon, 02 Apr 2012 23:54:34 -0700 (PDT) Received: by pyunyh@gmail.com (sSMTP sendmail emulation); Tue, 03 Apr 2012 15:54:22 -0700 From: YongHyeon PYUN Date: Tue, 3 Apr 2012 15:54:22 -0700 To: enoch Message-ID: <20120403225422.GB7380@michelle.cdnetworks.com> References: <20120330233819.GC7325@michelle.cdnetworks.com> <4F75C5EC.6090303@hotmail.com> <20120402195215.GA3571@michelle.cdnetworks.com> <20120403023225.GD3571@michelle.cdnetworks.com> <87ty11670b.fsf@hotmail.com> <20120403183521.GA7380@michelle.cdnetworks.com> <87obr95pxh.fsf@hotmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="Fba/0zbH8Xs+Fj9o" Content-Disposition: inline In-Reply-To: <87obr95pxh.fsf@hotmail.com> User-Agent: Mutt/1.4.2.3i Cc: freebsd-net@freebsd.org Subject: Re: [nfe] DHCP failure on 8-stable X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: pyunyh@gmail.com List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Apr 2012 06:54:35 -0000 --Fba/0zbH8Xs+Fj9o Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Tue, Apr 03, 2012 at 01:45:30AM -0400, enoch wrote: > YongHyeon PYUN writes: > > > On Mon, Apr 02, 2012 at 07:36:36PM -0400, enoch wrote: > >> YongHyeon PYUN writes: > >> > >> > On Mon, Apr 02, 2012 at 03:50:02AM -0400, enoch wrote: > >> >> On 04/02/2012 03:52 PM, YongHyeon PYUN wrote: > >> >> > On Fri, Mar 30, 2012 at 10:40:44AM -0400, enoch wrote: > >> >> >> On 03/30/2012 19:38, YongHyeon PYUN wrote: > >> >> >>> On Fri, Mar 30, 2012 at 03:01:52AM -0400, enoch wrote: > >> >> >>>> Recently it became extremely difficult to pass the DHCP discovery step > >> >> >>>> on boot. Now I am using the buggy [nve] instead. > >> >> >>>> > >> >> >>>> Can anyone help? > >> >> >>>> > >> >> >>> > >> >> >>> Did you set synchronous_dhclient option in rc.conf? > >> >> >>> > >> >> >> > >> >> >> Yes: ifconfig_nfe0="SYNCDHCP" > >> >> >> > >> >> >> I guess [nfe] is undergoing gradual devel changes of some sort as before > >> >> >> it had some chance of reporting "empty headers" on initial ifconfig and > >> >> >> refusing to work. Sorry, I should have reported when encountering the > >> >> >> first problems rather than solve by reboot. > >> >> > > >> >> > Would you show me the output of both dmesg(nfe(4) and its PHY only) > >> >> > and 'sysctl dev.nfe.0.stats'? > >> >> > It would be also helpful to know whether nfe(4) still sees > >> >> > incoming traffic. > >> >> > Does assigning static IP work? > >> >> > > >> >> > >> >> Static IP direct communication attempt from this desktop to another > >> >> laptop through a crossover cable fails as follows. Thanks. > >> >> > >> >> nfe0: flags=8843 metric 0 mtu 1500 > >> >> options=82008 > >> >> ether 00:1f:bc:00:19:dc > >> >> inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255 > >> >> media: Ethernet autoselect (1000baseT > >> >> ) > >> >> status: active > >> >> > >> >> nfe0: link state changed to UP > >> >> nfe0: port 0xf200-0xf207 > >> >> mem 0xefffb000-0xefffbfff irq 21 at device 20.0 on pci0 > >> >> miibus1: on nfe0 > >> > > >> > It seems you've omitted PHY driver here. What PHY driver was > >> > attached to nfe(4)? > >> > > >> > >> miibus1: on nfe0 > >> rgephy1: PHY 1 on miibus1 > >> > >> >> nfe0: Ethernet address: 00:1f:bc:00:19:dc > >> >> nfe0: [FILTER] > >> >> nfe0: discard frame w/o leading ethernet header (len 0 pkt len 0) > >> >> nfe0: discard frame w/o leading ethernet header (len 0 pkt len 0) > >> >> nfe0: link state changed to UP > >> >> nfe0: discard frame w/o leading ethernet header (len 0 pkt len 0) > >> >> nfe0: discard frame w/o leading ethernet header (len 0 pkt len 0) > >> >> nfe0: discard frame w/o leading ethernet header (len 0 pkt len 0) > >> >> > >> >> dev.nfe.0.stats.rx.frame_errors: 0 > >> >> dev.nfe.0.stats.rx.extra_bytes: 0 > >> >> dev.nfe.0.stats.rx.late_cols: 0 > >> >> dev.nfe.0.stats.rx.runts: 0 > >> >> dev.nfe.0.stats.rx.jumbos: 0 > >> >> dev.nfe.0.stats.rx.fifo_overuns: 0 > >> >> dev.nfe.0.stats.rx.crc_errors: 0 > >> >> dev.nfe.0.stats.rx.fae: 0 > >> >> dev.nfe.0.stats.rx.len_errors: 0 > >> >> dev.nfe.0.stats.rx.unicast: 56 > >> >> dev.nfe.0.stats.rx.multicast: 0 > >> >> dev.nfe.0.stats.rx.broadcast: 280 > >> >> dev.nfe.0.stats.tx.octets: 7517 > >> >> dev.nfe.0.stats.tx.zero_rexmits: 51 > >> >> dev.nfe.0.stats.tx.one_rexmits: 0 > >> >> dev.nfe.0.stats.tx.multi_rexmits: 0 > >> >> dev.nfe.0.stats.tx.late_cols: 0 > >> >> dev.nfe.0.stats.tx.fifo_underuns: 0 > >> >> dev.nfe.0.stats.tx.carrier_losts: 0 > >> >> dev.nfe.0.stats.tx.excess_deferrals: 0 > >> >> dev.nfe.0.stats.tx.retry_errors: 0 > >> >> > >> > > >> > Thanks. Would you show me the output of "pciconf -lcbv"? > >> > > >> > >> nfe0@pci0:0:20:0: class=0x068000 card=0x10003842 chip=0x026910de rev=0xa3 hdr=0x00 > >> vendor = 'NVIDIA Corporation' > >> device = 'MCP51 Network Bus Enumerator' > >> class = bridge > >> bar [10] = type Memory, range 32, base 0xefffb000, size 4096, enabled > >> bar [14] = type I/O Port, range 32, base 0xf200, size 8, enabled > >> cap 01[44] = powerspec 2 supports D0 D1 D2 D3 current D0 > >> > >> Interestingly, now that nfe0 is using a static IP it sometimes boots > >> up properly. Are you interested in its good working? > > > > Yes I am. Would you try attached patch and let me know whether the > > patch makes any difference on your box? > > Sorry to report: The patch was applied (to 8-stable latest code) but out > of 3 boots only one succeeded. Same stream of "nfe0: discard frame w/o > leading ethernet header (len 0 pkt len 0)" messages. Ok, back out previous patch and try attached one. --Fba/0zbH8Xs+Fj9o Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="nfe.power.diff2" Index: sys/dev/nfe/if_nfe.c =================================================================== --- sys/dev/nfe/if_nfe.c (revision 233822) +++ sys/dev/nfe/if_nfe.c (working copy) @@ -338,7 +338,10 @@ { struct nfe_softc *sc; struct ifnet *ifp; + struct mii_softc *miisc; + struct mii_data *mii; bus_addr_t dma_addr_max; + uint32_t pwr; int error = 0, i, msic, reg, rid; sc = device_get_softc(dev); @@ -614,6 +617,29 @@ device_printf(dev, "attaching PHYs failed\n"); goto fail; } + mii = device_get_softc(sc->nfe_miibus); + miisc = LIST_FIRST(&mii->mii_phys); + /* + * XXX + * This kind of magic should live in PHY driver. + * Should have better to way to use MII_OUI_REALTEK, MII_OUI_xxREALTEK + * and MII_MODEL_REALTEK_RTL8169S/MII_MODEL_xxREALTEK_RTL8169S. + */ + if (miisc->mii_mpd_oui == 0x00e04c || miisc->mii_mpd_oui == 0x000732) { + if (miisc->mii_mpd_model == 0x0011) { +#if 1 + device_printf(dev, "Forced PHY reset\n"); +#endif + pwr = NFE_READ(sc, NFE_PWR2_CTL); + NFE_WRITE(sc, NFE_PWR2_CTL, pwr | NFE_PWR2_PHY_RESET); + NFE_READ(sc, NFE_PWR2_CTL); + DELAY(1000 * 50); + NFE_WRITE(sc, NFE_PWR2_CTL, pwr); + NFE_READ(sc, NFE_PWR2_CTL); + DELAY(1000 * 50); + nfe_miibus_writereg(dev, miisc->mii_phy, 0x1F, 0); + } + } ether_ifattach(ifp, sc->eaddr); TASK_INIT(&sc->nfe_int_task, 0, nfe_int_task, sc); Index: sys/dev/nfe/if_nfereg.h =================================================================== --- sys/dev/nfe/if_nfereg.h (revision 233822) +++ sys/dev/nfe/if_nfereg.h (working copy) @@ -188,8 +188,9 @@ #define NFE_PWR_VALID (1 << 8) #define NFE_PWR_WAKEUP (1 << 15) -#define NFE_PWR2_WAKEUP_MASK 0x0f11 +#define NFE_PWR2_WAKEUP_MASK 0x0f15 #define NFE_PWR2_REVA3 (1 << 0) +#define NFE_PWR2_PHY_RESET 0x0004 #define NFE_PWR2_GATE_CLOCKS 0x0f00 #define NFE_MEDIA_SET 0x10000 --Fba/0zbH8Xs+Fj9o--