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