Possible regression with msk driver
Gleb Kurtsou
gleb.kurtsou at gmail.com
Mon Nov 16 20:32:40 UTC 2009
On (16/11/2009 10:13), Pyun YongHyeon wrote:
> On Sun, Nov 15, 2009 at 11:13:10AM +0200, Gleb Kurtsou wrote:
[...]
> > 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 at 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 at 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?
Patch fixes the issue. I tried rebooting several times with
connected/disconnected cable. I'll let you know if any problem shows up
later.
Thanks,
Gleb.
> 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);
> }
More information about the freebsd-current
mailing list