8.1 xl + dual-speed Netgear hub = yoyo

perryh at pluto.rain.com perryh at pluto.rain.com
Fri Oct 21 08:11:35 UTC 2011


I have an 8.1-RELEASE system with an xl on the mainboard:

  xl0: <3Com 3c905C-TX Fast Etherlink XL> port 0xdc80-0xdcff mem 0xf8fffc00-0xf8fffc7f irq 16 at device 4.0 on pci2
  miibus0: <MII bus> on xl0
  xlphy0: <3c905C 10/100 internal PHY> PHY 24 on miibus0
  xlphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
  xl0: Ethernet address: 00:b0:d0:22:5a:14
  xl0: [ITHREAD]

It has been working properly while connected to an old 10-BaseT hub,
but when I moved it to a (not as old) Netgear 10/100 dual-speed hub
the link started to yo-yo:

  Oct 21 07:16:00 fbsd81 kernel: xl0: link state changed to DOWN
  Oct 21 07:16:02 fbsd81 kernel: xl0: link state changed to UP
  Oct 21 07:16:12 fbsd81 kernel: xl0: link state changed to DOWN
  Oct 21 07:16:14 fbsd81 kernel: xl0: link state changed to UP
  Oct 21 07:16:18 fbsd81 kernel: xl0: link state changed to DOWN
  Oct 21 07:16:20 fbsd81 kernel: xl0: link state changed to UP
  Oct 21 07:16:26 fbsd81 kernel: xl0: link state changed to DOWN
  Oct 21 07:16:28 fbsd81 kernel: xl0: link state changed to UP

While it was misbehaving, ifconfig reported:

# ifconfig xl0
xl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=80009<RXCSUM,VLAN_MTU,LINKSTATE>
        ether 00:b0:d0:22:5a:14
        inet6 fe80::2b0:d0ff:fe22:5a14%xl0 prefixlen 64 scopeid 0x1
        inet 192.168.200.81 netmask 0xffffff00 broadcast 192.168.200.255
        nd6 options=3<PERFORMNUD,ACCEPT_RTADV>
        media: Ethernet autoselect (100baseTX)
        status: active

Turning off unneeded features did not help:

# ifconfig xl0 -vlanmtu -rxcsum
# ifconfig xl0
xl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=80000<LINKSTATE>
        ether 00:b0:d0:22:5a:14
        inet6 fe80::2b0:d0ff:fe22:5a14%xl0 prefixlen 64 scopeid 0x1
        inet 192.168.200.81 netmask 0xffffff00 broadcast 192.168.200.255
        nd6 options=3<PERFORMNUD,ACCEPT_RTADV>
        media: Ethernet autoselect (100baseTX)
        status: active

and neither did forcing it to 100baseTX, with either duplex setting:

# ifconfig xl0 media 100baseTX mediaopt full-duplex
# ifconfig xl0
xl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=80000<LINKSTATE>
        ether 00:b0:d0:22:5a:14
        inet6 fe80::2b0:d0ff:fe22:5a14%xl0 prefixlen 64 scopeid 0x1
        inet 192.168.200.81 netmask 0xffffff00 broadcast 192.168.200.255
        nd6 options=3<PERFORMNUD,ACCEPT_RTADV>
        media: Ethernet 100baseTX <full-duplex>
        status: active

# ifconfig xl0 mediaopt half-duplex
# ifconfig xl0
xl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=80000<LINKSTATE>
        ether 00:b0:d0:22:5a:14
        inet6 fe80::2b0:d0ff:fe22:5a14%xl0 prefixlen 64 scopeid 0x1
        inet 192.168.200.81 netmask 0xffffff00 broadcast 192.168.200.255
        nd6 options=3<PERFORMNUD,ACCEPT_RTADV>
        media: Ethernet 100baseTX
        status: active

but moving it back to the 10-BaseT hub (after restoring xl0 to
autoselect) fixed the problem:

# ifconfig xl0 media autoselect
# ifconfig xl0
xl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=80000<LINKSTATE>
        ether 00:b0:d0:22:5a:14
        inet6 fe80::2b0:d0ff:fe22:5a14%xl0 prefixlen 64 scopeid 0x1 
        inet 192.168.200.81 netmask 0xffffff00 broadcast 192.168.200.255
        nd6 options=3<PERFORMNUD,ACCEPT_RTADV>
        media: Ethernet autoselect (100baseTX)
        status: active

[still yo-yo-ing, until moved to the old hub, then OK]

# ifconfig xl0
xl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=80000<LINKSTATE>
        ether 00:b0:d0:22:5a:14
        inet6 fe80::2b0:d0ff:fe22:5a14%xl0 prefixlen 64 scopeid 0x1 
        inet 192.168.200.81 netmask 0xffffff00 broadcast 192.168.200.255
        nd6 options=3<PERFORMNUD,ACCEPT_RTADV>
        media: Ethernet autoselect (10baseT/UTP)
        status: active

Both connections were using the same (short) Cat5 cable, I tried two
different ports on the 10/100 hub, and other systems work OK on that
10/100 hub.

How do I get this interface to operate properly at 100MB?


More information about the freebsd-stable mailing list