Lines Matching refs:p
9 static int br_mrp_process(struct net_bridge_port *p, struct sk_buff *skb);
90 struct net_bridge_port *p; in br_mrp_unique_ifindex() local
92 p = rtnl_dereference(mrp->p_port); in br_mrp_unique_ifindex()
93 if (p && p->dev->ifindex == ifindex) in br_mrp_unique_ifindex()
96 p = rtnl_dereference(mrp->s_port); in br_mrp_unique_ifindex()
97 if (p && p->dev->ifindex == ifindex) in br_mrp_unique_ifindex()
100 p = rtnl_dereference(mrp->i_port); in br_mrp_unique_ifindex()
101 if (p && p->dev->ifindex == ifindex) in br_mrp_unique_ifindex()
109 struct net_bridge_port *p) in br_mrp_find_port() argument
116 if (rcu_access_pointer(mrp->p_port) == p || in br_mrp_find_port()
117 rcu_access_pointer(mrp->s_port) == p || in br_mrp_find_port()
118 rcu_access_pointer(mrp->i_port) == p) { in br_mrp_find_port()
133 static struct sk_buff *br_mrp_skb_alloc(struct net_bridge_port *p, in br_mrp_skb_alloc() argument
144 skb->dev = p->dev; in br_mrp_skb_alloc()
183 struct net_bridge_port *p, in br_mrp_alloc_test_skb() argument
189 if (!p) in br_mrp_alloc_test_skb()
192 skb = br_mrp_skb_alloc(p, p->dev->dev_addr, mrp_test_dmac); in br_mrp_alloc_test_skb()
200 ether_addr_copy(hdr->sa, p->br->dev->dev_addr); in br_mrp_alloc_test_skb()
240 struct net_bridge_port *p, in br_mrp_alloc_in_test_skb() argument
246 if (!p) in br_mrp_alloc_in_test_skb()
249 skb = br_mrp_skb_alloc(p, p->dev->dev_addr, mrp_in_test_dmac); in br_mrp_alloc_in_test_skb()
257 ether_addr_copy(hdr->sa, p->br->dev->dev_addr); in br_mrp_alloc_in_test_skb()
283 struct net_bridge_port *p; in br_mrp_test_work_expired() local
309 p = rcu_dereference(mrp->p_port); in br_mrp_test_work_expired()
310 if (p) { in br_mrp_test_work_expired()
312 skb = br_mrp_alloc_test_skb(mrp, p, in br_mrp_test_work_expired()
322 br_mrp_ring_port_open(p->dev, true); in br_mrp_test_work_expired()
325 p = rcu_dereference(mrp->s_port); in br_mrp_test_work_expired()
326 if (p) { in br_mrp_test_work_expired()
328 skb = br_mrp_alloc_test_skb(mrp, p, in br_mrp_test_work_expired()
338 br_mrp_ring_port_open(p->dev, true); in br_mrp_test_work_expired()
356 struct net_bridge_port *p; in br_mrp_in_test_work_expired() local
376 p = rcu_dereference(mrp->p_port); in br_mrp_in_test_work_expired()
377 if (p) { in br_mrp_in_test_work_expired()
378 skb = br_mrp_alloc_in_test_skb(mrp, p, in br_mrp_in_test_work_expired()
387 br_mrp_in_port_open(p->dev, true); in br_mrp_in_test_work_expired()
390 p = rcu_dereference(mrp->s_port); in br_mrp_in_test_work_expired()
391 if (p) { in br_mrp_in_test_work_expired()
392 skb = br_mrp_alloc_in_test_skb(mrp, p, in br_mrp_in_test_work_expired()
401 br_mrp_in_port_open(p->dev, true); in br_mrp_in_test_work_expired()
404 p = rcu_dereference(mrp->i_port); in br_mrp_in_test_work_expired()
405 if (p) { in br_mrp_in_test_work_expired()
406 skb = br_mrp_alloc_in_test_skb(mrp, p, in br_mrp_in_test_work_expired()
415 br_mrp_in_port_open(p->dev, true); in br_mrp_in_test_work_expired()
430 struct net_bridge_port *p; in br_mrp_del_impl() local
443 p = rtnl_dereference(mrp->i_port); in br_mrp_del_impl()
444 if (p) in br_mrp_del_impl()
451 p = rtnl_dereference(mrp->p_port); in br_mrp_del_impl()
452 if (p) { in br_mrp_del_impl()
456 p->state = state; in br_mrp_del_impl()
457 p->flags &= ~BR_MRP_AWARE; in br_mrp_del_impl()
459 br_mrp_port_switchdev_set_state(p, state); in br_mrp_del_impl()
463 p = rtnl_dereference(mrp->s_port); in br_mrp_del_impl()
464 if (p) { in br_mrp_del_impl()
468 p->state = state; in br_mrp_del_impl()
469 p->flags &= ~BR_MRP_AWARE; in br_mrp_del_impl()
471 br_mrp_port_switchdev_set_state(p, state); in br_mrp_del_impl()
475 p = rtnl_dereference(mrp->i_port); in br_mrp_del_impl()
476 if (p) { in br_mrp_del_impl()
480 p->state = state; in br_mrp_del_impl()
481 p->flags &= ~BR_MRP_AWARE; in br_mrp_del_impl()
483 br_mrp_port_switchdev_set_state(p, state); in br_mrp_del_impl()
499 struct net_bridge_port *p; in br_mrp_add() local
526 p = br_mrp_get_port(br, instance->p_ifindex); in br_mrp_add()
528 p->state = BR_STATE_FORWARDING; in br_mrp_add()
529 p->flags |= BR_MRP_AWARE; in br_mrp_add()
531 rcu_assign_pointer(mrp->p_port, p); in br_mrp_add()
533 p = br_mrp_get_port(br, instance->s_ifindex); in br_mrp_add()
535 p->state = BR_STATE_FORWARDING; in br_mrp_add()
536 p->flags |= BR_MRP_AWARE; in br_mrp_add()
538 rcu_assign_pointer(mrp->s_port, p); in br_mrp_add()
562 void br_mrp_port_del(struct net_bridge *br, struct net_bridge_port *p) in br_mrp_port_del() argument
564 struct br_mrp *mrp = br_mrp_find_port(br, p); in br_mrp_port_del()
591 int br_mrp_set_port_state(struct net_bridge_port *p, in br_mrp_set_port_state() argument
596 if (!p || !(p->flags & BR_MRP_AWARE)) in br_mrp_set_port_state()
599 spin_lock_bh(&p->br->lock); in br_mrp_set_port_state()
606 p->state = port_state; in br_mrp_set_port_state()
607 spin_unlock_bh(&p->br->lock); in br_mrp_set_port_state()
609 br_mrp_port_switchdev_set_state(p, port_state); in br_mrp_set_port_state()
617 int br_mrp_set_port_role(struct net_bridge_port *p, in br_mrp_set_port_role() argument
622 if (!p || !(p->flags & BR_MRP_AWARE)) in br_mrp_set_port_role()
625 mrp = br_mrp_find_port(p->br, p); in br_mrp_set_port_role()
632 rcu_assign_pointer(mrp->p_port, p); in br_mrp_set_port_role()
635 rcu_assign_pointer(mrp->s_port, p); in br_mrp_set_port_role()
641 br_mrp_port_switchdev_set_role(p, role); in br_mrp_set_port_role()
762 struct net_bridge_port *p; in br_mrp_set_in_role() local
774 p = rtnl_dereference(mrp->i_port); in br_mrp_set_in_role()
775 if (!p) in br_mrp_set_in_role()
786 p->state = state; in br_mrp_set_in_role()
787 p->flags &= ~BR_MRP_AWARE; in br_mrp_set_in_role()
789 br_mrp_port_switchdev_set_state(p, state); in br_mrp_set_in_role()
809 p = br_mrp_get_port(br, role->i_ifindex); in br_mrp_set_in_role()
811 p->state = BR_STATE_FORWARDING; in br_mrp_set_in_role()
812 p->flags |= BR_MRP_AWARE; in br_mrp_set_in_role()
814 rcu_assign_pointer(mrp->i_port, p); in br_mrp_set_in_role()
1074 static int br_mrp_rcv(struct net_bridge_port *p, in br_mrp_rcv() argument
1083 if (p->state == BR_STATE_DISABLED) in br_mrp_rcv()
1086 br = p->br; in br_mrp_rcv()
1087 mrp = br_mrp_find_port(br, p); in br_mrp_rcv()
1107 br_mrp_mrm_process(mrp, p, skb); in br_mrp_rcv()
1116 br_mrp_mrm_process(mrp, p, skb); in br_mrp_rcv()
1120 br_mrp_mra_process(mrp, br, p, skb); in br_mrp_rcv()
1135 if (br_mrp_is_ring_port(p_port, s_port, p) && in br_mrp_rcv()
1136 p->state == BR_STATE_BLOCKING && in br_mrp_rcv()
1145 br_mrp_is_ring_port(p_port, s_port, p) && in br_mrp_rcv()
1165 if (br_mrp_mim_process(mrp, p, skb)) { in br_mrp_rcv()
1169 p)) in br_mrp_rcv()
1172 if (br_mrp_is_in_port(i_port, p)) in br_mrp_rcv()
1182 if (br_mrp_is_ring_port(p_port, s_port, p)) in br_mrp_rcv()
1185 if (br_mrp_is_in_port(i_port, p)) in br_mrp_rcv()
1200 if (br_mrp_is_ring_port(p_port, s_port, p) && in br_mrp_rcv()
1210 if (br_mrp_is_ring_port(p_port, s_port, p) && in br_mrp_rcv()
1246 static int br_mrp_process(struct net_bridge_port *p, struct sk_buff *skb) in br_mrp_process() argument
1249 if (likely(!(p->flags & BR_MRP_AWARE))) in br_mrp_process()
1252 return br_mrp_rcv(p, skb, p->dev); in br_mrp_process()