DragonFly On-Line Manual Pages
BCE(4) DragonFly Kernel Interfaces Manual BCE(4)
NAME
bce -- Broadcom NetXtreme II PCIe Gigabit Ethernet adapter driver
SYNOPSIS
To compile this driver into the kernel, place the following lines in your
kernel configuration file:
device miibus
device bce
Alternatively, to load the driver as a module at boot time, place the
following line in loader.conf(5):
if_bce_load="YES"
DESCRIPTION
The bce driver supports Broadcom's NetXtreme II product family, including
the BCM5706, BCM5708, BCM5709 and BCM5716 Ethernet controllers.
The NetXtreme II product family is composed of various Converged NIC (or
CNIC) Ethernet controllers which support a TCP Offload Engine (TOE),
Remote DMA (RDMA), and iSCSI acceleration, in addition to standard L2
Ethernet traffic, all on the same controller. The following features are
supported in the bce driver:
TCP/UDP checksum offload
TCP segmentation offloading (TSO)
VLAN tag stripping and inserting
Interrupt coalescing
10/100/1000Mbps operation in full-duplex mode
10/100Mbps operation in half-duplex mode
The following features are supported in the bce driver for BCM5709 and
BCM5716:
Receive side scaling (RSS), up to 8 reception queues
Multiple tranmission queues, up to 8 transmission queues
Multiple vector MSI-X
For BCM5709 and BCM5716, by default, the bce driver will try enabling as
many reception and transmission queues as are allowed by the number of
CPUs in the system. If multiple transmission queues are enabled, the
round-robin arbitration is performed among the transmission queues. It
should be noted that if both TSO and multiple transmission queues are
enabled, the round-robin arbitration between transmission queues is done
at the TSO packet boundary.
The bce driver supports the following media types:
autoselect Enable autoselection of the media type and options. The
user can manually override the autoselected mode by adding
media options to rc.conf(5).
10baseT/UTP Set 10Mbps operation. The ifconfig(8) mediaopt option can
also be used to select either full-duplex or half-duplex
modes.
100baseTX Set 100Mbps (Fast Ethernet) operation. The ifconfig(8)
mediaopt option can also be used to select either
full-duplex or half-duplex modes.
1000baseT Set 1000baseT operation over twisted pair. Only full-duplex
mode is supported.
The bce driver supports the following media options:
full-duplex Force full duplex operation.
half-duplex Force half duplex operation.
For more information on configuring this device, see ifconfig(8). The
bce driver supports polling(4).
TUNABLES
X is the device unit number.
hw.bce.tx_bds Maximum number of sending BDs which must be
processed by the device before the device updates
the status block and generates interrupt. It is
used together with hw.bce.tx_ticks to achieve TX
interrupt moderation. Default value is 255.
hw.bce.tx_bds_int Maximum number of sending BDs which must be
processed by the device before the device updates
the status block during host interrupt processing.
Default value is 255.
hw.bce.tx_ticks How often status block should be updated and
interrupt should be generated by the device, due to
sending packets. It is used together with
hw.bce.tx_bds to achieve TX interrupt moderation.
Default value is 1022 (microseconds).
hw.bce.tx_ticks_int How often status block should be updated by the
device during host interrupt processing, due to
sending packets. Default value is 1022
(microseconds).
hw.bce.rx_bds Maximum number of BDs which must be received by the
device before the device updates the status block
and generates interrupt. It is used together with
hw.bce.rx_ticks to achieve RX interrupt moderation.
Default value is 0.
hw.bce.rx_bds_int Maximum number of BDs which must be received by the
device before the device updates the status block
during host interrupt processing. Default value is
128.
hw.bce.rx_ticks How often status block should be updated and
interrupt should be generated by the device, due to
receiving packets. It is used together with
hw.bce.rx_bds to achieve RX interrupt moderation.
Default value is 150 (microseconds).
hw.bce.rx_ticks_int How often status block should be updated by the
device during host interrupt processing, due to
receiving packets. Default value is 150
(microseconds).
hw.bce.msi.enable hw.bceX.msi.enable
For BCM5706 and BCM5708, by default, the driver
will use MSI if it is supported. This behavior can
be turned off by setting this tunable to 0.
hw.bceX.msi.cpu If MSI is used, it specifies the MSI's target CPU.
hw.bce.msix.enable hw.bceX.msix.enable
For BCM5709 and BCM5716, by default, the driver
will use MSI-X if it is supported. This behavior
can be turned off by setting this tunable to 0.
hw.bce.rx_pages hw.bceX.rx_pages
How many reception descriptor pages should be used.
One reception descriptor page holds 256 reception
descriptors. Default value is 2.
hw.bce.tx_pages hw.bceX.tx_pages
How many transmission descriptor pages should be
used. One transmission descriptor page holds 256
transmission descriptors. Default value is 2.
hw.bce.rx_rings hw.bceX.rx_rings
For BCM5709 and BCM5716, if MSI-X is used, this
tunable specifies the number of reception queues to
be enabled. Maximum allowed value for these
tunables is 8. Setting these tunables to 0 allows
the driver to enable as many reception queues as
allowed by the number of CPUs.
hw.bce.tx_rings hw.bceX.tx_rings
For BCM5709 and BCM5716, if MSI-X is used, this
tunable specifies the number of transmission queues
to be enabled. Maximum allowed value for these
tunables is 8, and it must be less than or equal to
the number of reception queues enabled. Setting
these tunables to 0 allows the driver to enable as
many transmission queues as allowed by the number
of CPUs and number reception queues enabled.
hw.bce.tx_wreg The number of transmission descriptors should be
setup before the hardware register is written.
Setting this value too high will have negative
effect on transmission timeliness. Setting this
value too low will hurt overall transmission due to
the frequent hardware register writing. Default
value is 8.
MIB Variables
A number of per-interface variables are implemented in the dev.bce.X
branch of the sysctl(3) MIB.
tx_bds_int See the tunable hw.bce.tx_bds_int.
tx_bds See the tunable hw.bce.tx_bds.
tx_ticks_int See the tunable hw.bce.tx_ticks_int.
tx_ticks See the tunable hw.bce.tx_ticks.
rx_bds_int See the tunable hw.bce.rx_bds_int.
rx_bds See the tunable hw.bce_rx_bds.
rx_ticks_int See the tunable hw.bce.rx_ticks_int.
rx_ticks See the tunable hw.bce.rx_ticks.
rx_rings Number of reception queues actually enabled (read-only).
For BCM5709 and BCM5716, if MSI-X is enabled, the enabled
reception queues will be one more than the value specified
in the tunable hw.bce.rx_rings or hw.bceX.rx_rings. The
extra reception queue is for the packets whose RSS hash
could not be calculated by the hardware.
tx_rings Number of transmission queues enable (read-only). For
BCM5709 and BCM5716, if MSI-X is enabled, use the tunable
hw.bce.tx_rings or hw.bceX.tx_rings to configure it.
rx_pages Number of reception descriptor pages enabled (read-only).
Use the tunable hw.bce.rx_pages or hw.bceX.rx_pages to
configure it.
tx_pages Number of transmission descriptor pages enabled (read-
only). Use the tunable hw.bce.tx_pages or hw.bceX.tx_pages
to configure it.
tx_wreg See the tunable hw.bce.tx_wreg.
stat_* Various hardware statistics.
SEE ALSO
altq(4), arp(4), ifmedia(4), miibus(4), netintro(4), ng_ether(4),
polling(4), vlan(4), ifconfig(8)
HISTORY
The bce device driver first appeared in FreeBSD 6.1.
AUTHORS
The bce driver was written by David Christensen <davidch@broadcom.com>.
Sepherosa Ziehau added receive side scaling, multiple transmission queues
and multiple vector MSI-X support to DragonFly.
DragonFly 4.7 June 1, 2017 DragonFly 4.7