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