Recently I experienced network outages. At first I thought one of my network switches was going haywire but eventually I tracked it down to my monitor. My monitor is a Dell U2722DE with built-in dock so I can connect everything through USB-C. This includes the monitor's built-in Ethernet which is the following:
Bus 002 Device 004: ID 0bda:8153 Realtek Semiconductor Corp. RTL8153 Gigabit Ethernet Adapter
I noticed that when shutting down my laptop running Fedora 38 that within 30 seconds or so the monitor started flooding the network. Pulling the network cable or power cycling the monitor fixes the problem until the next time the laptop is shutdown.
Because this only started happening recently I hadn't changed anything in my setup I started suspecting a software change. I quickly found the following change to the linux kernel r8152 driver:
0fbd79c01a9a657348f7032df70c57a406468c86 r8152: fix the autosuspend doesn't work
This change was backported to Linux 6.3.3 which fits the timeframe I started experiencing this problem.
I managed to build a custom kernel without the above commit using the instructions at: https://fedoraproject.org/wiki/Building_a_custom_kernel
Then I rebooted my laptop several times with the distro kernel and my patched kernel and watched the network behavior. I could consistently recreate the problem with the distro kernel even after power cycling the monitor but not with the patched kernel. It seems that the distro kernel leaves the monitor's network connection in such a state that it will start flooding the network. With the above commit reverted that doesn't happen anymore.
Reproducible: Always
Steps to Reproduce:
1. Use Fedora
2. Shutdown laptop
Actual Results:
Monitor starts flooding the network causing loss of connectivity for other connected devices.
Expected Results:
No network outage.
On researching my problem I also found the following problem with a similar Dell monitor: https://www.dell.com/community/Monitors/U3421WE-Ethernet-causes-network-storm/td-p/7786590
The suggested workaround at the bottom was not applicable because my monitor was already condigured that way. Also it was working fine with Fedora before Linux 6.3.3.