• Home
  • Raw
  • Download

Lines Matching refs:p

13 static bool nbp_switchdev_can_offload_tx_fwd(const struct net_bridge_port *p,  in nbp_switchdev_can_offload_tx_fwd()  argument
19 return (p->flags & BR_TX_FWD_OFFLOAD) && in nbp_switchdev_can_offload_tx_fwd()
20 (p->hwdom != BR_INPUT_SKB_CB(skb)->src_hwdom); in nbp_switchdev_can_offload_tx_fwd()
37 void nbp_switchdev_frame_mark_tx_fwd_offload(const struct net_bridge_port *p, in nbp_switchdev_frame_mark_tx_fwd_offload() argument
40 if (nbp_switchdev_can_offload_tx_fwd(p, skb)) in nbp_switchdev_frame_mark_tx_fwd_offload()
49 void nbp_switchdev_frame_mark_tx_fwd_to_hwdom(const struct net_bridge_port *p, in nbp_switchdev_frame_mark_tx_fwd_to_hwdom() argument
52 if (nbp_switchdev_can_offload_tx_fwd(p, skb)) in nbp_switchdev_frame_mark_tx_fwd_to_hwdom()
53 set_bit(p->hwdom, &BR_INPUT_SKB_CB(skb)->fwd_hwdoms); in nbp_switchdev_frame_mark_tx_fwd_to_hwdom()
56 void nbp_switchdev_frame_mark(const struct net_bridge_port *p, in nbp_switchdev_frame_mark() argument
59 if (p->hwdom) in nbp_switchdev_frame_mark()
60 BR_INPUT_SKB_CB(skb)->src_hwdom = p->hwdom; in nbp_switchdev_frame_mark()
63 bool nbp_switchdev_allowed_egress(const struct net_bridge_port *p, in nbp_switchdev_allowed_egress() argument
68 return !test_bit(p->hwdom, &cb->fwd_hwdoms) && in nbp_switchdev_allowed_egress()
69 (!skb->offload_fwd_mark || cb->src_hwdom != p->hwdom); in nbp_switchdev_allowed_egress()
76 int br_switchdev_set_port_flag(struct net_bridge_port *p, in br_switchdev_set_port_flag() argument
82 .orig_dev = p->dev, in br_switchdev_set_port_flag()
98 err = call_switchdev_notifiers(SWITCHDEV_PORT_ATTR_SET, p->dev, in br_switchdev_set_port_flag()
114 err = switchdev_port_attr_set(p->dev, &attr, extack); in br_switchdev_set_port_flag()
178 struct net_bridge_port *p; in nbp_switchdev_hwdom_set() local
182 list_for_each_entry(p, &br->port_list, list) { in nbp_switchdev_hwdom_set()
183 if (netdev_phys_item_id_same(&joining->ppid, &p->ppid)) { in nbp_switchdev_hwdom_set()
184 joining->hwdom = p->hwdom; in nbp_switchdev_hwdom_set()
201 struct net_bridge_port *p; in nbp_switchdev_hwdom_put() local
204 list_for_each_entry(p, &br->port_list, list) { in nbp_switchdev_hwdom_put()
205 if (p->hwdom == leaving->hwdom) in nbp_switchdev_hwdom_put()
212 static int nbp_switchdev_add(struct net_bridge_port *p, in nbp_switchdev_add() argument
219 if (p->offload_count) { in nbp_switchdev_add()
224 if (!netdev_phys_item_id_same(&p->ppid, &ppid)) { in nbp_switchdev_add()
234 p->offload_count++; in nbp_switchdev_add()
239 p->ppid = ppid; in nbp_switchdev_add()
240 p->offload_count = 1; in nbp_switchdev_add()
242 err = nbp_switchdev_hwdom_set(p); in nbp_switchdev_add()
247 p->flags |= BR_TX_FWD_OFFLOAD; in nbp_switchdev_add()
254 static void nbp_switchdev_del(struct net_bridge_port *p) in nbp_switchdev_del() argument
256 if (WARN_ON(!p->offload_count)) in nbp_switchdev_del()
259 p->offload_count--; in nbp_switchdev_del()
261 if (p->offload_count) in nbp_switchdev_del()
264 if (p->hwdom) in nbp_switchdev_del()
265 nbp_switchdev_hwdom_put(p); in nbp_switchdev_del()
267 if (p->flags & BR_TX_FWD_OFFLOAD) { in nbp_switchdev_del()
268 p->flags &= ~BR_TX_FWD_OFFLOAD; in nbp_switchdev_del()
273 static int nbp_switchdev_sync_objs(struct net_bridge_port *p, const void *ctx, in nbp_switchdev_sync_objs() argument
278 struct net_device *br_dev = p->br->dev; in nbp_switchdev_sync_objs()
279 struct net_device *dev = p->dev; in nbp_switchdev_sync_objs()
297 static void nbp_switchdev_unsync_objs(struct net_bridge_port *p, in nbp_switchdev_unsync_objs() argument
302 struct net_device *br_dev = p->br->dev; in nbp_switchdev_unsync_objs()
303 struct net_device *dev = p->dev; in nbp_switchdev_unsync_objs()
315 int br_switchdev_port_offload(struct net_bridge_port *p, in br_switchdev_port_offload() argument
329 err = nbp_switchdev_add(p, ppid, tx_fwd_offload, extack); in br_switchdev_port_offload()
333 err = nbp_switchdev_sync_objs(p, ctx, atomic_nb, blocking_nb, extack); in br_switchdev_port_offload()
340 nbp_switchdev_del(p); in br_switchdev_port_offload()
345 void br_switchdev_port_unoffload(struct net_bridge_port *p, const void *ctx, in br_switchdev_port_unoffload() argument
349 nbp_switchdev_unsync_objs(p, ctx, atomic_nb, blocking_nb); in br_switchdev_port_unoffload()
351 nbp_switchdev_del(p); in br_switchdev_port_unoffload()