MLX4_EN(7)

Name
mlx4_en - Mellanox ConnectX 10GigE device driver

SYNOPSIS
insmod mlx4_core.ko; insmod mlx4_en.ko [<parameter>= <value>]
modprobe mlx4_en [<parameter>= <value>]

Description
The driver is intended for adapter cards that identify on the PCI bus as having one of the following PCI Device IDs (decimal): 25408, 25418, 25448, 26418, 26448, 26428, 25458, 26458, 26468, 26438, 26478 and 26488.

The driver includes 2 kernel modules: mlx4_core and mlx4_en.

mlx4_core Handles low-level functions like device initialization and firmware commands processing. It also controls resource allocation so that InfiniBand, Ethernet and FC functions can share a device without interfering with each other.

mlx4_en Handles Ethernet specific functions and plugs into the netdev mid-layer.

Driver Capabilities
The MLNX_EN driver release exposes the following capabilities:

- Single/Dual port

- Up to 16 Rx queues per port

- 16 Tx queues per port

- Rx steering mode: Receive Core Affinity (RCA)

- MSI-X or INTx

- Adaptive interrupt moderation

- HW Tx/Rx checksum calculation

- Large Send Offload (i.e., TCP Segmentation Offload)

- Large Receive Offload

- IP Reassembly Offload

- Multi-core NAPI support

- VLAN Tx/Rx acceleration (HW VLAN stripping/insertion)

- HW VLAN filtering

- HW multicast filtering

- Ethtool support

- Net device statistics

Software Dependencies
The mlx4_en driver cannot coexist with OFED software on the same machine. Hence, when installing MLNX_EN all OFED packages must be removed.

Module Parameters
The driver has several module parameters. The parameters can be set during driver load in two ways:

1. Add the parameter and its value when loading the driver:
    modprobe mlx4_en <parameter>=<value>

2. Add a line to  /etc/modprobe.conf:
    options mlx4_en <parameter>=<value>

The parameters are:

inline_thold: The max packet size in (bytes) for which the packet is copied to the send buffer.
    Range is 0 to 104, default value is 104.

num_rx_rings: Total number of RX Rings (default 16, range 1-16, power of 2)

udp_rss: Enable RSS for incomming UDP traffic or disabled (0) (enabled by default for support devices)

num_lro: Number of different LRO sessions that can be held at the same time for each ring.
    Range is 0 (LRO disabled) to 32. The default value is 32 sessions.

use_tx_polling: Use polling for TX processing (default 1), otherwise TX completions are handled from interrupt context.

enable_sys_tune: Tune the cpu's for better performance (default 0)

Ethernet Driver Usage and Configuration
To assign an IP address to the interface run: #> ifconfig eth<x> <ip>, where 'x' is the OS assigned interface number.

To check driver and device information run:
    #> ethtool -i eth<x>

Example:
    #> ethtool -i eth2

driver: mlx4_en (MT_0DD0120009_CX3)

version: 1.5.7 (Nov 2011)

firmware-version: 2.10.2000

bus-info: 0000:1a:00.0

To query stateless offload status run:
    #> ethtool -k eth<x>

To set stateless offload status run:
    #> ethtool -K eth<x> [rx on|off] [tx on|off] [sg on|off] [tso on|off] [lro on|off]

To query interrupt coalescing settings run:
    #> ethtool -c eth<x>

By default, the driver uses adaptive interrupt moderation for the receive path, which adjusts the moderation time to the traffic pattern. To enable/disable adaptive interrupt moderation use the following command:
    #>ethtool -C eth<x> adaptive-rx on|off

Above an upper limit of packet rate, adaptive moderation will set the moderation time to its highest value. Below a lower limit of packet rate, the moderation time will be set to its lowest value. To set the values for packet rate limits and for moderation time high and low values, use the following command:
    #> ethtool -C eth<x> [pkt-rate-low N] [pkt-rate-high N] [rx-usecs-low N] [rx-usecs-high N]

To set interrupt coalescing settings when adaptive moderation is disabled, use:
    #> ethtool -C eth<x> [rx-usecs N] [rx-frames N]

Note: usec settings correspond to the time to wait after the *last* packet is sent/received before triggering an interrupt.

To query pause frame settings run:
    #> ethtool -a eth<x>

To set pause frame settings run:
    #> ethtool -A eth<x> [rx on|off] [tx on|off]

To query ring size values run:
    #> ethtool -g eth<x>

To modify rings size run:
    #> ethtool -G eth<x> [rx <N>] [tx <N>]

RX ring size values are 128 to 8192, default is 1024. TX ring size values are 64 to 8192, default is 1024.

To obtain additional device statistics run:
    #> ethtool -S eth<x>

To perform a self diagnostics test run:
    #> ethtool -t eth<x>

AUTHOR
Yevgeny Petrilin - yevgenyp@mellanox.com

SEE ALSO
ifconfig(8), insmod(8), modprobe.conf(5), ethtool(8).