Unsupported SFP+ transceivers on Intel NIC

Hi.

I’m trying to set up SFP+ link on a SuperMicro SYS-1019D-FRN8TP box but my modules aren’t being recognized (both a SFP+ 1310/1270 nm single fiber that our ISP supplied and some SFPs that we had lying around from other projects).

I’m 99% certain that this is simply because the Intel X722 NIC isn’t configured to allow third party SFPs, but I’m not sure how to change it. The usual Linux fix for Intel SFP NICs seems to be to add the modprobe rule “options ixgbe allow_unsupported_sfp=1”, but

  1. I don’t know what the recommended way to add modprobe rules in VyOS is, and
  2. The NIC is using the i40e driver, not the ixgbe driver

(Also, there is already a modprobe file in /etc/modprobe.d/ixgbe-options.conf which contains the allow_unsupported_sfp override for the ixgbe driver)

Does anybody have any suggestions?

Here is the output of show version:

Version:          VyOS 1.4-rolling-202103230217
Release Train:    sagitta

Built by:         autobuild@vyos.net
Built on:         Tue 23 Mar 2021 02:17 UTC
Build UUID:       6d73c9f3-95b4-49d4-9f3b-7cdc063afe2e
Build Commit ID:  30180961225ce0

Architecture:     x86_64
Boot via:         installed image
System type:      bare metal

Hardware vendor:  Supermicro
Hardware model:   SYS-1019D-FRN8TP
Hardware S/N:     A354290X1301173
Hardware UUID:    3b72d000-468b-11ea-8000-3cecef44e298

Copyright:        VyOS maintainers and contributors

The output for show interfaces ethernet eth7 physical:

Settings for eth7:
        Supported ports: [ ]
        Supported link modes:   1000baseKX/Full 
                                10000baseT/Full 
                                1000baseX/Full 
                                10000baseSR/Full 
                                10000baseLR/Full 
        Supported pause frame use: Symmetric
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        Advertised link modes:  1000baseKX/Full 
                                10000baseT/Full 
                                1000baseX/Full 
                                10000baseSR/Full 
                                10000baseLR/Full 
        Advertised pause frame use: No
        Advertised auto-negotiation: Yes
        Advertised FEC modes: Not reported
        Speed: Unknown!
        Duplex: Unknown! (255)
        Port: Other
        PHYAD: 0
        Transceiver: internal
        Auto-negotiation: off
        Supports Wake-on: g
        Wake-on: g
        Current message level: 0x00000007 (7)
                               drv probe link
        Link detected: no
driver: i40e
version: 5.10.24-amd64-vyos
firmware-version: 3.33 0x80001006 1.1747.0
expansion-rom-version: 
bus-info: 0000:b7:00.3
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: yes

Running show interfaces ethernet [nic] transceiver just gives me an error:

Cannot get module EEPROM information: Invalid argument

Hi @asgeirbjarnason,

only the ixgbe module driver has support for the allow_unsupported_sfp option:

cpo@LR1.wue3# modinfo /lib/modules/5.10.27-amd64-vyos/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko
filename:       /lib/modules/5.10.27-amd64-vyos/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko
license:        GPL v2
description:    Intel(R) 10 Gigabit PCI Express Network Driver
author:         Intel Corporation, <linux.nics@intel.com>
alias:          pci:v00008086d000015E5sv*sd*bc*sc*i*
...
alias:          pci:v00008086d000010B6sv*sd*bc*sc*i*
depends:        mdio,xfrm_algo
retpoline:      Y
intree:         Y
name:           ixgbe
vermagic:       5.10.27-amd64-vyos SMP mod_unload modversions
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)
[edit]

Whereas the i40e driver lacks such an option thus this won’t work on this card - besides a lot of other flaws with NICs using this driver.

cpo@LR1.wue3# modinfo /lib/modules/5.10.27-amd64-vyos/kernel/drivers/net/ethernet/intel/i40e/i40e.ko
filename:       /lib/modules/5.10.27-amd64-vyos/kernel/drivers/net/ethernet/intel/i40e/i40e.ko
license:        GPL v2
description:    Intel(R) Ethernet Connection XL710 Network Driver
author:         Intel Corporation, <e1000-devel@lists.sourceforge.net>
alias:          pci:v00008086d0000158Bsv*sd*bc*sc*i*
...
alias:          pci:v00008086d00001572sv*sd*bc*sc*i*
depends:
retpoline:      Y
intree:         Y
name:           i40e
vermagic:       5.10.27-amd64-vyos SMP mod_unload modversions
parm:           debug:Debug level (0=none,...,16=all), Debug mask (0x8XXXXXXX) (uint)


Christian

Ah, so there’s no way to allow third party SFP+ modules on this NIC?

(What flaws, BTW?)

Hi @c-po, we just added a Intel X520 NIC to the host which uses the ixgbe driver and recognizes the SFP+ module. Thank you so much for the information!

Not quite - I ran into this issue on a Dell X710-DA4 LOM for an R730XD, and there is a fix, but it requires patching a few bytes in the EEPROM: GitHub - bibigon812/xl710-unlocker: Unlock Intel XL710 / X710 cards for use with any SFP+

Not sure if that’s still useful to you, given how long it’s been, but this came up pretty close to the top of search results for “vyos ixgbe unsupported SFP” so hopefully it helps someone :slight_smile: