summaryrefslogtreecommitdiff
path: root/kernel/bpf/devmap.c
diff options
context:
space:
mode:
authorJonathan Corbet <corbet@lwn.net>2018-07-02 11:14:50 -0600
committerJonathan Corbet <corbet@lwn.net>2018-07-02 11:14:50 -0600
commit5f6654094ff35a7a92eb76667788ef633595e4ea (patch)
tree8404c5fb245cddbc6877b97a9bf53139c95da852 /kernel/bpf/devmap.c
parent5105730fbf6789ff9e20837bdefe32e8ba133595 (diff)
parent021c91791a5e7e85c567452f1be3e4c2c6cb6063 (diff)
Merge tag 'v4.18-rc3' into docs-next
-rc1 broke the docs build due to changes in the e100/e1000 drivers; -rc3 got the fixes via the networking tree. Pull in -rc3 so that the docs tree can actually build the docs again.
Diffstat (limited to 'kernel/bpf/devmap.c')
-rw-r--r--kernel/bpf/devmap.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/kernel/bpf/devmap.c b/kernel/bpf/devmap.c
index a7cc7b3494a9..642c97f6d1b8 100644
--- a/kernel/bpf/devmap.c
+++ b/kernel/bpf/devmap.c
@@ -345,6 +345,20 @@ int dev_map_enqueue(struct bpf_dtab_netdev *dst, struct xdp_buff *xdp,
return bq_enqueue(dst, xdpf, dev_rx);
}
+int dev_map_generic_redirect(struct bpf_dtab_netdev *dst, struct sk_buff *skb,
+ struct bpf_prog *xdp_prog)
+{
+ int err;
+
+ err = __xdp_generic_ok_fwd_dev(skb, dst->dev);
+ if (unlikely(err))
+ return err;
+ skb->dev = dst->dev;
+ generic_xdp_tx(skb, xdp_prog);
+
+ return 0;
+}
+
static void *dev_map_lookup_elem(struct bpf_map *map, void *key)
{
struct bpf_dtab_netdev *obj = __dev_map_lookup_elem(map, *(u32 *)key);