xref: /freebsd/share/man/man4/sfxge.4 (revision c36e54bb328697af1e6113812caecbd3bac89fe0)
1.\" Copyright (c) 2011-2015 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 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
124Enable/disable usage of FW-assisted TSO if supported by NIC firmware.
125Enabled by default.
126.It Va hw.sfxge.N.max_rss_channels
127The maximum number of allocated RSS channels for the Nth adapter.
128If set to 0 or unset, the number of channels is determined by the number
129of CPU cores.
130.It Va hw.sfxge.lro.table_size
131Size of the LRO hash table.
132Must be a power of 2.
133A larger table means we can accelerate a larger number of streams.
134.It Va hw.sfxge.lro.chain_max
135The maximum length of a hash chain.
136If chains get too long then the lookup time increases and may exceed
137the benefit of LRO.
138.It Va hw.sfxge.lro.idle_ticks
139The maximum time (in ticks) that a connection can be idle before it's LRO
140state is discarded.
141.It Va hw.sfxge.lro.slow_start_packets
142Number of packets with payload that must arrive in-order before a connection
143is eligible for LRO.
144The idea is we should avoid coalescing segments when the sender is in
145slow-start because reducing the ACK rate can damage performance.
146.It Va hw.sfxge.lro.loss_packets
147Number of packets with payload that must arrive in-order following loss
148before a connection is eligible for LRO.
149The idea is we should avoid coalescing segments when the sender is recovering
150from loss, because reducing the ACK rate can damage performance.
151.El
152.Sh SUPPORT
153For general information and support,
154go to the Solarflare support website at:
155.Pa https://support.solarflare.com .
156.Sh SEE ALSO
157.Xr cpuset 1 ,
158.Xr arp 4 ,
159.Xr netintro 4 ,
160.Xr ng_ether 4 ,
161.Xr vlan 4 ,
162.Xr ifconfig 8
163.Sh AUTHORS
164The
165.Nm
166driver was written by
167.An Philip Paeps
168and
169.An Solarflare Communications, Inc.
170