Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 1 Dec 2010 16:44:47 -0800
From:      Pyun YongHyeon <pyunyh@gmail.com>
To:        Karl Denninger <karl@denninger.net>
Cc:        freebsd-stable@freebsd.org
Subject:   Re: Uh, fxp driver broken in current -STABLE build?!
Message-ID:  <20101202004447.GD8893@michelle.cdnetworks.com>
In-Reply-To: <4CF6E41F.8060101@denninger.net>
References:  <4CF6E41F.8060101@denninger.net>

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

--MfFXiAuoTsnnDAfZ
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

On Wed, Dec 01, 2010 at 06:11:11PM -0600, Karl Denninger wrote:
> Works in this kernel, checked out on that day:
> 
> FreeBSD 8.1-STABLE #10: Mon Aug 30 06:44:40 CDT 2010    
> karl@FS.denninger.net:/usr/obj/usr/src/sys/KSD-SMP
> 
> fxp0: <Intel 82558 Pro/100 Ethernet> port 0x1000-0x101f mem
> 0x94000000-0x94000fff,0x94100000-0x941fffff irq 21 at device 0.0 on pci6
> fxp0: Enabling Rx lock-up workaround
> miibus0: <MII bus> on fxp0
> fxp0: Ethernet address: 00:a0:c9:a4:78:c3
> fxp0: [ITHREAD]
> 
> (and has been running for months, and for a very long time before that)
> 
> Tried to update to today's check-out and got hosed.
> 
> The driver now keeps resetting and sending out "down" and "up" messages
> repeatedly, and no traffic flows....
> 
> This is the ident I have on the current build:
> 
> fxp0: <Intel 82558 Pro/100 Ethernet> port 0x1000-0x101f mem
> 0x94000000-0x94000fff,0x94100000-0x941fffff irq 21 at device 0.0 on pci6
> fxp0: Enabling Rx lock-up workaround
> miibus0: <MII bus> on fxp0
> fxp0: Ethernet address: 00:a0:c9:a4:78:c3
> fxp0: [ITHREAD]
> 
> Looks the same.....
> 
> Something was touched though on Nov 30 in the CVS tree.
> 
> It looks like there was a fairly serious commit posted on 10-15, and
> some other smaller ones related to VLANs and flow control (which don't
> apply to this configuration.)
> 
> I can't find anything else related...... anyone know what's up here? 
> 
> Probably need to find this as we're going into the 8.2 RELEASE cycle.....
> 
> DMESG from the failed kernel boot is attached.
> 

Thanks for reporting. Try attached patch. It seems there is a bug
in RX lockup detection logic. Your controller is known to RX
lockup free so the workaround should not be enabled. Otherwise
fxp(4) reinitializes the controller every 15 seconds.

--MfFXiAuoTsnnDAfZ
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment; filename="fxp.82557.lockup.diff"

Index: sys/dev/fxp/if_fxp.c
===================================================================
--- sys/dev/fxp/if_fxp.c	(revision 216097)
+++ sys/dev/fxp/if_fxp.c	(working copy)
@@ -526,10 +526,12 @@
 	}
 
 	/* Receiver lock-up workaround detection. */
-	fxp_read_eeprom(sc, &data, 3, 1);
-	if ((data & 0x03) != 0x03) {
-		sc->flags |= FXP_FLAG_RXBUG;
-		device_printf(dev, "Enabling Rx lock-up workaround\n");
+	if (sc->revision < FXP_REV_82558_A4) {
+		fxp_read_eeprom(sc, &data, 3, 1);
+		if ((data & 0x03) != 0x03) {
+			sc->flags |= FXP_FLAG_RXBUG;
+			device_printf(dev, "Enabling Rx lock-up workaround\n");
+		}
 	}
 
 	/*

--MfFXiAuoTsnnDAfZ--



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