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