On 02/01/2019 10:42 PM, Maciej Fijalkowski wrote: > Hi! > This patchset tries to address the situation where: > * user loads a particular xdp sample application that does stats polling > * user loads another sample application on the same interface > * then, user sends SIGINT/SIGTERM to the app that was attached as a first one > * second application ends up with an unloaded xdp program > > 1st patch contains a helper libbpf function for getting the map fd by a > given map name. > In patch 2 Jesper removes the read_trace_pipe usage from xdp_redirect_cpu > which > was a blocker for converting this sample to libbpf usage. > 3rd patch updates a bunch of xdp samples to make the use of libbpf. > Patch 4 adjusts RLIMIT_MEMLOCK for two samples touched in this patchset. > In patch 5 extack messages are added for cases where dev_change_xdp_fd returns > with an error so user has an idea what was the reason for not attaching the > xdp program onto interface. > Patch 6 makes the samples behavior similar to what iproute2 does when loading > xdp prog - the "force" flag is introduced. > Patch 7 introduces the libbpf function that will query the driver from > userspace about the currently attached xdp prog id. > > Use it in samples that do polling by checking the prog id in signal handler > and comparing it with previously stored one which is the scope of patch 8. > > Thanks! > > v1->v2: > * add a libbpf helper for getting a prog via relative index > * include xdp_redirect_cpu into conversion > > v2->v3: mostly addressing Daniel's/Jesper's comments > * get rid of the helper from v1->v2 > * feed the xdp_redirect_cpu with program name instead of number > > v3->v4: > * fix help message in xdp_sample_pkts > > v4->v5: > * in get_link_xdp_fd, assign prog_id only when libbpf_nl_get_link returned > with 0 > * add extack messages in dev_change_xdp_fd > * check the return value of bpf_get_link_xdp_id when exiting from sample progs > > v5->v6: > * rebase > > Jesper Dangaard Brouer (1): > samples/bpf: xdp_redirect_cpu have not need for read_trace_pipe > > Maciej Fijalkowski (7): > libbpf: Add a helper for retrieving a map fd for a given name > samples/bpf: Convert XDP samples to libbpf usage > samples/bpf: Extend RLIMIT_MEMLOCK for xdp_{sample_pkts, router_ipv4} > xdp: Provide extack messages when prog attachment failed > samples/bpf: Add a "force" flag to XDP samples > libbpf: Add a support for getting xdp prog id on ifindex > samples/bpf: Check the prog id before exiting > > net/core/dev.c | 12 ++- > samples/bpf/Makefile | 8 +- > samples/bpf/xdp1_user.c | 34 ++++++- > samples/bpf/xdp_adjust_tail_user.c | 38 +++++-- > samples/bpf/xdp_redirect_cpu_user.c | 196 > +++++++++++++++++++++++++----------- > samples/bpf/xdp_redirect_map_user.c | 106 +++++++++++++++---- > samples/bpf/xdp_redirect_user.c | 103 ++++++++++++++++--- > samples/bpf/xdp_router_ipv4_user.c | 179 +++++++++++++++++++++++--------- > samples/bpf/xdp_rxq_info_user.c | 41 ++++++-- > samples/bpf/xdp_sample_pkts_user.c | 81 ++++++++++++--- > samples/bpf/xdp_tx_iptunnel_user.c | 71 ++++++++++--- > samples/bpf/xdpsock_user.c | 30 +++++- > tools/lib/bpf/libbpf.c | 6 ++ > tools/lib/bpf/libbpf.h | 4 + > tools/lib/bpf/libbpf.map | 2 + > tools/lib/bpf/netlink.c | 85 ++++++++++++++++ > 16 files changed, 796 insertions(+), 200 deletions(-) >
Applied, thanks!