Lines Matching refs:br
68 struct net_bridge *br = p->br; in br_port_carrier_check() local
74 if (!netif_running(br->dev)) in br_port_carrier_check()
77 spin_lock_bh(&br->lock); in br_port_carrier_check()
85 spin_unlock_bh(&br->lock); in br_port_carrier_check()
99 br_fdb_unsync_static(p->br, p); in br_port_set_promisc()
118 err = br_fdb_sync_static(p->br, p); in br_port_clear_promisc()
131 void br_manage_promisc(struct net_bridge *br) in br_manage_promisc() argument
139 if ((br->dev->flags & IFF_PROMISC) || !br_vlan_enabled(br)) in br_manage_promisc()
142 list_for_each_entry(p, &br->port_list, list) { in br_manage_promisc()
156 if (br->auto_cnt == 0 || in br_manage_promisc()
157 (br->auto_cnt == 1 && br_auto_port(p))) in br_manage_promisc()
165 static void nbp_update_port_count(struct net_bridge *br) in nbp_update_port_count() argument
170 list_for_each_entry(p, &br->port_list, list) { in nbp_update_port_count()
174 if (br->auto_cnt != cnt) { in nbp_update_port_count()
175 br->auto_cnt = cnt; in nbp_update_port_count()
176 br_manage_promisc(br); in nbp_update_port_count()
190 br_fdb_unsync_static(p->br, p); in nbp_delete_promisc()
211 p->br = NULL; in destroy_nbp()
236 struct net_bridge *br = p->br; in del_nbp() local
239 sysfs_remove_link(br->ifobj, p->dev->name); in del_nbp()
243 spin_lock_bh(&br->lock); in del_nbp()
245 spin_unlock_bh(&br->lock); in del_nbp()
252 br_fdb_delete_by_port(br, p, 1); in del_nbp()
253 nbp_update_port_count(br); in del_nbp()
255 netdev_upper_dev_unlink(dev, br->dev); in del_nbp()
274 struct net_bridge *br = netdev_priv(dev); in br_dev_delete() local
277 list_for_each_entry_safe(p, n, &br->port_list, list) { in br_dev_delete()
281 br_fdb_delete_by_port(br, NULL, 1); in br_dev_delete()
283 br_vlan_flush(br); in br_dev_delete()
284 del_timer_sync(&br->gc_timer); in br_dev_delete()
286 br_sysfs_delbr(br->dev); in br_dev_delete()
287 unregister_netdevice_queue(br->dev, head); in br_dev_delete()
291 static int find_portno(struct net_bridge *br) in find_portno() argument
303 list_for_each_entry(p, &br->port_list, list) { in find_portno()
313 static struct net_bridge_port *new_nbp(struct net_bridge *br, in new_nbp() argument
319 index = find_portno(br); in new_nbp()
327 p->br = br; in new_nbp()
390 int br_min_mtu(const struct net_bridge *br) in br_min_mtu() argument
397 if (list_empty(&br->port_list)) in br_min_mtu()
400 list_for_each_entry(p, &br->port_list, list) { in br_min_mtu()
411 netdev_features_t br_features_recompute(struct net_bridge *br, in br_features_recompute() argument
417 if (list_empty(&br->port_list)) in br_features_recompute()
423 list_for_each_entry(p, &br->port_list, list) { in br_features_recompute()
433 int br_add_if(struct net_bridge *br, struct net_device *dev) in br_add_if() argument
463 p = new_nbp(br, dev); in br_add_if()
492 err = netdev_master_upper_dev_link(dev, br->dev); in br_add_if()
498 list_add_rcu(&p->list, &br->port_list); in br_add_if()
500 nbp_update_port_count(br); in br_add_if()
502 netdev_update_features(br->dev); in br_add_if()
504 if (br->dev->needed_headroom < dev->needed_headroom) in br_add_if()
505 br->dev->needed_headroom = dev->needed_headroom; in br_add_if()
507 if (br_fdb_insert(br, p, dev->dev_addr, 0)) in br_add_if()
513 spin_lock_bh(&br->lock); in br_add_if()
514 changed_addr = br_stp_recalculate_bridge_id(br); in br_add_if()
517 (br->dev->flags & IFF_UP)) in br_add_if()
519 spin_unlock_bh(&br->lock); in br_add_if()
524 call_netdevice_notifiers(NETDEV_CHANGEADDR, br->dev); in br_add_if()
526 dev_set_mtu(br->dev, br_min_mtu(br)); in br_add_if()
538 sysfs_remove_link(br->ifobj, p->dev->name); in br_add_if()
551 int br_del_if(struct net_bridge *br, struct net_device *dev) in br_del_if() argument
557 if (!p || p->br != br) in br_del_if()
566 dev_set_mtu(br->dev, br_min_mtu(br)); in br_del_if()
568 spin_lock_bh(&br->lock); in br_del_if()
569 changed_addr = br_stp_recalculate_bridge_id(br); in br_del_if()
570 spin_unlock_bh(&br->lock); in br_del_if()
573 call_netdevice_notifiers(NETDEV_CHANGEADDR, br->dev); in br_del_if()
575 netdev_update_features(br->dev); in br_del_if()
582 struct net_bridge *br = p->br; in br_port_flags_change() local
585 nbp_update_port_count(br); in br_port_flags_change()