Commit 1b1a251c authored by Björn Töpel's avatar Björn Töpel Committed by Alexei Starovoitov

xsk: wire up XDP_DRV side of AF_XDP

This commit wires up the xskmap to XDP_DRV layer.
Signed-off-by: default avatarBjörn Töpel <bjorn.topel@intel.com>
Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
parent fbfc504a
...@@ -2801,7 +2801,8 @@ static int __bpf_tx_xdp_map(struct net_device *dev_rx, void *fwd, ...@@ -2801,7 +2801,8 @@ static int __bpf_tx_xdp_map(struct net_device *dev_rx, void *fwd,
{ {
int err; int err;
if (map->map_type == BPF_MAP_TYPE_DEVMAP) { switch (map->map_type) {
case BPF_MAP_TYPE_DEVMAP: {
struct net_device *dev = fwd; struct net_device *dev = fwd;
struct xdp_frame *xdpf; struct xdp_frame *xdpf;
...@@ -2819,14 +2820,25 @@ static int __bpf_tx_xdp_map(struct net_device *dev_rx, void *fwd, ...@@ -2819,14 +2820,25 @@ static int __bpf_tx_xdp_map(struct net_device *dev_rx, void *fwd,
if (err) if (err)
return err; return err;
__dev_map_insert_ctx(map, index); __dev_map_insert_ctx(map, index);
break;
} else if (map->map_type == BPF_MAP_TYPE_CPUMAP) { }
case BPF_MAP_TYPE_CPUMAP: {
struct bpf_cpu_map_entry *rcpu = fwd; struct bpf_cpu_map_entry *rcpu = fwd;
err = cpu_map_enqueue(rcpu, xdp, dev_rx); err = cpu_map_enqueue(rcpu, xdp, dev_rx);
if (err) if (err)
return err; return err;
__cpu_map_insert_ctx(map, index); __cpu_map_insert_ctx(map, index);
break;
}
case BPF_MAP_TYPE_XSKMAP: {
struct xdp_sock *xs = fwd;
err = __xsk_map_redirect(map, xdp, xs);
return err;
}
default:
break;
} }
return 0; return 0;
} }
...@@ -2845,6 +2857,9 @@ void xdp_do_flush_map(void) ...@@ -2845,6 +2857,9 @@ void xdp_do_flush_map(void)
case BPF_MAP_TYPE_CPUMAP: case BPF_MAP_TYPE_CPUMAP:
__cpu_map_flush(map); __cpu_map_flush(map);
break; break;
case BPF_MAP_TYPE_XSKMAP:
__xsk_map_flush(map);
break;
default: default:
break; break;
} }
...@@ -2859,6 +2874,8 @@ static void *__xdp_map_lookup_elem(struct bpf_map *map, u32 index) ...@@ -2859,6 +2874,8 @@ static void *__xdp_map_lookup_elem(struct bpf_map *map, u32 index)
return __dev_map_lookup_elem(map, index); return __dev_map_lookup_elem(map, index);
case BPF_MAP_TYPE_CPUMAP: case BPF_MAP_TYPE_CPUMAP:
return __cpu_map_lookup_elem(map, index); return __cpu_map_lookup_elem(map, index);
case BPF_MAP_TYPE_XSKMAP:
return __xsk_map_lookup_elem(map, index);
default: default:
return NULL; return NULL;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment