NetBSD Problem Report #44893

From root@coyotepoint.com  Fri Apr 22 06:56:19 2011
Return-Path: <root@coyotepoint.com>
Received: from mail.netbsd.org (mail.netbsd.org [204.152.190.11])
	by www.NetBSD.org (Postfix) with ESMTP id 11BB763C2A1
	for <gnats-bugs@gnats.NetBSD.org>; Fri, 22 Apr 2011 06:56:19 +0000 (UTC)
Message-Id: <20110422045518.29915915BB@beefcake.ny.coyotepoint.com>
Date: Fri, 22 Apr 2011 00:55:18 -0400 (EDT)
From: tls@coyotepoint.com
Reply-To: tls@netbsd.org
To: gnats-bugs@gnats.NetBSD.org
Subject: igphy driver won't negotiate 1000baseTX on 85276 MAC.
X-Send-Pr-Version: 3.95

>Number:         44893
>Category:       kern
>Synopsis:       igphy driver won't negotiate 1000baseTX on 85276 MAC.
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    msaitoh
>State:          closed
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Apr 22 07:00:01 +0000 2011
>Closed-Date:    Mon May 09 08:06:21 +0000 2016
>Last-Modified:  Mon May 09 08:06:21 +0000 2016
>Originator:     Charlie Root
>Release:        NetBSD 5.99.49 (sources as of 30 minutes ago)
>Organization:
	Coyote Point Systems, Inc.
>Environment:


System: NetBSD beefcake.ny.coyotepoint.com 5.99.49 NetBSD 5.99.49 (GENERIC) #0: Thu Apr 21 09:31:06 UTC 2011 builds@b7.netbsd.org:/home/builds/ab/HEAD/amd64/201104210800Z-obj/home/builds/ab/HEAD/src/sys/arch/amd64/compile/GENERIC amd64
Architecture: x86_64
Machine: amd64
>Description:
	On an AMD64 system with onboard 82576, the igphy driver will
	not negotiate modes faster than 100baseTX with any link partner
	available in my lab.  Removing the igphy driver from the kernel
	so it falls back to ukphy produces correct operation.

	The only thing slightly unusual about this system's configuration
	is that it is also using wm0 for IPMI and IPMI remote console
	rediretion (the reset of the wm controller
	at driver startup temporarily breaks IPMI but it starts working
	fine again immediately thereafter).

wm0 at pci1 dev 0 function 0: 82576 1000BaseT Ethernet, rev. 1
wm0: interrupting at ioapic0 pin 16
wm0: PCI-Express bus
wm0: 65536 word (16 address bits) SPI EEPROM
wm0: Ethernet address 00:30:48:f5:b5:ee
igphy0 at wm0 phy 1: i82566 10/100/1000 media interface, rev. 1
igphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-FDX
, auto

wm0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	capabilities=7ff80<TSO4,IP4CSUM_Rx,IP4CSUM_Tx,TCP4CSUM_Rx,TCP4CSUM_Tx,UDP4CSUM_Rx,UDP4CSUM_Tx,TCP6CSUM_Rx,TCP6CSUM_Tx,UDP6CSUM_Rx,UDP6CSUM_Tx,TSO6>
	enabled=0
	address: 00:30:48:f5:b5:ee
	media: Ethernet autoselect (100baseTX full-duplex,flowcontrol,rxpause,txpause)
	status: active
	inet 10.0.0.132 netmask 0xffffff00 broadcast 10.0.0.255
	inet6 fe80::230:48ff:fef5:b5ee%wm0 prefixlen 64 scopeid 0x1

>How-To-Repeat:
	Buy a fancy new amd64 box with 82576 ethernet; try to use it.
>Fix:
	The workaround is, as usual, to use ukphy.  igpky and ikphy
	seem quite problematic -- perhaps they should be commented out
	of the generic kernels?

>Release-Note:

>Audit-Trail:

Responsible-Changed-From-To: kern-bug-people->msaitoh
Responsible-Changed-By: msaitoh@NetBSD.org
Responsible-Changed-When: Wed, 12 Jun 2013 02:59:04 +0000
Responsible-Changed-Why:
mine.


