Lines Matching refs:p
73 void br_port_carrier_check(struct net_bridge_port *p, bool *notified) in br_port_carrier_check() argument
75 struct net_device *dev = p->dev; in br_port_carrier_check()
76 struct net_bridge *br = p->br; in br_port_carrier_check()
78 if (!(p->flags & BR_ADMIN_COST) && in br_port_carrier_check()
80 p->path_cost = port_cost(dev); in br_port_carrier_check()
88 if (p->state == BR_STATE_DISABLED) { in br_port_carrier_check()
89 br_stp_enable_port(p); in br_port_carrier_check()
93 if (p->state != BR_STATE_DISABLED) { in br_port_carrier_check()
94 br_stp_disable_port(p); in br_port_carrier_check()
101 static void br_port_set_promisc(struct net_bridge_port *p) in br_port_set_promisc() argument
105 if (br_promisc_port(p)) in br_port_set_promisc()
108 err = dev_set_promiscuity(p->dev, 1); in br_port_set_promisc()
112 br_fdb_unsync_static(p->br, p); in br_port_set_promisc()
113 p->flags |= BR_PROMISC; in br_port_set_promisc()
116 static void br_port_clear_promisc(struct net_bridge_port *p) in br_port_clear_promisc() argument
125 if (!br_promisc_port(p) || !(p->dev->priv_flags & IFF_UNICAST_FLT)) in br_port_clear_promisc()
131 err = br_fdb_sync_static(p->br, p); in br_port_clear_promisc()
135 dev_set_promiscuity(p->dev, -1); in br_port_clear_promisc()
136 p->flags &= ~BR_PROMISC; in br_port_clear_promisc()
146 struct net_bridge_port *p; in br_manage_promisc() local
155 list_for_each_entry(p, &br->port_list, list) { in br_manage_promisc()
157 br_port_set_promisc(p); in br_manage_promisc()
170 (br->auto_cnt == 1 && br_auto_port(p))) in br_manage_promisc()
171 br_port_clear_promisc(p); in br_manage_promisc()
173 br_port_set_promisc(p); in br_manage_promisc()
178 int nbp_backup_change(struct net_bridge_port *p, in nbp_backup_change() argument
181 struct net_bridge_port *old_backup = rtnl_dereference(p->backup_port); in nbp_backup_change()
191 if (backup_p->br != p->br) in nbp_backup_change()
195 if (p == backup_p) in nbp_backup_change()
207 rcu_assign_pointer(p->backup_port, backup_p); in nbp_backup_change()
212 static void nbp_backup_clear(struct net_bridge_port *p) in nbp_backup_clear() argument
214 nbp_backup_change(p, NULL); in nbp_backup_clear()
215 if (p->backup_redirected_cnt) { in nbp_backup_clear()
218 list_for_each_entry(cur_p, &p->br->port_list, list) { in nbp_backup_clear()
222 if (backup_p == p) in nbp_backup_clear()
227 WARN_ON(rcu_access_pointer(p->backup_port) || p->backup_redirected_cnt); in nbp_backup_clear()
232 struct net_bridge_port *p; in nbp_update_port_count() local
235 list_for_each_entry(p, &br->port_list, list) { in nbp_update_port_count()
236 if (br_auto_port(p)) in nbp_update_port_count()
245 static void nbp_delete_promisc(struct net_bridge_port *p) in nbp_delete_promisc() argument
251 dev_set_allmulti(p->dev, -1); in nbp_delete_promisc()
252 if (br_promisc_port(p)) in nbp_delete_promisc()
253 dev_set_promiscuity(p->dev, -1); in nbp_delete_promisc()
255 br_fdb_unsync_static(p->br, p); in nbp_delete_promisc()
260 struct net_bridge_port *p in release_nbp() local
262 kfree(p); in release_nbp()
267 struct net_bridge_port *p = kobj_to_brport(kobj); in brport_get_ownership() local
269 net_ns_get_ownership(dev_net(p->dev), uid, gid); in brport_get_ownership()
280 static void destroy_nbp(struct net_bridge_port *p) in destroy_nbp() argument
282 struct net_device *dev = p->dev; in destroy_nbp()
284 p->br = NULL; in destroy_nbp()
285 p->dev = NULL; in destroy_nbp()
286 netdev_put(dev, &p->dev_tracker); in destroy_nbp()
288 kobject_put(&p->kobj); in destroy_nbp()
293 struct net_bridge_port *p = in destroy_nbp_rcu() local
295 destroy_nbp(p); in destroy_nbp_rcu()
301 struct net_bridge_port *p; in get_max_headroom() local
303 list_for_each_entry(p, &br->port_list, list) { in get_max_headroom()
304 unsigned dev_headroom = netdev_get_fwd_headroom(p->dev); in get_max_headroom()
315 struct net_bridge_port *p; in update_headroom() local
317 list_for_each_entry(p, &br->port_list, list) in update_headroom()
318 netdev_set_rx_headroom(p->dev, new_hr); in update_headroom()
332 static void del_nbp(struct net_bridge_port *p) in del_nbp() argument
334 struct net_bridge *br = p->br; in del_nbp()
335 struct net_device *dev = p->dev; in del_nbp()
337 sysfs_remove_link(br->ifobj, p->dev->name); in del_nbp()
339 nbp_delete_promisc(p); in del_nbp()
342 br_stp_disable_port(p); in del_nbp()
345 br_mrp_port_del(br, p); in del_nbp()
346 br_cfm_port_del(br, p); in del_nbp()
348 br_ifinfo_notify(RTM_DELLINK, NULL, p); in del_nbp()
350 list_del_rcu(&p->list); in del_nbp()
355 nbp_vlan_flush(p); in del_nbp()
356 br_fdb_delete_by_port(br, p, 0, 1); in del_nbp()
358 nbp_backup_clear(p); in del_nbp()
368 br_multicast_del_port(p); in del_nbp()
370 kobject_uevent(&p->kobj, KOBJ_REMOVE); in del_nbp()
371 kobject_del(&p->kobj); in del_nbp()
373 br_netpoll_disable(p); in del_nbp()
375 call_rcu(&p->rcu, destroy_nbp_rcu); in del_nbp()
382 struct net_bridge_port *p, *n; in br_dev_delete() local
384 list_for_each_entry_safe(p, n, &br->port_list, list) { in br_dev_delete()
385 del_nbp(p); in br_dev_delete()
402 struct net_bridge_port *p; in find_portno() local
410 list_for_each_entry(p, &br->port_list, list) in find_portno()
411 __set_bit(p->port_no, inuse); in find_portno()
423 struct net_bridge_port *p; in new_nbp() local
430 p = kzalloc(sizeof(*p), GFP_KERNEL); in new_nbp()
431 if (p == NULL) in new_nbp()
434 p->br = br; in new_nbp()
435 netdev_hold(dev, &p->dev_tracker, GFP_KERNEL); in new_nbp()
436 p->dev = dev; in new_nbp()
437 p->path_cost = port_cost(dev); in new_nbp()
438 p->priority = 0x8000 >> BR_PORT_BITS; in new_nbp()
439 p->port_no = index; in new_nbp()
440 p->flags = BR_LEARNING | BR_FLOOD | BR_MCAST_FLOOD | BR_BCAST_FLOOD; in new_nbp()
441 br_init_port(p); in new_nbp()
442 br_set_state(p, BR_STATE_DISABLED); in new_nbp()
443 br_stp_port_timer_init(p); in new_nbp()
444 err = br_multicast_add_port(p); in new_nbp()
446 netdev_put(dev, &p->dev_tracker); in new_nbp()
447 kfree(p); in new_nbp()
448 p = ERR_PTR(err); in new_nbp()
451 return p; in new_nbp()
502 const struct net_bridge_port *p; in br_mtu_min() local
505 list_for_each_entry(p, &br->port_list, list) in br_mtu_min()
506 if (!ret_mtu || ret_mtu > p->dev->mtu) in br_mtu_min()
507 ret_mtu = p->dev->mtu; in br_mtu_min()
530 const struct net_bridge_port *p; in br_set_gso_limits() local
533 list_for_each_entry(p, &br->port_list, list) { in br_set_gso_limits()
534 tso_max_size = min(tso_max_size, p->dev->tso_max_size); in br_set_gso_limits()
535 tso_max_segs = min(tso_max_segs, p->dev->tso_max_segs); in br_set_gso_limits()
547 struct net_bridge_port *p; in br_features_recompute() local
556 list_for_each_entry(p, &br->port_list, list) { in br_features_recompute()
558 p->dev->features, mask); in br_features_recompute()
569 struct net_bridge_port *p; in br_add_if() local
598 p = new_nbp(br, dev); in br_add_if()
599 if (IS_ERR(p)) in br_add_if()
600 return PTR_ERR(p); in br_add_if()
606 br_multicast_del_port(p); in br_add_if()
607 netdev_put(dev, &p->dev_tracker); in br_add_if()
608 kfree(p); /* kobject not yet init'd, manually free */ in br_add_if()
612 err = kobject_init_and_add(&p->kobj, &brport_ktype, &(dev->dev.kobj), in br_add_if()
617 err = br_sysfs_addif(p); in br_add_if()
621 err = br_netpoll_enable(p); in br_add_if()
625 err = netdev_rx_handler_register(dev, br_get_rx_handler(dev), p); in br_add_if()
637 list_add_rcu(&p->list, &br->port_list); in br_add_if()
640 if (!br_promisc_port(p) && (p->dev->priv_flags & IFF_UNICAST_FLT)) { in br_add_if()
649 fdb_synced = br_fdb_sync_static(br, p) == 0; in br_add_if()
663 if (br_fdb_add_local(br, p, dev->dev_addr, 0)) in br_add_if()
675 err = nbp_vlan_init(p, extack); in br_add_if()
686 br_stp_enable_port(p); in br_add_if()
689 br_ifinfo_notify(RTM_NEWLINK, NULL, p); in br_add_if()
697 kobject_uevent(&p->kobj, KOBJ_ADD); in br_add_if()
703 br_fdb_unsync_static(br, p); in br_add_if()
704 list_del_rcu(&p->list); in br_add_if()
705 br_fdb_delete_by_port(br, p, 0, 1); in br_add_if()
712 br_netpoll_disable(p); in br_add_if()
714 sysfs_remove_link(br->ifobj, p->dev->name); in br_add_if()
716 br_multicast_del_port(p); in br_add_if()
717 netdev_put(dev, &p->dev_tracker); in br_add_if()
718 kobject_put(&p->kobj); in br_add_if()
727 struct net_bridge_port *p; in br_del_if() local
730 p = br_port_get_rtnl(dev); in br_del_if()
731 if (!p || p->br != br) in br_del_if()
738 del_nbp(p); in br_del_if()
755 void br_port_flags_change(struct net_bridge_port *p, unsigned long mask) in br_port_flags_change() argument
757 struct net_bridge *br = p->br; in br_port_flags_change()
768 struct net_bridge_port *p; in br_port_flag_is_set() local
770 p = br_port_get_rtnl_rcu(dev); in br_port_flag_is_set()
771 if (!p) in br_port_flag_is_set()
774 return p->flags & flag; in br_port_flag_is_set()