From: Geert Uytterhoeven <ge...@linux-m68k.org> Date: Sat, 12 Sep 2020 14:33:59 +0200
> "dev" is not the bridge device, but the physical Ethernet interface, which > may already be suspended during s2ram. Hmmm, ok. Looking more deeply NETDEV_CHANGE causes br_port_carrier_check() to run which exits early if netif_running() is false, which is going to be true if netif_device_present() is false: *notified = false; if (!netif_running(br->dev)) return; The only other work the bridge notifier does is: if (event != NETDEV_UNREGISTER) br_vlan_port_event(p, event); and: /* Events that may cause spanning tree to refresh */ if (!notified && (event == NETDEV_CHANGEADDR || event == NETDEV_UP || event == NETDEV_CHANGE || event == NETDEV_DOWN)) br_ifinfo_notify(RTM_NEWLINK, NULL, p); So some vlan stuff, and emitting a netlink message to any available listeners. Should we really do all of this for a device which is not even present? This whole situation seems completely illogical. The device is useless, it logically has no link or other state that can be managed or used, while it is not present. So all of these bridge operations should only happen when the device transitions back to present again.