Menu

#494 igc(4): Wake on LAN not working with Intel I226-V

14.3.0.5
open
nobody
None
2
2026-07-27
2026-07-27
ID Tent
No

This is a bug, or missing a few lines of code, in the kernel.

The upstream bug and the fix is noted here:
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=282140

Summary:

SYMPTOMS:
WOL works when shutting down from BIOS, but does not work after "shutdown -p now"
from FreeBSD. ifconfig shows WOL_MAGIC in options, but the machine never powers
on when a magic packet is sent.

ROOT CAUSE:
Two issues were found in the igc driver:

  1. igc_get_wakeup() never sets IGC_WUFC_MAG (magic packet bit). As a result,
    igc_enable_wakeup() always jumps to the pme: label without arming the NIC
    for magic packet wakeup, even though WOL_MAGIC appears in ifconfig output.

  2. The PHY Power Management register (IGC_I225_PHPM) has DIS_100_D3,
    DIS_1000_D3, and DIS_2500_D3 bits set on shutdown, which disables all
    link speeds in D3 state and prevents the NIC from receiving magic packets.

FIX:

  • Always set IGC_WUFC_MAG in igc_get_wakeup()
  • Clear DIS_100_D3, DIS_1000_D3 and DIS_2500_D3 bits in the PHPM register
    inside igc_enable_wakeup()

I started down the path of compiling my own kernel with a patch for Xigmanas,
but although I was able to compile a generic kernel with modified source code,
I haven't gotten as far as booting and testing with it as I run an embedded version,
and I don't know what other kernel changes are rolled into the Xigmanas kernel.

cheers.

Discussion


Log in to post a comment.

MongoDB Logo MongoDB