xref: /freebsd/share/man/man4/sfxge.4 (revision 929c7feb83b66d65bde31f02eca36b9bdd65eb9c)
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