Hi David, CC bridge On Sun, Sep 13, 2020 at 3:34 AM David Miller <davem@xxxxxxxxxxxxx> wrote: > From: Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> > 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. Thanks for your analysis! I'd like to defer this to the bridge people (CC). Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds