Index: pci/if_sk.c =================================================================== RCS file: /home/cvs/src/sys/pci/if_sk.c,v retrieving revision 1.109 diff -u -u -r1.109 if_sk.c --- pci/if_sk.c 13 Aug 2005 11:13:12 -0000 1.109 +++ pci/if_sk.c 2 Oct 2005 17:45:08 -0000 @@ -142,40 +142,45 @@ static struct sk_type sk_devs[] = { { VENDORID_SK, - DEVICEID_SK_V1, + DEVICEID_SK_V1, -1, "SysKonnect Gigabit Ethernet (V1.0)" }, { VENDORID_SK, - DEVICEID_SK_V2, + DEVICEID_SK_V2, -1, "SysKonnect Gigabit Ethernet (V2.0)" }, { VENDORID_MARVELL, - DEVICEID_SK_V2, + DEVICEID_SK_V2, -1, "Marvell Gigabit Ethernet" }, { VENDORID_MARVELL, - DEVICEID_BELKIN_5005, + DEVICEID_BELKIN_5005, -1, "Belkin F5D5005 Gigabit Ethernet" }, { VENDORID_3COM, - DEVICEID_3COM_3C940, + DEVICEID_3COM_3C940, -1, "3Com 3C940 Gigabit Ethernet" }, { VENDORID_LINKSYS, - DEVICEID_LINKSYS_EG1032, - "Linksys EG1032 Gigabit Ethernet" + DEVICEID_LINKSYS_EG1032, 0x0, + "Linksys EG1032 v1 Gigabit Ethernet" + }, + { + VENDORID_LINKSYS, + DEVICEID_LINKSYS_EG1032, 0x1, + "Linksys EG1032 v2 Gigabit Ethernet" }, { VENDORID_DLINK, - DEVICEID_DLINK_DGE530T, + DEVICEID_DLINK_DGE530T, -1, "D-Link DGE-530T Gigabit Ethernet" }, - { 0, 0, NULL } + { 0, 0, 0, NULL } }; static int skc_probe(device_t); @@ -1311,7 +1316,9 @@ 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) && + ((t->sk_rid == -1) || + (pci_get_revid(dev) == t->sk_rid))) { device_set_desc(dev, t->sk_name); return (BUS_PROBE_DEFAULT); } Index: pci/if_skreg.h =================================================================== RCS file: /home/cvs/src/sys/pci/if_skreg.h,v retrieving revision 1.29 diff -u -u -r1.29 if_skreg.h --- pci/if_skreg.h 10 Jun 2005 16:49:23 -0000 1.29 +++ pci/if_skreg.h 2 Oct 2005 17:45:25 -0000 @@ -1300,6 +1300,7 @@ struct sk_type { u_int16_t sk_vid; u_int16_t sk_did; + int sk_rid; char *sk_name; }; Index: dev/re/if_re.c =================================================================== RCS file: /home/cvs/src/sys/dev/re/if_re.c,v retrieving revision 1.51 diff -u -u -r1.51 if_re.c --- dev/re/if_re.c 18 Aug 2005 18:36:39 -0000 1.51 +++ dev/re/if_re.c 2 Oct 2005 17:46:34 -0000 @@ -159,21 +159,23 @@ * Various supported device vendors/types and their names. */ static struct rl_type re_devs[] = { - { DLINK_VENDORID, DLINK_DEVICEID_528T, RL_HWREV_8169S, + { DLINK_VENDORID, DLINK_DEVICEID_528T, -1, RL_HWREV_8169S, "D-Link DGE-528(T) Gigabit Ethernet Adapter" }, - { RT_VENDORID, RT_DEVICEID_8139, RL_HWREV_8139CPLUS, + { RT_VENDORID, RT_DEVICEID_8139, -1, RL_HWREV_8139CPLUS, "RealTek 8139C+ 10/100BaseTX" }, - { RT_VENDORID, RT_DEVICEID_8169, RL_HWREV_8169, + { RT_VENDORID, RT_DEVICEID_8169, -1, RL_HWREV_8169, "RealTek 8169 Gigabit Ethernet" }, - { RT_VENDORID, RT_DEVICEID_8169, RL_HWREV_8169S, + { RT_VENDORID, RT_DEVICEID_8169, -1, RL_HWREV_8169S, "RealTek 8169S Single-chip Gigabit Ethernet" }, - { RT_VENDORID, RT_DEVICEID_8169, RL_HWREV_8169SB, + { RT_VENDORID, RT_DEVICEID_8169, -1, RL_HWREV_8169SB, "RealTek 8169SB Single-chip Gigabit Ethernet" }, - { RT_VENDORID, RT_DEVICEID_8169, RL_HWREV_8110S, + { RT_VENDORID, RT_DEVICEID_8169, -1, RL_HWREV_8110S, "RealTek 8110S Single-chip Gigabit Ethernet" }, - { COREGA_VENDORID, COREGA_DEVICEID_CGLAPCIGT, RL_HWREV_8169S, + { COREGA_VENDORID, COREGA_DEVICEID_CGLAPCIGT, -1, RL_HWREV_8169S, "Corega CG-LAPCIGT (RTL8169S) Gigabit Ethernet" }, - { 0, 0, 0, NULL } + { VENDORID_LINKSYS, DEVICEID_LINKSYS_EG1032, 0x10, RL_HWREV_8169S, + "Linksys EG1032v3 Gigabit Ethernet" }, + { 0, 0, 0, 0, NULL } }; static struct rl_hwrev re_hwrevs[] = { @@ -824,7 +826,9 @@ while (t->rl_name != NULL) { if ((pci_get_vendor(dev) == t->rl_vid) && - (pci_get_device(dev) == t->rl_did)) { + (pci_get_device(dev) == t->rl_did) && + ((t->rl_rid == -1) || + (pci_get_revid(dev) == t->rl_rid))) { /* * Temporarily map the I/O space