Intel E810XXV 25G network card (ice driver) no connection after resume from suspend

Hi all,

My Intel E810XXV 25G nic does not re-establish a connection once resuming from suspend (sleep).

$ lspci -vv

11:00.0 Ethernet controller: Intel Corporation Ethernet Controller E810-XXV for SFP (rev 02)
        Subsystem: Intel Corporation Ethernet Network Adapter E810-XXV-2
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0, Cache Line Size: 64 bytes
        Interrupt: pin A routed to IRQ 24
        IOMMU group: 21
        Region 0: Memory at 850000000 (64-bit, prefetchable) [size=32M]
        Region 3: Memory at 856000000 (64-bit, prefetchable) [size=64K]
        Expansion ROM at b0200000 [disabled] [size=1M]
        Capabilities: <access denied>
        Kernel driver in use: ice
        Kernel modules: ice

the link is shown as state: down:

$ inxi -Fxz

  Device-3: Intel Ethernet E810-XXV for SFP driver: ice v: kernel port: N/A
    bus-ID: 11:00.0
  IF: enp17s0f0np0 state: down mac: <filter>
  Device-4: Intel Ethernet E810-XXV for SFP driver: ice v: kernel port: N/A
    bus-ID: 11:00.1
  IF: enp17s0f1np1 state: down mac: <filter>

also on ethtool, Link detected: no:

$ sudo ethtool enp17s0f0np0

Settings for enp17s0f0np0:
        Supported ports: [ FIBRE ]
        Supported link modes:   1000baseT/Full
                                10000baseT/Full
                                25000baseCR/Full
                                25000baseSR/Full
                                1000baseX/Full
                                10000baseSR/Full
                                10000baseLR/Full
        Supported pause frame use: Symmetric
        Supports auto-negotiation: No
        Supported FEC modes: None
        Advertised link modes:  25000baseSR/Full
                                10000baseSR/Full
        Advertised pause frame use: No
        Advertised auto-negotiation: No
        Advertised FEC modes: None
        Speed: 10000Mb/s
        Duplex: Full
        Auto-negotiation: off
        Port: FIBRE
        PHYAD: 0
        Transceiver: internal
        Supports Wake-on: d
        Wake-on: d
        Current message level: 0x00000007 (7)
                               drv probe link
        Link detected: no

One resumed from sleep, I can physically see on the nic that the link and activity lights are blinking. On the switch management side I can also see the link to client is established. So it seems like a software/driver issue to me.

A system reboot re-establishes the link.

After waking up the system, would

sudo systemctl restart NetworkManager.service

re-establish the network connection?

Now the system doesn’t seem to want to sleep at all, :face_exhaling: . It tries to sleep but then resumes immediately.

From dmesg:

[   40.092653] PM: suspend entry (deep)
...
[   42.584112] mt7921e 0000:0d:00.0: PM: pci_pm_suspend(): mt7921_pci_suspend+0x0/0x220 [mt7921e] returns -12
[   42.584123] mt7921e 0000:0d:00.0: PM: dpm_run_callback(): pci_pm_suspend+0x0/0x170 returns -12
[   42.584128] mt7921e 0000:0d:00.0: PM: failed to suspend async: error -12
[   42.748145] PM: Some devices failed to suspend, or early wake event detected
...
[   42.896331] random: crng reseeded on system resumption
[   42.899600] PM: suspend exit

Ok, I’m able to sleep the system again.
But unfortunately sudo systemctl restart NetworkManager.service does not bring up the link on the E810 nic. It does restart the network on all the other interfaces.