From johannes@paradise.net.nz  Sat Dec 28 14:43:03 2002
Return-Path: <johannes@paradise.net.nz>
Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125])
	by hub.freebsd.org (Postfix) with ESMTP id 9330E37B401
	for <FreeBSD-gnats-submit@freebsd.org>; Sat, 28 Dec 2002 14:43:03 -0800 (PST)
Received: from smtp-2.paradise.net.nz (smtp-2b.paradise.net.nz [202.0.32.211])
	by mx1.FreeBSD.org (Postfix) with ESMTP id 9CDA443EA9
	for <FreeBSD-gnats-submit@freebsd.org>; Sat, 28 Dec 2002 14:43:02 -0800 (PST)
	(envelope-from johannes@paradise.net.nz)
Received: from minoh (203-79-82-178.adsl-wns.paradise.net.nz [203.79.82.178])
	by smtp-2.paradise.net.nz (Postfix) with ESMTP id 58C649E802
	for <FreeBSD-gnats-submit@freebsd.org>; Sun, 29 Dec 2002 11:43:00 +1300 (NZDT)
Message-Id: <200212291142.59881.johannes@paradise.net.nz>
Date: Sun, 29 Dec 2002 11:42:59 +1300
From: Jay <johannes@paradise.net.nz>
To: FreeBSD-gnats-submit@freebsd.org
Subject: [PATCH] NIC support for 3c555 in xl(4) driver

>Number:         46603
>Category:       kern
>Synopsis:       [PATCH] NIC support for 3c555 in xl(4) driver
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    silby
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Sat Dec 28 14:50:00 PST 2002
>Closed-Date:    Wed Feb 12 13:16:39 PST 2003
>Last-Modified:  Wed Feb 12 13:16:39 PST 2003
>Originator:     johannes
>Release:        FreeBSD 4.7-RELEASE i386
>Organization:
=20
>Environment:
System: FreeBSD 4.7-RELEASE #3: Sun Dec 22 16:55:59 NZDT 2002=20
root@/usr/src/sys/compile/SOLO i386

>Description:
This patch provides support for 3Com NIC 3c555 as can be found in Gateway=
 Solo=20
3150. The patch has been extensively, and successfully tested for=20
BSD4.4/4.7-RELEASE under a variety of mixed hot/cold boot conditions for=20
different operating systems (BSD, Linux).
Note: All required changes for BSD4.4-RELEASE are the same except the lin=
e=20
positions in 'if_xl.c' are different. 'if_xlreg.h' are identical between=20
BSD4.4/4.7-RELEASE hence this patch can be applied for both.

>How-To-Repeat:
Standard install of BSD4.7-RELEASE does not provide 3c555 support whereas=
=20
applied patch, and subsequent kernel compilation does.

>Fix:
Apply below patches to BSD4.7-RELEASE.
(Preferably add/introduce changes to (HEAD)/BSD5 as well)

--- if_xlreg.h.orig     Sat Dec 21 13:19:54 2002
+++ if_xlreg.h  Mon Dec 23 07:07:20 2002
@@ -652,6 +652,7 @@
 #define TC_DEVICEID_TORNADO_10_100BT_SERV      0x9805
 #define TC_DEVICEID_HURRICANE_SOHO100TX                0x7646
 #define TC_DEVICEID_TORNADO_HOMECONNECT                0x4500
+#define TC_DEVICEID_HURRICANE_555              0x5055
 #define TC_DEVICEID_HURRICANE_556              0x6055
 #define TC_DEVICEID_HURRICANE_556B             0x6056
=20
--- if_xl.c.orig        Sun Dec 22 13:12:22 2002
+++ if_xl.c     Sun Dec 22 13:17:24 2002
@@ -55,6 +55,7 @@
  * 3Com 3c980C-TX      10/100Mbps server adapter (Tornado ASIC)
  * 3Com 3cSOHO100-TX   10/100Mbps/RJ-45 (Hurricane ASIC)
  * 3Com 3c450-TX       10/100Mbps/RJ-45 (Tornado ASIC)
+ * 3Com 3c555          10/100Mbps/RJ-45 (MiniPCI, Laptop Hurricane)
  * 3Com 3c556          10/100Mbps/RJ-45 (MiniPCI, Hurricane ASIC)
  * 3Com 3c556B         10/100Mbps/RJ-45 (MiniPCI, Hurricane ASIC)
  * Dell Optiplex GX1 on-board 3c918 10/100Mbps/RJ-45
@@ -188,6 +189,8 @@
                "3Com 3cSOHO100-TX OfficeConnect" },
        { TC_VENDORID, TC_DEVICEID_TORNADO_HOMECONNECT,
                "3Com 3c450-TX HomeConnect" },
+       { TC_VENDORID, TC_DEVICEID_HURRICANE_555,
+               "3Com 3c555 Fast Etherlink XL" },
        { TC_VENDORID, TC_DEVICEID_HURRICANE_556,
                "3Com 3c556 Fast Etherlink XL" },
        { TC_VENDORID, TC_DEVICEID_HURRICANE_556B,
@@ -1159,6 +1162,7 @@
                        printf("xl%d: guessing 10baseFL\n", sc->xl_unit);
                break;
        case TC_DEVICEID_BOOMERANG_10_100BT:    /* 3c905-TX */
+       case TC_DEVICEID_HURRICANE_555:         /* 3c555 */
        case TC_DEVICEID_HURRICANE_556:         /* 3c556 */
        case TC_DEVICEID_HURRICANE_556B:        /* 3c556B */
                sc->xl_media =3D XL_MEDIAOPT_MII;
@@ -1222,11 +1226,14 @@
        unit =3D device_get_unit(dev);
=20
        sc->xl_flags =3D 0;
+       if (pci_get_device(dev) =3D=3D TC_DEVICEID_HURRICANE_555)
+               sc->xl_flags |=3D XL_FLAG_EEPROM_OFFSET_30 | XL_FLAG_PHYO=
K;
        if (pci_get_device(dev) =3D=3D TC_DEVICEID_HURRICANE_556 ||
            pci_get_device(dev) =3D=3D TC_DEVICEID_HURRICANE_556B)
                sc->xl_flags |=3D XL_FLAG_FUNCREG | XL_FLAG_PHYOK |
                    XL_FLAG_EEPROM_OFFSET_30 | XL_FLAG_WEIRDRESET;
-       if (pci_get_device(dev) =3D=3D TC_DEVICEID_HURRICANE_556)
+       if (pci_get_device(dev) =3D=3D TC_DEVICEID_HURRICANE_555 ||
+           pci_get_device(dev) =3D=3D TC_DEVICEID_HURRICANE_556)
                sc->xl_flags |=3D XL_FLAG_8BITROM;
=20
        /*
>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-bugs->silby 
Responsible-Changed-By: silby 
Responsible-Changed-When: Sat Dec 28 19:44:30 PST 2002 
Responsible-Changed-Why:  
I'll handle this. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=46603 
State-Changed-From-To: open->closed 
State-Changed-By: silby 
State-Changed-When: Wed Feb 12 13:16:15 PST 2003 
State-Changed-Why:  
This patch has been committed to 5-current and 4.7-stable. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=46603 
>Unformatted:
