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:
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.
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:
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.