Regression: Intel E810-XXV (ice0) SFP28-LR fails to establish link after upgrade to 26.7.1_1 (FreeBSD 15.1 base)
Nobody has claimed this yet.
- Dominant language
- C
- Stars
- 505
- Forks
- 202
- PR merge metrics
- No merged PRs in 30d
Description
Environment
- OPNsense 26.7.1_1 (amd64), FreeBSD base 15.1-RELEASE-p1
- Previously working: OPNsense 25.7.3_7, FreeBSD base 14.3-RELEASE-p2
- Hardware: Intel E810-XXV-2 (dual-port SFP28, 25G), PCI passthrough (Proxmox/QEMU, ice0/ice1)
- ice0 (WAN): 25GBase-LR optical SFP28 module, connected directly to ISP fiber (Init7, Switzerland), no intermediate media converter
- ice1 (LAN): 25GBase-CR DAC to a local switch — unaffected, works fine on both OS versions
- NIC firmware unchanged across both OS versions: fw 7.3.4 api 1.7 nvm 4.30 etid 8001b891 netlist 4.2.5000-1.14.0.2b9b23c0 oem 1.3415.0
Problem
After upgrading from 25.7.3_7 to 26.7.1_1, ice0 fails to establish link on every boot:
ice0: All configured link modes were attempted but failed to establish link.
ice0: The device will restart the process to establish link.
ice0: Possible Solution: Check link partner connection and configuration.
ifconfig ice0 shows status: no carrier, and sysctl dev.ice.0.current_speed reports Unknown speed. ice1 on the same card comes up normally.
Troubleshooting performed (all on 26.7.1_1, no effect)
- sysctl dev.ice.0.advertise_speed=0 → rejected, value stays at 128
- sysctl dev.ice.0.advertise_speed=64 (0x40, exact bitmask for 25G, matching the module's only reported supported media 25GBase-LR per ifconfig -m ice0) → explicitly rejected: ice0: User-specified speeds ("0x0040") not supported
- ifconfig ice0 media 25GBase-LR → ifconfig: SIOCSIFMEDIA (media): Operation not supported by device / ice0: Media change is not supported.
- sysctl dev.ice.0.allow_no_fec_modules_in_auto=1 → accepted, no change in link behavior
- Full VM power-cycle (poweroff + start, not just reboot) at the hypervisor level → no change
Workaround
Reverted to the previous ZFS boot environment (25.7.3_7 / FreeBSD 14.3-RELEASE-p2) via bectl activate ; reboot. Link immediately established:
ice0: Link is up, 25 Gbps Full Duplex, Requested FEC: RS-FEC, Negotiated FEC: RS-FEC, Autoneg: False, Flow Control: None
Expected behavior
ice0 should negotiate link at 25G with RS-FEC on the LR optic, as it did prior to the FreeBSD 15.1 base upgrade, since the module, firmware, and physical link partner are unchanged.
Suspected cause
Looks like a regression in the FreeBSD 15.1 ice(4) driver's link/FEC capability negotiation specifically for SFP28 optical (LR) modules — the DAC-connected port (ice1) on the same card and firmware is unaffected, which points at driver-side link mode/FEC negotiation logic rather than hardware or firmware.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing the failure through the ice(4) driver entry points, using ifconfig ice0 and sysctl dev.ice.0 as described. Compare the 26.7.1_1 and 25.7.3_7 behavior around SFP28-LR link and FEC capability negotiation; done means ice0 establishes 25G with RS-FEC while the unaffected ice1 behavior remains unchanged.
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
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100