[Solved] Intel I226-V (igc) NIC wedging intermittently on OPNsense 26.1 — what fixed it
EDIT: Because someone keeps getting on my case about being "ambiguous"
None of this is the fault of opnsense.
This was a post about my experience with implementing opnsense on a micro PC I had that I added a second NIC into and was a learning experience for me. This is my journey and I needed to rethink how I thought about things and not blame the software but blame myself for thinking it would just go in simply.
Running OPNsense 26.1.8 on a Dell OptiPlex 7060 Micro (i5-8500T, 8GB). WAN on the onboard Intel I219-LM (em0). LAN on an Intel I226-V 2.5GbE M.2 add-in card (igc0), installed in the A+E key slot that formerly held the wireless card. I226-V connected to a 1gb managed switch.
Recently installed a mini pc with opnsense and changed Deco mesh system to AP mode. Kept having network issues with drop outs and internet failure and it would come back. Sometimes need a whole opnsense restart.
Thought it was some other configuration I was battling where the old mesh network nodes were still using the old ip of main node as a management ip. Fixed that, but still system was not stable. Would work for a few days and then lots of issues. Uptime kuma kept reporting issues yet some machines worked and others didn’t.
Was ready to tear it all out and give up then decided to dig in.
After fixing that first issue ruled out ARP conflicts, keepalived flapping, pf state exhaustion, switching loops, duplex mismatch, cable faults, WAN/ISP issues, mbuf exhaustion, NAT table limits. The onboard em0/I219 had zero issues all day — every problem was specific to igc0.
Root cause: The I226-V NIC wedging. Confirmed by OPNsense system logs showing igc0: link state changed to DOWN/UP flaps coinciding exactly with the outage windows. The wedge appears triggered by a combination of PCIe power management parking the M.2 lane (ASPM), link-power features on the NIC itself (EEE), and the 2.5G negotiation being less stable than 1G on this card in this slot.
FIX:
- Lock LAN to 1000baseT full-duplex
- Disable EEE on igc0 — System → Settings → Tunables: add dev.igc.0.eee_control = 1. Note: on the igc driver, 1 = disabled and 0 = enabled. The polarity is inverted from what you’d expect. Apply via GUI, not loader.conf — the per-instance knob doesn’t reliably read from loader.conf on this driver.
- BIOS — disable ASPM
- BIOS — disable Deep Sleep
- BIOS — disable C-States
- BIOS — Block Sleep
I might not have need 4-6 but I was basically turning off everything with power management. Hardcoding the speed was probably what the biggest issue was but EEE and ASPM settings where noted as well.
After applying all of the above, zero gateway drops overnight under sustained automated load (~40GB+ throughput). VPN tunnels stayed up. Previously the interface was wedging multiple times per day.
One gotcha on the Dell Micro Bios. Don’t disable wlan/WiFi settings. It shuts off the slot where I put the adapter. Then have to assign interfaces again on boot.
Card details for reference: I226-V device ID 0x125c, rev 0x04 (B3 stepping, not the known-defective early stepping), EEPROM V2.17-0. The wedge appears to be a documented behavior on this silicon under PCIe power management, not a defective card.