--- zzzz-none-000/linux-2.6.39.4/net/bridge/br_if.c 2011-08-03 19:43:28.000000000 +0000 +++ puma6-arm-6490-729/linux-2.6.39.4/net/bridge/br_if.c 2021-11-10 13:23:11.000000000 +0000 @@ -221,7 +221,9 @@ br_stp_timer_init(br); br_multicast_init(br); - +#ifdef CONFIG_TI_L2_SELECTIVE_PACKET_HANDLING + br->selective_packet_handler = NULL; +#endif /* CONFIG_TI_L2_SELECTIVE_PACKET_HANDLING */ return dev; } @@ -389,7 +391,7 @@ { struct net_bridge_port *p; int err = 0; - bool changed_addr; + bool changed_addr = false; /* Don't allow bridging non-ethernet like devices */ if ((dev->flags & IFF_LOOPBACK) || @@ -447,7 +449,16 @@ list_add_rcu(&p->list, &br->port_list); spin_lock_bh(&br->lock); - changed_addr = br_stp_recalculate_bridge_id(br); + if (!br->automatic_mac_disabled) { + changed_addr = br_stp_recalculate_bridge_id(br); + } else { + /* + * AVM: be sure that the bridge id is still in the fdb + * note the the port in the fdb-entry will not be overwritten with 0, + * if the entry exists + */ + br_fdb_insert(br, 0, br->bridge_id.addr); + } br_features_recompute(br); if ((dev->flags & IFF_UP) && netif_carrier_ok(dev) && @@ -495,7 +506,16 @@ del_nbp(p); spin_lock_bh(&br->lock); - br_stp_recalculate_bridge_id(br); + if (!br->automatic_mac_disabled) { + br_stp_recalculate_bridge_id(br); + } else { + /* + * AVM: be sure that the bridge id is still in the fdb + * note the the port in the fdb-entry will not be overwritten with 0, + * if the entry exists + */ + br_fdb_insert(br, 0, br->bridge_id.addr); + } br_features_recompute(br); spin_unlock_bh(&br->lock);