Lines Matching refs:br

67 	struct net_bridge *br = p->br;
74 if (!netif_running(br->dev))
77 spin_lock_bh(&br->lock);
89 spin_unlock_bh(&br->lock);
103 br_fdb_unsync_static(p->br, p);
122 err = br_fdb_sync_static(p->br, p);
135 void br_manage_promisc(struct net_bridge *br)
143 if ((br->dev->flags & IFF_PROMISC) || !br_vlan_enabled(br->dev))
146 list_for_each_entry(p, &br->port_list, list) {
161 (br->auto_cnt == 0 ||
162 (br->auto_cnt == 1 && br_auto_port(p))))
183 if (backup_p->br != p->br)
210 list_for_each_entry(cur_p, &p->br->port_list, list) {
222 static void nbp_update_port_count(struct net_bridge *br)
227 list_for_each_entry(p, &br->port_list, list) {
231 if (br->auto_cnt != cnt) {
232 br->auto_cnt = cnt;
233 br_manage_promisc(br);
247 br_fdb_unsync_static(p->br, p);
276 p->br = NULL;
290 static unsigned get_max_headroom(struct net_bridge *br)
295 list_for_each_entry(p, &br->port_list, list) {
305 static void update_headroom(struct net_bridge *br, int new_hr)
309 list_for_each_entry(p, &br->port_list, list)
312 br->dev->needed_headroom = new_hr;
326 struct net_bridge *br = p->br;
329 sysfs_remove_link(br->ifobj, p->dev->name);
333 spin_lock_bh(&br->lock);
335 spin_unlock_bh(&br->lock);
337 br_mrp_port_del(br, p);
342 if (netdev_get_fwd_headroom(dev) == br->dev->needed_headroom)
343 update_headroom(br, get_max_headroom(br));
347 br_fdb_delete_by_port(br, p, 0, 1);
351 nbp_update_port_count(br);
353 netdev_upper_dev_unlink(dev, br->dev);
372 struct net_bridge *br = netdev_priv(dev);
375 list_for_each_entry_safe(p, n, &br->port_list, list) {
379 br_recalculate_neigh_suppress_enabled(br);
381 br_fdb_delete_by_port(br, NULL, 0, 1);
383 cancel_delayed_work_sync(&br->gc_work);
385 br_sysfs_delbr(br->dev);
386 unregister_netdevice_queue(br->dev, head);
390 static int find_portno(struct net_bridge *br)
401 list_for_each_entry(p, &br->port_list, list) {
411 static struct net_bridge_port *new_nbp(struct net_bridge *br,
417 index = find_portno(br);
425 p->br = br;
493 static int br_mtu_min(const struct net_bridge *br)
498 list_for_each_entry(p, &br->port_list, list)
505 void br_mtu_auto_adjust(struct net_bridge *br)
510 if (br_opt_get(br, BROPT_MTU_SET_BY_USER))
516 dev_set_mtu(br->dev, br_mtu_min(br));
517 br_opt_toggle(br, BROPT_MTU_SET_BY_USER, false);
520 static void br_set_gso_limits(struct net_bridge *br)
526 list_for_each_entry(p, &br->port_list, list) {
530 br->dev->gso_max_size = gso_max_size;
531 br->dev->gso_max_segs = gso_max_segs;
537 netdev_features_t br_features_recompute(struct net_bridge *br,
543 if (list_empty(&br->port_list))
549 list_for_each_entry(p, &br->port_list, list) {
559 int br_add_if(struct net_bridge *br, struct net_device *dev,
584 list_for_each_entry(p, &br->port_list, list) {
611 p = new_nbp(br, dev);
643 err = netdev_master_upper_dev_link(dev, br->dev, NULL, NULL, extack);
653 list_add_rcu(&p->list, &br->port_list);
655 nbp_update_port_count(br);
665 fdb_synced = br_fdb_sync_static(br, p) == 0;
670 netdev_update_features(br->dev);
672 br_hr = br->dev->needed_headroom;
675 update_headroom(br, dev_hr);
679 if (br_fdb_insert(br, p, dev->dev_addr, 0))
682 if (br->dev->addr_assign_type != NET_ADDR_SET) {
686 err = dev_pre_changeaddr_notify(br->dev, dev->dev_addr, extack);
697 spin_lock_bh(&br->lock);
698 changed_addr = br_stp_recalculate_bridge_id(br);
701 (br->dev->flags & IFF_UP))
703 spin_unlock_bh(&br->lock);
708 call_netdevice_notifiers(NETDEV_CHANGEADDR, br->dev);
710 br_mtu_auto_adjust(br);
711 br_set_gso_limits(br);
719 br_fdb_unsync_static(br, p);
721 br_fdb_delete_by_port(br, p, 0, 1);
722 nbp_update_port_count(br);
724 netdev_upper_dev_unlink(dev, br->dev);
731 sysfs_remove_link(br->ifobj, p->dev->name);
742 int br_del_if(struct net_bridge *br, struct net_device *dev)
748 if (!p || p->br != br)
757 br_mtu_auto_adjust(br);
758 br_set_gso_limits(br);
760 spin_lock_bh(&br->lock);
761 changed_addr = br_stp_recalculate_bridge_id(br);
762 spin_unlock_bh(&br->lock);
765 call_netdevice_notifiers(NETDEV_CHANGEADDR, br->dev);
767 netdev_update_features(br->dev);
774 struct net_bridge *br = p->br;
777 nbp_update_port_count(br);
780 br_recalculate_neigh_suppress_enabled(br);