Debian: IXGBE Driver - Allow unsupported SFP+ Modules on Intel X520 Cards

debian Sep 27, 2019

The Server hardware we use for Proxmox deployments often has Intel X520 (ixgbe driver) or X710 (i40e driver) cards installed. These provide for several SFP+ ports required for 10 Gigabit connectivity.

Enterprise vendors such as DELL and Intel provide compatibility lists for SFP transceivers that are supported by their network adapters. Often times adapter firmware requires specifically encoded modules, preventing any unsupported modules from being initialized.

DELL 669869-004 DELL X520/I350 DAUGHTER CARD 10GE of a DELL PowerEdge R620

One way to work around this problem is to use generic SFP transceivers/modules from FS.com. Then, using the FS Box all generic modules can be (re-)encoded on-the-fly to work with any enterprise gear including such from Juniper, DELL and Cisco.

Trying to use unsupported modules with an X520 under Debian

But... what to do in case you don't have access to an FS Box?

root@XXXX-pveX:~# lsb_release -a
Distributor ID:	Debian
Description:	Debian GNU/Linux 9.9 (stretch)
Release:	9.9
Codename:	stretch
Verifying Debian version using LSB release utility.

Well, at least in case of Linux and an Intel X520 the answer is simple; you tell the IXGBE driver to allow unsupported modules.

root@XXXX-pveX:~# echo "options ixgbe allow_unsupported_sfp=1" > /etc/modprobe.d/ixgbe.conf:
root@XXXX-pveX:~# depmod -a
root@XXXX-pveX:~# update-initramfs -u -k `uname -r`
Enable unsupported SFP transceivers to be used in SFP+ ports of Intel X520 10G network adapter.

The above does the following:

  • Set the allow_unsupported_sfp option for the IXGBE driver
  • Tell the kernel to reload/probe all kernel modules applying the changes
  • Update the initial ramdisk for the currently used kernel (so changes are loaded during boot)

There's no need to repeat any of the steps outlined above when installing new kernel versions (e.g. as part of system updates). The initial ramdisk of any new kernel will automatically include the specified options for the ixgbe driver.

Similar options are available for other kernel modules/drivers! To get a full list of available options of a specific driver you may use the modinfo command.

root@XXXX-pveX:~# modinfo ixgbe | egrep '^(file|version|descr|parm)'
filename:       /lib/modules/4.15.18-16-pve/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko
version:        5.1.0-k
description:    Intel(R) 10 Gigabit PCI Express Network Driver
parm:           max_vfs:Maximum number of virtual functions to allocate per physical function - default is zero and maximum value is 63. (Deprecated) (uint)
parm:           allow_unsupported_sfp:Allow unsupported and untested SFP+ modules on 82599-based adapters (uint)
parm:           debug:Debug level (0=none,...,16=all) (int)

Jan Dennis Bungart

A network & systems engineer, advocate of free and open source software and a supporter of net neutrality.