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