diff options
author | wpaul <wpaul@FreeBSD.org> | 2003-07-10 18:43:17 +0000 |
---|---|---|
committer | wpaul <wpaul@FreeBSD.org> | 2003-07-10 18:43:17 +0000 |
commit | ab54f720139a9503efa3a9f37c35f48a84c0f789 (patch) | |
tree | 3309011d2d00ffd4ab30a5b099751df033c9b41d | |
parent | 2184143037977814193cc1a055860d1eb9497c34 (diff) | |
download | FreeBSD-src-ab54f720139a9503efa3a9f37c35f48a84c0f789.zip FreeBSD-src-ab54f720139a9503efa3a9f37c35f48a84c0f789.tar.gz |
Add support for a bunch of Microsoft networking products:
- MN-110 10/100 USB ethernet (ADMtek Pegasus II, if_aue)
- MN-120 10/100 cardbus (ADMtek Centaur-C, if_dc)
- MN-130 10/100 PCI (ADMtek Centaur-P, if_dc)
Also update dc(4) man page to mention support for MN-120 and MN-130.
-rw-r--r-- | share/man/man4/dc.4 | 4 | ||||
-rw-r--r-- | share/man/man4/rl.4 | 86 | ||||
-rw-r--r-- | sys/dev/dc/if_dc.c | 20 | ||||
-rw-r--r-- | sys/dev/dc/if_dcreg.h | 14 | ||||
-rw-r--r-- | sys/dev/usb/if_aue.c | 1 | ||||
-rw-r--r-- | sys/dev/usb/usbdevs | 1 | ||||
-rw-r--r-- | sys/pci/if_dc.c | 20 | ||||
-rw-r--r-- | sys/pci/if_dcreg.h | 14 |
8 files changed, 148 insertions, 12 deletions
diff --git a/share/man/man4/dc.4 b/share/man/man4/dc.4 index 903877d..71db079 100644 --- a/share/man/man4/dc.4 +++ b/share/man/man4/dc.4 @@ -145,6 +145,10 @@ CNet Pro110B (ASIX AX88140A) LinkSys LNE100TX v4.0/4.1 (ADMtek AN985 Centaur-P) .It 3Com OfficeConnect 10/100B (ADMtek AN985 Centaur-P) +.It +Microsoft MN-120 10/100 CardBus (ADMTek Centaur-C) +.It +Microsoft MN-130 10/100 PCI (ADMTek Centaur-P) .El .Pp The diff --git a/share/man/man4/rl.4 b/share/man/man4/rl.4 index fe07c45..82c485e 100644 --- a/share/man/man4/rl.4 +++ b/share/man/man4/rl.4 @@ -35,7 +35,7 @@ .Os .Sh NAME .Nm rl -.Nd RealTek 8129/8139 fast ethernet device driver +.Nd RealTek 8129/8139/8139C+ fast ethernet device driver .Sh SYNOPSIS .Cd "device miibus" .Cd "device rl" @@ -44,17 +44,64 @@ The .Nm driver provides support for PCI ethernet adapters and embedded controllers based on the RealTek 8129 and 8139 fast ethernet controller -chips. -This includes the Allied Telesyn AT2550, Farallon NetLINE 10/100 PCI, +chips, including the following: +.Pp +.Bl -bullet -compact -offset indent +.It +Allied Telesyn AT2550 +.It +Farallon NetLINE 10/100 PCI +.It Genius GF100TXR, -NDC Communications NE100TX-E, OvisLink LEF-8129TX, OvisLink LEF-8139TX, -Netronix Inc. EA-1210 NetEther 10/100, KTX-9130TX 10/100 Fast Ethernet, -Encore ENL832-TX 10/100 M PCI, Longshine LCS-8038TX-R, the -SMC EZ Card 10/100 PCI 1211-TX, and various other cheap adapters. -It also supports the Accton EN1207D which has a -chip labeled MPX5030 (or MPX5038) which appears to be a RealTek workalike. +.It +NDC Communications NE100TX-E +.It +OvisLink LEF-8129TX +.It +OvisLink LEF-8139TX, +.It +Netronix Inc. EA-1210 NetEther 10/100 +.It +KTX-9130TX 10/100 Fast Ethernet, +.It +Encore ENL832-TX 10/100 M PCI, +.It +Longshine LCS-8038TX-R +.It +SMC EZ Card 10/100 PCI 1211-TX +.It +Compaq HNE-300 +.It +LevelOne FPC-0106TX +.It +Edimax EP-4103DL CardBus +.It +Nortel Networks 10/100BaseTX +.It +D-Link DFE-690TXD +.It +D-Link DFE-530TX+ +.It +D-Link DFE-538TX (same as 530+?) +.It +Corega FEther CB-TXD +.It +Corega FEtherII CB-TXD +.It +Peppercon AG ROL-F +.It +Planex FNW-3800-TX +.It +Accton EN1207D +.It +GigaFast Ethernet EE100-AXP +.It +CompUSA no-name 10/100 PCI ethernet NIC +.It +Belkin F5D5000 +.El .Pp -The RealTek controllers use bus master DMA but do not use a +The RealTek 8129/8139 series controllers use bus master DMA but do not use a descriptor-based data transfer mechanism. The receiver uses a single fixed size ring buffer from which packets must be copied @@ -73,6 +120,21 @@ supports both 10 and 100Mbps speeds in either full or half duplex. The 8129 can support the same speeds and modes given an appropriate PHY chip. .Pp +Support is also provided for the special C+ mode of the 8139C+ chip. +By default, the 8139C+ is back backwards compatible with the 8139, but +in C+ mode it supports advanced features such as descriptor-based DMA, +64-bit addressing, TCP/IP checksum offload on both receive and transmit, +hardware VLAN tag insertion and extraction, and TCP large send. +When used with an 8139C+ chip, the +.Nm +driver makes use of all of these features, except for TCP large send, +since there is currently no OS support for it. Transmit interrupt +moderation is also used to improve performance at high frame rates. +The receive and transmit checksum offload capabilities are on by default +but can be toggled off using the +.Xr ifconfig 8 +command. +.Pp The .Nm driver supports the following media types: @@ -167,8 +229,8 @@ the card should be configured correctly. .Xr ng_ether 4 , .Xr ifconfig 8 .Rs -.%B The RealTek 8129 and 8139 datasheets -.%O ftp.realtek.com.tw:/lancard/data sheet +.%B The RealTek 8129, 8139 and 8139C+ datasheets +.%O http://www.realtek.com.tw .Re .Sh HISTORY The diff --git a/sys/dev/dc/if_dc.c b/sys/dev/dc/if_dc.c index 19ba308..42dd8c9 100644 --- a/sys/dev/dc/if_dc.c +++ b/sys/dev/dc/if_dc.c @@ -202,6 +202,12 @@ static struct dc_type dc_devs[] = { "PlaneX FNW-3602-T CardBus 10/100" }, { DC_VENDORID_3COM, DC_DEVICEID_3CSOHOB, "3Com OfficeConnect 10/100B" }, + { DC_VENDORID_MICROSOFT, DC_DEVICEID_MSMN120, + "Microsoft MN-120 CardBus 10/100" }, + { DC_VENDORID_MICROSOFT, DC_DEVICEID_MSMN130, + "Microsoft MN-130 10/100" }, + { DC_VENDORID_MICROSOFT, DC_DEVICEID_MSMN130_FAKE, + "Microsoft MN-130 10/100" }, { 0, 0, NULL } }; @@ -1587,6 +1593,18 @@ dc_devtype(device_t dev) if (t->dc_did == DC_DEVICEID_DM9102 && rev >= DC_REVISION_DM9102A) t++; + /* + * The Microsoft MN-130 has a device ID of 0x0002, + * which happens to be the same as the PNIC 82c168. + * To keep dc_attach() from getting confused, we + * pretend its ID is something different. + * XXX: ideally, dc_attach() should be checking + * vendorid+deviceid together to avoid such + * collisions. + */ + if (t->dc_vid == DC_VENDORID_MICROSOFT && + t->dc_did == DC_DEVICEID_MSMN130) + t++; return (t); } t++; @@ -1927,6 +1945,8 @@ dc_attach(device_t dev) case DC_DEVICEID_EN2242: case DC_DEVICEID_HAWKING_PN672TX: case DC_DEVICEID_3CSOHOB: + case DC_DEVICEID_MSMN120: + case DC_DEVICEID_MSMN130_FAKE: /* XXX avoid collision with PNIC*/ sc->dc_type = DC_TYPE_AN985; sc->dc_flags |= DC_64BIT_HASH; sc->dc_flags |= DC_TX_USE_TX_INTR; diff --git a/sys/dev/dc/if_dcreg.h b/sys/dev/dc/if_dcreg.h index edbefef..e4ad2b9 100644 --- a/sys/dev/dc/if_dcreg.h +++ b/sys/dev/dc/if_dcreg.h @@ -985,6 +985,20 @@ struct dc_softc { #define DC_DEVICEID_HAWKING_PN672TX 0xab08 /* + * Microsoft device ID. + */ +#define DC_VENDORID_MICROSOFT 0x1414 + +/* + * Supported Microsoft PCI and cardbus NICs. These are really + * ADMtek parts in disguise. + */ + +#define DC_DEVICEID_MSMN120 0x0001 +#define DC_DEVICEID_MSMN130 0x0002 +#define DC_DEVICEID_MSMN130_FAKE 0xFFF2 + +/* * PCI low memory base and low I/O base register, and * other PCI registers. */ diff --git a/sys/dev/usb/if_aue.c b/sys/dev/usb/if_aue.c index 80e8b42..c0f6e67 100644 --- a/sys/dev/usb/if_aue.c +++ b/sys/dev/usb/if_aue.c @@ -156,6 +156,7 @@ Static const struct aue_type aue_devs[] = { {{ USB_VENDOR_LINKSYS, USB_PRODUCT_LINKSYS_USB100H1}, LSYS|PNA }, {{ USB_VENDOR_LINKSYS, USB_PRODUCT_LINKSYS_USB10TA}, LSYS }, {{ USB_VENDOR_LINKSYS, USB_PRODUCT_LINKSYS_USB10TX2}, LSYS|PII }, + {{ USB_VENDOR_MICROSOFT, USB_PRODUCT_MICROSOFT_MN110}, PII }, {{ USB_VENDOR_MELCO, USB_PRODUCT_MELCO_LUATX1}, 0 }, {{ USB_VENDOR_MELCO, USB_PRODUCT_MELCO_LUATX5}, 0 }, {{ USB_VENDOR_MELCO, USB_PRODUCT_MELCO_LUA2TX5}, PII }, diff --git a/sys/dev/usb/usbdevs b/sys/dev/usb/usbdevs index 63d0ff6..21ab74b 100644 --- a/sys/dev/usb/usbdevs +++ b/sys/dev/usb/usbdevs @@ -859,6 +859,7 @@ product MICROSOFT SIDEWINDER 0x001a Sidewinder Precision Racing Wheel product MICROSOFT INETPRO 0x001c Internet Keyboard Pro product MICROSOFT INTELLIEYE 0x0025 IntelliEye mouse product MICROSOFT INETPRO2 0x002b Internet Keyboard Pro +product MICROSOFT MN110 0x007a 10/100 USB NIC /* Microtech products */ product MICROTECH SCSIDB25 0x0004 USB-SCSI-DB25 diff --git a/sys/pci/if_dc.c b/sys/pci/if_dc.c index 19ba308..42dd8c9 100644 --- a/sys/pci/if_dc.c +++ b/sys/pci/if_dc.c @@ -202,6 +202,12 @@ static struct dc_type dc_devs[] = { "PlaneX FNW-3602-T CardBus 10/100" }, { DC_VENDORID_3COM, DC_DEVICEID_3CSOHOB, "3Com OfficeConnect 10/100B" }, + { DC_VENDORID_MICROSOFT, DC_DEVICEID_MSMN120, + "Microsoft MN-120 CardBus 10/100" }, + { DC_VENDORID_MICROSOFT, DC_DEVICEID_MSMN130, + "Microsoft MN-130 10/100" }, + { DC_VENDORID_MICROSOFT, DC_DEVICEID_MSMN130_FAKE, + "Microsoft MN-130 10/100" }, { 0, 0, NULL } }; @@ -1587,6 +1593,18 @@ dc_devtype(device_t dev) if (t->dc_did == DC_DEVICEID_DM9102 && rev >= DC_REVISION_DM9102A) t++; + /* + * The Microsoft MN-130 has a device ID of 0x0002, + * which happens to be the same as the PNIC 82c168. + * To keep dc_attach() from getting confused, we + * pretend its ID is something different. + * XXX: ideally, dc_attach() should be checking + * vendorid+deviceid together to avoid such + * collisions. + */ + if (t->dc_vid == DC_VENDORID_MICROSOFT && + t->dc_did == DC_DEVICEID_MSMN130) + t++; return (t); } t++; @@ -1927,6 +1945,8 @@ dc_attach(device_t dev) case DC_DEVICEID_EN2242: case DC_DEVICEID_HAWKING_PN672TX: case DC_DEVICEID_3CSOHOB: + case DC_DEVICEID_MSMN120: + case DC_DEVICEID_MSMN130_FAKE: /* XXX avoid collision with PNIC*/ sc->dc_type = DC_TYPE_AN985; sc->dc_flags |= DC_64BIT_HASH; sc->dc_flags |= DC_TX_USE_TX_INTR; diff --git a/sys/pci/if_dcreg.h b/sys/pci/if_dcreg.h index edbefef..e4ad2b9 100644 --- a/sys/pci/if_dcreg.h +++ b/sys/pci/if_dcreg.h @@ -985,6 +985,20 @@ struct dc_softc { #define DC_DEVICEID_HAWKING_PN672TX 0xab08 /* + * Microsoft device ID. + */ +#define DC_VENDORID_MICROSOFT 0x1414 + +/* + * Supported Microsoft PCI and cardbus NICs. These are really + * ADMtek parts in disguise. + */ + +#define DC_DEVICEID_MSMN120 0x0001 +#define DC_DEVICEID_MSMN130 0x0002 +#define DC_DEVICEID_MSMN130_FAKE 0xFFF2 + +/* * PCI low memory base and low I/O base register, and * other PCI registers. */ |