kern/75739: Intel Etherexpress 10MBit broken since recent commit to fxp driver

Andre Albsmeier andre.albsmeier at siemens.com
Mon Jan 3 07:00:46 GMT 2005


>Number:         75739
>Category:       kern
>Synopsis:       Intel Etherexpress 10MBit broken since recent commit to fxp driver
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Mon Jan 03 07:00:45 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator:     Andre Albsmeier
>Release:        FreeBSD 4.11-RC1 i386
>Organization:
>Environment:

	 FreeBSD 4.11-RC1 using an Intel Etherexpress 10MBit

>Description:

This commit:

 mux         2004-12-28 22:49:24 UTC

   FreeBSD src repository

   Modified files:        (Branch: RELENG_4)
     sys/dev/fxp          if_fxp.c
   Log:
   Merge if_fxp.c:1.220 from HEAD to RELENG_4:

     date: 2004/12/20 10:18:21;  author: mux;  state: Exp;  lines: +2 -2
     Only try to use the 82503 serial interface for the 82557 chipsets.  The
     datasheet says it is only valid for such chipsets and shouldn't be used
     with others.  This fixes some 82559 based cards which otherwise only
     work at 10Mbit.

broke the Intel Etherexpress 10MBit card which has an
INTEL S82557 and a SEEQ NQ80C24 chip on them:

fxp1: <Intel 82557 Pro/100 Ethernet> port 0xb800-0xb81f mem
0xe0800000-0xe08fffff,0xe3800000-0xe3800fff irq 10 at device 11.0 on pci0
fxp1: Ethernet address 00:a0:c9:a9:1d:06
fxp1: MII without any PHY!
device_probe_and_attach: fxp1 attach returned 6

>How-To-Repeat:

	Boot a recent 4.11-RC1 with the above card and try
	to use it.

>Fix:

	I assume the patch is not correct but it works here:

--- if_fxp.c.ORI	Fri Dec 31 16:40:32 2004
+++ if_fxp.c	Fri Dec 31 17:01:15 2004
@@ -511,7 +511,7 @@
 	 * Determine whether we must use the 503 serial interface.
 	 */
 	fxp_read_eeprom(sc, &data, 6, 1);
-	if (sc->revision == FXP_REV_82557 && (data & FXP_PHY_DEVICE_MASK) != 0
+	if ((sc->revision == 0 || sc->revision == FXP_REV_82557) && (data & FXP_PHY_DEVICE_MASK) != 0
 	    && (data & FXP_PHY_SERIAL_ONLY))
 		sc->flags |= FXP_FLAG_SERIAL_MEDIA;
 
>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list