--- zzzz-none-000/linux-4.9.279/net/bridge/br.c 2021-08-08 06:38:54.000000000 +0000 +++ puma7-atom-6591-750/linux-4.9.279/net/bridge/br.c 2023-02-08 11:43:43.000000000 +0000 @@ -23,6 +23,10 @@ #include "br_private.h" +#ifdef CONFIG_TI_UNMANAGED_BRIDGE +extern int ti_unmanaged_bridge_handler (struct net_device *dev, unsigned long event); +#endif /* CONFIG_TI_UNMANAGED_BRIDGE */ + /* * Handle changes in state of network devices enslaved to a bridge. * @@ -37,6 +41,13 @@ bool changed_addr; int err; +#ifdef CONFIG_TI_UNMANAGED_BRIDGE + if (ti_unmanaged_bridge_handler(dev, event) == 0) + { + return NOTIFY_DONE; + } +#endif /* CONFIG_TI_UNMANAGED_BRIDGE */ + /* register of bridge completed, add sysfs entries */ if ((dev->priv_flags & IFF_EBRIDGE) && event == NETDEV_REGISTER) { br_sysfs_addbr(dev); @@ -52,7 +63,7 @@ switch (event) { case NETDEV_CHANGEMTU: - dev_set_mtu(br->dev, br_min_mtu(br)); + br_mtu_auto_adjust(br); break; case NETDEV_CHANGEADDR: @@ -223,6 +234,10 @@ brioctl_set(br_ioctl_deviceless_stub); + err = br_flood_rl_init(); + if (err) + goto err_out6; + #if IS_ENABLED(CONFIG_ATM_LANE) br_fdb_test_addr_hook = br_fdb_test_addr; #endif @@ -233,8 +248,12 @@ "need this.\n"); #endif +#ifdef CONFIG_LTQ_MCAST_SNOOPING + br_mcast_snoop_init(); +#endif return 0; - +err_out6: + br_netlink_fini(); err_out5: unregister_switchdev_notifier(&br_switchdev_notifier); err_out4: @@ -253,6 +272,7 @@ static void __exit br_deinit(void) { stp_proto_unregister(&br_stp_proto); + br_flood_rl_fini(); br_netlink_fini(); unregister_switchdev_notifier(&br_switchdev_notifier); unregister_netdevice_notifier(&br_device_notifier); @@ -266,6 +286,9 @@ br_fdb_test_addr_hook = NULL; #endif br_fdb_fini(); +#ifdef CONFIG_LTQ_MCAST_SNOOPING + br_mcast_snoop_deinit(); +#endif } module_init(br_init)