i40e —
Intel 710/722 Ethernet Device Driver
The i40e driver is a GLDv3, multi-threaded, clonable,
  loadable device driver that supports the Data Link Provider Interface,
  dlpi(7P). The i40e driver supports
  the Intel 710 and 722 Ethernet Controller families of networking interface
  cards which support speeds of 1 GbE, 2.5 GbE, 5 GbE, 10 GbE, 25 GbE, and 40
  GbE.
In addition to basic device initialization and the sending and
    receiving of frames, it supports the following features:
  - Jumbo frames up to 9710 bytes.
 
  - Promiscuous access via snoop(1M) and
      dlpi(7P)
 
  - IPv4 Checksum Offload
 
  - TCP, UDP, and SCTP checksum offload
 
  - IPv4 and IPv6 TCP Segmentation offload
 
At this time, the i40e driver does not
    enable the use of energy efficient Ethernet (EEE) or support the use of flow
    control through hardware pause frames.
For each device supported by the i40e installed in the
  system, a character-special file will be created. This file supports the Data
  Link Provider Interface (DLPI) which is documented in
  dlpi(7P). For most consumers, the use of
  libdlpi(3LIB), is recommended.
Each instance is assigned a unique ascending integer identifier. A
    device which has multiple ports may appear to the system as separate
    instances. The system does not provide a guarantee on how these will be
    presented. Using this instance identifier, one can determine the exact
    character-special file to open. For example, the first instance enumerated
    in the system, with id 0, would be named i40e0. It exists
    in the file system at /dev/net/i40e0.
The i40e driver always performs auto-negotiation and
  depending on the model may negotiate to 40 Gbps, 25 Gbps, 10 Gbps, or 1 Gbps.
  At this time, the driver requires the use of auto-negotiation.
The i40e driver is managed by the
    dladm(1M) utility. dladm(1M) is the
    preferred interface for setting all properties. While
    driver.conf(4) based configuration is possible,
    dladm(1M) is recommended. The i40e
    driver may be joined into an aggregation based on the link aggregation
    control protocol (LACP) through dladm(1M).
The device supports the following properties which may be tuned through its
  driver.conf file, /kernel/drv/i40e.conf. Most of these
  properties cannot be changed after the device has been started. The device is
  started in response to a DLPI consumer opening the device and binding to it.
  This happens when an IP interfaces is plumbed or another
  dlpi(7P) consumer such as snoop(1M) or an
  LLDP daemon is started.
Some properties may be tuned at runtime with the
    dladm(1M) utility. Properties that can be will have the
    name of the dladm property called out explicitly.
These properties are not considered stable at this time. They may
    change and should not be relied on. They are considered
    Volatile. It is not expected that administrators of the
    system will have to tune these values.
  - default_mtu
 
  - 
    
Minimum: 1500 | Maximum:
      9710 | Runtime Property: mtu
    The default_mtu property determines the
      starting MTU of the various device instances. Note that the device's MTU
      also determines the upper bound of the MTU of all VNICs created over the
      device. The default MTU is 1500.
   
  - mr_enable
 
  - 
    
Minimum: 0 | Maximum:
      1
    The mr_enable property determines
      whether or not support for multiple rings is enabled for the device. The
      default is always to enable them. It is not recommended to to disable
      them.
   
  - rx_num_groups
 
  - 
    
Minimum: 1 | Maximum:
      32
    The rx_num_groups property determines
      the number of receive mac groups provided by the driver. Each group can
      handle all unicast traffic for a single MAC address, more groups means
      more unicast traffic that can be steered by hardware. However, more groups
      also means more demand for kernel memory. If you are not making heavy use
      of VNICs, or do not need the efficiency gains of hardware steering, then
      reducing this number can reduce kernel memory taken by
      i40e.
   
  - rx_ring_size
 
  - 
    
Minimum: 64 | Maximum:
      4096
    The rx_ring_size property determines
      the number of descriptors that will be used in each receive ring on the
      card. Administrators should not normally need to tune this value. Hardware
      requires that the ring size be a multiple of 32. The system will round up
      the set value to the nearest multiple of 32.
   
  - tx_ring_size
 
  - 
    
Minimum: 64 | Maximum:
      4096
    The tx_ring_size property determines
      the number of descriptors that will be used in each transmit ring on the
      card. Administrators should not normally need to tune this value. Hardware
      requires that the ring size be a multiple of 32. The system will round up
      the set value to the nearest multiple of 32.
   
  - tx_resched_threshold
 
  - 
    
Minimum: 8 | Maximum:
      Variable
    The tx_resched_threshold property
      determines the number of descriptors that must be available for a frame to
      be transmitted. The maximum is variable. It is dependent on the value of
      the tx_ring_size property. At least eight descriptors
      must be available for the device to function correctly.
   
  - rx_limit_per_intr
 
  - 
    
Minimum: 16 | Maximum:
      4096
    The rx_limit_per_intr property
      determines the maximum number of packets that will be processed on a given
      ring during a single interrupt. This is done to try and guarantee some
      amount of liveness in the system. It is not expected that administrators
      will have to tune this value.
   
  - tx_hcksum_enable
 
  - 
    
Minimum: 0 | Maximum:
      1
    The tx_hcksum_enable property controls
      whether or not the device enables support for hardware checksumming of
      outgoing packets. The default is to always enable support for this.
      Turning it off will increase latency and decrease throughput when
      transmitting packets, but should be done if a hardware bug is
      suspected.
   
  - rx_hcksum_enable
 
  - 
    
Minimum: 0 | Maximum:
      1
    The rx_hcksum_enable property controls
      whether or not the device enables support for hardware checksumming of
      incoming packets. The default is to always enable support for this.
      Turning it off will increase latency and decrease throughput when
      receiving packets, but should be done if a hardware bug is
      suspected.
   
  - rx_dma_threshold
 
  - 
    
Minimum: 0 | Maximum:
      INT32_MAX | Runtime Property:
      _rx_dma_threshold
    The rx_dma_threshold indicates the size
      in bytes of a received frame, including all of its headers, at which the
      driver should not copy the frame but instead bind DMA memory. By setting
      this property to its minimum, all frames will be processed with DMA
      binding. By setting this property to its maximum, all frames will be
      processed by copying the frame.
   
  - tx_lso_enable
 
  - 
    
Minimum: 0 | Maximum:
      1
    The tx_lso_enable property controls
      whether or not the device enables support for Large Segment Offloand (LSO)
      when transmitting packets. The default is to always enable support for
      this. Turning it off will decrease throughput when transmitting packets,
      but should be done if a hardware bug is suspected.
   
The i40e driver is only supported on
  x86 systems at this time.
  - /dev/net/i40e*
 
  - Per-instance character device.
 
  - /kernel/drv/amd64/i40e
 
  - Device driver (x86)
 
  - /kernel/drv/i40e.conf
 
  - Driver configuration file