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.
This commit is contained in:
wpaul 2003-07-10 18:43:17 +00:00
parent 2184143037
commit ab54f72013
8 changed files with 149 additions and 13 deletions

View File

@ -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

View File

@ -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,
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.
chips, including the following:
.Pp
The RealTek controllers use bus master DMA but do not use a
.Bl -bullet -compact -offset indent
.It
Allied Telesyn AT2550
.It
Farallon NetLINE 10/100 PCI
.It
Genius GF100TXR,
.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 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

View File

@ -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;

View File

@ -984,6 +984,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.

View File

@ -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 },

View File

@ -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

View File

@ -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;

View File

@ -984,6 +984,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.