Lines Matching refs:p

65 void br_port_carrier_check(struct net_bridge_port *p)  in br_port_carrier_check()  argument
67 struct net_device *dev = p->dev; in br_port_carrier_check()
68 struct net_bridge *br = p->br; in br_port_carrier_check()
70 if (!(p->flags & BR_ADMIN_COST) && in br_port_carrier_check()
72 p->path_cost = port_cost(dev); in br_port_carrier_check()
79 if (p->state == BR_STATE_DISABLED) in br_port_carrier_check()
80 br_stp_enable_port(p); in br_port_carrier_check()
82 if (p->state != BR_STATE_DISABLED) in br_port_carrier_check()
83 br_stp_disable_port(p); in br_port_carrier_check()
88 static void br_port_set_promisc(struct net_bridge_port *p) in br_port_set_promisc() argument
92 if (br_promisc_port(p)) in br_port_set_promisc()
95 err = dev_set_promiscuity(p->dev, 1); in br_port_set_promisc()
99 br_fdb_unsync_static(p->br, p); in br_port_set_promisc()
100 p->flags |= BR_PROMISC; in br_port_set_promisc()
103 static void br_port_clear_promisc(struct net_bridge_port *p) in br_port_clear_promisc() argument
112 if (!br_promisc_port(p) || !(p->dev->priv_flags & IFF_UNICAST_FLT)) in br_port_clear_promisc()
118 err = br_fdb_sync_static(p->br, p); in br_port_clear_promisc()
122 dev_set_promiscuity(p->dev, -1); in br_port_clear_promisc()
123 p->flags &= ~BR_PROMISC; in br_port_clear_promisc()
133 struct net_bridge_port *p; in br_manage_promisc() local
142 list_for_each_entry(p, &br->port_list, list) { in br_manage_promisc()
144 br_port_set_promisc(p); in br_manage_promisc()
157 (br->auto_cnt == 1 && br_auto_port(p))) in br_manage_promisc()
158 br_port_clear_promisc(p); in br_manage_promisc()
160 br_port_set_promisc(p); in br_manage_promisc()
167 struct net_bridge_port *p; in nbp_update_port_count() local
170 list_for_each_entry(p, &br->port_list, list) { in nbp_update_port_count()
171 if (br_auto_port(p)) in nbp_update_port_count()
180 static void nbp_delete_promisc(struct net_bridge_port *p) in nbp_delete_promisc() argument
186 dev_set_allmulti(p->dev, -1); in nbp_delete_promisc()
187 if (br_promisc_port(p)) in nbp_delete_promisc()
188 dev_set_promiscuity(p->dev, -1); in nbp_delete_promisc()
190 br_fdb_unsync_static(p->br, p); in nbp_delete_promisc()
195 struct net_bridge_port *p in release_nbp() local
197 kfree(p); in release_nbp()
207 static void destroy_nbp(struct net_bridge_port *p) in destroy_nbp() argument
209 struct net_device *dev = p->dev; in destroy_nbp()
211 p->br = NULL; in destroy_nbp()
212 p->dev = NULL; in destroy_nbp()
215 kobject_put(&p->kobj); in destroy_nbp()
220 struct net_bridge_port *p = in destroy_nbp_rcu() local
222 destroy_nbp(p); in destroy_nbp_rcu()
234 static void del_nbp(struct net_bridge_port *p) in del_nbp() argument
236 struct net_bridge *br = p->br; in del_nbp()
237 struct net_device *dev = p->dev; in del_nbp()
239 sysfs_remove_link(br->ifobj, p->dev->name); in del_nbp()
241 nbp_delete_promisc(p); in del_nbp()
244 br_stp_disable_port(p); in del_nbp()
247 br_ifinfo_notify(RTM_DELLINK, p); in del_nbp()
249 list_del_rcu(&p->list); in del_nbp()
251 nbp_vlan_flush(p); in del_nbp()
252 br_fdb_delete_by_port(br, p, 1); in del_nbp()
261 br_multicast_del_port(p); in del_nbp()
263 kobject_uevent(&p->kobj, KOBJ_REMOVE); in del_nbp()
264 kobject_del(&p->kobj); in del_nbp()
266 br_netpoll_disable(p); in del_nbp()
268 call_rcu(&p->rcu, destroy_nbp_rcu); in del_nbp()
275 struct net_bridge_port *p, *n; in br_dev_delete() local
277 list_for_each_entry_safe(p, n, &br->port_list, list) { in br_dev_delete()
278 del_nbp(p); in br_dev_delete()
294 struct net_bridge_port *p; in find_portno() local
303 list_for_each_entry(p, &br->port_list, list) { in find_portno()
304 set_bit(p->port_no, inuse); in find_portno()
317 struct net_bridge_port *p; in new_nbp() local
323 p = kzalloc(sizeof(*p), GFP_KERNEL); in new_nbp()
324 if (p == NULL) in new_nbp()
327 p->br = br; in new_nbp()
329 p->dev = dev; in new_nbp()
330 p->path_cost = port_cost(dev); in new_nbp()
331 p->priority = 0x8000 >> BR_PORT_BITS; in new_nbp()
332 p->port_no = index; in new_nbp()
333 p->flags = BR_LEARNING | BR_FLOOD; in new_nbp()
334 br_init_port(p); in new_nbp()
335 br_set_state(p, BR_STATE_DISABLED); in new_nbp()
336 br_stp_port_timer_init(p); in new_nbp()
337 br_multicast_add_port(p); in new_nbp()
339 return p; in new_nbp()
392 const struct net_bridge_port *p; in br_min_mtu() local
400 list_for_each_entry(p, &br->port_list, list) { in br_min_mtu()
401 if (!mtu || p->dev->mtu < mtu) in br_min_mtu()
402 mtu = p->dev->mtu; in br_min_mtu()
414 struct net_bridge_port *p; in br_features_recompute() local
423 list_for_each_entry(p, &br->port_list, list) { in br_features_recompute()
425 p->dev->features, mask); in br_features_recompute()
435 struct net_bridge_port *p; in br_add_if() local
463 p = new_nbp(br, dev); in br_add_if()
464 if (IS_ERR(p)) in br_add_if()
465 return PTR_ERR(p); in br_add_if()
473 err = kobject_init_and_add(&p->kobj, &brport_ktype, &(dev->dev.kobj), in br_add_if()
478 err = br_sysfs_addif(p); in br_add_if()
482 err = br_netpoll_enable(p); in br_add_if()
486 err = netdev_rx_handler_register(dev, br_handle_frame, p); in br_add_if()
498 list_add_rcu(&p->list, &br->port_list); in br_add_if()
507 if (br_fdb_insert(br, p, dev->dev_addr, 0)) in br_add_if()
510 if (nbp_vlan_init(p)) in br_add_if()
518 br_stp_enable_port(p); in br_add_if()
521 br_ifinfo_notify(RTM_NEWLINK, p); in br_add_if()
528 kobject_uevent(&p->kobj, KOBJ_ADD); in br_add_if()
536 br_netpoll_disable(p); in br_add_if()
538 sysfs_remove_link(br->ifobj, p->dev->name); in br_add_if()
540 kobject_put(&p->kobj); in br_add_if()
541 p = NULL; /* kobject_put frees */ in br_add_if()
546 kfree(p); in br_add_if()
553 struct net_bridge_port *p; in br_del_if() local
556 p = br_port_get_rtnl(dev); in br_del_if()
557 if (!p || p->br != br) in br_del_if()
564 del_nbp(p); in br_del_if()
580 void br_port_flags_change(struct net_bridge_port *p, unsigned long mask) in br_port_flags_change() argument
582 struct net_bridge *br = p->br; in br_port_flags_change()