markord n00b
Joined: 01 Jan 2014 Posts: 3
|
Posted: Fri Dec 08, 2023 5:04 pm Post subject: I219-LM networking failure on resume from suspend to RAM |
|
|
While setting up a new Dell Optiplex Micro 7010 I have a problem that the NIC does not appear to work after resuming from suspend to RAM.
After resuming, everything seems to look fine (ifconfig shows ens0p31f6 and it's up), but nothing on the network can be reached.
Code: |
Kernel: 6.1.57-gentoo #10 SMP PREEMPT_DYNAMIC
NIC: 00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (17) I219-LM (rev 11)
|
Initially I had e100e compiled into kernel. I changed it to a module, but that did not help. Restarting the network interface, unloading/reloading the e1000e module and even removing the device from the bus and re-scanning does not restore it to a working the state.
Code: |
echo 1 > /sys/bus/pci/devices/0000\:00\:1f.6/remove
echo 1 > /sys/bus/pci/rescan
/etc/init.d/net.enp0s31f6 restart
|
The only way I can get it working again is to reboot the computer - both rebooting, and hibernating to disk then powering back on fix it.
After resuming from suspend to RAM the network lights illuminate, Everything looks pretty much normal, but it's not possible to ping any other machine. Obviously because the network is not working, DHCP fails, but for debugging purposes I've changed it to use a static IP, though that doesn't help the situation.
When it's not working, the arp table seems inconsistent - when pinging local machines or the broadcast address, some invocations of arp show the other machine's mac addresses, some times it shows them as (incomplete). Even when the mac do addresses appear in the arp table, they're still inaccessible.
The output from ethtool is the same in the working state and non working state:
Code: |
Settings for enp0s31f6:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Speed: 1000Mb/s
Duplex: Full
Auto-negotiation: on
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
MDI-X: off (auto)
Supports Wake-on: pumbg
Wake-on: g
Current message level: 0x00000007 (7)
drv probe link
Link detected: yes
|
ethtool -d reports some differences between the working and non working state, though not sure if this difference is meaningful or not:
Code: |
--- dump-working 2023-12-08 09:41:14.000000000 -0000
+++ dump-notworking 2023-12-08 09:42:59.000000000 -0000
@@ -34,8 +34,8 @@ MAC Registers
Pass MAC control frames: don't pass
Receive buffer size: 2048
0x02808: RDLEN (Receive desc length) 0x00001000
-0x02810: RDH (Receive desc head) 0x00000048
-0x02818: RDT (Receive desc tail) 0x00000040
+0x02810: RDH (Receive desc head) 0x00000088
+0x02818: RDT (Receive desc tail) 0x00000080
0x02820: RDTR (Receive delay timer) 0x00000000
0x00400: TCTL (Transmit ctrl register) 0x3103F0FA
Transmitter: enabled
@@ -43,7 +43,7 @@ MAC Registers
Software XOFF Transmission: disabled
Re-transmit on late collision: enabled
0x03808: TDLEN (Transmit desc length) 0x00001000
-0x03810: TDH (Transmit desc head) 0x00000086
-0x03818: TDT (Transmit desc tail) 0x00000086
+0x03810: TDH (Transmit desc head) 0x00000021
+0x03818: TDT (Transmit desc tail) 0x00000021
0x03820: TIDV (Transmit delay timer) 0x00000008
PHY type: unknown
|
I'm at a loss with this - does anyone have any ideas? |
|