opnsense / opnsense/src

[networking] ix driver: X520 82599ES SFP+ links fail to establish after boot on FreeBSD 14.2 — ifconfig down/up cycle required

Open
#286 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

support
Dominant language
C
Stars
505
Forks
202
PR merge metrics
No merged PRs in 30d

Description

Important notices

Describe the bug
On OPNsense 26.1.5 (FreeBSD 14.2), an Intel X520 82599ES dual-port SFP+ NIC fails
to establish a physical link after boot, despite the interfaces being present and
hw.ix.unsupported_sfp=1 being correctly set in /boot/loader.conf.local. A manual
ifconfig down/up cycle on the affected interface immediately resolves the issue and
brings the link up at full 10Gbase-SR speed.

Steps to reproduce

  1. Install OPNsense 26.1.5 on hardware with an Intel X520 82599ES dual-port SFP+ NIC
  2. Insert any non-Intel-branded SFP+ modules (tested: FS.com SFP-10GSR-85, Ubiquiti UACC-OM-MM-10G-D, HP 455885-001)
  3. Set hw.ix.unsupported_sfp=1 in /boot/loader.conf.local
  4. Connect fibre patch lead between X520 SFP+ port and a 10G switch
  5. Reboot
  6. Observe: ix0/ix1 show status: no carrier, no link state events in dmesg

Expected behavior
Both ix0 and ix1 should establish link normally after boot without manual intervention.

Actual behavior
Both ports show status: no carrier after every boot. MAC stats show
local_faults incrementing and total_pkts_rcvd accumulating but good_pkts_rcvd: 0.
Running ifconfig ix0 down && sleep 2 && ifconfig ix0 up immediately brings
the link up at 10Gbase-SR full-duplex.

Workaround
rc.syshook script at /usr/local/etc/rc.syshook.d/start/99-ix0-init.sh:
#!/bin/sh
sleep 10
ifconfig ix0 down
sleep 2
ifconfig ix0 up

Boot dmesg (relevant excerpt)
ix0: <Intel(R) X520 82599ES (SFI/SFP+)> ... at device 0.0 on pci1
ix0: Unsupported SFP+ module detected!
ix0: IFDI_ATTACH_PRE failed 5
device_attach: ix0 attach returned 5
ix0: <Intel(R) X520 82599ES (SFI/SFP+)> ... at device 0.1 on pci1
ix0: Using 2048 TX descriptors and 2048 RX descriptors
ix0: Ethernet address: f8:f2:1e:42:df:dd
ix0: eTrack 0x000161c1

Tunable note
hw.ixgbe.unsupported_sfp=1 (old name) is silently ignored on FreeBSD 14.2.
Correct tunable is hw.ix.unsupported_sfp=1. Documentation should be updated.

Version where bug first appeared: OPNsense 26.1.5
Last version where bug did NOT exist: Unknown — first deployment on this hardware

Environment
OPNsense 26.1.5 (amd64) / FreeBSD 14.2
NIC: Intel X520 82599ES (SFI/SFP+) dual port, eTrack 0x000161c1
PCI: vendor=0x8086 device=0x10fb subvendor=0x8086 subdevice=0x0003
SFP+ modules tested: FS.com SFP-10GSR-85, Ubiquiti UACC-OM-MM-10G-D, HP 455885-001
Cable: OM3 50/125 multimode LC UPC duplex
Switch: Ubiquiti Enterprise 8 (10G SFP+ ports)
Hardware: Dell OptiPlex 9020 SFF, Intel i5-4590, 16GB RAM

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the ix driver behavior described in the boot dmesg, especially the unsupported-SFP handling and the IFDI_ATTACH_PRE failure, then reproduce the boot failure on an X520 with hw.ix.unsupported_sfp=1. Compare startup with the reported ifconfig down/up workaround; done means both ix0 and ix1 establish 10Gbase-SR link after boot without manual intervention.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
networking, operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.