summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--share/man/man4/dc.44
-rw-r--r--share/man/man4/rl.486
-rw-r--r--sys/dev/dc/if_dc.c20
-rw-r--r--sys/dev/dc/if_dcreg.h14
-rw-r--r--sys/dev/usb/if_aue.c1
-rw-r--r--sys/dev/usb/usbdevs1
-rw-r--r--sys/pci/if_dc.c20
-rw-r--r--sys/pci/if_dcreg.h14
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.
*/
OpenPOWER on IntegriCloud