From: "SAITOH Masanobu" <msaitoh@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/44893 CVS commit: src/sys/dev/pci
Date: Fri, 30 Oct 2015 18:23:37 +0000

 Module Name:	src
 Committed By:	msaitoh
 Date:		Fri Oct 30 18:23:37 UTC 2015

 Modified Files:
 	src/sys/dev/pci: if_wm.c

 Log Message:
  Call wm_get_hw_control() correctly. This change fixes a bug that some AMT
 based systems doesn't linkup at 1000BaseT. The problem was observed on
 HP Compaq dc7700.

  A lot of fixes have been done to wm(4) and igphy(4). Now PR#44893 should be
 fixed.


 To generate a diff of this commit:
 cvs rdiff -u -r1.377 -r1.378 src/sys/dev/pci/if_wm.c

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

State-Changed-From-To: open->feedback
State-Changed-By: msaitoh@NetBSD.org
State-Changed-When: Fri, 30 Oct 2015 19:28:37 +0000
State-Changed-Why:
Do you still have the machine? Is it possible to check it?
I verified this problem was fixed on HP Compaq dc7700.


From: "Soren Jacobsen" <snj@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/44893 CVS commit: [netbsd-7] src/sys/dev
Date: Fri, 26 Feb 2016 22:08:17 +0000

 Module Name:	src
 Committed By:	snj
 Date:		Fri Feb 26 22:08:17 UTC 2016

 Modified Files:
 	src/sys/dev/mii [netbsd-7]: igphy.c ukphy.c
 	src/sys/dev/pci [netbsd-7]: if_wm.c if_wmreg.h if_wmvar.h

 Log Message:
 Pull up following revision(s) (requested by msaitoh in ticket #1102):
 	sys/dev/mii/igphy.c: 1.25
 	sys/dev/mii/ukphy.c: 1.48
 	sys/dev/pci/if_wm.c: revisions 1.308, 1.318, 1.320, 1.324-1.332, 1.334, 1.336, 1.343-1.344, 1.347-1.348, 1.350, 1.376-1.382, 1.386-1.389 via patch
 	sys/dev/pci/if_wmreg.h: revisions 1.68-1.70, 1.73-1.77, 1.79-1.80, 1.82, 1.86-1.88 via patch
 	sys/dev/pci/if_wmvar.h: revisions 1.22-1.23, 1.25-1.30 via patch
 Sync wm(4) as of if_wm.c rev 1.389 except MSI/MSI-X, multiqueue and NET_MPSAFE:
 - Add C2000 KX and 2.5G support.
 - Set ICH9 and ICH10's PBA size to 14K if the RX buffer size is more than
   4096. Almost the same as other OSes.
 - For 82576 and newer devices, the PBA register is deleted. Don't write PBA
   for those chips. Also change the calculation of RX packet buffer size in
   new way.
 - Fix a lot of bugs to make 82575 and newer SERDES based systems work.
 - Print NVM image version and option ROM version.
 - Add workaround for I210 Errata 25 and I211 Errata 10 (PLL bug). This
   workaround is required if the NVM image version < 3.25.
 - Fix a bug that wm_detach() didn't unmap the FHASH's area. Now
   "drvct -d wm0" -> "drvctl -r pci0" works on ICH* and PCH*.
 - Add workaround for 82574 Errata 25 and 82583 Errata 12 "Dropped RX packets"
   and for 82573 (unknown). Set GCR_L1_ACT_WITHOUT_L0S_RX bit. The NVM Image
   version 2.1.4 and newer have this workaround.
 - Check PHY type correctly. This change is required to use igphy(4) device
   correctly.
 - Disable LPLU (Low Power Link Up) on D0 state on 82574, 82583 and ICH* too.
 - Call wm_get_hw_control() correctly. This change fixes a bug that some AMT
   based systems doesn't linkup at 1000BaseT. The problem was observed on HP
   Compaq dc7700. A lot of fixes have been done for wm(4) and igphy(4), so now
   PR#44893 should be fixed.
 - Call wm_get_wakeup(sc) before checking WM_F_HAS_AMT. It's required to
   check the existence of AMT correctly.
 - Fix a problem that wm_gate_hw_phy_config_ich8lan() isn't called in
   wm_reset() on PCH2.
 - Clear WMREG_WUC in wm_reset() if the chip >= 82544. This might fix the
   behavior on suspend/resume.
 - Fix logic of wm_check_reset_block() on ICH* and PCH*. This change might fix
   a problem that PHY's read/write functions can't get semaphore.
 - On ICH8, call wm_gig_downshift_workaround_ich8lan() when link changed down.
 - Drop PHY_CTRL_GBE_DIS explicitly in wm_lplu_d0_disable() in case BIOS sets
   this bit.
 - Fix two bugs in wm_kmrn_lock_loss_workaround_ich8lan(). Now the function
   checks the status correctly but it causes linkdown up to 10 times, so it's
   disabled for the time being.
 - PR/50527: David Binderman: Fix impossible code. Odd offsets need special
   treatment.
 - Fix RAL table's size of PCH2 and PCH_LPT.
 - PCH_LPT (and newer device) is required to check FWSM_WLOCK_MAC bit to
   determine the range of the RAL.
 - Use sc->sc_itr instead of hard-coded number.
 - Rename wm_tbi_check_link() to wm_tbi_tick() because this function acts as
   mii_tick().
 - ACK Accelerate Disable in the RFCTL register is not bit 13 but 12.
   No binary change because this definition has not used yet.
 - Add ACK data Disable bit's definition (not used yet).
 - PHY_CTRL_GBE_DIS is not bit 4 but bit 6. This change has no any effect by
   default because WM_WOL is not defined yet and
   m_kmrn_lock_loss_workaround_ich8lan() is broken.
 - Fix wm_check_mng_mode_ich8lan(). This function is used only when WM_WOL is
   defined and it's disabled by default.
 - Rename wm_check_reset_block() to wm_phy_resetisblocked() and make it returns
   bool. No functional change.
 - Reorder function definitions and macro definitions. No functional change.
 - Fix comment. Add comment. Update comment.
 - KNF.


 To generate a diff of this commit:
 cvs rdiff -u -r1.23 -r1.23.2.1 src/sys/dev/mii/igphy.c
 cvs rdiff -u -r1.46 -r1.46.8.1 src/sys/dev/mii/ukphy.c
 cvs rdiff -u -r1.289.2.8 -r1.289.2.9 src/sys/dev/pci/if_wm.c
 cvs rdiff -u -r1.60.2.4 -r1.60.2.5 src/sys/dev/pci/if_wmreg.h
 cvs rdiff -u -r1.19.2.3 -r1.19.2.4 src/sys/dev/pci/if_wmvar.h

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

State-Changed-From-To: feedback->open
State-Changed-By: dholland@NetBSD.org
State-Changed-When: Mon, 07 Mar 2016 05:37:58 +0000
State-Changed-Why:
update submitter address...


State-Changed-From-To: open->feedback
State-Changed-By: dholland@NetBSD.org
State-Changed-When: Mon, 07 Mar 2016 05:38:22 +0000
State-Changed-Why:
...and try again:

Do you still have the machine? Is it possible to check it?
I verified this problem was fixed on HP Compaq dc7700.


From: "Soren Jacobsen" <snj@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/44893 CVS commit: [netbsd-6] src/sys/dev
Date: Fri, 6 May 2016 18:43:35 +0000

 Module Name:	src
 Committed By:	snj
 Date:		Fri May  6 18:43:35 UTC 2016

 Modified Files:
 	src/sys/dev/mii [netbsd-6]: igphy.c ukphy.c
 	src/sys/dev/pci [netbsd-6]: if_wm.c if_wmreg.h if_wmvar.h

 Log Message:
 Pull up following revision(s) (requested by msaitoh in ticket #1366):
 	sys/dev/pci/if_wm.c: 1.281, 1.318, 1.320, 1.324-1.332, 1.334, 1.336, 1.343-1.344, 1.347-1.348, 1.350, 1.376-1.382, 1.386-1.387, 1.389 via patch
 	sys/dev/pci/if_wmreg.h: 1.68-1.70, 1.73-1.77, 1.79-1.80, 1.82, 1.86-1.88 via patch
 	sys/dev/pci/if_wmvar.h: 1.22-1.23, 1.25-1.30 via patch
 	sys/dev/mii/igphy.c: 1.25
 	sys/dev/mii/ukphy.c: 1.48
 Sync wm(4) as of if_wm.c rev 1.389 except SERDES, MSI/MSI-X, multiqueue
 and NET_MPSAFE:
 - Set ICH9 and ICH10's PBA size to 14K if the RX buffer size is more
   than 4096. Almost the same as other OSes.
 - For 82576 and newer devices, the PBA register is deleted. Don't write
   PBA for those chips. Also change the calculation of RX packet buffer
   size in new way.
 - Print NVM image version and option ROM version.
 - Add workaround for I210 Errata 25 and I211 Errata 10 (PLL bug). This
   workaround is required if the NVM image version < 3.25.
 - Fix a bug that wm_detach() didn't unmap the FHASH's area. Now
   "drvctl -d wm0" -> "drvctl -r pci0" works on ICH* and PCH*.
 - Add workaround for 82574 Errata 25 and 82583 Errata 12 "Dropped RX
   packets" and for 82573 (unknown). Set GCR_L1_ACT_WITHOUT_L0S_RX bit.
   The NVM Image version 2.1.4 and newer have this workaround.
 - Check PHY type correctly. This change is required to use igphy(4)
   device correctly.
 - Disable LPLU (Low Power Link Up) on D0 state on 82574, 82583 and ICH*
   too.
 - Call wm_get_hw_control() correctly. This change fixes a bug that some
   AMT based systems doesn't linkup at 1000BaseT. The problem was
   observed on HP Compaq dc7700. A lot of fixes have been done for wm(4)
   and igphy(4), so now PR#44893 should be fixed.
 - Call wm_get_wakeup(sc) before checking WM_F_HAS_AMT. It's required to
   check the existence of AMT correctly.
 - Fix a problem that wm_gate_hw_phy_config_ich8lan() isn't called in
   wm_reset() on PCH2.
 - Clear WMREG_WUC in wm_reset() if the chip >= 82544. This might fix
   the behavior on suspend/resume.
 - Fix logic of wm_check_reset_block() on ICH* and PCH*. This change
   might fix a problem that PHY's read/write functions can't get
   semaphore.
 - On ICH8, call wm_gig_downshift_workaround_ich8lan() when link changed
   down.
 - Drop PHY_CTRL_GBE_DIS explicitly in wm_lplu_d0_disable() in case BIOS
   sets this bit.
 - Fix two bugs in wm_kmrn_lock_loss_workaround_ich8lan(). Now the
   function checks the status correctly but it causes linkdown up to 10
   times, so it's disabled for the time being.
 - PR/50527: David Binderman: Fix impossible code. Odd offsets need
   special treatment.
 - Fix RAL table's size of PCH2 and PCH_LPT.
 - PCH_LPT (and newer device) is required to check FWSM_WLOCK_MAC bit to
   determine the range of the RAL.
 - Use sc->sc_itr instead of hard-coded number.
 - Rename wm_tbi_check_link() to wm_tbi_tick() because this function
   acts as mii_tick().
 - ACK Accelerate Disable in the RFCTL register is not bit 13 but 12.
   No binary change because this definition has not used yet.
 - Add ACK data Disable bit's definition (not used yet).
 - PHY_CTRL_GBE_DIS is not bit 4 but bit 6. This change has no any
   effect by default because WM_WOL is not defined yet and
   m_kmrn_lock_loss_workaround_ich8lan() is broken.
 - Fix wm_check_mng_mode_ich8lan(). This function is used only when
   WM_WOL is defined and it's disabled by default.
 - Rename wm_check_reset_block() to wm_phy_resetisblocked() and make it
   returns bool. No functional change.
 - Reorder function definitions and macro definitions. No functional
   change.
 - Fix comment. Add comment. Update comment.
 - KNF.


 To generate a diff of this commit:
 cvs rdiff -u -r1.21.16.1 -r1.21.16.2 src/sys/dev/mii/igphy.c
 cvs rdiff -u -r1.43 -r1.43.14.1 src/sys/dev/mii/ukphy.c
 cvs rdiff -u -r1.227.2.18 -r1.227.2.19 src/sys/dev/pci/if_wm.c
 cvs rdiff -u -r1.46.2.8 -r1.46.2.9 src/sys/dev/pci/if_wmreg.h
 cvs rdiff -u -r1.12.10.6 -r1.12.10.7 src/sys/dev/pci/if_wmvar.h

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

State-Changed-From-To: feedback->closed
State-Changed-By: msaitoh@NetBSD.org
State-Changed-When: Mon, 09 May 2016 08:06:21 +0000
State-Changed-Why:
The fix was pulled up. I think it's ok to close.
Thanks.


>Unformatted:

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2014 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.