1*9343a1cdSEric Joyner.\" Copyright (c) 2013-2018, Intel Corporation 20902f572SJack F Vogel.\" All rights reserved. 30902f572SJack F Vogel.\" 40902f572SJack F Vogel.\" Redistribution and use in source and binary forms, with or without 50902f572SJack F Vogel.\" modification, are permitted provided that the following conditions are met: 60902f572SJack F Vogel.\" 70902f572SJack F Vogel.\" 1. Redistributions of source code must retain the above copyright notice, 80902f572SJack F Vogel.\" this list of conditions and the following disclaimer. 90902f572SJack F Vogel.\" 100902f572SJack F Vogel.\" 2. Redistributions in binary form must reproduce the above copyright 110902f572SJack F Vogel.\" notice, this list of conditions and the following disclaimer in the 120902f572SJack F Vogel.\" documentation and/or other materials provided with the distribution. 130902f572SJack F Vogel.\" 140902f572SJack F Vogel.\" 3. Neither the name of the Intel Corporation nor the names of its 150902f572SJack F Vogel.\" contributors may be used to endorse or promote products derived from 160902f572SJack F Vogel.\" this software without specific prior written permission. 170902f572SJack F Vogel.\" 180902f572SJack F Vogel.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 190902f572SJack F Vogel.\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 200902f572SJack F Vogel.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 210902f572SJack F Vogel.\" ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 220902f572SJack F Vogel.\" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 230902f572SJack F Vogel.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 240902f572SJack F Vogel.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 250902f572SJack F Vogel.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 260902f572SJack F Vogel.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 270902f572SJack F Vogel.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 280902f572SJack F Vogel.\" POSSIBILITY OF SUCH DAMAGE. 290902f572SJack F Vogel.\" 300902f572SJack F Vogel.\" * Other names and brands may be claimed as the property of others. 310902f572SJack F Vogel.\" 320902f572SJack F Vogel.\" $FreeBSD$ 330902f572SJack F Vogel.\" 34*9343a1cdSEric Joyner.Dd October 5, 2018 350902f572SJack F Vogel.Dt IXL 4 360902f572SJack F Vogel.Os 370902f572SJack F Vogel.Sh NAME 380902f572SJack F Vogel.Nm ixl 39*9343a1cdSEric Joyner.Nd "Intel Ethernet 700 Series Driver" 400902f572SJack F Vogel.Sh SYNOPSIS 41*9343a1cdSEric JoynerTo compile this driver into the kernel, place the following lines in your 420902f572SJack F Vogelkernel configuration file: 430902f572SJack F Vogel.Bd -ragged -offset indent 440902f572SJack F Vogel.Cd "device ixl" 450902f572SJack F Vogel.Ed 460902f572SJack F Vogel.Pp 47*9343a1cdSEric JoynerTo load the driver as a module at boot time, place the following lines in 480902f572SJack F Vogel.Xr loader.conf 5 : 490902f572SJack F Vogel.Bd -literal -offset indent 500902f572SJack F Vogelif_ixl_load="YES" 510902f572SJack F Vogel.Ed 520902f572SJack F Vogel.Sh DESCRIPTION 53*9343a1cdSEric Joyner.Ss Features 540902f572SJack F VogelThe 550902f572SJack F Vogel.Nm 56*9343a1cdSEric Joynerdriver provides support for any PCI Express adapter or LOM 57*9343a1cdSEric Joyner(LAN On Motherboard) 58*9343a1cdSEric Joynerin the Intel Ethernet 700 Series. 59*9343a1cdSEric JoynerAs of this writing, the series includes devices with these model numbers: 60*9343a1cdSEric Joyner.Pp 61*9343a1cdSEric Joyner.Bl -bullet -compact 62*9343a1cdSEric Joyner.It 63*9343a1cdSEric JoynerXL710 (40G) 64*9343a1cdSEric Joyner.It 65*9343a1cdSEric JoynerX710 (10G) 66*9343a1cdSEric Joyner.It 67*9343a1cdSEric JoynerXXV710 (25G) 68*9343a1cdSEric Joyner.It 69*9343a1cdSEric JoynerX722 (10G) 70*9343a1cdSEric Joyner.El 71*9343a1cdSEric Joyner.Pp 720902f572SJack F VogelThe driver supports Jumbo Frames, TX/RX checksum offload, 730902f572SJack F VogelTCP segmentation offload (TSO), Large Receive Offload (LRO), VLAN 740902f572SJack F Vogeltag insertion/extraction, VLAN checksum offload, VLAN TSO, and 750902f572SJack F VogelReceive Side Steering (RSS), all for both IPv4 and IPv6. 760902f572SJack F VogelFor further hardware information and questions related to hardware 770902f572SJack F Vogelrequirements, see 780902f572SJack F Vogel.Pa http://support.intel.com/ . 790902f572SJack F Vogel.Pp 800902f572SJack F VogelSupport for Jumbo Frames is provided via the interface MTU setting. 810902f572SJack F VogelSelecting an MTU larger than 1500 bytes with the 820902f572SJack F Vogel.Xr ifconfig 8 830902f572SJack F Vogelutility configures the adapter to receive and transmit Jumbo Frames. 840902f572SJack F VogelThe maximum MTU size for Jumbo Frames is 9706. 850902f572SJack F Vogel.Pp 860902f572SJack F VogelOffloads are also controlled via the interface, for instance, 870902f572SJack F Vogelchecksumming for both IPv4 and IPv6 can be set and unset, TSO4 880902f572SJack F Vogeland/or TSO6, and finally LRO can be set and unset. 890902f572SJack F Vogel.Pp 900902f572SJack F VogelFor more information on configuring this device, see 910902f572SJack F Vogel.Xr ifconfig 8 . 92*9343a1cdSEric Joyner.Ss Additional Utilities 93*9343a1cdSEric JoynerThere are additional tools available from Intel to help configure and update 94*9343a1cdSEric Joynerthe adapters covered by this driver. 95*9343a1cdSEric JoynerThese tools can be downloaded directly from Intel at 96*9343a1cdSEric Joyner.Pa downloadcenter.intel.com , 97*9343a1cdSEric Joynerby searching for their names, or by installing certain packages: 98*9343a1cdSEric Joyner.Bl -item 99*9343a1cdSEric Joyner.It 100*9343a1cdSEric JoynerTo change the behavior of the QSFP+ ports on XL710 adapters, use the 101*9343a1cdSEric JoynerIntel QCU (QSFP+ configuration utility); installed by the 102*9343a1cdSEric Joyner.Em sysutils/intel-qcu 103*9343a1cdSEric Joynerpackage. 104*9343a1cdSEric Joyner.It 105*9343a1cdSEric JoynerTo update the firmware on an adapter, use the Intel Non-Volatile Memory (NVM) 106*9343a1cdSEric JoynerUpdate Utility; installed by the 107*9343a1cdSEric Joyner.Em sysutils/intel-nvmupdate 108*9343a1cdSEric Joynerpackage. 109*9343a1cdSEric Joyner.It 110*9343a1cdSEric JoynerDrivers are provided by Intel outside of the 111*9343a1cdSEric Joyner.Fx 112*9343a1cdSEric Joynerkernel; install the 113*9343a1cdSEric Joyner.Em net/intel-ixl-kmod 114*9343a1cdSEric Joynerpackage for the latest driver. 115*9343a1cdSEric Joyner.El 1160902f572SJack F Vogel.Sh HARDWARE 117*9343a1cdSEric JoynerMost adapters in the Intel Ethernet 700 Series with SFP+/SFP28/QSFP+ cages 118*9343a1cdSEric Joynerhave firmware that requires that Intel qualified modules are used; these 119*9343a1cdSEric Joynerqualified modules are listed below. 120*9343a1cdSEric JoynerThis qualification check cannot be disabled by the driver. 121*9343a1cdSEric Joyner.Pp 1220902f572SJack F VogelThe 1230902f572SJack F Vogel.Nm 124*9343a1cdSEric Joynerdriver supports 40Gb Ethernet adapters with these QSFP+ modules: 1250902f572SJack F Vogel.Pp 1260902f572SJack F Vogel.Bl -bullet -compact 1270902f572SJack F Vogel.It 128*9343a1cdSEric JoynerIntel 4x10G/40G QSFP+ 40GBASE-SR4 E40GQSFPSR 1290902f572SJack F Vogel.It 130*9343a1cdSEric JoynerIntel 4x10G/40G QSFP+ 40GBASE-LR4 E40GQSFPLR 1310902f572SJack F Vogel.El 1320902f572SJack F Vogel.Pp 1330902f572SJack F VogelThe 1340902f572SJack F Vogel.Nm 135*9343a1cdSEric Joynerdriver supports 25Gb Ethernet adapters with these SFP28 modules: 1360902f572SJack F Vogel.Pp 1370902f572SJack F Vogel.Bl -bullet -compact 1380902f572SJack F Vogel.It 139*9343a1cdSEric JoynerIntel 10G/25G SFP28 25GBASE-SR E25GSFP28SR 1400902f572SJack F Vogel.It 141*9343a1cdSEric JoynerIntel 10G/25G SFP28 25GBASE-SR E25GSFP28SRX (Extended Temp) 1420902f572SJack F Vogel.El 1430902f572SJack F Vogel.Pp 1440902f572SJack F VogelThe 1450902f572SJack F Vogel.Nm 146*9343a1cdSEric Joynerdriver supports 25Gb and 10Gb Ethernet adapters with these SFP+ modules: 1470902f572SJack F Vogel.Pp 1480902f572SJack F Vogel.Bl -bullet -compact 1490902f572SJack F Vogel.It 150*9343a1cdSEric JoynerIntel 1G/10G SFP+ SR FTLX8571D3BCV-IT 1510902f572SJack F Vogel.It 152*9343a1cdSEric JoynerIntel 1G/10G SFP+ SR AFBR-703SDZ-IN2 153*9343a1cdSEric Joyner.It 154*9343a1cdSEric JoynerIntel 1G/10G SFP+ LR FTLX1471D3BCV-IT 155*9343a1cdSEric Joyner.It 156*9343a1cdSEric JoynerIntel 1G/10G SFP+ LR AFCT-701SDZ-IN2 157*9343a1cdSEric Joyner.It 158*9343a1cdSEric JoynerIntel 1G/10G SFP+ 10GBASE-SR E10GSFPSR 159*9343a1cdSEric Joyner.It 160*9343a1cdSEric JoynerIntel 10G SFP+ 10GBASE-SR E10GSFPSRX (Extended Temp) 161*9343a1cdSEric Joyner.It 162*9343a1cdSEric JoynerIntel 1G/10G SFP+ 10GBASE-LR E10GSFPLR 1630902f572SJack F Vogel.El 1640902f572SJack F Vogel.Pp 165*9343a1cdSEric JoynerNote that adapters also support all passive and active 1660902f572SJack F Vogellimiting direct attach cables that comply with SFF-8431 v4.1 and 1670902f572SJack F VogelSFF-8472 v10.4 specifications. 168*9343a1cdSEric Joyner.Pp 169*9343a1cdSEric JoynerThis is not an exhaustive list; please consult product documentation for an 170*9343a1cdSEric Joynerup-to-date list of supported media. 1710902f572SJack F Vogel.Sh LOADER TUNABLES 1720902f572SJack F VogelTunables can be set at the 1730902f572SJack F Vogel.Xr loader 8 1740902f572SJack F Vogelprompt before booting the kernel or stored in 1750902f572SJack F Vogel.Xr loader.conf 5 . 1760902f572SJack F Vogel.Bl -tag -width indent 1770902f572SJack F Vogel.It Va hw.ixl.rx_itr 178*9343a1cdSEric JoynerThe RX interrupt rate value, set to 62 (124 usec) by default. 1790902f572SJack F Vogel.It Va hw.ixl.tx_itr 180*9343a1cdSEric JoynerThe TX interrupt rate value, set to 122 (244 usec) by default. 181*9343a1cdSEric Joyner.It Va hw.ixl.i2c_access_method 182*9343a1cdSEric JoynerAccess method that driver will use for I2C read and writes via 183*9343a1cdSEric Joyner.Xr sysctl 8 184*9343a1cdSEric Joyneror verbose 185*9343a1cdSEric Joyner.Xr ifconfig 8 186*9343a1cdSEric Joynerinformation display: 187*9343a1cdSEric Joyner.Bd -literal -offset indent 188*9343a1cdSEric Joyner0 - best available method 189*9343a1cdSEric Joyner1 - bit bang via I2CPARAMS register 190*9343a1cdSEric Joyner2 - register read/write via I2CCMD register 191*9343a1cdSEric Joyner3 - Use Admin Queue command (default best) 192*9343a1cdSEric Joyner.Ed 193*9343a1cdSEric Joyner.Pp 194*9343a1cdSEric JoynerUsing the Admin Queue is only supported on 710 devices with FW version 1.7 or 195*9343a1cdSEric Joynernewer. 196*9343a1cdSEric JoynerSet to 0 by default. 197*9343a1cdSEric Joyner.It Va hw.ixl.enable_tx_fc_filter 198*9343a1cdSEric JoynerFilter out packets with Ethertype 0x8808 from being sent out by non-adapter 199*9343a1cdSEric Joynersources. 200*9343a1cdSEric JoynerThis prevents (potentially untrusted) software or 201*9343a1cdSEric Joyner.Xr iavf 4 202*9343a1cdSEric Joynerdevices from sending out flow control packets and creating a DoS (Denial of 203*9343a1cdSEric JoynerService) event. 204*9343a1cdSEric JoynerEnabled by default. 205*9343a1cdSEric Joyner.It Va hw.ixl.enable_head_writeback 206*9343a1cdSEric JoynerWhen the driver is finding the last TX descriptor processed by the hardware, 207*9343a1cdSEric Joyneruse a value written to memory by the hardware instead of scanning the 208*9343a1cdSEric Joynerdescriptor ring for completed descriptors. 209*9343a1cdSEric JoynerEnabled by default; disable to mimic the TX behavior found in 210*9343a1cdSEric Joyner.Xr ixgbe 4 . 2110902f572SJack F Vogel.El 2120902f572SJack F Vogel.Sh SYSCTL PROCEDURES 2130902f572SJack F Vogel.Bl -tag -width indent 214*9343a1cdSEric Joyner.It Va dev.ixl.#.fc 215*9343a1cdSEric JoynerSets the 802.3x flow control mode that the adapter will advertise on the link. 216*9343a1cdSEric JoynerA value of 0 disables flow control, 3 enables full, 1 is RX, and 2 is TX pause. 217*9343a1cdSEric Joyner.Pp 218*9343a1cdSEric JoynerThe negotiated flow control setting can be viewed in 219*9343a1cdSEric Joyner.Xr ifconfig 8 , 220*9343a1cdSEric Joynerin the interface's media field. 221*9343a1cdSEric Joyner.It Va dev.ixl.#.advertise_speed 222*9343a1cdSEric JoynerSet the speeds that the interface will advertise on the link. 223*9343a1cdSEric Joyner.Va dev.ixl.#.supported_speeds 224*9343a1cdSEric Joynercontains the speeds that are allowed to be set. 225*9343a1cdSEric Joyner.It Va dev.ixl.#.current_speed 226*9343a1cdSEric JoynerDisplays the current speed. 227*9343a1cdSEric Joyner.It Va dev.ixl.#.fw_version 228*9343a1cdSEric JoynerDisplays the current firmware and NVM versions of the adapter. 229dc6a4165SChristian Brueffer.El 230*9343a1cdSEric Joyner.Sh INTERRUPT STORMS 2310902f572SJack F VogelIt is important to note that 40G operation can generate high 2320902f572SJack F Vogelnumbers of interrupts, often incorrectly being interpreted as 233dc6a4165SChristian Brueffera storm condition in the kernel. 234*9343a1cdSEric JoynerIt is suggested that this be resolved by setting: 2350902f572SJack F Vogel.Bl -tag -width indent 2360902f572SJack F Vogel.It Va hw.intr_storm_threshold: 0 237dc6a4165SChristian Brueffer.El 238*9343a1cdSEric Joyner.Sh IOVCTL OPTIONS 239*9343a1cdSEric JoynerThe driver supports additional optional parameters for created VFs 240*9343a1cdSEric Joyner(Virtual Functions) when using 241*9343a1cdSEric Joyner.Xr iovctl 8 : 242*9343a1cdSEric Joyner.Bl -tag -width indent 243*9343a1cdSEric Joyner.It mac-addr Pq unicast-mac 244*9343a1cdSEric JoynerSet the Ethernet MAC address that the VF will use. 245*9343a1cdSEric JoynerIf unspecified, the VF will use a randomly generated MAC address. 246*9343a1cdSEric Joyner.It mac-anti-spoof Pq bool 247*9343a1cdSEric JoynerPrevent the VF from sending Ethernet frames with a source address 248*9343a1cdSEric Joynerthat does not match its own. 249*9343a1cdSEric Joyner.It allow-set-mac Pq bool 250*9343a1cdSEric JoynerAllow the VF to set its own Ethernet MAC address 251*9343a1cdSEric Joyner.It allow-promisc Pq bool 252*9343a1cdSEric JoynerAllow the VF to inspect all of the traffic sent to the port. 253*9343a1cdSEric Joyner.It num-queues Pq uint16_t 254*9343a1cdSEric JoynerSpecify the number of queues the VF will have. 255*9343a1cdSEric JoynerBy default, this is set to the number of MSI-X vectors supported by the VF 256*9343a1cdSEric Joynerminus one. 257*9343a1cdSEric Joyner.El 258*9343a1cdSEric Joyner.Pp 259*9343a1cdSEric JoynerAn up to date list of parameters and their defaults can be found by using 260*9343a1cdSEric Joyner.Xr iovctl 8 261*9343a1cdSEric Joynerwith the -S option. 2620902f572SJack F Vogel.Sh SUPPORT 2630902f572SJack F VogelFor general information and support, 2640902f572SJack F Vogelgo to the Intel support website at: 2650902f572SJack F Vogel.Pa http://support.intel.com/ . 2660902f572SJack F Vogel.Pp 2670902f572SJack F VogelIf an issue is identified with this driver with a supported adapter, 2680902f572SJack F Vogelemail all the specific information related to the issue to 269*9343a1cdSEric Joyner.Mt freebsd@intel.com . 2700902f572SJack F Vogel.Sh SEE ALSO 2710902f572SJack F Vogel.Xr arp 4 , 272*9343a1cdSEric Joyner.Xr iavf 4 , 2730902f572SJack F Vogel.Xr netintro 4 , 2740902f572SJack F Vogel.Xr vlan 4 , 275*9343a1cdSEric Joyner.Xr ifconfig 8 , 276*9343a1cdSEric Joyner.Xr iovctl 8 , 277*9343a1cdSEric Joyner.Xr iflib 9 2780902f572SJack F Vogel.Sh HISTORY 2790902f572SJack F VogelThe 2800902f572SJack F Vogel.Nm 2810902f572SJack F Vogeldevice driver first appeared in 2820902f572SJack F Vogel.Fx 10.1 . 283*9343a1cdSEric JoynerIt was converted to use 284*9343a1cdSEric Joyner.Xr iflib 9 285*9343a1cdSEric Joynerin 286*9343a1cdSEric Joyner.Fx 12 . 2870902f572SJack F Vogel.Sh AUTHORS 2880902f572SJack F Vogel.An -nosplit 2890902f572SJack F VogelThe 2900902f572SJack F Vogel.Nm 2910902f572SJack F Vogeldriver was written by 292*9343a1cdSEric Joyner.An Jack Vogel Aq Mt jfv@freebsd.org 2930902f572SJack F Vogeland 294*9343a1cdSEric Joyner.An Eric Joyner Aq Mt erj@freebsd.org . 295