Add device driver support for the Broadcom BCM570x family of gigabit
ethernet controllers. This adds support for the 3Com 3c996-T, the SysKonnect SK-9D21 and SK-9D41, and the built-in gigE NICs on Dell PowerEdge 2550 servers. The latter configuration hauls ass: preliminary measurements show TCP speeds of over 900Mbps using only normal size frames. TCP/IP checksum offload, jumbo frames and VLAN tag insertion/stripping are supported, as well as interrupt moderation. Still need to fix autonegotiation support for 1000baseSX NICs, but beyond that, driver is pretty solid.
This commit is contained in:
parent
830cc17841
commit
95d674824f
@ -16,6 +16,7 @@ MAN= aac.4 \
|
||||
atkbdc.4 \
|
||||
aue.4 \
|
||||
awi.4 \
|
||||
bge.4 \
|
||||
bktr.4 \
|
||||
blackhole.4 \
|
||||
bpf.4 \
|
||||
|
204
share/man/man4/bge.4
Normal file
204
share/man/man4/bge.4
Normal file
@ -0,0 +1,204 @@
|
||||
.\" Copyright (c) 2001 Wind River Systems
|
||||
.\" Copyright (c) 1997, 1998, 1999, 2000, 2001
|
||||
.\" Bill Paul <wpaul@windriver.com>. All rights reserved.
|
||||
.\"
|
||||
.\" Redistribution and use in source and binary forms, with or without
|
||||
.\" modification, are permitted provided that the following conditions
|
||||
.\" are met:
|
||||
.\" 1. Redistributions of source code must retain the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer.
|
||||
.\" 2. Redistributions in binary form must reproduce the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer in the
|
||||
.\" documentation and/or other materials provided with the distribution.
|
||||
.\" 3. All advertising materials mentioning features or use of this software
|
||||
.\" must display the following acknowledgement:
|
||||
.\" This product includes software developed by Bill Paul.
|
||||
.\" 4. Neither the name of the author nor the names of any co-contributors
|
||||
.\" may be used to endorse or promote products derived from this software
|
||||
.\" without specific prior written permission.
|
||||
.\"
|
||||
.\" THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND
|
||||
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
.\" ARE DISCLAIMED. IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD
|
||||
.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
||||
.\" THE POSSIBILITY OF SUCH DAMAGE.
|
||||
.\"
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd September 27, 2001
|
||||
.Dt BGE 4
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm bge
|
||||
.Nd "Broadcom BCM570x PCI gigabit ethernet adapter driver"
|
||||
.Sh SYNOPSIS
|
||||
.Cd "device miibus"
|
||||
.Cd "device bge"
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Nm
|
||||
driver provides support for various NICs based on the Broadcom BCM570x
|
||||
family of gigabit ethernet controller chips, including the
|
||||
following:
|
||||
.Pp
|
||||
.Bl -bullet -compact
|
||||
.It
|
||||
3Com 3c996-T (10/100/1000baseTX)
|
||||
.It
|
||||
Dell PowerEdge 2550 integrated BCM5700 NIC (10/100/1000baseTX)
|
||||
.It
|
||||
SysKonnect SK-9D21 (10/100/1000baseTX)
|
||||
.It
|
||||
SysKonnect SK-9D41 (1000baseSX)
|
||||
.El
|
||||
.Pp
|
||||
All of these NICs are capable of 10, 100 and 1000Mbps speeds over CAT5
|
||||
copper cable, except for the SysKonnect SK-9D41 which supports only
|
||||
1000Mbps over multimode fiber.
|
||||
The BCM570x builds upon the technology of the Alteon Tigon II. It has
|
||||
two R4000 CPU cores and is PCI v2.2 and PCI-X v1.0 compliant. It
|
||||
supports IP, TCP
|
||||
and UDP checksum checksum offload for both receive and transmit,
|
||||
multiple RX and TX DMA rings for QoS applications, rules-based
|
||||
receive filtering, and VLAN tag stripping/insertion as well as
|
||||
a 256-bit multicast hash filter. Additional features may be
|
||||
provided via value-add firmware updates.
|
||||
The BCM570x supports TBI (ten bit interface) and GMII
|
||||
transceivers, which means it can be used with either copper of 1000baseX
|
||||
fiber applications. Note however the device only supports a single
|
||||
speed in TBI mode.
|
||||
.Pp
|
||||
Most cards also use the Broadcom BCM5401 or BCM5411 10/100/1000
|
||||
copper gigabit tranceivers,
|
||||
which support autonegotiation of 10, 100 and 1000mbps modes in
|
||||
full or half duplex.
|
||||
.Pp
|
||||
The BCM5700 also supports jumbo frames, which can be configured
|
||||
via the interface MTU setting.
|
||||
Selecting an MTU larger than 1500 bytes with the
|
||||
.Xr ifconfig 8
|
||||
utility configures the adapter to receive and transmit jumbo frames.
|
||||
Using jumbo frames can greatly improve performance for certain tasks,
|
||||
such as file transfers and data streaming.
|
||||
.Pp
|
||||
The
|
||||
.Nm
|
||||
driver supports the following media types:
|
||||
.Bl -tag -width 10baseTXUTP
|
||||
.It Cm autoselect
|
||||
Enable autoselection of the media type and options.
|
||||
The user can manually override
|
||||
the autoselected mode by adding media options to
|
||||
.Xr rc.conf 5 .
|
||||
.It Cm 10baseT/UTP
|
||||
Set 10Mbps operation.
|
||||
The
|
||||
.Xr ifconfig 8
|
||||
.Ic mediaopt
|
||||
option can also be used to select either
|
||||
.Cm full-duplex
|
||||
or
|
||||
.Cm half-duplex
|
||||
modes.
|
||||
.It Cm 100baseTX
|
||||
Set 100Mbps (fast ethernet) operation.
|
||||
The
|
||||
.Xr ifconfig 8
|
||||
.Ic mediaopt
|
||||
option can also be used to select either
|
||||
.Cm full-duplex
|
||||
or
|
||||
.Cm half-duplex
|
||||
modes.
|
||||
.It Cm 1000baseTX
|
||||
Set 1000baseTX operation over twisted pair.
|
||||
.Cm full-duplex
|
||||
and
|
||||
.Cm half-duplex
|
||||
modes are supported.
|
||||
.It Cm 1000baseSX
|
||||
Set 1000Mbps (gigabit ethernet) operation.
|
||||
Both
|
||||
.Cm full-duplex
|
||||
and
|
||||
.Cm half-duplex
|
||||
modes are supported.
|
||||
.El
|
||||
.Pp
|
||||
The
|
||||
.Nm
|
||||
driver supports the following media options:
|
||||
.Bl -tag -width full-duplex
|
||||
.It Cm full-duplex
|
||||
Force full duplex operation.
|
||||
.It Cm half-duplex
|
||||
Force half duplex operation.
|
||||
.El
|
||||
.Pp
|
||||
The
|
||||
.Nm
|
||||
driver also supports one special link option for 1000baseTX cards:
|
||||
.Bl -tag -width link0
|
||||
.It Cm link0
|
||||
With 1000baseTX cards, establishing a link between two ports requires
|
||||
that one port be configured as a master and the other a slave.
|
||||
With autonegotiation,
|
||||
the master/slave settings will be chosen automatically.
|
||||
However when manually selecting the link state, it is necessary to
|
||||
force one side of the link to be a master and the other a slave.
|
||||
The
|
||||
.Nm
|
||||
driver configures the ports as slaves by default.
|
||||
Setting the
|
||||
.Cm link0
|
||||
flag with
|
||||
.Xr ifconfig 8
|
||||
will set a port as a master instead.
|
||||
.El
|
||||
.Pp
|
||||
For more information on configuring this device, see
|
||||
.Xr ifconfig 8 .
|
||||
.Sh DIAGNOSTICS
|
||||
.Bl -diag
|
||||
.It "bge%d: couldn't map memory"
|
||||
A fatal initialization error has occurred.
|
||||
.It "bge%d: couldn't map ports"
|
||||
A fatal initialization error has occurred.
|
||||
.It "bge%d: couldn't map interrupt"
|
||||
A fatal initialization error has occurred.
|
||||
.It "bge%d: no memory for softc struct!"
|
||||
The driver failed to allocate memory for per-device instance information
|
||||
during initialization.
|
||||
.It "bge%d: failed to enable memory mapping!"
|
||||
The driver failed to initialize PCI shared memory mapping.
|
||||
This might
|
||||
happen if the card is not in a bus-master slot.
|
||||
.It "bge%d: no memory for jumbo buffers!"
|
||||
The driver failed to allocate memory for jumbo frames during
|
||||
initialization.
|
||||
.It "bge%d: watchdog timeout"
|
||||
The device has stopped responding to the network, or there is a problem with
|
||||
the network connection (cable).
|
||||
.El
|
||||
.Sh SEE ALSO
|
||||
.Xr arp 4 ,
|
||||
.Xr netintro 4 ,
|
||||
.Xr ng_ether 4 ,
|
||||
.Xr vlan 4 ,
|
||||
.Xr ifconfig 8
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Nm
|
||||
device driver first appeared in
|
||||
.Fx 5.0 .
|
||||
.Sh AUTHORS
|
||||
The
|
||||
.Nm
|
||||
driver was written by
|
||||
.An Bill Paul Aq wpaul@windriver.com .
|
@ -1665,6 +1665,10 @@ device miibus
|
||||
# (requires sppp)
|
||||
# awi: Support for IEEE 802.11 PC Card devices using the AMD Am79C930 and
|
||||
# Harris (Intersil) Chipset with PCnetMobile firmware by AMD.
|
||||
# bge: Support for gigabit ethernet adapters based on the Broadcom
|
||||
# BCM570x familiy of controllers, including the 3Com 3c996-T,
|
||||
# the SysKonnect SK-9D21 and SK-9D41, and the embedded gigE NICs
|
||||
# on Dell PowerEdge 2550 servers.
|
||||
# cnw: Xircom CNW/Netware Airsurfer PC Card adapter
|
||||
# cs: IBM Etherjet and other Crystal Semi CS89x0-based adapters
|
||||
# cx: Cronyx/Sigma multiport sync/async (with Cisco or PPP framing)
|
||||
@ -1872,9 +1876,11 @@ device xl # 3Com 3c90x (``Boomerang'', ``Cyclone'')
|
||||
|
||||
# PCI Ethernet NICs.
|
||||
device de # DEC/Intel DC21x4x (``Tulip'')
|
||||
device txp # 3Com 3cR990 (``Typhoon'')
|
||||
device vx # 3Com 3c590, 3c595 (``Vortex'')
|
||||
|
||||
# PCI Gigabit & FDDI NICs.
|
||||
device bge
|
||||
device lge
|
||||
device nge
|
||||
device sk
|
||||
|
@ -270,6 +270,7 @@ dev/awi/awi_wep.c optional awi
|
||||
dev/awi/awi_wicfg.c optional awi
|
||||
dev/awi/if_awi_pccard.c optional awi card
|
||||
dev/awi/if_awi_pccard.c optional awi pccard
|
||||
dev/bge/if_bge.c optional bge
|
||||
dev/bktr/bktr_audio.c optional bktr pci
|
||||
dev/bktr/bktr_card.c optional bktr pci
|
||||
dev/bktr/bktr_core.c count bktr pci
|
||||
|
2696
sys/dev/bge/if_bge.c
Normal file
2696
sys/dev/bge/if_bge.c
Normal file
File diff suppressed because it is too large
Load Diff
2132
sys/dev/bge/if_bgereg.h
Normal file
2132
sys/dev/bge/if_bgereg.h
Normal file
File diff suppressed because it is too large
Load Diff
@ -1665,6 +1665,10 @@ device miibus
|
||||
# (requires sppp)
|
||||
# awi: Support for IEEE 802.11 PC Card devices using the AMD Am79C930 and
|
||||
# Harris (Intersil) Chipset with PCnetMobile firmware by AMD.
|
||||
# bge: Support for gigabit ethernet adapters based on the Broadcom
|
||||
# BCM570x familiy of controllers, including the 3Com 3c996-T,
|
||||
# the SysKonnect SK-9D21 and SK-9D41, and the embedded gigE NICs
|
||||
# on Dell PowerEdge 2550 servers.
|
||||
# cnw: Xircom CNW/Netware Airsurfer PC Card adapter
|
||||
# cs: IBM Etherjet and other Crystal Semi CS89x0-based adapters
|
||||
# cx: Cronyx/Sigma multiport sync/async (with Cisco or PPP framing)
|
||||
@ -1872,9 +1876,11 @@ device xl # 3Com 3c90x (``Boomerang'', ``Cyclone'')
|
||||
|
||||
# PCI Ethernet NICs.
|
||||
device de # DEC/Intel DC21x4x (``Tulip'')
|
||||
device txp # 3Com 3cR990 (``Typhoon'')
|
||||
device vx # 3Com 3c590, 3c595 (``Vortex'')
|
||||
|
||||
# PCI Gigabit & FDDI NICs.
|
||||
device bge
|
||||
device lge
|
||||
device nge
|
||||
device sk
|
||||
|
@ -12,6 +12,7 @@ SUBDIR= 3dfx \
|
||||
amr \
|
||||
an \
|
||||
aue \
|
||||
bge \
|
||||
cam \
|
||||
ccd \
|
||||
cd9660 \
|
||||
|
8
sys/modules/bge/Makefile
Normal file
8
sys/modules/bge/Makefile
Normal file
@ -0,0 +1,8 @@
|
||||
# $FreeBSD$
|
||||
|
||||
.PATH: ${.CURDIR}/../../dev/bge
|
||||
|
||||
KMOD= if_bge
|
||||
SRCS= if_bge.c miibus_if.h opt_bdg.h device_if.h bus_if.h pci_if.h
|
||||
|
||||
.include <bsd.kmod.mk>
|
@ -82,6 +82,7 @@ static struct _devname {
|
||||
{ DEVICE_TYPE_DISK, "aacd%d", "Adaptec FSA RAID array", 151, 65538, 8, 4 },
|
||||
{ DEVICE_TYPE_FLOPPY, "fd%d", "floppy drive unit A", 9, 0, 64, 4 },
|
||||
{ DEVICE_TYPE_NETWORK, "aue", "ADMtek USB ethernet adapter" },
|
||||
{ DEVICE_TYPE_NETWORK, "bge", "Broadcom BCM570x PCI gigabit ethernet card" },
|
||||
{ DEVICE_TYPE_NETWORK, "cue", "CATC USB ethernet adapter" },
|
||||
{ DEVICE_TYPE_NETWORK, "fpa", "DEC DEFPA PCI FDDI card" },
|
||||
{ DEVICE_TYPE_NETWORK, "sr", "SDL T1/E1 sync serial PCI card" },
|
||||
|
@ -82,6 +82,7 @@ static struct _devname {
|
||||
{ DEVICE_TYPE_DISK, "aacd%d", "Adaptec FSA RAID array", 151, 65538, 8, 4 },
|
||||
{ DEVICE_TYPE_FLOPPY, "fd%d", "floppy drive unit A", 9, 0, 64, 4 },
|
||||
{ DEVICE_TYPE_NETWORK, "aue", "ADMtek USB ethernet adapter" },
|
||||
{ DEVICE_TYPE_NETWORK, "bge", "Broadcom BCM570x PCI gigabit ethernet card" },
|
||||
{ DEVICE_TYPE_NETWORK, "cue", "CATC USB ethernet adapter" },
|
||||
{ DEVICE_TYPE_NETWORK, "fpa", "DEC DEFPA PCI FDDI card" },
|
||||
{ DEVICE_TYPE_NETWORK, "sr", "SDL T1/E1 sync serial PCI card" },
|
||||
|
Loading…
x
Reference in New Issue
Block a user