1*929c7febSAndrew Rybchenko.\" Copyright (c) 2011-2016 Solarflare Communications Inc. 2e948693eSPhilip Paeps.\" All rights reserved. 3e948693eSPhilip Paeps.\" 4e948693eSPhilip Paeps.\" Redistribution and use in source and binary forms, with or without 53c838a9fSAndrew Rybchenko.\" modification, are permitted provided that the following conditions are met: 6e948693eSPhilip Paeps.\" 73c838a9fSAndrew Rybchenko.\" 1. Redistributions of source code must retain the above copyright notice, 83c838a9fSAndrew Rybchenko.\" this list of conditions and the following disclaimer. 93c838a9fSAndrew Rybchenko.\" 2. Redistributions in binary form must reproduce the above copyright notice, 103c838a9fSAndrew Rybchenko.\" this list of conditions and the following disclaimer in the documentation 113c838a9fSAndrew Rybchenko.\" and/or other materials provided with the distribution. 123c838a9fSAndrew Rybchenko.\" 133c838a9fSAndrew Rybchenko.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 143c838a9fSAndrew Rybchenko.\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 153c838a9fSAndrew Rybchenko.\" THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 163c838a9fSAndrew Rybchenko.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 173c838a9fSAndrew Rybchenko.\" CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 183c838a9fSAndrew Rybchenko.\" EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 193c838a9fSAndrew Rybchenko.\" PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 203c838a9fSAndrew Rybchenko.\" OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 213c838a9fSAndrew Rybchenko.\" WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 223c838a9fSAndrew Rybchenko.\" OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 233c838a9fSAndrew Rybchenko.\" EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 243c838a9fSAndrew Rybchenko.\" 253c838a9fSAndrew Rybchenko.\" The views and conclusions contained in the software and documentation are 263c838a9fSAndrew Rybchenko.\" those of the authors and should not be interpreted as representing official 273c838a9fSAndrew Rybchenko.\" policies, either expressed or implied, of the FreeBSD Project. 28e948693eSPhilip Paeps.\" 29e948693eSPhilip Paeps.\" $FreeBSD$ 30e948693eSPhilip Paeps.\" 3100007ed4SAndrew Rybchenko.Dd February 22, 2015 32e948693eSPhilip Paeps.Dt SFXGE 4 33e948693eSPhilip Paeps.Os 34e948693eSPhilip Paeps.Sh NAME 35e948693eSPhilip Paeps.Nm sfxge 36e948693eSPhilip Paeps.Nd "Solarflare 10Gb Ethernet adapter driver" 37e948693eSPhilip Paeps.Sh SYNOPSIS 38e948693eSPhilip PaepsTo compile this driver into the kernel, 39e948693eSPhilip Paepsplace the following lines in your 40e948693eSPhilip Paepskernel configuration file: 41e948693eSPhilip Paeps.Bd -ragged -offset indent 42e948693eSPhilip Paeps.Cd "device sfxge" 43e948693eSPhilip Paeps.Ed 44e948693eSPhilip Paeps.Pp 45e948693eSPhilip PaepsTo load the driver as a 46e948693eSPhilip Paepsmodule at boot time, place the following line in 47e948693eSPhilip Paeps.Xr loader.conf 5 : 48e948693eSPhilip Paeps.Bd -literal -offset indent 49e948693eSPhilip Paepssfxge_load="YES" 50e948693eSPhilip Paeps.Ed 51e948693eSPhilip Paeps.Sh DESCRIPTION 52e948693eSPhilip PaepsThe 53e948693eSPhilip Paeps.Nm 54e948693eSPhilip Paepsdriver provides support for 10Gb Ethernet adapters based on 55d21f98cbSChristian BruefferSolarflare SFC9000 family controllers. 56d21f98cbSChristian BruefferThe driver supports jumbo 57e948693eSPhilip Paepsframes, transmit/receive checksum offload, TCP Segmentation Offload 58e948693eSPhilip Paeps(TSO), Large Receive Offload (LRO), VLAN checksum offload, VLAN TSO, 59e948693eSPhilip Paepsand Receive Side Scaling (RSS) using MSI-X interrupts. 60e948693eSPhilip Paeps.Pp 61e948693eSPhilip PaepsThe driver allocates 1 receive queue, transmit queue, event queue and 62d21f98cbSChristian BruefferIRQ per CPU up to a maximum of 64. 63d21f98cbSChristian BruefferIRQ affinities should be spread out using 64814b16baSGlen Barber.Xr cpuset 1 . 65e948693eSPhilip PaepsInterrupt moderation may be controlled through the sysctl 66d21f98cbSChristian Brueffer.Va dev.sfxge.%d.int_mod 67d21f98cbSChristian Brueffer(units are microseconds). 68e948693eSPhilip Paeps.Pp 69e948693eSPhilip PaepsFor more information on configuring this device, see 70e948693eSPhilip Paeps.Xr ifconfig 8 . 71e948693eSPhilip Paeps.Pp 72e948693eSPhilip PaepsA large number of MAC, PHY and data path statistics are available 73d21f98cbSChristian Bruefferunder the sysctl 74d21f98cbSChristian Brueffer.Va dev.sfxge.%d.stats . 75d21f98cbSChristian BruefferThe adapter's VPD 76e948693eSPhilip Paepsfields including its serial number are available under the sysctl 77d21f98cbSChristian Brueffer.Va dev.sfxge.%d.vpd . 78e948693eSPhilip Paeps.Sh HARDWARE 79e948693eSPhilip PaepsThe 80e948693eSPhilip Paeps.Nm 81e948693eSPhilip Paepsdriver supports all 10Gb Ethernet adapters based on Solarflare SFC9000 82e948693eSPhilip Paepsfamily controllers. 83316ee70dSGeorge V. Neville-Neil.Sh LOADER TUNABLES 84316ee70dSGeorge V. Neville-NeilTunables can be set at the 85316ee70dSGeorge V. Neville-Neil.Xr loader 8 86316ee70dSGeorge V. Neville-Neilprompt before booting the kernel or stored in 87316ee70dSGeorge V. Neville-Neil.Xr loader.conf 5 . 88316ee70dSGeorge V. Neville-NeilActual values can be obtained using 89316ee70dSGeorge V. Neville-Neil.Xr sysctl 8 . 90316ee70dSGeorge V. Neville-Neil.Bl -tag -width indent 91316ee70dSGeorge V. Neville-Neil.It Va hw.sfxge.rx_ring 9298286ba5SBenjamin KadukThe maximum number of descriptors in a receive queue ring. 93316ee70dSGeorge V. Neville-NeilSupported values are: 512, 1024, 2048 and 4096. 94316ee70dSGeorge V. Neville-Neil.It Va hw.sfxge.tx_ring 9598286ba5SBenjamin KadukThe maximum number of descriptors in a transmit queue ring. 96316ee70dSGeorge V. Neville-NeilSupported values are: 512, 1024, 2048 and 4096. 97316ee70dSGeorge V. Neville-Neil.It Va hw.sfxge.tx_dpl_get_max 9898286ba5SBenjamin KadukThe maximum length of the deferred packet 9998286ba5SBenjamin Kaduk.Dq get-list 10093929f25SAndrew Rybchenkofor queued transmit packets (TCP and non-TCP), used only if the transmit 10193929f25SAndrew Rybchenkoqueue lock can be acquired. 10298286ba5SBenjamin KadukIf a packet is dropped, the 10393929f25SAndrew Rybchenko.Va tx_get_overflow 10493929f25SAndrew Rybchenkocounter is incremented and the local sender receives ENOBUFS. 10593929f25SAndrew RybchenkoThe value must be greater than 0. 10693929f25SAndrew Rybchenko.It Va hw.sfxge.tx_dpl_get_non_tcp_max 10793929f25SAndrew RybchenkoThe maximum number of non-TCP packets in the deferred packet 10893929f25SAndrew Rybchenko.Dq get-list 10993929f25SAndrew Rybchenko, used only if the transmit queue lock can be acquired. 11000007ed4SAndrew RybchenkoIf a packet is dropped, the 11193929f25SAndrew Rybchenko.Va tx_get_non_tcp_overflow 11298286ba5SBenjamin Kadukcounter is incremented and the local sender receives ENOBUFS. 11398286ba5SBenjamin KadukThe value must be greater than 0. 114316ee70dSGeorge V. Neville-Neil.It Va hw.sfxge.tx_dpl_put_max 11598286ba5SBenjamin KadukThe maximum length of the deferred packet 11698286ba5SBenjamin Kaduk.Dq put-list 11798286ba5SBenjamin Kadukfor queued transmit 118316ee70dSGeorge V. Neville-Neilpackets, used if the transmit queue lock cannot be acquired. 11998286ba5SBenjamin KadukIf a packet is dropped, the 12093929f25SAndrew Rybchenko.Va tx_put_overflow 12198286ba5SBenjamin Kadukcounter is incremented and the local sender receives ENOBUFS. 12298286ba5SBenjamin KadukThe value must be greater than or equal to 0. 1233c838a9fSAndrew Rybchenko.It Va hw.sfxge.tso_fw_assisted 124a45a0da1SAndrew RybchenkoBitmask to enable/disable usage of FW-assisted TSO version if supported 125a45a0da1SAndrew Rybchenkoby NIC firmware. 126a45a0da1SAndrew RybchenkoFATSOv1 (bit 0) and FATSOv2 (bit 1) are supported. 127a45a0da1SAndrew RybchenkoAll enabled by default. 128d9e49c83SAndrew Rybchenko.It Va hw.sfxge.N.max_rss_channels 129d9e49c83SAndrew RybchenkoThe maximum number of allocated RSS channels for the Nth adapter. 130d9e49c83SAndrew RybchenkoIf set to 0 or unset, the number of channels is determined by the number 131d9e49c83SAndrew Rybchenkoof CPU cores. 132245d1576SAndrew Rybchenko.It Va hw.sfxge.lro.table_size 133245d1576SAndrew RybchenkoSize of the LRO hash table. 134245d1576SAndrew RybchenkoMust be a power of 2. 135245d1576SAndrew RybchenkoA larger table means we can accelerate a larger number of streams. 136245d1576SAndrew Rybchenko.It Va hw.sfxge.lro.chain_max 137245d1576SAndrew RybchenkoThe maximum length of a hash chain. 138245d1576SAndrew RybchenkoIf chains get too long then the lookup time increases and may exceed 139245d1576SAndrew Rybchenkothe benefit of LRO. 140245d1576SAndrew Rybchenko.It Va hw.sfxge.lro.idle_ticks 141245d1576SAndrew RybchenkoThe maximum time (in ticks) that a connection can be idle before it's LRO 142245d1576SAndrew Rybchenkostate is discarded. 143245d1576SAndrew Rybchenko.It Va hw.sfxge.lro.slow_start_packets 144245d1576SAndrew RybchenkoNumber of packets with payload that must arrive in-order before a connection 145245d1576SAndrew Rybchenkois eligible for LRO. 146245d1576SAndrew RybchenkoThe idea is we should avoid coalescing segments when the sender is in 147245d1576SAndrew Rybchenkoslow-start because reducing the ACK rate can damage performance. 148245d1576SAndrew Rybchenko.It Va hw.sfxge.lro.loss_packets 149245d1576SAndrew RybchenkoNumber of packets with payload that must arrive in-order following loss 150245d1576SAndrew Rybchenkobefore a connection is eligible for LRO. 151245d1576SAndrew RybchenkoThe idea is we should avoid coalescing segments when the sender is recovering 152245d1576SAndrew Rybchenkofrom loss, because reducing the ACK rate can damage performance. 1539c2c444bSAndrew Rybchenko.It Va hw.sfxge.mcdi_logging 1549c2c444bSAndrew RybchenkoEnable logging of MCDI protocol messages (only available if enabled at compile-time). 1559c2c444bSAndrew Rybchenko.It Va hw.sfxge.N.mcdi_logging 1569c2c444bSAndrew RybchenkoEnable or disable logging of MCDI protocol messages on a per-port basis. The default for each 1579c2c444bSAndrew Rybchenkoport will be the value of 1589c2c444bSAndrew Rybchenko.Va hw.sfxge.mcdi_logging. 1599c2c444bSAndrew RybchenkoThe logging may also be enabled or disabled after the driver is loaded using the sysctl 1609c2c444bSAndrew Rybchenko.Va dev.sfxge.%d.mcdi_logging. 16198286ba5SBenjamin Kaduk.El 162e948693eSPhilip Paeps.Sh SUPPORT 163e948693eSPhilip PaepsFor general information and support, 164e948693eSPhilip Paepsgo to the Solarflare support website at: 165e948693eSPhilip Paeps.Pa https://support.solarflare.com . 166e948693eSPhilip Paeps.Sh SEE ALSO 1670b3504fdSChristian Brueffer.Xr cpuset 1 , 168e948693eSPhilip Paeps.Xr arp 4 , 169e948693eSPhilip Paeps.Xr netintro 4 , 170e948693eSPhilip Paeps.Xr ng_ether 4 , 171e948693eSPhilip Paeps.Xr vlan 4 , 172e948693eSPhilip Paeps.Xr ifconfig 8 173e948693eSPhilip Paeps.Sh AUTHORS 174e948693eSPhilip PaepsThe 175e948693eSPhilip Paeps.Nm 176e948693eSPhilip Paepsdriver was written by 177e948693eSPhilip Paeps.An Philip Paeps 178e948693eSPhilip Paepsand 179e948693eSPhilip Paeps.An Solarflare Communications, Inc. 180