From patchwork Thu Jan 24 21:47:40 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maciej Fijalkowski X-Patchwork-Id: 1030695 Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="jm7xHALS"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43lwkR395bz9s55 for ; Fri, 25 Jan 2019 08:47:58 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728031AbfAXVr5 (ORCPT ); Thu, 24 Jan 2019 16:47:57 -0500 Received: from mail-lj1-f196.google.com ([209.85.208.196]:40573 "EHLO mail-lj1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726304AbfAXVr4 (ORCPT ); Thu, 24 Jan 2019 16:47:56 -0500 Received: by mail-lj1-f196.google.com with SMTP id n18-v6so6616200lji.7 for ; Thu, 24 Jan 2019 13:47:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=kdmHei0+OWETXDEW9pGaf4xH0nqq+vzebGiKgSUvMZ0=; b=jm7xHALSwyvcRo/Ky5yWD/ipoQSJuGDCDk8lNOnyQEvvx/UHBX/WgdWljF0xyLQfLp aD3KU5tQa1MegAg2SBI0Ro7DLK5NLihTQxnmOg8CNFrRSJ6AgUL0xy2CmeX9oM/7lWNG 9ys6qDnb/NVJvib4ZXNtLqX8qPbpFxPh/JcXgzjRZDeU1zD83b/10IwPZHHT69FekY3e FiTm8lPXRLUkF1LmvcV1oNAmUE4uoFQ2akiYmatet2tiQl6LycD3eFS0HG2+LIjg6Yjf aHMlSbpSlEDGslgaXtEznAw/+Gq9Nbb1acHqCGPapGDrAdM3B60xAv2bdh0TmkOCLpKv oHlw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=kdmHei0+OWETXDEW9pGaf4xH0nqq+vzebGiKgSUvMZ0=; b=eX4n+RwqveE/w/nkBjM1+1sORTGZ7MKQeV3H4I2vKrfo1Y/Vf5CRhcZj+1nK1IvedD vzaB3cxm/afKJJcAzLQzVuqzPFADnYOd5aWVOeO7rK8npCRRIALA/6EXx3UMW0yhCZxd UpOUJQholeRiSr3fyU29A//UazdCaerh7QBclfS1Qy6Dk9Fb4dP7hTg3D8tbpwqLQqeL F+oHBuvTKK9EHzHmy2v5cjahKWz6/wWtc2/MWAOZz/iV7ACPIzFRUvws5a8P3YRcPxh4 kmT0o2B4Q6oRgXn08nisnuIXlosC67jpHlnYMnQsreMbvhDsEU50Q3wS1RPauYQlx/yz a/cA== X-Gm-Message-State: AJcUukfizd2gm+nYI1em938kbIboJ+r7m6NuDNMM8/eVqus8hS+JBtWi MeG7esqPd5Bd3/SNC4eWbMwMBPE2 X-Google-Smtp-Source: ALg8bN6YS/qF0fic5oGwu65ZDtv1XDb568SscsKg/cXtDWuPYuVIcbDYI1zLgwwESSzTZwbn6FR8kA== X-Received: by 2002:a2e:b1ca:: with SMTP id e10-v6mr6921392lja.16.1548366474645; Thu, 24 Jan 2019 13:47:54 -0800 (PST) Received: from localhost.localdomain (host-185-93-94-63.ip-point.pl. [185.93.94.63]) by smtp.gmail.com with ESMTPSA id w4sm1136285lfk.83.2019.01.24.13.47.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 24 Jan 2019 13:47:54 -0800 (PST) From: Maciej Fijalkowski To: daniel@iogearbox.net, ast@kernel.org Cc: netdev@vger.kernel.org, jakub.kicinski@netronome.com, brouer@redhat.com Subject: [PATCH bpf-next v3 0/7] xdp: Avoid unloading xdp prog not attached by sample Date: Thu, 24 Jan 2019 22:47:40 +0100 Message-Id: <20190124214747.6986-1-maciejromanfijalkowski@gmail.com> X-Mailer: git-send-email 2.16.1 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org 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. Patch 5 makes the samples behavior similar to what iproute2 does when loading xdp prog - the "force" flag is introduced. Patch 6 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 7. 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 * rebase Jesper Dangaard Brouer (1): samples/bpf: xdp_redirect_cpu have not need for read_trace_pipe Maciej Fijalkowski (6): 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} 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 samples/bpf/Makefile | 8 +- samples/bpf/xdp1_user.c | 29 +++++- samples/bpf/xdp_adjust_tail_user.c | 33 +++++-- samples/bpf/xdp_redirect_cpu_user.c | 191 +++++++++++++++++++++++++----------- samples/bpf/xdp_redirect_map_user.c | 94 ++++++++++++++---- samples/bpf/xdp_redirect_user.c | 92 ++++++++++++++--- samples/bpf/xdp_router_ipv4_user.c | 171 +++++++++++++++++++++++--------- samples/bpf/xdp_rxq_info_user.c | 36 +++++-- samples/bpf/xdp_sample_pkts_user.c | 76 +++++++++++--- samples/bpf/xdp_tx_iptunnel_user.c | 66 ++++++++++--- samples/bpf/xdpsock_user.c | 25 ++++- tools/lib/bpf/libbpf.c | 6 ++ tools/lib/bpf/libbpf.h | 4 + tools/lib/bpf/libbpf.map | 2 + tools/lib/bpf/netlink.c | 84 ++++++++++++++++ 15 files changed, 720 insertions(+), 197 deletions(-)