Commit 5dbfb6ec authored by David S. Miller's avatar David S. Miller

Merge git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf

Daniel Borkmann says:

====================
pull-request: bpf 2018-08-05

The following pull-request contains BPF updates for your *net* tree.

The main changes are:

1) Fix bpftool percpu_array dump by using correct roundup to next
   multiple of 8 for the value size, from Yonghong.

2) Fix in AF_XDP's __xsk_rcv_zc() to not returning frames back to
   allocator since driver will recycle frame anyway in case of an
   error, from Jakub.

3) Fix up BPF test_lwt_seg6local test cases to final iproute2
   syntax, from Mathieu.
====================
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 5607016c 8c85cbdf
...@@ -84,10 +84,8 @@ static int __xsk_rcv_zc(struct xdp_sock *xs, struct xdp_buff *xdp, u32 len) ...@@ -84,10 +84,8 @@ static int __xsk_rcv_zc(struct xdp_sock *xs, struct xdp_buff *xdp, u32 len)
{ {
int err = xskq_produce_batch_desc(xs->rx, (u64)xdp->handle, len); int err = xskq_produce_batch_desc(xs->rx, (u64)xdp->handle, len);
if (err) { if (err)
xdp_return_buff(xdp);
xs->rx_dropped++; xs->rx_dropped++;
}
return err; return err;
} }
......
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
#include <assert.h> #include <assert.h>
#include <errno.h> #include <errno.h>
#include <fcntl.h> #include <fcntl.h>
#include <linux/kernel.h>
#include <stdbool.h> #include <stdbool.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
...@@ -90,7 +91,8 @@ static bool map_is_map_of_progs(__u32 type) ...@@ -90,7 +91,8 @@ static bool map_is_map_of_progs(__u32 type)
static void *alloc_value(struct bpf_map_info *info) static void *alloc_value(struct bpf_map_info *info)
{ {
if (map_is_per_cpu(info->type)) if (map_is_per_cpu(info->type))
return malloc(info->value_size * get_possible_cpus()); return malloc(round_up(info->value_size, 8) *
get_possible_cpus());
else else
return malloc(info->value_size); return malloc(info->value_size);
} }
...@@ -161,9 +163,10 @@ static void print_entry_json(struct bpf_map_info *info, unsigned char *key, ...@@ -161,9 +163,10 @@ static void print_entry_json(struct bpf_map_info *info, unsigned char *key,
jsonw_name(json_wtr, "value"); jsonw_name(json_wtr, "value");
print_hex_data_json(value, info->value_size); print_hex_data_json(value, info->value_size);
} else { } else {
unsigned int i, n; unsigned int i, n, step;
n = get_possible_cpus(); n = get_possible_cpus();
step = round_up(info->value_size, 8);
jsonw_name(json_wtr, "key"); jsonw_name(json_wtr, "key");
print_hex_data_json(key, info->key_size); print_hex_data_json(key, info->key_size);
...@@ -176,7 +179,7 @@ static void print_entry_json(struct bpf_map_info *info, unsigned char *key, ...@@ -176,7 +179,7 @@ static void print_entry_json(struct bpf_map_info *info, unsigned char *key,
jsonw_int_field(json_wtr, "cpu", i); jsonw_int_field(json_wtr, "cpu", i);
jsonw_name(json_wtr, "value"); jsonw_name(json_wtr, "value");
print_hex_data_json(value + i * info->value_size, print_hex_data_json(value + i * step,
info->value_size); info->value_size);
jsonw_end_object(json_wtr); jsonw_end_object(json_wtr);
...@@ -207,9 +210,10 @@ static void print_entry_plain(struct bpf_map_info *info, unsigned char *key, ...@@ -207,9 +210,10 @@ static void print_entry_plain(struct bpf_map_info *info, unsigned char *key,
printf("\n"); printf("\n");
} else { } else {
unsigned int i, n; unsigned int i, n, step;
n = get_possible_cpus(); n = get_possible_cpus();
step = round_up(info->value_size, 8);
printf("key:\n"); printf("key:\n");
fprint_hex(stdout, key, info->key_size, " "); fprint_hex(stdout, key, info->key_size, " ");
...@@ -217,7 +221,7 @@ static void print_entry_plain(struct bpf_map_info *info, unsigned char *key, ...@@ -217,7 +221,7 @@ static void print_entry_plain(struct bpf_map_info *info, unsigned char *key,
for (i = 0; i < n; i++) { for (i = 0; i < n; i++) {
printf("value (CPU %02d):%c", printf("value (CPU %02d):%c",
i, info->value_size > 16 ? '\n' : ' '); i, info->value_size > 16 ? '\n' : ' ');
fprint_hex(stdout, value + i * info->value_size, fprint_hex(stdout, value + i * step,
info->value_size, " "); info->value_size, " ");
printf("\n"); printf("\n");
} }
......
...@@ -115,14 +115,14 @@ ip netns exec ns2 ip -6 route add fb00::6 encap bpf in obj test_lwt_seg6local.o ...@@ -115,14 +115,14 @@ ip netns exec ns2 ip -6 route add fb00::6 encap bpf in obj test_lwt_seg6local.o
ip netns exec ns2 ip -6 route add fd00::1 dev veth3 via fb00::43 scope link ip netns exec ns2 ip -6 route add fd00::1 dev veth3 via fb00::43 scope link
ip netns exec ns3 ip -6 route add fc42::1 dev veth5 via fb00::65 ip netns exec ns3 ip -6 route add fc42::1 dev veth5 via fb00::65
ip netns exec ns3 ip -6 route add fd00::1 encap seg6local action End.BPF obj test_lwt_seg6local.o sec add_egr_x dev veth4 ip netns exec ns3 ip -6 route add fd00::1 encap seg6local action End.BPF endpoint obj test_lwt_seg6local.o sec add_egr_x dev veth4
ip netns exec ns4 ip -6 route add fd00::2 encap seg6local action End.BPF obj test_lwt_seg6local.o sec pop_egr dev veth6 ip netns exec ns4 ip -6 route add fd00::2 encap seg6local action End.BPF endpoint obj test_lwt_seg6local.o sec pop_egr dev veth6
ip netns exec ns4 ip -6 addr add fc42::1 dev lo ip netns exec ns4 ip -6 addr add fc42::1 dev lo
ip netns exec ns4 ip -6 route add fd00::3 dev veth7 via fb00::87 ip netns exec ns4 ip -6 route add fd00::3 dev veth7 via fb00::87
ip netns exec ns5 ip -6 route add fd00::4 table 117 dev veth9 via fb00::109 ip netns exec ns5 ip -6 route add fd00::4 table 117 dev veth9 via fb00::109
ip netns exec ns5 ip -6 route add fd00::3 encap seg6local action End.BPF obj test_lwt_seg6local.o sec inspect_t dev veth8 ip netns exec ns5 ip -6 route add fd00::3 encap seg6local action End.BPF endpoint obj test_lwt_seg6local.o sec inspect_t dev veth8
ip netns exec ns6 ip -6 addr add fb00::6/16 dev lo ip netns exec ns6 ip -6 addr add fb00::6/16 dev lo
ip netns exec ns6 ip -6 addr add fd00::4/16 dev lo ip netns exec ns6 ip -6 addr add fd00::4/16 dev lo
......
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