• Home
  • Raw
  • Download

Lines Matching refs:dst

492 static u32 dev_map_bpf_prog_run_skb(struct sk_buff *skb, struct bpf_dtab_netdev *dst)  in dev_map_bpf_prog_run_skb()  argument
494 struct xdp_txq_info txq = { .dev = dst->dev }; in dev_map_bpf_prog_run_skb()
498 if (!dst->xdp_prog) in dev_map_bpf_prog_run_skb()
504 act = bpf_prog_run_generic_xdp(skb, &xdp, dst->xdp_prog); in dev_map_bpf_prog_run_skb()
513 trace_xdp_exception(dst->dev, dst->xdp_prog, act); in dev_map_bpf_prog_run_skb()
529 int dev_map_enqueue(struct bpf_dtab_netdev *dst, struct xdp_buff *xdp, in dev_map_enqueue() argument
532 struct net_device *dev = dst->dev; in dev_map_enqueue()
534 return __xdp_enqueue(dev, xdp, dev_rx, dst->xdp_prog); in dev_map_enqueue()
593 struct bpf_dtab_netdev *dst, *last_dst = NULL; in dev_map_enqueue_multi() local
612 dst = rcu_dereference_check(dtab->netdev_map[i], in dev_map_enqueue_multi()
614 if (!is_valid_dst(dst, xdp)) in dev_map_enqueue_multi()
617 if (is_ifindex_excluded(excluded_devices, num_excluded, dst->dev->ifindex)) in dev_map_enqueue_multi()
622 last_dst = dst; in dev_map_enqueue_multi()
630 last_dst = dst; in dev_map_enqueue_multi()
635 hlist_for_each_entry_rcu(dst, head, index_hlist, in dev_map_enqueue_multi()
637 if (!is_valid_dst(dst, xdp)) in dev_map_enqueue_multi()
641 dst->dev->ifindex)) in dev_map_enqueue_multi()
646 last_dst = dst; in dev_map_enqueue_multi()
654 last_dst = dst; in dev_map_enqueue_multi()
668 int dev_map_generic_redirect(struct bpf_dtab_netdev *dst, struct sk_buff *skb, in dev_map_generic_redirect() argument
673 err = xdp_ok_fwd_dev(dst->dev, skb->len); in dev_map_generic_redirect()
681 if (dev_map_bpf_prog_run_skb(skb, dst) != XDP_PASS) in dev_map_generic_redirect()
684 skb->dev = dst->dev; in dev_map_generic_redirect()
690 static int dev_map_redirect_clone(struct bpf_dtab_netdev *dst, in dev_map_redirect_clone() argument
701 err = dev_map_generic_redirect(dst, nskb, xdp_prog); in dev_map_redirect_clone()
715 struct bpf_dtab_netdev *dst, *last_dst = NULL; in dev_map_redirect_multi() local
730 dst = rcu_dereference_check(dtab->netdev_map[i], in dev_map_redirect_multi()
732 if (!dst) in dev_map_redirect_multi()
735 if (is_ifindex_excluded(excluded_devices, num_excluded, dst->dev->ifindex)) in dev_map_redirect_multi()
740 last_dst = dst; in dev_map_redirect_multi()
748 last_dst = dst; in dev_map_redirect_multi()
754 hlist_for_each_entry_safe(dst, next, head, index_hlist) { in dev_map_redirect_multi()
755 if (!dst) in dev_map_redirect_multi()
759 dst->dev->ifindex)) in dev_map_redirect_multi()
764 last_dst = dst; in dev_map_redirect_multi()
772 last_dst = dst; in dev_map_redirect_multi()