Index: share/man/man4/Makefile =================================================================== --- share/man/man4/Makefile +++ share/man/man4/Makefile @@ -196,6 +196,7 @@ ${_hv_vmbus.4} \ ${_hv_vss.4} \ hwpmc.4 \ + iavf.4 \ ichsmb.4 \ ${_ichwd.4} \ icmp.4 \ @@ -239,7 +240,6 @@ iwnfw.4 \ ixgbe.4 \ ixl.4 \ - ixlv.4 \ jedec_dimm.4 \ jme.4 \ joy.4 \ @@ -668,7 +668,7 @@ MLINKS+=ixgbe.4 if_ix.4 MLINKS+=ixgbe.4 if_ixgbe.4 MLINKS+=ixl.4 if_ixl.4 -MLINKS+=ixlv.4 if_ixlv.4 +MLINKS+=iavf.4 if_iavf.4 MLINKS+=jme.4 if_jme.4 MLINKS+=kue.4 if_kue.4 MLINKS+=lagg.4 trunk.4 Index: share/man/man4/iavf.4 =================================================================== --- share/man/man4/iavf.4 +++ share/man/man4/iavf.4 @@ -1,4 +1,4 @@ -.\" Copyright (c) 2013-2015, Intel Corporation +.\" Copyright (c) 2013-2018, Intel Corporation .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -31,31 +31,29 @@ .\" .\" $FreeBSD$ .\" -.Dd March 25, 2015 -.Dt IXLV 4 +.Dd October 5, 2018 +.Dt IAVF 4 .Os .Sh NAME -.Nm ixlv -.Nd "Intel XL710 Ethernet 40Gb VF driver" +.Nm iavf +.Nd "Intel Adaptive Virtual Function driver" .Sh SYNOPSIS -To compile this driver into the kernel, -place the following lines in your +To compile this driver into the kernel, place the following lines in your kernel configuration file: .Bd -ragged -offset indent -.Cd "device ixlv" +.Cd "device iavf" .Ed .Pp -To load the driver as a -module at boot time, place the following lines in +To load the driver as a module at boot time, place the following lines in .Xr loader.conf 5 : .Bd -literal -offset indent -if_ixlv_load="YES" +if_iavf_load="YES" .Ed .Sh DESCRIPTION The .Nm -driver provides virtualization support for PCI Express adapters -or LOMs in the XL710 Family of ethernet devices. +driver provides support for the PCI Virtual Functions from the 700 Series of +ethernet devices and newer product families. The driver supports Jumbo Frames, TX/RX checksum offload, TCP segmentation offload (TSO), Large Receive Offload (LRO), VLAN tag insertion/extraction, VLAN checksum offload, VLAN TSO, and @@ -78,10 +76,10 @@ .Xr ifconfig 8 . .Pp .Em NOTE : -The +This .Nm -driver is only used by means of SRIOV, normally in a VM on a -hosting server with the +driver is only for Virtual Functions. +For 700 series Physical Functions, use the .Xr ixl 4 driver. .Sh LOADER TUNABLES @@ -90,24 +88,17 @@ prompt before booting the kernel or stored in .Xr loader.conf 5 . .Bl -tag -width indent -.It Va hw.ixlv.ringsz -Set the number of descriptors in the rings, note that this -changes BOTH the TX and RX rings, they cannot be set independently. -.It Va hw.ixlv.max_queues -Set the number of queues (each a TX/RX pair) for the port, this -allows one to override the autocalculation if it is set to 0. -.It Va hw.ixlv.txbrsz -Set the size of the buff ring used by the transmit side of the -stack, we have found that it is necessary to have it quite large -in order to get UDP to perform well. -.It Va hw.ixlv.dynamic_rx_itr -The dynamic RX interrupt control, set to 1 to enable, off by default. -.It Va hw.ixlv.dynamic_tx_itr -The dynamic TX interrupt control, set to 1 to enable, off by default. -.It Va hw.ixlv.rx_itr -The RX interrupt rate value, set to 8K by default. -.It Va hw.ixlv.tx_itr -The TX interrupt rate value, set to 4K by default. +.It Va hw.iavf.rx_itr +The RX interrupt rate value, set to 62 (124 usec) by default. +.It Va hw.iavf.tx_itr +The TX interrupt rate value, set to 122 (244 usec) by default. +.It Va hw.iavf.enable_head_writeback +When the driver is finding the last TX descriptor processed by the hardware, +use a value written to memory by the hardware instead of scanning the +descriptor ring for completed descriptors. +Disabled by default; this mimics the "legacy" TX behavior found in +.Xr ixgbe 4 . +to ensure compatibility with future, non-700 series VF devices. .El .Sh SUPPORT For general information and support, @@ -116,24 +107,32 @@ .Pp If an issue is identified with this driver with a supported adapter, email all the specific information related to the issue to -.Aq freebsd@intel.com . +.Mt freebsd@intel.com . .Sh SEE ALSO .Xr arp 4 , .Xr ixl 4 , .Xr netintro 4 , -.Xr ng_ether 4 , .Xr vlan 4 , -.Xr ifconfig 8 +.Xr ifconfig 8 , +.Xr iflib 9 .Sh HISTORY The .Nm device driver first appeared in .Fx 10.1 . +under the name "ixlv" +It was converted to use +.Xr iflib 9 +and changed to its current name in +.Fx 12 . .Sh AUTHORS .An -nosplit The .Nm driver was written by -.An Jack Vogel Aq Mt jfv@FreeBSD.org +.An Jack Vogel Aq Mt jfv@freebsd.org and -.An Eric Joyner Aq Mt ricera10@gmail.com . +.An Eric Joyner Aq Mt erj@freebsd.org . +.Sh CAVEATS +This driver is supposed to function on VFs spawned from future network devices by Intel, +but at the time of this writing, has only been tested on the 700 series VFs. Index: share/man/man4/ixl.4 =================================================================== --- share/man/man4/ixl.4 +++ share/man/man4/ixl.4 @@ -1,4 +1,4 @@ -.\" Copyright (c) 2013-2015, Intel Corporation +.\" Copyright (c) 2013-2018, Intel Corporation .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -31,31 +31,44 @@ .\" .\" $FreeBSD$ .\" -.Dd March 25, 2015 +.Dd October 5, 2018 .Dt IXL 4 .Os .Sh NAME .Nm ixl -.Nd "Intel XL710 Ethernet 40Gb Base driver" +.Nd "Intel Ethernet 700 Series Driver" .Sh SYNOPSIS -To compile this driver into the kernel, -place the following lines in your +To compile this driver into the kernel, place the following lines in your kernel configuration file: .Bd -ragged -offset indent .Cd "device ixl" .Ed .Pp -To load the driver as a -module at boot time, place the following lines in +To load the driver as a module at boot time, place the following lines in .Xr loader.conf 5 : .Bd -literal -offset indent if_ixl_load="YES" .Ed .Sh DESCRIPTION +.Ss Features The .Nm -driver provides support for PCI Express adapters or LOMs -in the XL710 Family of ethernet devices. +driver provides support for any PCI Express adapter or LOM +(LAN On Motherboard) +in the Intel Ethernet 700 Series. +As of this writing, the series includes devices with these model numbers: +.Pp +.Bl -bullet -compact +.It +XL710 (40G) +.It +X710 (10G) +.It +XXV710 (25G) +.It +X722 (10G) +.El +.Pp The driver supports Jumbo Frames, TX/RX checksum offload, TCP segmentation offload (TSO), Large Receive Offload (LRO), VLAN tag insertion/extraction, VLAN checksum offload, VLAN TSO, and @@ -76,91 +89,176 @@ .Pp For more information on configuring this device, see .Xr ifconfig 8 . +.Ss Additional Utilities +There are additional tools available from Intel to help configure and update +the adapters covered by this driver. +These tools can be downloaded directly from Intel at +.Pa downloadcenter.intel.com , +by searching for their names, or by installing certain packages: +.Bl -item +.It +To change the behavior of the QSFP+ ports on XL710 adapters, use the +Intel QCU (QSFP+ configuration utility); installed by the +.Em sysutils/intel-qcu +package. +.It +To update the firmware on an adapter, use the Intel Non-Volatile Memory (NVM) +Update Utility; installed by the +.Em sysutils/intel-nvmupdate +package. +.It +Drivers are provided by Intel outside of the +.Fx +kernel; install the +.Em net/intel-ixl-kmod +package for the latest driver. +.El .Sh HARDWARE +Most adapters in the Intel Ethernet 700 Series with SFP+/SFP28/QSFP+ cages +have firmware that requires that Intel qualified modules are used; these +qualified modules are listed below. +This qualification check cannot be disabled by the driver. +.Pp The .Nm -driver supports these SFP+ Pluggable Optics: +driver supports 40Gb Ethernet adapters with these QSFP+ modules: .Pp .Bl -bullet -compact .It -Intel TRIPLE RATE 1G/10G/40G QSFP+ SR (bailed) E40GQSFPSR +Intel 4x10G/40G QSFP+ 40GBASE-SR4 E40GQSFPSR .It -Intel TRIPLE RATE 1G/10G/40G QSFP+ SR (bailed) E40GQSFPLR +Intel 4x10G/40G QSFP+ 40GBASE-LR4 E40GQSFPLR .El .Pp The .Nm -driver supports 10Gb and 1Gb Ethernet adapters with SR Modules: +driver supports 25Gb Ethernet adapters with these SFP28 modules: .Pp .Bl -bullet -compact .It -Intel DUAL RATE 1G/10G SFP+ SR (bailed) FTLX8571D3BCV-IT +Intel 10G/25G SFP28 25GBASE-SR E25GSFP28SR .It -Intel DUAL RATE 1G/10G SFP+ SR (bailed) AFBR-703SDZ-IN2 +Intel 10G/25G SFP28 25GBASE-SR E25GSFP28SRX (Extended Temp) .El .Pp The .Nm -driver supports 10Gb and 1Gb Ethernet adapters with LR Modules: +driver supports 25Gb and 10Gb Ethernet adapters with these SFP+ modules: .Pp .Bl -bullet -compact .It -Intel DUAL RATE 1G/10G SFP+ LR (bailed) FTLX1471D3BCV-IT +Intel 1G/10G SFP+ SR FTLX8571D3BCV-IT +.It +Intel 1G/10G SFP+ SR AFBR-703SDZ-IN2 .It -Intel DUAL RATE 1G/10G SFP+ LR (bailed) AFCT-701SDZ-IN2 +Intel 1G/10G SFP+ LR FTLX1471D3BCV-IT +.It +Intel 1G/10G SFP+ LR AFCT-701SDZ-IN2 +.It +Intel 1G/10G SFP+ 10GBASE-SR E10GSFPSR +.It +Intel 10G SFP+ 10GBASE-SR E10GSFPSRX (Extended Temp) +.It +Intel 1G/10G SFP+ 10GBASE-LR E10GSFPLR .El .Pp -Note that X710/XL710 Based SFP+ adapters also support all passive and active +Note that adapters also support all passive and active limiting direct attach cables that comply with SFF-8431 v4.1 and SFF-8472 v10.4 specifications. +.Pp +This is not an exhaustive list; please consult product documentation for an +up-to-date list of supported media. .Sh LOADER TUNABLES Tunables can be set at the .Xr loader 8 prompt before booting the kernel or stored in .Xr loader.conf 5 . .Bl -tag -width indent -.It Va hw.ixl.enable_msix -Allows one to enable/disable MSIX, thus forcing MSI instead. -.It Va hw.ixl.ringsz -Set the number of descriptors in the rings, note that this -changes BOTH the TX and RX rings, they cannot be set independently. -.It Va hw.ixl.max_queues -Set the number of queues (each a TX/RX pair) for the port, this -allows one to override the autocalculation if it is set to 0. -.It Va hw.ixl.dynamic_rx_itr -The dynamic RX interrupt control, set to 1 to enable. -.It Va hw.ixl.dynamic_tx_itr -The dynamic TX interrupt control, set to 1 to enable. .It Va hw.ixl.rx_itr -The RX interrupt rate value, set to 8K by default. +The RX interrupt rate value, set to 62 (124 usec) by default. .It Va hw.ixl.tx_itr -The TX interrupt rate value, set to 4K by default. +The TX interrupt rate value, set to 122 (244 usec) by default. +.It Va hw.ixl.i2c_access_method +Access method that driver will use for I2C read and writes via +.Xr sysctl 8 +or verbose +.Xr ifconfig 8 +information display: +.Bd -literal -offset indent +0 - best available method +1 - bit bang via I2CPARAMS register +2 - register read/write via I2CCMD register +3 - Use Admin Queue command (default best) +.Ed +.Pp +Using the Admin Queue is only supported on 710 devices with FW version 1.7 or +newer. +Set to 0 by default. +.It Va hw.ixl.enable_tx_fc_filter +Filter out packets with Ethertype 0x8808 from being sent out by non-adapter +sources. +This prevents (potentially untrusted) software or +.Xr iavf 4 +devices from sending out flow control packets and creating a DoS (Denial of +Service) event. +Enabled by default. +.It Va hw.ixl.enable_head_writeback +When the driver is finding the last TX descriptor processed by the hardware, +use a value written to memory by the hardware instead of scanning the +descriptor ring for completed descriptors. +Enabled by default; disable to mimic the TX behavior found in +.Xr ixgbe 4 . .El .Sh SYSCTL PROCEDURES .Bl -tag -width indent -.It Va hw.ixl.fc -Allows one to set the flow control value. -A value of 0 disables -flow control, 3 enables full, 1 is RX, and 2 is TX pause. -.It Va hw.ixl.advertise_speed -Allows one to set advertised link speeds, this will then -cause a link renegotiation. -With the appropriate adapter -this can cause a link at 10GB, 1GB, or 100MB. -.It Va hw.ixl.current_speed -This is a display of the current setting. -.It Va hw.ixl.fw_version -This is a display of the Firmware version. +.It Va dev.ixl.#.fc +Sets the 802.3x flow control mode that the adapter will advertise on the link. +A value of 0 disables flow control, 3 enables full, 1 is RX, and 2 is TX pause. +.Pp +The negotiated flow control setting can be viewed in +.Xr ifconfig 8 , +in the interface's media field. +.It Va dev.ixl.#.advertise_speed +Set the speeds that the interface will advertise on the link. +.Va dev.ixl.#.supported_speeds +contains the speeds that are allowed to be set. +.It Va dev.ixl.#.current_speed +Displays the current speed. +.It Va dev.ixl.#.fw_version +Displays the current firmware and NVM versions of the adapter. .El -.Sh Interrupt Storms +.Sh INTERRUPT STORMS It is important to note that 40G operation can generate high numbers of interrupts, often incorrectly being interpreted as a storm condition in the kernel. -It is suggested that this -be resolved by setting: +It is suggested that this be resolved by setting: .Bl -tag -width indent .It Va hw.intr_storm_threshold: 0 .El +.Sh IOVCTL OPTIONS +The driver supports additional optional parameters for created VFs +(Virtual Functions) when using +.Xr iovctl 8 : +.Bl -tag -width indent +.It mac-addr Pq unicast-mac +Set the Ethernet MAC address that the VF will use. +If unspecified, the VF will use a randomly generated MAC address. +.It mac-anti-spoof Pq bool +Prevent the VF from sending Ethernet frames with a source address +that does not match its own. +.It allow-set-mac Pq bool +Allow the VF to set its own Ethernet MAC address +.It allow-promisc Pq bool +Allow the VF to inspect all of the traffic sent to the port. +.It num-queues Pq uint16_t +Specify the number of queues the VF will have. +By default, this is set to the number of MSI-X vectors supported by the VF +minus one. +.El +.Pp +An up to date list of parameters and their defaults can be found by using +.Xr iovctl 8 +with the -S option. .Sh SUPPORT For general information and support, go to the Intel support website at: @@ -168,24 +266,29 @@ .Pp If an issue is identified with this driver with a supported adapter, email all the specific information related to the issue to -.Aq freebsd@intel.com . +.Mt freebsd@intel.com . .Sh SEE ALSO .Xr arp 4 , -.Xr ixlv 4 , +.Xr iavf 4 , .Xr netintro 4 , -.Xr ng_ether 4 , .Xr vlan 4 , -.Xr ifconfig 8 +.Xr ifconfig 8 , +.Xr iovctl 8 , +.Xr iflib 9 .Sh HISTORY The .Nm device driver first appeared in .Fx 10.1 . +It was converted to use +.Xr iflib 9 +in +.Fx 12 . .Sh AUTHORS .An -nosplit The .Nm driver was written by -.An Jack Vogel Aq Mt jfv@FreeBSD.org +.An Jack Vogel Aq Mt jfv@freebsd.org and -.An Eric Joyner Aq Mt ricera10@gmail.com . +.An Eric Joyner Aq Mt erj@freebsd.org .