1.\" Copyright (c) 2011-2016 Solarflare Communications Inc. 2.\" All rights reserved. 3.\" 4.\" Redistribution and use in source and binary forms, with or without 5.\" modification, are permitted provided that the following conditions are met: 6.\" 7.\" 1. Redistributions of source code must retain the above copyright notice, 8.\" this list of conditions and the following disclaimer. 9.\" 2. Redistributions in binary form must reproduce the above copyright notice, 10.\" this list of conditions and the following disclaimer in the documentation 11.\" 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, 15.\" THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 16.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 17.\" CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 18.\" EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 19.\" PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 20.\" OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 21.\" WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 22.\" OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 23.\" EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24.\" 25.\" The views and conclusions contained in the software and documentation are 26.\" those of the authors and should not be interpreted as representing official 27.\" policies, either expressed or implied, of the FreeBSD Project. 28.\" 29.\" $FreeBSD$ 30.\" 31.Dd February 22, 2015 32.Dt SFXGE 4 33.Os 34.Sh NAME 35.Nm sfxge 36.Nd "Solarflare 10Gb Ethernet adapter driver" 37.Sh SYNOPSIS 38To compile this driver into the kernel, 39place the following lines in your 40kernel configuration file: 41.Bd -ragged -offset indent 42.Cd "device sfxge" 43.Ed 44.Pp 45To load the driver as a 46module at boot time, place the following line in 47.Xr loader.conf 5 : 48.Bd -literal -offset indent 49sfxge_load="YES" 50.Ed 51.Sh DESCRIPTION 52The 53.Nm 54driver provides support for 10Gb Ethernet adapters based on 55Solarflare SFC9000 and XtremeScale X2 family controllers. 56The driver supports jumbo 57frames, transmit/receive checksum offload, TCP Segmentation Offload 58(TSO), Large Receive Offload (LRO), VLAN checksum offload, VLAN TSO, 59and Receive Side Scaling (RSS) using MSI-X interrupts. 60.Pp 61The driver allocates 1 receive queue, transmit queue, event queue and 62IRQ per CPU up to a maximum of 64. 63IRQ affinities should be spread out using 64.Xr cpuset 1 . 65Interrupt moderation may be controlled through the sysctl 66.Va dev.sfxge.%d.int_mod 67(units are microseconds). 68.Pp 69For more information on configuring this device, see 70.Xr ifconfig 8 . 71.Pp 72A large number of MAC, PHY and data path statistics are available 73under the sysctl 74.Va dev.sfxge.%d.stats . 75The adapter's VPD 76fields including its serial number are available under the sysctl 77.Va dev.sfxge.%d.vpd . 78.Sh HARDWARE 79The 80.Nm 81driver supports all 10Gb Ethernet adapters based on Solarflare SFC9000 82family controllers. 83.Sh LOADER TUNABLES 84Tunables can be set at the 85.Xr loader 8 86prompt before booting the kernel or stored in 87.Xr loader.conf 5 . 88Actual values can be obtained using 89.Xr sysctl 8 . 90.Bl -tag -width indent 91.It Va hw.sfxge.rx_ring 92The maximum number of descriptors in a receive queue ring. 93Supported values are: 512, 1024, 2048 and 4096. 94.It Va hw.sfxge.tx_ring 95The maximum number of descriptors in a transmit queue ring. 96Supported values are: 512, 1024, 2048 and 4096. 97.It Va hw.sfxge.tx_dpl_get_max 98The maximum length of the deferred packet 99.Dq get-list 100for queued transmit packets (TCP and non-TCP), used only if the transmit 101queue lock can be acquired. 102If a packet is dropped, the 103.Va tx_get_overflow 104counter is incremented and the local sender receives ENOBUFS. 105The value must be greater than 0. 106.It Va hw.sfxge.tx_dpl_get_non_tcp_max 107The maximum number of non-TCP packets in the deferred packet 108.Dq get-list 109, used only if the transmit queue lock can be acquired. 110If a packet is dropped, the 111.Va tx_get_non_tcp_overflow 112counter is incremented and the local sender receives ENOBUFS. 113The value must be greater than 0. 114.It Va hw.sfxge.tx_dpl_put_max 115The maximum length of the deferred packet 116.Dq put-list 117for queued transmit 118packets, used if the transmit queue lock cannot be acquired. 119If a packet is dropped, the 120.Va tx_put_overflow 121counter is incremented and the local sender receives ENOBUFS. 122The value must be greater than or equal to 0. 123.It Va hw.sfxge.tso_fw_assisted 124Bitmask to enable/disable usage of FW-assisted TSO version if supported 125by NIC firmware. 126FATSOv1 (bit 0) and FATSOv2 (bit 1) are supported. 127All enabled by default. 128.It Va hw.sfxge.N.max_rss_channels 129The maximum number of allocated RSS channels for the Nth adapter. 130If set to 0 or unset, the number of channels is determined by the number 131of CPU cores. 132.It Va hw.sfxge.lro.table_size 133Size of the LRO hash table. 134Must be a power of 2. 135A larger table means we can accelerate a larger number of streams. 136.It Va hw.sfxge.lro.chain_max 137The maximum length of a hash chain. 138If chains get too long then the lookup time increases and may exceed 139the benefit of LRO. 140.It Va hw.sfxge.lro.idle_ticks 141The maximum time (in ticks) that a connection can be idle before it's LRO 142state is discarded. 143.It Va hw.sfxge.lro.slow_start_packets 144Number of packets with payload that must arrive in-order before a connection 145is eligible for LRO. 146The idea is we should avoid coalescing segments when the sender is in 147slow-start because reducing the ACK rate can damage performance. 148.It Va hw.sfxge.lro.loss_packets 149Number of packets with payload that must arrive in-order following loss 150before a connection is eligible for LRO. 151The idea is we should avoid coalescing segments when the sender is recovering 152from loss, because reducing the ACK rate can damage performance. 153.It Va hw.sfxge.mcdi_logging 154Enable logging of MCDI protocol messages (only available if enabled at compile-time). 155.It Va hw.sfxge.N.mcdi_logging 156Enable or disable logging of MCDI protocol messages on a per-port basis. 157The default for each port will be the value of 158.Va hw.sfxge.mcdi_logging. 159The logging may also be enabled or disabled after the driver is loaded using the sysctl 160.Va dev.sfxge.%d.mcdi_logging. 161.It Va hw.sfxge.stats_update_period_ms 162Period in milliseconds to refresh interface statistics from hardware. 163The accepted range is 0 to 65535, the default is 1000 (1 second). 164Use zero value to disable periodic statistics update. 165Supported on SFN8xxx series adapters with firmware v6.2.1.1033 and later and 166SFN5xxx, SFN6xxx and XtremeScale X2xxx series adapters. 167SFN7xxx series adapters and sfN8xxx series with earlier firmware use a 168fixed 1000 milliseconds statistics update period. 169The period may also be changed after the driver is loaded using the sysctl 170.Va dev.sfxge.%d.stats_update_period_ms . 171.El 172.Sh SUPPORT 173For general information and support, 174go to the Solarflare support website at: 175.Pa https://support.solarflare.com . 176.Sh SEE ALSO 177.Xr cpuset 1 , 178.Xr arp 4 , 179.Xr netintro 4 , 180.Xr ng_ether 4 , 181.Xr vlan 4 , 182.Xr ifconfig 8 183.Sh AUTHORS 184The 185.Nm 186driver was written by 187.An Philip Paeps 188and 189.An Solarflare Communications, Inc. 190