1da5577f0SRobert Mustacchi.\" 2da5577f0SRobert Mustacchi.\" This file and its contents are supplied under the terms of the 3da5577f0SRobert Mustacchi.\" Common Development and Distribution License ("CDDL"), version 1.0. 4da5577f0SRobert Mustacchi.\" You may only use this file in accordance with the terms of version 5da5577f0SRobert Mustacchi.\" 1.0 of the CDDL. 6da5577f0SRobert Mustacchi.\" 7da5577f0SRobert Mustacchi.\" A full copy of the text of the CDDL should have accompanied this 8da5577f0SRobert Mustacchi.\" source. A copy of the CDDL is also available via the Internet at 9da5577f0SRobert Mustacchi.\" http://www.illumos.org/license/CDDL. 10da5577f0SRobert Mustacchi.\" 11da5577f0SRobert Mustacchi.\" 12*8d5069bcSRyan Zezeski.\" Copyright (c) 2018 Joyent, Inc. 13da5577f0SRobert Mustacchi.\" 14*8d5069bcSRyan Zezeski.Dd May 23, 2018 15da5577f0SRobert Mustacchi.Dt I40E 7D 16da5577f0SRobert Mustacchi.Os 17da5577f0SRobert Mustacchi.Sh NAME 18da5577f0SRobert Mustacchi.Nm i40e 19a7f9b000SRobert Mustacchi.Nd Intel 710/722 Ethernet Device Driver 20da5577f0SRobert Mustacchi.Sh SYNOPSIS 21a7f9b000SRobert Mustacchi.Pa /dev/net/i40e* 22da5577f0SRobert Mustacchi.Sh DESCRIPTION 23da5577f0SRobert MustacchiThe 24da5577f0SRobert Mustacchi.Nm 25da5577f0SRobert Mustacchidriver is a GLDv3, multi-threaded, clonable, loadable device driver that 26da5577f0SRobert Mustacchisupports the Data Link Provider Interface, 27da5577f0SRobert Mustacchi.Xr dlpi 7P . 28da5577f0SRobert MustacchiThe 29da5577f0SRobert Mustacchi.Nm 30a7f9b000SRobert Mustacchidriver supports the Intel 710 and 722 Ethernet Controller families of 31a7f9b000SRobert Mustacchinetworking interface cards which come in 1 GbE, 10 GbE, 25 GbE, and 40 32a7f9b000SRobert MustacchiGbE variants. 33da5577f0SRobert Mustacchi.Pp 34da5577f0SRobert MustacchiIn addition to basic device initialization and the sending and receiving 35da5577f0SRobert Mustacchiof frames, it supports the following features: 36da5577f0SRobert Mustacchi.Bl -dash -offset indent 37da5577f0SRobert Mustacchi.It 38da5577f0SRobert MustacchiJumbo frames up to 9710 bytes. 39da5577f0SRobert Mustacchi.It 40da5577f0SRobert MustacchiPromiscuous access via 41da5577f0SRobert Mustacchi.Xr snoop 1M and 42da5577f0SRobert Mustacchi.Xr dlpi 7P 43da5577f0SRobert Mustacchi.It 44da5577f0SRobert MustacchiIPv4 Checksum Offload 45da5577f0SRobert Mustacchi.It 46da5577f0SRobert MustacchiTCP, UDP, and SCTP checksum offload 47da5577f0SRobert Mustacchi.El 48da5577f0SRobert Mustacchi.Pp 49da5577f0SRobert MustacchiAt this time, the 50da5577f0SRobert Mustacchi.Nm 51da5577f0SRobert Mustacchidriver does not enable the use of energy efficient Ethernet (EEE) or 52da5577f0SRobert Mustacchisupport the use of flow control through hardware pause frames. 53da5577f0SRobert Mustacchi.Sh APPLICATION PROGRAMMING INTERFACE 54da5577f0SRobert MustacchiFor each device supported by the 55da5577f0SRobert Mustacchi.Nm 56da5577f0SRobert Mustacchiinstalled in the system, a character-special file will be created. This 57da5577f0SRobert Mustacchifile supports the Data Link Provider Interface (DLPI) which is documented 58da5577f0SRobert Mustacchiin 59da5577f0SRobert Mustacchi.Xr dlpi 7P . 60da5577f0SRobert MustacchiFor most consumers, the use of 61da5577f0SRobert Mustacchi.Xr libdlpi 3LIB , 62da5577f0SRobert Mustacchiis recommended. 63da5577f0SRobert Mustacchi.Pp 64da5577f0SRobert MustacchiEach instance is assigned a unique ascending integer identifier. A 65da5577f0SRobert Mustacchidevice which has multiple ports may appear to the system as separate 66da5577f0SRobert Mustacchiinstances. The system does not provide a guarnatee on how these will be 67da5577f0SRobert Mustacchipresented. Using this instance identifier, one can determine the exact 68da5577f0SRobert Mustacchicharacter-special file to open. For example, the first instance 69da5577f0SRobert Mustacchienumerated in the system, with id 0, would be named 70da5577f0SRobert Mustacchi.Sy i40e0 . 71da5577f0SRobert MustacchiIt exists in the file system at 72a7f9b000SRobert Mustacchi.Pa /dev/net/i40e0 . 73da5577f0SRobert Mustacchi.Sh CONFIGURATION 74da5577f0SRobert MustacchiThe 75da5577f0SRobert Mustacchi.Nm i40e 76da5577f0SRobert Mustacchidriver always performs auto-negotiation and depending on the model may 77422542c1SRobert Mustacchinegotiate to 40 Gbps, 25 Gbps, 10 Gbps, or 1 Gbps. At this time, the 78422542c1SRobert Mustacchidriver requires the use of auto-negotiation. 79da5577f0SRobert Mustacchi.Pp 80da5577f0SRobert MustacchiThe 81da5577f0SRobert Mustacchi.Nm 82da5577f0SRobert Mustacchidriver is managed by the 83da5577f0SRobert Mustacchi.Xr dladm 1M 84da5577f0SRobert Mustacchiutility. 85da5577f0SRobert Mustacchi.Xr dladm 1M 86da5577f0SRobert Mustacchiis the preferred interface for setting all properties. While 87da5577f0SRobert Mustacchi.Xr driver.conf based configuration is possible, 88da5577f0SRobert Mustacchi.Xr dladm 1M 89da5577f0SRobert Mustacchiis recommended. The 90da5577f0SRobert Mustacchi.Nm 91da5577f0SRobert Mustacchidriver may be joined into an aggregation based on the link aggregation 92da5577f0SRobert Mustacchicontrol protocol (LACP) through 93da5577f0SRobert Mustacchi.Xr dladm 1M . 94da5577f0SRobert Mustacchi.Sh PROPERTIES 95da5577f0SRobert MustacchiThe device supports the following properties which may be tuned through 96da5577f0SRobert Mustacchiits driver.conf file, 97da5577f0SRobert Mustacchi.Pa /kernel/drv/i40e.conf . 98da5577f0SRobert MustacchiMost of these properties cannot be changed after the device has been 99da5577f0SRobert Mustacchistarted. The device is started in response to a DLPI consumer opening 100da5577f0SRobert Mustacchithe device and binding to it. This happens when an IP interfaces is 101da5577f0SRobert Mustacchiplumbed or another 102da5577f0SRobert Mustacchi.Xr dlpi 7P 103da5577f0SRobert Mustacchiconsumer such as 104da5577f0SRobert Mustacchi.Xr snoop 1M 105da5577f0SRobert Mustacchior an LLDP daemon is started. 106da5577f0SRobert Mustacchi.Pp 107da5577f0SRobert MustacchiSome properties may be tuned at runtime with the 108da5577f0SRobert Mustacchi.Xr dladm 1M 109da5577f0SRobert Mustacchiutility. Properties that can be will have the name of the dladm property 110da5577f0SRobert Mustacchicalled out explicitly. 111da5577f0SRobert Mustacchi.Pp 112da5577f0SRobert MustacchiThese properties are not considered stable at this time. They may change 113da5577f0SRobert Mustacchiand should not be relied on. They are considered 114da5577f0SRobert Mustacchi.Sy Volatile . 115da5577f0SRobert MustacchiIt is not expected that administrators of the system will have to tune 116da5577f0SRobert Mustacchithese values. 117da5577f0SRobert Mustacchi.Bl -hang -width Ds 118da5577f0SRobert Mustacchi.It Sy default_mtu 119da5577f0SRobert Mustacchi.Bd -filled -compact 120da5577f0SRobert MustacchiMinimum: 121da5577f0SRobert Mustacchi.Sy 1500 | 122da5577f0SRobert MustacchiMaximum: 123da5577f0SRobert Mustacchi.Sy 9710 | 124da5577f0SRobert MustacchiRuntime Property: 125da5577f0SRobert Mustacchi.Sy mtu 126da5577f0SRobert Mustacchi.Ed 127da5577f0SRobert Mustacchi.Bd -filled 128da5577f0SRobert MustacchiThe 129da5577f0SRobert Mustacchi.Sy default_mtu 130da5577f0SRobert Mustacchiproperty determines the starting MTU of the various device instances. 131da5577f0SRobert MustacchiNote that the device's MTU also determines the upper bound of the MTU of 132da5577f0SRobert Mustacchiall VNICs created over the device. The default MTU is 133da5577f0SRobert Mustacchi.Sy 1500 . 134da5577f0SRobert Mustacchi.Ed 135da5577f0SRobert Mustacchi.It Sy mr_enable 136da5577f0SRobert Mustacchi.Bd -filled -compact 137da5577f0SRobert MustacchiMinimum: 138da5577f0SRobert Mustacchi.Sy 0 | 139da5577f0SRobert MustacchiMaximum: 140da5577f0SRobert Mustacchi.Sy 1 141da5577f0SRobert Mustacchi.Ed 142da5577f0SRobert Mustacchi.Bd -filled 143da5577f0SRobert MustacchiThe 144da5577f0SRobert Mustacchi.Sy mr_enable 145da5577f0SRobert Mustacchiproeprty determines whether or not support for multiple rings is enabled 146da5577f0SRobert Mustacchifor the device. The default is always to enable them. It is not 147da5577f0SRobert Mustacchirecommended to to disable them. 148da5577f0SRobert Mustacchi.Ed 149da5577f0SRobert Mustacchi.It Sy rx_ring_size 150da5577f0SRobert Mustacchi.Bd -filled -compact 151da5577f0SRobert MustacchiMinimum: 152da5577f0SRobert Mustacchi.Sy 64 | 153da5577f0SRobert MustacchiMaximum: 154da5577f0SRobert Mustacchi.Sy 4096 155da5577f0SRobert Mustacchi.Ed 156da5577f0SRobert Mustacchi.Bd -filled 157da5577f0SRobert MustacchiThe 158da5577f0SRobert Mustacchi.Sy rx_ring_size 159da5577f0SRobert Mustacchiproperty determines the number of descriptors that will be used in each 160da5577f0SRobert Mustacchireceive ring on the card. Administrators should not normally need to 161da5577f0SRobert Mustacchitune this value. Hardware requires that the ring size be a multiple of 162da5577f0SRobert Mustacchi32. The system will round up the set value to the nearest multiple of 163da5577f0SRobert Mustacchi32. 164da5577f0SRobert Mustacchi.Ed 165da5577f0SRobert Mustacchi.It Sy tx_ring_size 166da5577f0SRobert Mustacchi.Bd -filled -compact 167da5577f0SRobert MustacchiMinimum: 168da5577f0SRobert Mustacchi.Sy 64 | 169da5577f0SRobert MustacchiMaximum: 170da5577f0SRobert Mustacchi.Sy 4096 171da5577f0SRobert Mustacchi.Ed 172da5577f0SRobert Mustacchi.Bd -filled 173da5577f0SRobert MustacchiThe 174da5577f0SRobert Mustacchi.Sy tx_ring_size 175da5577f0SRobert Mustacchiproperty determines the number of descriptors that will be used in each 176da5577f0SRobert Mustacchitransmit ring on the card. Administrators should not normally need to 177da5577f0SRobert Mustacchitune this value. Hardware requires that the ring size be a multiple of 178da5577f0SRobert Mustacchi32. The system will round up the set value to the nearest multiple of 179da5577f0SRobert Mustacchi32. 180da5577f0SRobert Mustacchi.Ed 181da5577f0SRobert Mustacchi.It Sy tx_resched_threshold 182da5577f0SRobert Mustacchi.Bd -filled -compact 183da5577f0SRobert MustacchiMinimum: 184da5577f0SRobert Mustacchi.Sy 8 | 185da5577f0SRobert MustacchiMaximum: 186da5577f0SRobert Mustacchi.Sy Variable 187da5577f0SRobert Mustacchi.Ed 188da5577f0SRobert Mustacchi.Bd -filled 189da5577f0SRobert MustacchiThe 190da5577f0SRobert Mustacchi.Sy tx_resched_threshold 191da5577f0SRobert Mustacchiproperty determines the number of descriptors that must be available for 192da5577f0SRobert Mustacchia frame to be transmitted. The maximum is variable. It is dependent on 193da5577f0SRobert Mustacchithe value of the 194da5577f0SRobert Mustacchi.Sy tx_ring_size 195da5577f0SRobert Mustacchiproperty. At least eight descriptors must be available for the device to 196da5577f0SRobert Mustacchifunction correctly. 197da5577f0SRobert Mustacchi.Ed 198da5577f0SRobert Mustacchi.It Sy rx_limit_per_intr 199da5577f0SRobert Mustacchi.Bd -filled -compact 200da5577f0SRobert MustacchiMinimum: 201da5577f0SRobert Mustacchi.Sy 16 | 202da5577f0SRobert MustacchiMaximum: 203da5577f0SRobert Mustacchi.Sy 4096 204da5577f0SRobert Mustacchi.Ed 205da5577f0SRobert Mustacchi.Bd -filled 206da5577f0SRobert MustacchiThe 207da5577f0SRobert Mustacchi.Sy rx_limit_per_intr 208da5577f0SRobert Mustacchiproperty determines the maximum number of packets that will be processed 209da5577f0SRobert Mustacchion a given ring during a single interrupt. This is done to try and 210da5577f0SRobert Mustacchiguarantee some amount of liveness in the system. It is not expected 211da5577f0SRobert Mustacchithat administrators will have to tune this value. 212da5577f0SRobert Mustacchi.Ed 213da5577f0SRobert Mustacchi.It Sy tx_hcksum_enable 214da5577f0SRobert Mustacchi.Bd -filled -compact 215da5577f0SRobert MustacchiMinimum: 216da5577f0SRobert Mustacchi.Sy 0 | 217da5577f0SRobert MustacchiMaximum: 218da5577f0SRobert Mustacchi.Sy 1 219da5577f0SRobert Mustacchi.Ed 220da5577f0SRobert Mustacchi.Bd -filled 221da5577f0SRobert MustacchiThe 222da5577f0SRobert Mustacchi.Sy tx_hcksum_enable 223da5577f0SRobert Mustacchiproperty controls whether or not the device enables support for hardware 224da5577f0SRobert Mustacchichecksuming of outgoing packets. The default is to always enable support 225da5577f0SRobert Mustacchifor this. Turning it off will increase latency and decrease throughput 226da5577f0SRobert Mustacchiwhen transmitting packets, but should be done if a hardware bug is 227da5577f0SRobert Mustacchisuspected. 228da5577f0SRobert Mustacchi.Ed 229da5577f0SRobert Mustacchi.It Sy rx_hcksum_enable 230da5577f0SRobert Mustacchi.Bd -filled -compact 231da5577f0SRobert MustacchiMinimum: 232da5577f0SRobert Mustacchi.Sy 0 | 233da5577f0SRobert MustacchiMaximum: 234da5577f0SRobert Mustacchi.Sy 1 235da5577f0SRobert Mustacchi.Ed 236da5577f0SRobert Mustacchi.Bd -filled 237da5577f0SRobert MustacchiThe 238da5577f0SRobert Mustacchi.Sy rx_hcksum_enable 239da5577f0SRobert Mustacchiproperty controls whether or not the device enables support for hardware 240da5577f0SRobert Mustacchichecksuming of incoming packets. The default is to always enable support 241da5577f0SRobert Mustacchifor this. Turning it off will increase latency and decrease throughput 242da5577f0SRobert Mustacchiwhen receiving packets, but should be done if a hardware bug is 243da5577f0SRobert Mustacchisuspected. 244da5577f0SRobert Mustacchi.Ed 245da5577f0SRobert Mustacchi.It Sy rx_dma_threshold 246da5577f0SRobert Mustacchi.Bd -filled -compact 247da5577f0SRobert MustacchiMinimum: 248da5577f0SRobert Mustacchi.Sy 0 | 249da5577f0SRobert MustacchiMaximum: 250da5577f0SRobert Mustacchi.Sy INT32_MAX | 251da5577f0SRobert MustacchiRuntime Property: 252da5577f0SRobert Mustacchi.Sy _rx_dma_treshold 253da5577f0SRobert Mustacchi.Ed 254da5577f0SRobert Mustacchi.Bd -filled 255da5577f0SRobert MustacchiThe 256da5577f0SRobert Mustacchi.Sy rx_dma_treshold 257da5577f0SRobert Mustacchiindicates the size in bytes of a received frame, including all of its 258da5577f0SRobert Mustacchiheaders, at which the driver should not copy the frame but instead bind 259da5577f0SRobert MustacchiDMA memory. By setting this property to its minimum, all frames will be 260da5577f0SRobert Mustacchiprocessed with DMA binding. By setting this property to its maximum, all 261da5577f0SRobert Mustacchiframes will be processed by copying the frame. 262da5577f0SRobert Mustacchi.Ed 263*8d5069bcSRyan Zezeski.It Sy tx_lso_enable 264*8d5069bcSRyan Zezeski.Bd -filled -compact 265*8d5069bcSRyan ZezeskiMinimum: 266*8d5069bcSRyan Zezeski.Sy 0 | 267*8d5069bcSRyan ZezeskiMaximum: 268*8d5069bcSRyan Zezeski.Sy 1 269*8d5069bcSRyan Zezeski.Ed 270*8d5069bcSRyan Zezeski.Bd -filled 271*8d5069bcSRyan ZezeskiThe 272*8d5069bcSRyan Zezeski.Sy tx_lso_enable 273*8d5069bcSRyan Zezeskiproperty controls whether or not the device enables support for Large Segment 274*8d5069bcSRyan ZezeskiOffloand (LSO) when transmitting packets. 275*8d5069bcSRyan ZezeskiThe default is to always enable support for this. 276*8d5069bcSRyan ZezeskiTurning it off will decrease throughput when transmitting packets, but should 277*8d5069bcSRyan Zezeskibe done if a hardware bug is suspected. 278*8d5069bcSRyan Zezeski.Ed 279da5577f0SRobert Mustacchi.El 280da5577f0SRobert Mustacchi.Sh ARCHITECTURE 281da5577f0SRobert MustacchiThe 282da5577f0SRobert Mustacchi.Nm 283da5577f0SRobert Mustacchidriver is only supported on 284da5577f0SRobert Mustacchi.Sy x86 285da5577f0SRobert Mustacchisystems at this time. 286da5577f0SRobert Mustacchi.Sh FILES 287da5577f0SRobert Mustacchi.Bl -tag -width Pa 288a7f9b000SRobert Mustacchi.It Pa /dev/net/i40e* 289da5577f0SRobert MustacchiPer-instance character device. 290da5577f0SRobert Mustacchi.It Pa /kernel/drv/i40e 291da5577f0SRobert Mustacchi32-bit device driver (x86). 292da5577f0SRobert Mustacchi.It Pa /kernel/drv/amd64/i40e 293da5577f0SRobert Mustacchi64-bit device driver (x86). 294da5577f0SRobert Mustacchi.It Pa /kernel/drv/i40e.conf 295da5577f0SRobert MustacchiDriver configuration file. 296da5577f0SRobert Mustacchi.El 297da5577f0SRobert Mustacchi.Sh SEE ALSO 298da5577f0SRobert Mustacchi.Xr dladm 1M , 299da5577f0SRobert Mustacchi.Xr snoop 1M , 300da5577f0SRobert Mustacchi.Xr driver.conf 4 , 301da5577f0SRobert Mustacchi.Xr dlpi 7P 302