DragonFly On-Line Manual Pages
    
    
	
BNX(4)                DragonFly Kernel Interfaces Manual                BNX(4)
NAME
     bnx -- Broadcom BCM57785/BCM5718 families 10/100/Gigabit Ethernet device
SYNOPSIS
     device miibus
     device bnx
     Alternatively, to load the driver as a module at boot time, place the
     following line in /boot/loader.conf:
           if_bnx_load="YES"
DESCRIPTION
     The bnx driver supports the PCIe Ethernet adapters based on Broadcom
     BCM57785/BCM5718 families chips.
     The following features are supported in the bnx driver:
           IP/TCP/UDP checksum offloading
           TCP segmentation offloading (TSO)
           VLAN tag stripping and inserting
           Interrupt coalescing
           Receive Side Scaling (RSS), up to 4 reception queues
           Multiple vector MSI-X
           Multiple transmission queues (BCM5717C, BCM5719 and BCM5720 only),
           up to 4 transmission queues
     By default, the bnx driver will try enabling as many reception queues as
     are allowed by the number of CPUs in the system.  For BCM5717C, BCM5719
     and BCM5720, in addition to the reception queues, by default, the bnx
     driver will try enabling as many transmission queues as are allowed by
     the number of CPUs in the system and the number of enabled reception
     queues.  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 bnx driver supports the following media types:
     autoselect   Enable autoselection of the media types and options
     10baseT/UTP  Set 10Mbps operation.  The mediaopt option can also be used
                  to select either full-duplex or half-duplex modes.
     100baseTX    Set 100Mbps (Fast Ethernet) operation.  The mediaopt option
                  can also be used to select either full-duplex or half-duplex
                  modes.
     1000baseT    Set 1000Mbps (Gigabit Ethernet) operation.  The mediaopt
                  option can only be set full-duplex mode.
     The bnx driver supports the following media options:
     full-duplex  Force full duplex operation.
     half-duplex  Force half duplex operation.
     Note that the 1000baseT media type is only available if it is supported
     by the adapter.  For more information on configuring this device, see
     ifconfig(8).  The bnx driver supports polling(4).
HARDWARE
     The bnx driver supports Gigabit Ethernet adapters and Fast Ethernet
     adapters based on the Broadcom BCM57785/BCM5718 families chips:
     o   Broadcom BCM5717 Gigabit Ethernet
     o   Broadcom BCM5717C Gigabit Ethernet
     o   Broadcom BCM5718 Gigabit Ethernet
     o   Broadcom BCM5719 Gigabit Ethernet
     o   Broadcom BCM5720 Gigabit Ethernet
     o   Broadcom BCM5725 Gigabit Ethernet
     o   Broadcom BCM5727 Gigabit Ethernet
     o   Broadcom BCM5762 Gigabit Ethernet
     o   Broadcom BCM57761 Gigabit Ethernet
     o   Broadcom BCM57762 Gigabit Ethernet
     o   Broadcom BCM57765 Gigabit Ethernet
     o   Broadcom BCM57766 Gigabit Ethernet
     o   Broadcom BCM57781 Gigabit Ethernet
     o   Broadcom BCM57782 Gigabit Ethernet
     o   Broadcom BCM57785 Gigabit Ethernet
     o   Broadcom BCM57786 Gigabit Ethernet
     o   Broadcom BCM57791 Fast Ethernet
     o   Broadcom BCM57795 Fast Ethernet
TUNABLES
     X is the device unit number.
     hw.bnx.rx_rings hw.bnxX.rx_rings
                           If MSI-X is used, this tunable specifies the number
                           of reception queues to be enabled.  Maximum allowed
                           value for these tunables is 4 and it must be power
                           of 2 aligned.  Setting these tunables to 0 allows
                           the driver to enable as many reception queues as
                           allowed by the number of CPUs.
     hw.bnx.tx_rings hw.bnxX.tx_rings
                           For BCM5717C, BCM5719 and BCM5720, if MSI-X is
                           used, this tunable specifies the number of
                           transmission queues to be enabled.  Maximum allowed
                           value for these tunables is 4, it must be power of
                           2 aligned 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.bnx.msix.enable hw.bnxX.msix.enable
                           By default, the driver will use MSI-X if it is
                           supported.  This behaviour can be turned off by
                           setting this tunable to 0.
     hw.bnx.msi.enable hw.bnxX.msi.enable
                           If MSI-X is disabled and MSI is supported, the
                           driver will use MSI.  This behavior can be turned
                           off by setting this tunable to 0.
     hw.bnxX.msi.cpu       If MSI is used, it specifies the MSI's target CPU.
MIB Variables
     A number of per-interface variables are implemented in the dev.bnx.X
     branch of the sysctl(3) MIB.
     rx_rings          Number of reception queues enabled (read-only).  Use
                       the tunable hw.bnx.rx_rings or hw.bnxX.rx_rings to
                       configure it.
     tx_rings          Number of transmission queues enabled (read-only).  Use
                       the tunable hw.bnx.tx_rings or hw.bnxX.tx_rings to
                       configure it.
     rx_coal_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 rx_coal_bds to
                       achieve RX interrupt moderation.  Default value is 150
                       (microseconds).
     tx_coal_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 tx_coal_bds to
                       achieve TX interrupt moderation.  Default value is 1023
                       (microseconds).
     rx_coal_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
                       rx_coal_ticks to achieve RX interrupt moderation.
                       Default value is 0 (disabled).
     rx_coal_bds_poll  Maximum number of BDs which must be received by the
                       device before the device updates the status block
                       during polling(4).  It is used together with
                       rx_coal_ticks to reduce the frequency of status block
                       updating due to RX.  Default value is 32.
     tx_coal_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 tx_coal_ticks to achieve TX interrupt moderation.
                       Default value is 128.
     tx_coal_bds_poll  Maximum number of sending BDs which must be processed
                       by the device before the device updates the status
                       block during polling(4).  It is used together with
                       tx_coal_ticks to reduce the frequency of status block
                       updating due to TX.  Default value is 64.
     force_defrag      Force defragment the sending mbuf chains, if the mbuf
                       chain is not a TSO segment and contains more than 1
                       mbufs.  This improves transmission performance on
                       certain low end chips, however, this also increases CPU
                       load.  Default value is 0 (disabled).
     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 performance due to the
                       frequent hardware register writing.  Default value is
                       8.
     std_refill        Number of packets should be received before the
                       standard reception producer ring is refilled.  Setting
                       this value too low will cause extra thread scheduling
                       cost.  Setting this value too high will make chip drop
                       incoming packets.  Default value is 128 / number of
                       reception queues.
     rx_coal_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 80.
     tx_coal_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 64.
     norxbds           Number of times the standard reception producer ring is
                       short of reception BDs.  If this value grows fast, it
                       is usually an indication that std_refill is set too
                       high.
     errors            Number of errors, both critical and non-critical,
                       happened.
SEE ALSO
     arp(4), bge(4), ifmedia(4), miibus(4), netintro(4), ng_ether(4),
     polling(4), vlan(4), ifconfig(8)
HISTORY
     The bnx device driver first appeared in DragonFly 3.1.
AUTHORS
     The bnx driver was based on bge(4) written by Bill Paul
     <wpaul@windriver.com>.  Sepherosa Ziehau added receive side scaling,
     multiple transmission queues and multiple MSI-X support to DragonFly.
DragonFly 5.5                    May 13, 2017                    DragonFly 5.5