Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 16 Nov 2009 10:13:04 -0800
From:      Pyun YongHyeon <pyunyh@gmail.com>
To:        Gleb Kurtsou <gleb.kurtsou@gmail.com>
Cc:        Mel Flynn <mel.flynn+fbsd.current@mailing.thruhere.net>, freebsd-current@freebsd.org
Subject:   Re: Possible regression with msk driver
Message-ID:  <20091116181304.GC1262@michelle.cdnetworks.com>
In-Reply-To: <20091115091309.GA1539@tops.skynet.lt>
References:  <200911112311.51709.mel.flynn%2Bfbsd.current@mailing.thruhere.net> <20091111231426.GF15449@michelle.cdnetworks.com> <20091115091309.GA1539@tops.skynet.lt>

next in thread | previous in thread | raw e-mail | index | archive | help

--CE+1k2dSO48ffgeK
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

On Sun, Nov 15, 2009 at 11:13:10AM +0200, Gleb Kurtsou wrote:
> On (11/11/2009 15:14), Pyun YongHyeon wrote:
> > On Wed, Nov 11, 2009 at 11:11:51PM +0100, Mel Flynn wrote:
> > > Hi,
> > > 
> > > I just booted a box from 7.2-p4 to FreeBSD 8.0-PRERELEASE #0 r199185. It 
> > > didn't ping, even though the interface was marked up and active. No traffic at 
> > > all.
> > > 
> > > The fix was to ifconfig msk0 down; ifconfig msk0 up. From then on, everything 
> > > worked and still is:
> > > mskc0: <Marvell Yukon 88E8056 Gigabit Ethernet> port 0xe800-0xe8ff mem 
> > > 0xf9efc000-0xf9efffff irq 16 at device 0.0 on pci3
> > > msk0: <Marvell Technology Group Ltd. Yukon EC Ultra Id 0xb4 Rev 0x03> on mskc0
> > > msk0: Ethernet address: 00:1b:fc:e3:9b:6a
> > > miibus0: <MII bus> on msk0
> > > e1000phy0: <Marvell 88E1149 Gigabit PHY> PHY 0 on miibus0
> > > e1000phy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 
> > > 1000baseT-FDX, auto
> > > mskc0: [FILTER]
> > > 
> > > mskc0@pci0:3:0:0:       class=0x020000 card=0x826e1043 chip=0x436411ab 
> > > rev=0x12 hdr=0x00
> > >     vendor     = 'Marvell Semiconductor (Was: Galileo Technology Ltd)'
> > >     device     = 'Yukon PCI-E Gigabit Ethernet Controller (88E8056)'
> > >     class      = network
> > >     subclass   = ethernet
> > > 
> > > msk0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
> > >         options=11a<TXCSUM,VLAN_MTU,VLAN_HWTAGGING,TSO4>
> > >         ether 00:1b:fc:xx:xx:xx
> > >         inet 192.168.xxx.xxx netmask 0xffffff00 broadcast 192.168.xxx.255
> > >         media: Ethernet autoselect (1000baseT <full-duplex,flag0,flag1,flag2>)
> > >         status: active
> > > 
> > > Now - this machine still had 7.x /etc/rc.d, but since ifconfig down/up fixed 
> > > the problem I don't know if this is a likely suspect.
> > > 
> > 
> > Most likely it lost link state changes so I guess msk(4) still
> > think it has no established link.
> > Because there had been several problems with EC Ultra + 88E1149 I'm
> > not sure it's newly introduced regression though. There are some
> > changes in CURRENT. Would you try latest msk(4)/e1000phy(4) in
> > CURRENT? I think you can download the following files from CURRENT.
> > sys/dev/msk/if_msk.c
> > sys/dev/msk/if_mskreg.h
> > sys/dev/mii/e1000phy.c
> > sys/dev/mii/e1000phyreg.h
> I experience similar problem. After boot msk0 status is active, but I'm
> not able to send anything:
> % ping 172.21.21.21
> PING 172.21.21.21 (172.21.21.21): 56 data bytes
> ping: sendto: No buffer space available
> ping: sendto: No buffer space available
> 
> After unplugging cable and putting it back everything works as
> expected:
> % ping 172.21.21.21
> PING 172.21.21.21 (172.21.21.21): 56 data bytes
> 64 bytes from 172.21.21.21: icmp_seq=0 ttl=64 time=0.904 ms
> 
> It is 100% reproducible, running recent current.
> 
> % uname -a
> FreeBSD tops 9.0-CURRENT FreeBSD 9.0-CURRENT #17 r199274+c8076f9: Sat Nov 14 22:59:26 EET 2009     root@tops:/usr/obj/usr/freebsd-src/local/sys/TOPS  amd64
> 
> % ifconfig
> msk0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
>         options=11a<TXCSUM,VLAN_MTU,VLAN_HWTAGGING,TSO4>
>         ether *
>         inet 172.21.21.22 netmask 0xfffffff8 broadcast 172.21.21.23
>         inet6 * prefixlen 64 scopeid 0x1
>         nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
>         media: Ethernet autoselect (100baseTX <full-duplex>)
>         status: active
> 
> My hardware:
> mskc0@pci0:2:0:0:       class=0x020000 card=0x902d104d chip=0x435311ab rev=0x15 hdr=0x00
>     vendor     = 'Marvell Semiconductor (Was: Galileo Technology Ltd)'
>     device     = 'Gigabit (88E8039 - http://www.marvell.com/drivers/driverDis)'
>     class      = network
>     subclass   = ethernet
> 

I guess some changes made to reduce unnecessary controller
reinitialization seems to cause the issue.
Would you try attached patch?

--CE+1k2dSO48ffgeK
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment; filename="msk.link.patch"

Index: sys/dev/msk/if_msk.c
===================================================================
--- sys/dev/msk/if_msk.c	(revision 199322)
+++ sys/dev/msk/if_msk.c	(working copy)
@@ -3198,6 +3198,8 @@
 	mii = device_get_softc(sc_if->msk_miibus);
 
 	mii_tick(mii);
+	if ((sc_if->msk_flags & MSK_FLAG_LINK) == 0)
+		msk_miibus_statchg(sc_if->msk_if_dev);
 	msk_watchdog(sc_if);
 	callout_reset(&sc_if->msk_tick_ch, hz, msk_tick, sc_if);
 }

--CE+1k2dSO48ffgeK--



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