1.\" Copyright (c) 2006-2014 QLogic Corporation 2.\" 3.\" Redistribution and use in source and binary forms, with or without 4.\" modification, are permitted provided that the following conditions 5.\" are met: 6.\" 7.\" 1. Redistributions of source code must retain the above copyright 8.\" notice, this list of conditions and the following disclaimer. 9.\" 2. Redistributions in binary form must reproduce the above copyright 10.\" notice, this list of conditions and the following disclaimer in the 11.\" documentation and/or other materials provided with the distribution. 12.\" 13.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS' 14.\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16.\" ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 17.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 18.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 19.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 20.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 21.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 22.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 23.\" THE POSSIBILITY OF SUCH DAMAGE. 24.\" 25.Dd June 4, 2012 26.Dt BCE 4 27.Os 28.Sh NAME 29.Nm bce 30.Nd "QLogic NetXtreme II (BCM5706/5708/5709/5716) PCI/PCIe Gigabit Ethernet adapter driver" 31.Sh SYNOPSIS 32To compile this driver into the kernel, 33place the following lines in your 34kernel configuration file: 35.Bd -ragged -offset indent 36.Cd "device miibus" 37.Cd "device bce" 38.Ed 39.Pp 40Alternatively, to load the driver as a 41module at boot time, place the following line in 42.Xr loader.conf 5 : 43.Bd -literal -offset indent 44if_bce_load="YES" 45.Ed 46.Sh DESCRIPTION 47The 48.Nm 49driver supports QLogic's NetXtreme II product family, including the 50BCM5706, BCM5708, BCM5709 and BCM5716 Ethernet controllers. 51.Pp 52The NetXtreme II product family is composed of various Converged NIC (or CNIC) 53Ethernet controllers which support a TCP Offload Engine (TOE), Remote DMA (RDMA), 54and iSCSI acceleration, in addition to standard L2 Ethernet traffic, all on the 55same controller. 56.Pp 57The following features are supported in the 58.Nm 59driver under 60.Fx : 61.Pp 62.Bl -item -offset indent -compact 63.It 64IP/TCP/UDP checksum offload 65.It 66Jumbo frames (up to 9022 bytes) 67.It 68VLAN tag stripping 69.It 70Interrupt coalescing 71.It 7210/100/1000Mbps operation in full-duplex mode 73.It 7410/100Mbps operation in half-duplex mode 75.El 76.Pp 77The 78.Nm 79driver supports the following media types: 80.Bl -tag -width ".Cm 10baseT/UTP" 81.It Cm autoselect 82Enable autoselection of the media type and options. 83The user can manually override 84the autoselected mode by adding media options to 85.Xr rc.conf 5 . 86.It Cm 10baseT/UTP 87Set 10Mbps operation. 88The 89.Xr ifconfig 8 90.Cm mediaopt 91option can also be used to select either 92.Cm full-duplex 93or 94.Cm half-duplex 95modes. 96.It Cm 100baseTX 97Set 100Mbps (Fast Ethernet) operation. 98The 99.Xr ifconfig 8 100.Cm mediaopt 101option can also be used to select either 102.Cm full-duplex 103or 104.Cm half-duplex 105modes. 106.It Cm 1000baseSX 107Sets 1000Mbps operation. 108Only 109.Cm full-duplex 110mode is supported at this speed. 111.It Cm 1000baseT 112Set 1000baseT operation over twisted pair. 113Only 114.Cm full-duplex 115mode is supported. 116.It Cm 2500BaseSX 117Set 2500Mbps operation. 118Only 119.Cm full-duplex 120mode is supported. 121.El 122.Pp 123The 124.Nm 125driver supports the following media options: 126.Bl -tag -width ".Cm full-duplex" 127.It Cm full-duplex 128Force full duplex operation. 129.It Cm half-duplex 130Force half duplex operation. 131.El 132.Pp 133For more information on configuring this device, see 134.Xr ifconfig 8 . 135.Sh HARDWARE 136The 137.Nm 138driver provides support for various NICs based on the QLogic NetXtreme II 139family of Gigabit Ethernet controllers, including the 140following: 141.Pp 142.Bl -bullet -compact 143.It 144QLogic NetXtreme II BCM5706 1000Base-SX 145.It 146QLogic NetXtreme II BCM5706 1000Base-T 147.It 148QLogic NetXtreme II BCM5708 1000Base-SX 149.It 150QLogic NetXtreme II BCM5708 1000Base-T 151.It 152QLogic NetXtreme II BCM5709 1000Base-SX 153.It 154QLogic NetXtreme II BCM5709 1000Base-T 155.It 156QLogic NetXtreme II BCM5716 1000Base-T 157.It 158Dell PowerEdge 1950 integrated BCM5708 NIC 159.It 160Dell PowerEdge 2950 integrated BCM5708 NIC 161.It 162Dell PowerEdge R710 integrated BCM5709 NIC 163.It 164HP NC370F Multifunction Gigabit Server Adapter 165.It 166HP NC370T Multifunction Gigabit Server Adapter 167.It 168HP NC370i Multifunction Gigabit Server Adapter 169.It 170HP NC371i Multifunction Gigabit Server Adapter 171.It 172HP NC373F PCIe Multifunc Giga Server Adapter 173.It 174HP NC373T PCIe Multifunction Gig Server Adapter 175.It 176HP NC373i Multifunction Gigabit Server Adapter 177.It 178HP NC373m Multifunction Gigabit Server Adapter 179.It 180HP NC374m PCIe Multifunction Adapter 181.It 182HP NC380T PCIe DP Multifunc Gig Server Adapter 183.It 184HP NC382T PCIe DP Multifunction Gigabit Server Adapter 185.It 186HP NC382i DP Multifunction Gigabit Server Adapter 187.It 188HP NC382m DP 1GbE Multifunction BL-c Adapter 189.El 190.Sh SYSCTL VARIABLES 191The following variables are available as both 192.Xr sysctl 8 193variables and 194.Xr loader 8 195tunables: 196.Bl -tag -width indent 197.It Va hw.bce.verbose 198Enable/Disable verbose logging and output to the console. 199Useful for debugging (default 0). 200.It Va hw.bce.msi_enable 201Enable/Disable MSI support (default 1). 202.It Va hw.bce.tso_enable 203Enable/Disable TSO support (default 1). 204.It Va hw.bce.strict_rx_mtu 205Enable/Disable strict RX frame size checking (default 0). 206.It Va hw.bce.hdr_split 207Enable/Disable frame header/payload splitting (default 1). 208.It Va hw.bce.rx_pages 209Set the number of memory pages assigned to receive packets by the driver. 210Due to alignment issues, this value can only be of the set 2111, 2, 4 or 8 (default 2). 212.It Va hw.bce.tx_pages 213Set the number of memory pages assigned to transmit packets 214by the driver. 215Due to alignment issues, this value can only be of the set 2161, 2, 4 or 8 (default 2). 217.It Va hw.bce.rx_ticks 218Time in microsecond ticks to wait before generating a status 219block updates due to RX processing activity. 220Values from 0-100 are valid. 221A value of 0 disables this status block update. 222Cannot be set to 0 if hw.bce.rx_quick_cons_trip is also 0 223(default 18). 224.It Va hw.bce.rx_ticks_int 225Time in microsecond ticks to wait during RX interrupt 226processing before generating a status block update. 227Values from 0-100 are valid. 228Valid values are in the range from 0-100. 229A value of 0 disables this status block update (default 18). 230.It Va hw.bce.rx_quick_cons_trip 231Number of RX Quick BD Chain entries that must be completed 232before a status block is generated. 233Values from 0-256 are valid. 234A value of 0 disables this status block update. 235Cannot be set to 0 if hw.bce.rx_ticks is also 0 (default 6). 236.It Va hw.bce.rx_quick_cons_trip_int 237Number of RX quick BD entries that must be completed before 238a status block is generated duing interrupt processing. 239Values from 0-256 are valid. 240A value of 0 disables this status block update (default 6). 241.It Va hw.bce.tx_ticks 242Time in microsecond ticks to wait before a status block 243update is generated due to TX activitiy. 244Values from 0-100 are valid. 245A value of 0 disables this status block update. 246Cannot be set to 0 if hw.bce.tx_quick_cons_trip is also 0 247(default 80). 248.It Va hw.bce.tx_ticks_int 249Time in microsecond ticks to wait in interrupt processing 250before a status block update is generated due to TX activity 251Values from 0-100 are valid. 252A value of 0 disables this status block update (default 80). 253.It Va hw.bce.tx_cons_trip 254How many TX Quick BD Chain entries that must be completed 255before a status block is generated. 256Values from 0-100 are valid. 257A value of 0 disables this status block update. 258Cannot be set to 0 if hw.bce.tx_ticks is also 0 (default 20). 259.It Va hw.bce.tx_cons_trip_int 260How many TX Quick BD Chain entries that must be completed 261before a status block is generated during an interrupt. 262Values from 0-100 are valid. 263A value of 0 disables this status block update (default 20). 264.El 265.Sh DIAGNOSTICS 266.Bl -diag 267.It "bce%d: PCI memory allocation failed!" 268The driver has encountered a fatal initialization error. 269.It "bce%d: PCI map interrupt failed!" 270The driver has encountered a fatal initialization error. 271.It "bce%d: Unsupported controller revision (%c%d)" 272The driver does not support the controller revision in use. 273.It "bce%d: Controller initialization failed!" 274The driver has encountered a fatal initialization error. 275.It "bce%d: NVRAM test failed!" 276The driver could not access the controller NVRAM correctly. 277.It "bce%d: DMA resource allocation failed!" 278The driver could not allocate DMA memory to setup the controllers 279host memory data structures. 280.It "bce%d: Interface allocation failed!" 281The driver could not create a network interface for the controller. 282.It "bce%d: PHY probe failed!" 283The driver could not access the PHY used by the controller. 284.It "bce%d: Failed to setup IRQ!" 285The driver could not initialize the IRQ handler. 286.It "bce%d: Error: PHY read timeout!" 287The driver could not read a PHY register before the timeout period expired. 288.It "bce%d: PHY write timeout!" 289The driver could not write to the PHY register because a timeout occurred. 290.It "bce%d: Timeout error reading NVRAM at offset 0x%08X!" 291The driver could not write to NVRAM because a timeout occurred. 292.It "bce%d: Unknown Flash NVRAM found!" 293The driver does not recognize the NVRAM device being used and therefore 294cannot access it correctly. 295.It "bce%d: Invalid NVRAM magic value!" 296The driver cannot read NVRAM or the NVRAM is corrupt. 297.It "bce%d: Invalid Manufacturing Information NVRAM CRC!" 298The driver cannot read NVRAM or the NVRAM is corrupt. 299.It "bce%d: Invalid Feature Configuration Information NVRAM CRC!" 300The driver cannot read NVRAM or the NVRAM is corrupt. 301.It "bce%d: DMA mapping error!" 302The driver was unable to map memory into DMA addressable space required 303by the controller. 304.It "bce%d: Could not allocate parent DMA tag!" 305The driver could not allocate a PCI compatible DMA tag. 306.It "bce%d: Could not allocate status block DMA tag!" 307The driver could not allocate a DMA tag for the controller's 308status block. 309.It "bce%d: Could not allocate status block DMA memory!" 310The driver could not allocate DMA addressable memory for the controller's 311status block. 312.It "bce%d: Could not map status block DMA memory!" 313The driver could not map the status block memory into the controller's DMA 314address space. 315.It "bce%d: Could not allocate statistics block DMA tag!" 316The driver could not allocate a DMA tag for the controller's 317statistics block. 318.It "bce%d: Could not allocate statistics block DMA memory!" 319The driver could not allocate DMA addressable memory for the controller's 320statistics block. 321.It "bce%d: Could not map statistics block DMA memory!" 322The driver could not map the statistics block memory into the controller's DMA 323address space. 324.It "bce%d: Could not allocate TX descriptor chain DMA tag!" 325The driver could not allocate a DMA tag for the controller's 326TX chain. 327.It "bce%d: Could not allocate TX descriptor chain DMA memory!" 328The driver could not allocate DMA addressable memory for the controller's 329TX chain. 330.It "bce%d: Could not map TX descriptor chain DMA memory!" 331The driver could not map the TX descriptor chain memory into the controller's DMA 332address space. 333.It "bce%d: Could not allocate TX mbuf DMA tag!" 334The driver could not allocate a DMA tag for the controller's 335TX mbuf memory. 336.It "bce%d: Unable to create TX mbuf DMA map!" 337The driver could not map the TX mbuf memory into the controller's DMA 338address space. 339.It "bce%d: Could not allocate RX descriptor chain DMA tag!" 340The driver could not allocate a DMA tag for the controller's 341RX chain. 342.It "bce%d: Could not allocate RX descriptor chain " 343The driver could not allocate DMA addressable memory for the controller's 344RX chain. 345.It "bce%d: Could not map RX descriptor chain DMA memory!" 346The driver could not map the RX descriptor chain memory into the controller's DMA 347address space. 348.It "bce%d: Could not allocate RX mbuf DMA tag!" 349The driver could not allocate a DMA tag for the controller's 350RX mbuf memory. 351.It "bce%d: Unable to create RX mbuf DMA map!" 352The driver could not map the RX mbuf memory into the controller's DMA 353address space. 354.It "bce%d: Firmware synchronization timeout!" 355The driver was not able to synchronize with the firmware running on the 356controller. 357The firmware may be stopped or hung. 358.It "bce%d: Invalid Ethernet address!" 359The driver was not able to read a valid Ethernet MAC address from NVRAM. 360.It "bce%d: Reset failed!" 361The driver has encountered a fatal initialization error. 362.It "bce%d: Byte swap is incorrect!" 363The driver has encountered a fatal initialization error. 364Contact the author 365with details of the CPU architecture and system chipset in use. 366.It "bce%d: Firmware did not complete initialization!" 367The driver has encountered a fatal initialization error. 368.It "bce%d: Bootcode not running!" 369The driver has encountered a fatal initialization error. 370.It "bce%d: Error mapping mbuf into RX chain!" 371The driver could not map a RX mbuf into DMA addressable memory. 372.It "bce%d: Error filling RX chain: rx_bd[0x%04X]!" 373The driver was unable to allocate enough mbufs to fill the RX chain 374during initialization. 375Try increasing the number of mbufs available in 376the system, increase system memory, or if using jumbo frames, make sure 377enough 9KB mbufs are available. 378.It "bce%d: Failed to allocate new mbuf, incoming frame dropped!" 379The driver was unable to allocate a new mbuf for the RX chain and reused 380the mbuf for the received frame, dropping the incoming frame in the process. 381Try increasing the number of mbufs available in the system or increase system 382memory. 383.It "bce%d: Controller reset failed!" 384A fatal initialization error has occurred. 385.It "bce%d: Controller initialization failed!" 386A fatal initialization error has occurred. 387.It "bce%d: Block initialization failed!" 388A fatal initialization error has occurred. 389.It "bce%d: Error mapping mbuf into TX chain!" 390The driver could not map a TX mbuf into DMA addressable memory. 391.It "bce%d: Error registering poll function!" 392The driver received an error while attempting to register the poll function. 393.It "bce%d: Changing VLAN_MTU not supported." 394Changing the VLAN MTU is not currently supported by the driver. 395.It "bce%d: Cannot change VLAN_HWTAGGING while management firmware (ASF/IPMI/UMP) is running!" 396Management firmware to support ASF/IPMI/UMP requires that VLAN 397tag stripping be enabled in the controller. 398.It "bce%d: Changing VLAN_HWTAGGING not supported!" 399Disabling VLAN tag stripping is not currently supported by the driver. 400.It "bce%d: Watchdog timeout occurred, resetting!" 401The device has stopped responding to the network, there is a problem 402with the cable connection, or a driver logic problem has occurred.. 403.It "bce%d: Fatal attention detected: 0x%08X!" 404A controller hardware failure has occurred. 405If the problem continues replace the controller. 406.El 407.Sh SUPPORT 408For support questions please contact your QLogic approved reseller or 409QLogic Technical Support at 410.Pa http://support.qlogic.com , 411or by E-mail at 412.Aq Mt support@qlogic.com . 413.Sh SEE ALSO 414.Xr altq 4 , 415.Xr arp 4 , 416.Xr miibus 4 , 417.Xr netintro 4 , 418.Xr ng_ether 4 , 419.Xr vlan 4 , 420.Xr ifconfig 8 421.Sh HISTORY 422The 423.Nm 424device driver first appeared in 425.Fx 6.1 . 426.Sh AUTHORS 427The 428.Nm 429driver was written by 430.An David Christensen Aq Mt davidch@broadcom.com . 431