XDP depends on drivers implementing the RX hook and set-up API. Adding driver support is fairly easy, unless it requires changing the driver’s memory model (which is often the case).

Mellanox: mlx4

The first driver implementing XDP were the Mellanox mlx4 driver. The corresponding NIC is called ConnectX-3 and ConnectX-3 pro. These NICs run Ethernet at 10Gbit/s and 40Gbit/s.

Mellanox: mlx5

The Mellanox driver mlx5 support XDP since kernel v4.9, but kernel v4.10 is recommended as some minor fixes got applied.

These NICs run Ethernet at 10G, 25G, 40G, 50G and 100Gbit/s. They are called ConnectX-4 and ConnectX-4-Lx (Lx is limited to max 50G or 2x 25G).

Netronome: nfp

Driver: nfp Kernel release: v4.10


Driver: virtio-net Kernel release: v4.10

Cavium/Qlogic: qede

Driver: qede Kernel release: v4.10

Cavium: thunder

Driver: thunder/nicvf
  • Kernel release: v4.12

Broadcom: bnxt

Driver: bnxt
  • Kernel release: v4.12

Intel: ixgbe

Driver: ixgbe
  • Kernel release: v4.12