Scott Long wrote: > Benjamin Lutz wrote: > >> Hello, >> >> I picked up a Linksys EG1032 yesterday, and was surprised to see that it >> didn't work on FreeBSD 6.0-BETA5/i386. After some investigation I found >> out that apparently Linksys has silently changed the chip on the card. >> >> The EG1032 is a standard 32bit PCI gigabit ethernet card. Two drivers >> already support a card by that name, according to the manpages and >> hardware notes: >> >> nge(4), which works with National Semiconductor DP83820 / DP83821 >> chips. >> >> sk(4), which works with SysKonnect SK-984x and SK-982x chips. >> >> Now, this EG1032 I got here, marked as "rev. 3", comes with a Realtek >> RTL8169S chip. Unfortunately, it seems that the device ID was not >> changed, it is still 0x1032, which made the sk(4) driver try and fail to >> attach to the card. >> >> I got the card working with the two patches below. >> >> Cheers >> Benjamin >> >> >> --- sys/dev/re/if_re.c.orig Sun Oct 2 05:31:06 2005 >> +++ sys/dev/re/if_re.c Sun Oct 2 05:34:02 2005 >> _at__at_ -173,6 +173,8 _at__at_ >> "RealTek 8110S Single-chip Gigabit Ethernet" }, >> { COREGA_VENDORID, COREGA_DEVICEID_CGLAPCIGT, RL_HWREV_8169S, >> "Corega CG-LAPCIGT (RTL8169S) Gigabit Ethernet" }, >> + { LINKSYS_VENDORID, LINKSYS_DEVICEID_EG1032, RL_HWREV_8169S, >> + "Linksys EG1032 (RTL8169S) Gigabit Ethernet" }, >> { 0, 0, 0, NULL } >> }; >> >> >> --- sys/pci/if_rlreg.h.orig Sun Oct 2 05:35:58 2005 >> +++ sys/pci/if_rlreg.h Sun Oct 2 05:38:54 2005 >> _at__at_ -826,6 +826,16 _at__at_ >> #define COREGA_DEVICEID_CGLAPCIGT 0xc107 >> >> /* >> + * Linksys vendor ID >> + */ >> +#define LINKSYS_VENDORID 0x1737 >> + >> +/* >> + * Linksys EG1032 device ID >> + */ >> +#define LINKSYS_DEVICEID_EG1032 0x1032 >> + >> +/* >> * Peppercon vendor ID >> */ >> #define PEPPERCON_VENDORID 0x1743 >> >> > > Sounds like the if_sk driver needs to be made more intelligent so that > it doesn't try to claim this card, yes? > Something like this... Index: sys/pci/if_sk.c =================================================================== RCS file: /home/ncvs/src/sys/pci/if_sk.c,v retrieving revision 1.110 diff -u -r1.110 if_sk.c --- sys/pci/if_sk.c 16 Sep 2005 11:11:51 -0000 1.110 +++ sys/pci/if_sk.c 2 Oct 2005 09:55:54 -0000 _at__at_ -143,39 +143,46 _at__at_ { VENDORID_SK, DEVICEID_SK_V1, + -1, "SysKonnect Gigabit Ethernet (V1.0)" }, { VENDORID_SK, DEVICEID_SK_V2, + -1, "SysKonnect Gigabit Ethernet (V2.0)" }, { VENDORID_MARVELL, DEVICEID_SK_V2, + -1, "Marvell Gigabit Ethernet" }, { VENDORID_MARVELL, DEVICEID_BELKIN_5005, + -1, "Belkin F5D5005 Gigabit Ethernet" }, { VENDORID_3COM, DEVICEID_3COM_3C940, + -1, "3Com 3C940 Gigabit Ethernet" }, { VENDORID_LINKSYS, DEVICEID_LINKSYS_EG1032, + 0x12, "Linksys EG1032 Gigabit Ethernet" }, { VENDORID_DLINK, DEVICEID_DLINK_DGE530T, + -1, "D-Link DGE-530T Gigabit Ethernet" }, - { 0, 0, NULL } + { 0, 0, 0, NULL } }; static int skc_probe(device_t); _at__at_ -1311,7 +1318,8 _at__at_ while(t->sk_name != NULL) { if ((pci_get_vendor(dev) == t->sk_vid) && - (pci_get_device(dev) == t->sk_did)) { + (pci_get_device(dev) == t->sk_did) && + (pci_get_revid(dev) == t->sk_rev || t->sk_rev == -1)) { device_set_desc(dev, t->sk_name); return (BUS_PROBE_DEFAULT); } Index: sys/pci/if_skreg.h =================================================================== RCS file: /home/ncvs/src/sys/pci/if_skreg.h,v retrieving revision 1.29 diff -u -r1.29 if_skreg.h --- sys/pci/if_skreg.h 10 Jun 2005 16:49:23 -0000 1.29 +++ sys/pci/if_skreg.h 2 Oct 2005 09:55:55 -0000 _at__at_ -1300,6 +1300,7 _at__at_ struct sk_type { u_int16_t sk_vid; u_int16_t sk_did; + int16_t sk_rev; char *sk_name; };Received on Sun Oct 02 2005 - 08:43:12 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:44 UTC