Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 18 Feb 1998 12:40:33 GMT
From:      dag-erli@ifi.uio.no
To:        FreeBSD-gnats-submit@FreeBSD.ORG
Subject:   i386/5781: 3Com Etherlink III ID port bug is still not fixed
Message-ID:  <199802181240.11496.haugstari@ifi.uio.no>

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

>Number:         5781
>Category:       i386
>Synopsis:       3Com Etherlink III ID port bug is still not fixed
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:
>Keywords:
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Wed Feb 18 04:50:02 PST 1998
>Last-Modified:
>Originator:     Dag-Erling Coidan Smørgrav
>Organization:
University of Oslo, Department of Informatics
>Release:        FreeBSD 2.2.5-STABLE i386
>Environment:

FreeBSD 2.2.5-STABLE, last cvsup and make world 1998/02/17

>Description:

There is a known bug in the 3Com Etherlink III (ep) driver which makes
it unable to detect Etherlink III cards in PCs which also contain
certain PnP audio cards. It has been identified and a fix is known but
it has not yet been committed.

Specifically, the code probes I/O port 0x100 to detect the presence of
3Com Etherlink III cards. This conflicts with later models of Creative
Labs' SoundBlaster audio card, which by default uses the I/O range
0x100-0x107 for its 3D effects processor.

This bug also affects the ie driver (AT&T Starlan, EN100, 3Com 3c507,
RACAL Interlan NI5210).

There has been an attempt to fix this bug, but it does not seem to
have been properly tested, as a new macro (EP_ID_PORT, which the code
does not reference) with the correct port number was introduced and
the original macro (ELINK_ID_PORT, which is referenced in if_ep.c,
if_ie.c and elink.c) was left defined to the wrong value.

>How-To-Repeat:

Slap a 3Com 3c5x9 and a Creative Labs SB32 in a computer. Compile a
kernel with the ep driver and reboot. The kernel fails to detect the
3c5x9 (at e.g. 0x300), but detects 16 phantom 3c5x9 boards, all at
0x220 (the base address for the SB32).

>Fix:

Apply the following patch:

--- /usr/src/sys/i386/isa/if_epreg.h.orig	Wed Feb 18 11:32:18 1998
+++ /usr/src/sys/i386/isa/if_epreg.h	Wed Feb 18 11:33:15 1998
@@ -103,21 +103,6 @@
 #define MAX_EEPROMBUSY  1000
 #define EP_LAST_TAG     0xd7
 #define EP_MAX_BOARDS   16
-/*
- * This `ID' port is a mere hack.  There's currently no chance to register
- * it with config's idea of the ports that are in use.
- *
- * "After the automatic configuration is completed, the IDS is in it's initial
- * state (ID-WAIT), and it monitors all write access to I/O port 01x0h, where
- * 'x' is any hex digit.  If a zero is written to any one of these ports, then
- * that address is remembered and becomes the ID port.  A second zero written
- * to that port resets the ID sequence to its initial state.  The IDS watches
- * for the ID sequence to be written to the ID port."
- *
- * We prefer 0x110 over 0x100 so to not conflict with the Plaque&Pray
- * ports.
- */
-#define EP_ID_PORT      0x110
 #define EP_IOSIZE	16	/* 16 bytes of I/O space used. */
 
 /*
--- /usr/src/sys/i386/isa/elink.h.orig	Wed Feb 18 11:32:26 1998
+++ /usr/src/sys/i386/isa/elink.h	Wed Feb 18 11:33:24 1998
@@ -29,10 +29,24 @@
  *	$Id: elink.h,v 1.1.12.1 1997/01/04 19:04:57 kato Exp $
  */
 
+/*
+ * This `ID' port is a mere hack.  There's currently no chance to register
+ * it with config's idea of the ports that are in use.
+ *
+ * "After the automatic configuration is completed, the IDS is in it's initial
+ * state (ID-WAIT), and it monitors all write access to I/O port 01x0h, where
+ * 'x' is any hex digit.  If a zero is written to any one of these ports, then
+ * that address is remembered and becomes the ID port.  A second zero written
+ * to that port resets the ID sequence to its initial state.  The IDS watches
+ * for the ID sequence to be written to the ID port."
+ *
+ * We prefer 0x110 over 0x100 so to not conflict with the Plaque&Pray
+ * ports.
+ */
 #ifdef PC98
 #define	ELINK_ID_PORT	0x71d0
 #else
-#define	ELINK_ID_PORT	0x100
+#define	ELINK_ID_PORT	0x110
 #endif
 #define	ELINK_RESET	0xc0
 


>Audit-Trail:
>Unformatted:

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message



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