Subject: kern/35386: wm NICs don't do speed negotiation well
To: None <kern-bug-people@netbsd.org, gnats-admin@netbsd.org,>
From: None <smb@cs.columbia.edu>
List: netbsd-bugs
Date: 01/09/2007 04:20:00
>Number:         35386
>Category:       kern
>Synopsis:       wm NICs don't do speed negotiation well
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Jan 09 04:20:00 +0000 2007
>Originator:     Steven M. Bellovin
>Release:        NetBSD 4.99.7
>Organization:
>Environment:
	
	
System: NetBSD bigboy.machshav.com 4.99.7 NetBSD 4.99.7 (BIGBOY) #0: Mon Dec 25 20:58:26 EST 2006 smb@bigboy.machshav.com:/usr/BUILD/obj/sys/arch/i386/compile/BIGBOY i386
Architecture: i386
Machine: i386
>Description:
	There are numerous problems with speed negotiation on multiple
	wm chips.  The problems go back at least two years, and seem
	to affect multiple versions of NetBSD, including very recent
	-current.

	On this NIC (Thinkpad T42):

	wm0 at pci2 dev 1 function 0: Intel i82540EP 1000BASE-T Ethernet, rev. 3
	wm0: interrupting at irq 11
	wm0: 32-bit 33MHz PCI bus
	wm0: 64 word (6 address bits) MicroWire EEPROM
	wm0: Ethernet address 00:11:25:43:e8:a4
	makphy0 at wm0 phy 1: Marvell 88E1011 Gigabit PHY, rev. 4
	makphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-FDX, auto

	it will properly autonegotiate 100baseT and 1000baseT.  If
	connected to 10baseT, it will notice it (and ifconfig will show
	it), but it won't talk unless the speed is set manually.  Once
	that's done, it never goes back to a higher speed, even though
	ifconfig will report that that has happened.  The 10baseT problem
	goes back to at least Dec. 2004, when I got the machine.
	This was reported in kern/30078 (which can now be closed in
	favor of this PR).

	On these two NICs:

	wm0 at pci4 dev 0 function 0: Intel i82573E IAMT, rev. 3
	wm0: interrupting at ioapic0 pin 16, event channel 4
	wm0: PCI-Express bus
	wm0: 256 word (8 address bits) SPI EEPROM
	wm0: Ethernet address 00:30:48:8a:d8:76
	makphy0 at wm0 phy 1: Marvell 88E1111 Gigabit PHY, rev. 2
	makphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-FDX, auto
	makphy1 at wm1 phy 1: Marvell 88E1111 Gigabit PHY, rev. 2
	makphy1: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-FDX, auto

	it will auto-negotiate GigE but not 100baseT.  Again, it will
	detect the latter, but not be able to talk.  That can be bypassed
	by setting the media type manually.  I do not know if it will
	then autonegotiate, and I haven't tried it on 10baseT.  I can do
	either if necessary.  Note that someone else reported
	10baseT problems in the 82573E chip in
	http://mail-index.netbsd.org/tech-net/2006/11/02/0002.html
	I tried disabling makphy at boot time; it fell back to ukphy, but
	that made no difference in behavior.

	There's a report that fiber autonegotiation in that driver is
	broken, too: http://mail-index.netbsd.org/tech-kern/2006/12/11/0002.html


>How-To-Repeat:
	See above
>Fix:
	Sometimes, per the above, manual ifconfigs work; other times,
	they do not.

>Unformatted: