Menu

NIC Device Driver Tuning

March 1, 2025

NIC Device Drivers

Often the version of the device driver that comes with your Linux distribution is an older version, and may not support all the latest features. This page has info on updating your device drivers.

To find your current driver version, do: 

ethtool -i ethN

mlx5_core driver (NVIDIA/Mellanox) Updates

The latest drivers are available at: https://developer.nvidia.com/doca-downloads

  • Here is the updated driver for Ubuntu 22.04

New driver features to try out (ConnectX-7 only): 

DOCA_v2.10.0 (released Feb 2025) of the NVIDIA 'doca-ofed' driver now supports Hardware Generic Receive Offload (GRO) (previous versions of the driver were sender-side only). As described in the release notes: "Hardware Generic Receive Offload (GRO) reduces CPU overhead and improves throughput by offloading the task of reassembling incoming network packets from the CPU."

To set this, do:

/usr/sbin/ethtool -K ethN rx-gro-hw on

Note that this only works if your ring buffer size is no more than 2K, and in fact the default ring buffer size of 1024 appears to be optimal with this version of the driver. 

With rx-gro-hw enabled, the table below shows throughput improvement between 2 ESnet test hosts on a LAN. WAN throughput is not impacted, as the bottleneck is on the sender. 

RX GRO HW setting 1500B MTU 9000B MTU
off (default) 20 Gbps 41 Gbps
on  36 Gbps 63 Gbps

Note that this version of the driver shows up in ethtool -i as:

driver: mlx5_core
version: 25.01-0.6.0 

You'll also want to make sure your firmware is up to date. This is easy to do with the mlxup tool. 

Other drivers:

If you have details on other drivers, please email us with details, and we'll add that info here.