Lines Matching refs:br

69 	struct net_bridge *br = p->br;  in br_port_carrier_check()  local
75 if (!netif_running(br->dev)) in br_port_carrier_check()
78 spin_lock_bh(&br->lock); in br_port_carrier_check()
86 spin_unlock_bh(&br->lock); in br_port_carrier_check()
100 br_fdb_unsync_static(p->br, p); in br_port_set_promisc()
119 err = br_fdb_sync_static(p->br, p); in br_port_clear_promisc()
132 void br_manage_promisc(struct net_bridge *br) in br_manage_promisc() argument
140 if ((br->dev->flags & IFF_PROMISC) || !br_vlan_enabled(br)) in br_manage_promisc()
143 list_for_each_entry(p, &br->port_list, list) { in br_manage_promisc()
157 if (br->auto_cnt == 0 || in br_manage_promisc()
158 (br->auto_cnt == 1 && br_auto_port(p))) in br_manage_promisc()
166 static void nbp_update_port_count(struct net_bridge *br) in nbp_update_port_count() argument
171 list_for_each_entry(p, &br->port_list, list) { in nbp_update_port_count()
175 if (br->auto_cnt != cnt) { in nbp_update_port_count()
176 br->auto_cnt = cnt; in nbp_update_port_count()
177 br_manage_promisc(br); in nbp_update_port_count()
191 br_fdb_unsync_static(p->br, p); in nbp_delete_promisc()
212 p->br = NULL; in destroy_nbp()
237 struct net_bridge *br = p->br; in del_nbp() local
240 sysfs_remove_link(br->ifobj, p->dev->name); in del_nbp()
244 spin_lock_bh(&br->lock); in del_nbp()
246 spin_unlock_bh(&br->lock); in del_nbp()
253 br_fdb_delete_by_port(br, p, 0, 1); in del_nbp()
256 nbp_update_port_count(br); in del_nbp()
258 netdev_upper_dev_unlink(dev, br->dev); in del_nbp()
277 struct net_bridge *br = netdev_priv(dev); in br_dev_delete() local
280 list_for_each_entry_safe(p, n, &br->port_list, list) { in br_dev_delete()
284 br_fdb_delete_by_port(br, NULL, 0, 1); in br_dev_delete()
286 br_vlan_flush(br); in br_dev_delete()
287 br_multicast_dev_del(br); in br_dev_delete()
288 del_timer_sync(&br->gc_timer); in br_dev_delete()
290 br_sysfs_delbr(br->dev); in br_dev_delete()
291 unregister_netdevice_queue(br->dev, head); in br_dev_delete()
295 static int find_portno(struct net_bridge *br) in find_portno() argument
307 list_for_each_entry(p, &br->port_list, list) { in find_portno()
317 static struct net_bridge_port *new_nbp(struct net_bridge *br, in new_nbp() argument
323 index = find_portno(br); in new_nbp()
331 p->br = br; in new_nbp()
394 int br_min_mtu(const struct net_bridge *br) in br_min_mtu() argument
401 if (list_empty(&br->port_list)) in br_min_mtu()
404 list_for_each_entry(p, &br->port_list, list) { in br_min_mtu()
415 netdev_features_t br_features_recompute(struct net_bridge *br, in br_features_recompute() argument
421 if (list_empty(&br->port_list)) in br_features_recompute()
427 list_for_each_entry(p, &br->port_list, list) { in br_features_recompute()
437 int br_add_if(struct net_bridge *br, struct net_device *dev) in br_add_if() argument
467 p = new_nbp(br, dev); in br_add_if()
496 err = netdev_master_upper_dev_link(dev, br->dev); in br_add_if()
502 list_add_rcu(&p->list, &br->port_list); in br_add_if()
504 nbp_update_port_count(br); in br_add_if()
506 netdev_update_features(br->dev); in br_add_if()
508 if (br->dev->needed_headroom < dev->needed_headroom) in br_add_if()
509 br->dev->needed_headroom = dev->needed_headroom; in br_add_if()
511 if (br_fdb_insert(br, p, dev->dev_addr, 0)) in br_add_if()
517 spin_lock_bh(&br->lock); in br_add_if()
518 changed_addr = br_stp_recalculate_bridge_id(br); in br_add_if()
521 (br->dev->flags & IFF_UP)) in br_add_if()
523 spin_unlock_bh(&br->lock); in br_add_if()
528 call_netdevice_notifiers(NETDEV_CHANGEADDR, br->dev); in br_add_if()
530 dev_set_mtu(br->dev, br_min_mtu(br)); in br_add_if()
542 sysfs_remove_link(br->ifobj, p->dev->name); in br_add_if()
555 int br_del_if(struct net_bridge *br, struct net_device *dev) in br_del_if() argument
561 if (!p || p->br != br) in br_del_if()
570 dev_set_mtu(br->dev, br_min_mtu(br)); in br_del_if()
572 spin_lock_bh(&br->lock); in br_del_if()
573 changed_addr = br_stp_recalculate_bridge_id(br); in br_del_if()
574 spin_unlock_bh(&br->lock); in br_del_if()
577 call_netdevice_notifiers(NETDEV_CHANGEADDR, br->dev); in br_del_if()
579 netdev_update_features(br->dev); in br_del_if()
586 struct net_bridge *br = p->br; in br_port_flags_change() local
589 nbp_update_port_count(br); in br_port_flags_change()