Wake-on-LAN not working on "igc" driver - NIC I225-V

Hello everyone

I have a FreeBSD server that has "igc" interfaces, and in theory they are capable of using WOL. When using tcpdump -i <if> -x port 9 when the server is powered on I see the magic packets arrive. I've checked everything BIOS related to WOL, and when the machine is powered off, the network interface lights are still on. From my workstation I can send WOL packages to a Linux server and it wakes up. My workstation is a Linux Ubuntu and I used the command wakeonlan, however I also tried waking up the FreeBSD server from another FreeBSD machine using wake, and nothing.

I've checked everything I could find, but it doesnt seem to want to wake up. I've set ifconfig_igc0="inet 172.16.0.4 netmask 24 wol" on /etc/rc.conf, and I've also set the sysctl dev.igc.0.wake=1 and set it permanent on /etc/sysctl.conf.

The server is running 14.1-RELEASE, and uses a GENERIC kernel.

Here are the capabilities of the network interface, it does detail WOL_UCAST, WOL_MCAS and WOL_MAGIC:

Code:
$> ifconfig -m igc0
igc0: flags=1008843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,LOWER_UP> metric 0 mtu 1500
        options=4e43fbb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,LRO,WOL_UCAST,WOL_MCAST,WOL_MAGIC,VLAN_HWTSO,RXCSUM_IPV6,TXCSUM_IPV6,HWSTATS,MEXTPG>
        capabilities=4f43fbb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,LRO,WOL_UCAST,WOL_MCAST,WOL_MAGIC,VLAN_HWTSO,NETMAP,RXCSUM_IPV6,TXCSUM_IPV6,HWSTATS,MEXTPG>
        ether 64:62:66:21:dd:b3
        inet 172.16.0.4 netmask 0xc0000000 broadcast 191.255.255.255
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
        supported media:
                media autoselect
                media 2500Base-T
                media 1000baseT
                media 1000baseT mediaopt full-duplex
                media 100baseTX mediaopt full-duplex
                media 100baseTX
                media 10baseT/UTP mediaopt full-duplex
                media 10baseT/UTP
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>

Is there something I might be missing? I am happy to share any more information needed.
 
The motherboard's BIOS also needs to support WOL.
And needs to be activated, too, of course.
Its not the network adapter which switches on your computer.
It only tells the motherboard to switch the power supply (fully) on
.

Sorry. Read too quick. Missed that point.
 
Wol is a very tricky thing. Try to boot your machine with a Ubuntu stick in "live mode" and be sure that you have activated wol on this interface from this OS. Then, shutdown and try a wol. If the machine wakes, it's probably a bug in the FreeBSD driver. If not, you missed something in the BIOS settings or elsewhere.
 
Try to boot your machine with a Ubuntu stick in "live mode" and be sure that you have activated wol on this interface from this OS. Then, shutdown and try a wol.
Well, this took an interesting turn.

Booted into Ubuntu (KDE Neon distro to be exact), then ran the command sudo ethtool -s <ifname> wol g which according to the ethtool manpage, turns on WOL Magic Packet, then powered off the machine using sudo poweroff.

Ran the same command as I always did from my workstation, meaning wakeonlan <mac-address> and the machine powered on! So its either I'm doing something wrong on FreeBSD, or there is a bug on the "igc" driver :(

I know almost nothing about FreeBSD development, but I am happy to assist in any way I can and test out patches.

Here are the settings that Ubuntu sees on the network interface

Code:
$> sudo ethtool enp87s0
Settings for enp87s0:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
                                2500baseT/Full
        Supported pause frame use: Symmetric
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
                                2500baseT/Full
        Advertised pause frame use: Symmetric
        Advertised auto-negotiation: Yes
        Advertised FEC modes: Not reported
        Speed: 1000Mb/s
        Duplex: Full
        Auto-negotiation: on
        Port: Twisted Pair
        PHYAD: 0
        Transceiver: internal
        MDI-X: off (auto)
        Supports Wake-on: pumbg
        Wake-on: g
        Current message level: 0x00000007 (7)
                               drv probe link
        Link detected: yes

$> sudo ethtool -i enp87s0
driver: igc
version: 6.5.0-41-generic
firmware-version: 2017:888d
expansion-rom-version:  
bus-info: 0000:57:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: yes
 
Make a PR with all elements,
Yep, also the precise i225 that you have, including its revision; there seems to be a lot of difference between various revisions of the i225. Something like pciconf -lv | grep -B 4 ethernet

Couldn't hurt to specify exactly what motherboard and BIOS version you are using. Check your BIOS version too. Unfortunately messages like Wake on Lan not working on driver higher than 1.0.1.4 for Intel l225-V do not inspire much confidence, even though you got your i225 to work with the "aid of Ubuntu".
 
Back
Top