Venice S Allowing Unsupported SFP+ in Cent OS / OL84

Faizal Iqbal -

Latest update at the bottom, Method 3.

Method 1

Query the Intel Drivers to the status of Unsupported SFPs :

# modinfo -p ixgbe | grep -i unsupported
allow_unsupported_sfp:Allow unsupported and untested SFP+ modules on 82599 based adapters, default 0 = Disable (array of int)


[Presented below the 2x 10Gbe on Mainboad with no 10Gbe SFPs Plugged in]
# ip a

4: eno1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000link/ether e4:43:4b:50:0e:08 brd ff:ff:ff:ff:ff:ff
5: eno2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether e4:43:4b:50:0e:0a brd ff:ff:ff:ff:ff:ff


[Presented below the 2x 10Gbe on Mainboad with ONE 'incompatible' Finisar FTLX8571D3BCL SFPs Plugged in eno1] (Note 4:eno1 is missing)

# ip a

3: eno4: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000 link/ether e4:43:4b:50:0e:0d brd ff:ff:ff:ff:ff:ff inet 10.0.0.8/24 brd 10.0.0.255 scope global eno4 valid_lft forever preferred_lft forever

missing eno1
5: eno2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether e4:43:4b:50:0e:0a brd ff:ff:ff:ff:ff:ff


[Lets Inspect what happened : DMESG for 'failed']
# dmesg | grep failed
[2329009.921114] ixgbe 0000:01:00.0: failed to initialize because an unsupported SFP+ module type was detected.


[Testing : Override in the Intel Driver]
We will now confirm whether this issue is due to the unsupported sfp+. We will add a parameter “options ixgbe allow_unsupported_sfp=1” to the ixgbe modue whoess path is :

“/etc/modprobe.d/ixgbe.conf”. The commands is as follows:

1. [root@venice-s824-XXXX ~]# vim /etc/modprobe.d/ixgbe.conf [ which now opens a blank text editor ]

2. options ixgbe allow_unsupported_sfp=1 [add this parameter ]

# cat /etc/modprobe.d/ixgbe.conf
options ixgbe allow_unsupported_sfp=1

3. # rmmod ixgbe; modprobe ixgbe [ we then remove the module and reload it again with these commands ]

4. # ip a [to check whether the missing interface with the uplink is showing]

14: eno1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether e4:43:4b:50:0e:08 brd ff:ff:ff:ff:ff:ff
15: eno2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether e4:43:4b:50:0e:0a brd ff:ff:ff:ff:ff:ff

[Make Permanent  : Override in the Intel Driver]
If the above steps are successful and the missing interface is showing, then we can confirm that the issue is unsupported SFP+. However, the above test is not permanent and will be flushed out once rebooted.

Fix the issue permanently
Perform the below commands, add the parameter to the grub file and update the grub file.

1. # vim/etc/default/grub

2. GRUB_CMDLINE_LINUX=”ixgbe.allow_unsupported_sfp=1″ [adding the parameter to the line GRUB_CMDLINE_LINUX=”” ]

3. # grub-mkconfig -o /boot/grub/grub.cfg [ upgrading the grub with the command]

or

grub2-mkconfig -o /boot/grub2/grub.cfg

4. [root@venice-s824-XXXX ~]# rmmod ixgbe && modprobe ixgbe

5. Finally, reboot the system and see that the interface comes up right.

Hence our issue with the unsupported SFP+ is solved..!!!

 

Additional notes:

If more than one port such as eno1 AND eno2 on a Dell server, use this:

options ixgbe allow_unsupported_sfp=1,1

 


Method 2

We have seen when using only Method 1 the ports doesn't come up after a reboot, Method 2 provides for a reload and restart of the driver and ports after boot is completed.

Tested on Venice S Gen 2 (Dell PowerEdige R740), eno1 and eno2 are 10Gb SFPs slaved to bond0.

Create these files:

# cat /etc/modprobe.d/ixgbe.conf
options ixgbe allow_unsupported_sfp=1,1
# cat /usr/local/bin/ixgberestart.sh
#!/bin/bash
# Restart network service to allow unsupported SFPs for the 10Gb to bond0
# Allow unsupported SFPs: /etc/modprobe.d/ixgbe.conf
# systemctl to run this script on boot: /etc/systemd/system/ixgberestart.service
ifdown eno1;ifdown eno2;ifdown bond0
rmmod ixgbe;modprobe ixgbe
systemctl restart network
# cat /etc/systemd/system/ixgberestart.service
[Unit]
Description=Run script at startup after all systemd services are loaded
After=default.target

[Service]
Type=simple
RemainAfterExit=no
ExecStart=/usr/local/bin/ixgberestart.sh
TimeoutStartSec=0

[Install]
WantedBy=default.target

Run these commands:

# systemctl daemon-reload
# systemctl enable ixgberestart.service
# reboot

 


Method 3

A stream-lined version of Method 2.  It doesn't use ixgberestart.sh and ixgbe.conf.

Tested in CentOS 77 and OL84. 

Note on allow_unsupported_sfp, it is now =1 instead of =1,1 (fails with OL84).

# cat /etc/systemd/system/ixgberestart.service
[Unit]
Description=Reload ixgbe Drivers

[Service]
User=root
Type=oneshot
ExecStartPre=-/sbin/rmmod ixgbe
ExecStart=-/sbin/modprobe ixgbe allow_unsupported_sfp=1

[Install]
WantedBy=multi-user.target

Run these commands:

# systemctl daemon-reload
# systemctl enable ixgberestart.service
# reboot
Have more questions? Submit a request

0 Comments

Please sign in to leave a comment.