Lines Matching refs:p

66 void br_port_carrier_check(struct net_bridge_port *p)  in br_port_carrier_check()  argument
68 struct net_device *dev = p->dev; in br_port_carrier_check()
69 struct net_bridge *br = p->br; in br_port_carrier_check()
71 if (!(p->flags & BR_ADMIN_COST) && in br_port_carrier_check()
73 p->path_cost = port_cost(dev); in br_port_carrier_check()
80 if (p->state == BR_STATE_DISABLED) in br_port_carrier_check()
81 br_stp_enable_port(p); in br_port_carrier_check()
83 if (p->state != BR_STATE_DISABLED) in br_port_carrier_check()
84 br_stp_disable_port(p); in br_port_carrier_check()
89 static void br_port_set_promisc(struct net_bridge_port *p) in br_port_set_promisc() argument
93 if (br_promisc_port(p)) in br_port_set_promisc()
96 err = dev_set_promiscuity(p->dev, 1); in br_port_set_promisc()
100 br_fdb_unsync_static(p->br, p); in br_port_set_promisc()
101 p->flags |= BR_PROMISC; in br_port_set_promisc()
104 static void br_port_clear_promisc(struct net_bridge_port *p) in br_port_clear_promisc() argument
113 if (!br_promisc_port(p) || !(p->dev->priv_flags & IFF_UNICAST_FLT)) in br_port_clear_promisc()
119 err = br_fdb_sync_static(p->br, p); in br_port_clear_promisc()
123 dev_set_promiscuity(p->dev, -1); in br_port_clear_promisc()
124 p->flags &= ~BR_PROMISC; in br_port_clear_promisc()
134 struct net_bridge_port *p; in br_manage_promisc() local
143 list_for_each_entry(p, &br->port_list, list) { in br_manage_promisc()
145 br_port_set_promisc(p); in br_manage_promisc()
158 (br->auto_cnt == 1 && br_auto_port(p))) in br_manage_promisc()
159 br_port_clear_promisc(p); in br_manage_promisc()
161 br_port_set_promisc(p); in br_manage_promisc()
168 struct net_bridge_port *p; in nbp_update_port_count() local
171 list_for_each_entry(p, &br->port_list, list) { in nbp_update_port_count()
172 if (br_auto_port(p)) in nbp_update_port_count()
181 static void nbp_delete_promisc(struct net_bridge_port *p) in nbp_delete_promisc() argument
187 dev_set_allmulti(p->dev, -1); in nbp_delete_promisc()
188 if (br_promisc_port(p)) in nbp_delete_promisc()
189 dev_set_promiscuity(p->dev, -1); in nbp_delete_promisc()
191 br_fdb_unsync_static(p->br, p); in nbp_delete_promisc()
196 struct net_bridge_port *p in release_nbp() local
198 kfree(p); in release_nbp()
208 static void destroy_nbp(struct net_bridge_port *p) in destroy_nbp() argument
210 struct net_device *dev = p->dev; in destroy_nbp()
212 p->br = NULL; in destroy_nbp()
213 p->dev = NULL; in destroy_nbp()
216 kobject_put(&p->kobj); in destroy_nbp()
221 struct net_bridge_port *p = in destroy_nbp_rcu() local
223 destroy_nbp(p); in destroy_nbp_rcu()
235 static void del_nbp(struct net_bridge_port *p) in del_nbp() argument
237 struct net_bridge *br = p->br; in del_nbp()
238 struct net_device *dev = p->dev; in del_nbp()
240 sysfs_remove_link(br->ifobj, p->dev->name); in del_nbp()
242 nbp_delete_promisc(p); in del_nbp()
245 br_stp_disable_port(p); in del_nbp()
248 br_ifinfo_notify(RTM_DELLINK, p); in del_nbp()
250 list_del_rcu(&p->list); in del_nbp()
252 nbp_vlan_flush(p); in del_nbp()
253 br_fdb_delete_by_port(br, p, 0, 1); in del_nbp()
264 br_multicast_del_port(p); in del_nbp()
266 kobject_uevent(&p->kobj, KOBJ_REMOVE); in del_nbp()
267 kobject_del(&p->kobj); in del_nbp()
269 br_netpoll_disable(p); in del_nbp()
271 call_rcu(&p->rcu, destroy_nbp_rcu); in del_nbp()
278 struct net_bridge_port *p, *n; in br_dev_delete() local
280 list_for_each_entry_safe(p, n, &br->port_list, list) { in br_dev_delete()
281 del_nbp(p); in br_dev_delete()
298 struct net_bridge_port *p; in find_portno() local
307 list_for_each_entry(p, &br->port_list, list) { in find_portno()
308 set_bit(p->port_no, inuse); in find_portno()
321 struct net_bridge_port *p; in new_nbp() local
327 p = kzalloc(sizeof(*p), GFP_KERNEL); in new_nbp()
328 if (p == NULL) in new_nbp()
331 p->br = br; in new_nbp()
333 p->dev = dev; in new_nbp()
334 p->path_cost = port_cost(dev); in new_nbp()
335 p->priority = 0x8000 >> BR_PORT_BITS; in new_nbp()
336 p->port_no = index; in new_nbp()
337 p->flags = BR_LEARNING | BR_FLOOD; in new_nbp()
338 br_init_port(p); in new_nbp()
339 br_set_state(p, BR_STATE_DISABLED); in new_nbp()
340 br_stp_port_timer_init(p); in new_nbp()
341 br_multicast_add_port(p); in new_nbp()
343 return p; in new_nbp()
396 const struct net_bridge_port *p; in br_min_mtu() local
404 list_for_each_entry(p, &br->port_list, list) { in br_min_mtu()
405 if (!mtu || p->dev->mtu < mtu) in br_min_mtu()
406 mtu = p->dev->mtu; in br_min_mtu()
418 struct net_bridge_port *p; in br_features_recompute() local
427 list_for_each_entry(p, &br->port_list, list) { in br_features_recompute()
429 p->dev->features, mask); in br_features_recompute()
439 struct net_bridge_port *p; in br_add_if() local
467 p = new_nbp(br, dev); in br_add_if()
468 if (IS_ERR(p)) in br_add_if()
469 return PTR_ERR(p); in br_add_if()
477 err = kobject_init_and_add(&p->kobj, &brport_ktype, &(dev->dev.kobj), in br_add_if()
482 err = br_sysfs_addif(p); in br_add_if()
486 err = br_netpoll_enable(p); in br_add_if()
490 err = netdev_rx_handler_register(dev, br_handle_frame, p); in br_add_if()
502 list_add_rcu(&p->list, &br->port_list); in br_add_if()
511 if (br_fdb_insert(br, p, dev->dev_addr, 0)) in br_add_if()
514 if (nbp_vlan_init(p)) in br_add_if()
522 br_stp_enable_port(p); in br_add_if()
525 br_ifinfo_notify(RTM_NEWLINK, p); in br_add_if()
532 kobject_uevent(&p->kobj, KOBJ_ADD); in br_add_if()
540 br_netpoll_disable(p); in br_add_if()
542 sysfs_remove_link(br->ifobj, p->dev->name); in br_add_if()
544 kobject_put(&p->kobj); in br_add_if()
545 p = NULL; /* kobject_put frees */ in br_add_if()
550 kfree(p); in br_add_if()
557 struct net_bridge_port *p; in br_del_if() local
560 p = br_port_get_rtnl(dev); in br_del_if()
561 if (!p || p->br != br) in br_del_if()
568 del_nbp(p); in br_del_if()
584 void br_port_flags_change(struct net_bridge_port *p, unsigned long mask) in br_port_flags_change() argument
586 struct net_bridge *br = p->br; in br_port_flags_change()