From patchwork Thu Oct 6 06:26:49 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 117431 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id D630FA00C2; Thu, 6 Oct 2022 08:27:11 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id AE4784281E; Thu, 6 Oct 2022 08:27:07 +0200 (CEST) Received: from shelob.oktetlabs.ru (shelob.oktetlabs.ru [91.220.146.113]) by mails.dpdk.org (Postfix) with ESMTP id 42C6140697 for ; Thu, 6 Oct 2022 08:27:05 +0200 (CEST) Received: by shelob.oktetlabs.ru (Postfix, from userid 115) id EAFB066; Thu, 6 Oct 2022 09:27:04 +0300 (MSK) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mail1.oktetlabs.ru X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=ALL_TRUSTED, DKIM_ADSP_DISCARD, URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.6 Received: from aros.oktetlabs.ru (aros.oktetlabs.ru [192.168.38.17]) by shelob.oktetlabs.ru (Postfix) with ESMTP id 16B8C66; Thu, 6 Oct 2022 09:27:04 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 shelob.oktetlabs.ru 16B8C66 Authentication-Results: shelob.oktetlabs.ru/16B8C66; dkim=none; dkim-atps=neutral From: Andrew Rybchenko To: Ciara Loftus , Qi Zhang Cc: dev@dpdk.org, Bruce Richardson Subject: [PATCH v4 1/6] net/af_xdp: move XDP library presence flag to right branch Date: Thu, 6 Oct 2022 09:26:49 +0300 Message-Id: <20221006062654.1420349-2-andrew.rybchenko@oktetlabs.ru> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20221006062654.1420349-1-andrew.rybchenko@oktetlabs.ru> References: <20220624102354.1516606-1-ciara.loftus@intel.com> <20221006062654.1420349-1-andrew.rybchenko@oktetlabs.ru> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org RTE_NET_AF_XDP_LIBXDP is a conditional to include xdp/xsk.h and should be set as soon as we know that the header is present. RTE_NET_AF_XDP_SHARED_UMEM is one of conditions to use xsk_socket__create_shared(). Both do not depend on libbpf and bpf/bpf.h presence. Since else branch below returns error, there is no functional changes, just style which will help on further rework. Signed-off-by: Andrew Rybchenko --- drivers/net/af_xdp/meson.build | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/net/af_xdp/meson.build b/drivers/net/af_xdp/meson.build index 1e0de23705..882d0b9518 100644 --- a/drivers/net/af_xdp/meson.build +++ b/drivers/net/af_xdp/meson.build @@ -17,10 +17,10 @@ endif if cc.has_header('linux/if_xdp.h') if xdp_dep.found() and cc.has_header('xdp/xsk.h') + cflags += ['-DRTE_NET_AF_XDP_LIBXDP'] + cflags += ['-DRTE_NET_AF_XDP_SHARED_UMEM'] + ext_deps += xdp_dep if bpf_dep.found() and cc.has_header('bpf/bpf.h') - cflags += ['-DRTE_NET_AF_XDP_LIBXDP'] - cflags += ['-DRTE_NET_AF_XDP_SHARED_UMEM'] - ext_deps += xdp_dep ext_deps += bpf_dep bpf_ver_dep = dependency('libbpf', version : '>=0.7.0', required: false, method: 'pkg-config') From patchwork Thu Oct 6 06:26:50 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 117432 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id D0419A00C2; Thu, 6 Oct 2022 08:27:17 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B1E964284D; Thu, 6 Oct 2022 08:27:08 +0200 (CEST) Received: from shelob.oktetlabs.ru (shelob.oktetlabs.ru [91.220.146.113]) by mails.dpdk.org (Postfix) with ESMTP id A37E740697 for ; Thu, 6 Oct 2022 08:27:05 +0200 (CEST) Received: by shelob.oktetlabs.ru (Postfix, from userid 115) id 6F81B7D; Thu, 6 Oct 2022 09:27:05 +0300 (MSK) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mail1.oktetlabs.ru X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=ALL_TRUSTED, DKIM_ADSP_DISCARD, URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.6 Received: from aros.oktetlabs.ru (aros.oktetlabs.ru [192.168.38.17]) by shelob.oktetlabs.ru (Postfix) with ESMTP id 4356567; Thu, 6 Oct 2022 09:27:04 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 shelob.oktetlabs.ru 4356567 Authentication-Results: shelob.oktetlabs.ru/4356567; dkim=none; dkim-atps=neutral From: Andrew Rybchenko To: Ciara Loftus , Qi Zhang Cc: dev@dpdk.org, Bruce Richardson Subject: [PATCH v4 2/6] net/af_xdp: make it clear which libxdp version is required Date: Thu, 6 Oct 2022 09:26:50 +0300 Message-Id: <20221006062654.1420349-3-andrew.rybchenko@oktetlabs.ru> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20221006062654.1420349-1-andrew.rybchenko@oktetlabs.ru> References: <20220624102354.1516606-1-ciara.loftus@intel.com> <20221006062654.1420349-1-andrew.rybchenko@oktetlabs.ru> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Include checked libxdp version in driver build skip reason. Signed-off-by: Andrew Rybchenko --- drivers/net/af_xdp/meson.build | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/net/af_xdp/meson.build b/drivers/net/af_xdp/meson.build index 882d0b9518..fa011c357d 100644 --- a/drivers/net/af_xdp/meson.build +++ b/drivers/net/af_xdp/meson.build @@ -9,7 +9,8 @@ endif sources = files('rte_eth_af_xdp.c') -xdp_dep = dependency('libxdp', version : '>=1.2.2', required: false, method: 'pkg-config') +libxdp_ver = '>=1.2.2' +xdp_dep = dependency('libxdp', version : libxdp_ver, required: false, method: 'pkg-config') bpf_dep = dependency('libbpf', required: false, method: 'pkg-config') if not bpf_dep.found() bpf_dep = cc.find_library('bpf', required: false) @@ -45,11 +46,11 @@ if cc.has_header('linux/if_xdp.h') endif else build = false - reason = 'missing dependency, "libxdp" or "libbpf <= v0.6.0"' + reason = 'missing dependency, "libxdp ' + libxdp_ver + '" or "libbpf <= v0.6.0"' endif else build = false - reason = 'missing dependency, "libxdp" and "libbpf"' + reason = 'missing dependency, "libxdp ' + libxdp_ver + '" and "libbpf"' endif else build = false From patchwork Thu Oct 6 06:26:51 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 117433 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id B8A2DA00C2; Thu, 6 Oct 2022 08:27:22 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id AA09642B70; Thu, 6 Oct 2022 08:27:09 +0200 (CEST) Received: from shelob.oktetlabs.ru (shelob.oktetlabs.ru [91.220.146.113]) by mails.dpdk.org (Postfix) with ESMTP id BBE30427F3 for ; Thu, 6 Oct 2022 08:27:05 +0200 (CEST) Received: by shelob.oktetlabs.ru (Postfix, from userid 115) id 7BD7183; Thu, 6 Oct 2022 09:27:05 +0300 (MSK) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mail1.oktetlabs.ru X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=ALL_TRUSTED, DKIM_ADSP_DISCARD, URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.6 Received: from aros.oktetlabs.ru (aros.oktetlabs.ru [192.168.38.17]) by shelob.oktetlabs.ru (Postfix) with ESMTP id 6C8B469; Thu, 6 Oct 2022 09:27:04 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 shelob.oktetlabs.ru 6C8B469 Authentication-Results: shelob.oktetlabs.ru/6C8B469; dkim=none; dkim-atps=neutral From: Andrew Rybchenko To: Ciara Loftus , Qi Zhang Cc: dev@dpdk.org, Bruce Richardson Subject: [PATCH v4 3/6] net/af_xdp: avoid version-based check for shared UMEM Date: Thu, 6 Oct 2022 09:26:51 +0300 Message-Id: <20221006062654.1420349-4-andrew.rybchenko@oktetlabs.ru> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20221006062654.1420349-1-andrew.rybchenko@oktetlabs.ru> References: <20220624102354.1516606-1-ciara.loftus@intel.com> <20221006062654.1420349-1-andrew.rybchenko@oktetlabs.ru> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Check for xsk_socket__create_shared() function instead. Signed-off-by: Andrew Rybchenko --- drivers/net/af_xdp/meson.build | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/drivers/net/af_xdp/meson.build b/drivers/net/af_xdp/meson.build index fa011c357d..a01a67c7e7 100644 --- a/drivers/net/af_xdp/meson.build +++ b/drivers/net/af_xdp/meson.build @@ -19,7 +19,6 @@ endif if cc.has_header('linux/if_xdp.h') if xdp_dep.found() and cc.has_header('xdp/xsk.h') cflags += ['-DRTE_NET_AF_XDP_LIBXDP'] - cflags += ['-DRTE_NET_AF_XDP_SHARED_UMEM'] ext_deps += xdp_dep if bpf_dep.found() and cc.has_header('bpf/bpf.h') ext_deps += bpf_dep @@ -39,11 +38,6 @@ if cc.has_header('linux/if_xdp.h') required: false, method: 'pkg-config') if bpf_ver_dep.found() ext_deps += bpf_dep - bpf_shumem_ver_dep = dependency('libbpf', version : '>=0.2.0', - required: false, method: 'pkg-config') - if bpf_shumem_ver_dep.found() - cflags += ['-DRTE_NET_AF_XDP_SHARED_UMEM'] - endif else build = false reason = 'missing dependency, "libxdp ' + libxdp_ver + '" or "libbpf <= v0.6.0"' @@ -56,3 +50,18 @@ else build = false reason = 'missing header, "linux/if_xdp.h"' endif + +if build + xsk_check_prefix = ''' +#ifdef RTE_NET_AF_XDP_LIBXDP +#include +#else +#include +#endif + ''' + + if cc.has_function('xsk_socket__create_shared', prefix : xsk_check_prefix, + dependencies : ext_deps) + cflags += ['-DRTE_NET_AF_XDP_SHARED_UMEM'] + endif +endif From patchwork Thu Oct 6 06:26:52 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 117434 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 4C811A00C2; Thu, 6 Oct 2022 08:27:29 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id F17B742B7C; Thu, 6 Oct 2022 08:27:10 +0200 (CEST) Received: from shelob.oktetlabs.ru (shelob.oktetlabs.ru [91.220.146.113]) by mails.dpdk.org (Postfix) with ESMTP id 3535A40697 for ; Thu, 6 Oct 2022 08:27:06 +0200 (CEST) Received: by shelob.oktetlabs.ru (Postfix, from userid 115) id EF4667D; Thu, 6 Oct 2022 09:27:05 +0300 (MSK) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mail1.oktetlabs.ru X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=ALL_TRUSTED, DKIM_ADSP_DISCARD, URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.6 Received: from aros.oktetlabs.ru (aros.oktetlabs.ru [192.168.38.17]) by shelob.oktetlabs.ru (Postfix) with ESMTP id A74EC74; Thu, 6 Oct 2022 09:27:04 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 shelob.oktetlabs.ru A74EC74 Authentication-Results: shelob.oktetlabs.ru/A74EC74; dkim=none; dkim-atps=neutral From: Andrew Rybchenko To: Ciara Loftus , Qi Zhang Cc: dev@dpdk.org, Bruce Richardson Subject: [PATCH v4 4/6] net/af_xdp: avoid version-based check for program load mech Date: Thu, 6 Oct 2022 09:26:52 +0300 Message-Id: <20221006062654.1420349-5-andrew.rybchenko@oktetlabs.ru> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20221006062654.1420349-1-andrew.rybchenko@oktetlabs.ru> References: <20220624102354.1516606-1-ciara.loftus@intel.com> <20221006062654.1420349-1-andrew.rybchenko@oktetlabs.ru> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Version-based checks are bad. It is better to check for required functions. Check for bpf_object__next_program() in this case since it appears last in libbpf among functions used to load program without bpf_prog_load() which is deprecated in libbpf v0.7.0. Signed-off-by: Andrew Rybchenko --- drivers/net/af_xdp/meson.build | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/net/af_xdp/meson.build b/drivers/net/af_xdp/meson.build index a01a67c7e7..9d5ffab96b 100644 --- a/drivers/net/af_xdp/meson.build +++ b/drivers/net/af_xdp/meson.build @@ -22,11 +22,6 @@ if cc.has_header('linux/if_xdp.h') ext_deps += xdp_dep if bpf_dep.found() and cc.has_header('bpf/bpf.h') ext_deps += bpf_dep - bpf_ver_dep = dependency('libbpf', version : '>=0.7.0', - required: false, method: 'pkg-config') - if bpf_ver_dep.found() - cflags += ['-DRTE_NET_AF_XDP_LIBBPF_OBJ_OPEN'] - endif else build = false reason = 'missing dependency, libbpf' @@ -64,4 +59,9 @@ if build dependencies : ext_deps) cflags += ['-DRTE_NET_AF_XDP_SHARED_UMEM'] endif + if cc.has_function('bpf_object__next_program', + prefix : '#include ', + dependencies : bpf_dep) + cflags += ['-DRTE_NET_AF_XDP_LIBBPF_OBJ_OPEN'] + endif endif From patchwork Thu Oct 6 06:26:53 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 117435 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id B5698A00C2; Thu, 6 Oct 2022 08:27:34 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id EDBB542B82; Thu, 6 Oct 2022 08:27:11 +0200 (CEST) Received: from shelob.oktetlabs.ru (shelob.oktetlabs.ru [91.220.146.113]) by mails.dpdk.org (Postfix) with ESMTP id 5B495427F3 for ; Thu, 6 Oct 2022 08:27:06 +0200 (CEST) Received: by shelob.oktetlabs.ru (Postfix, from userid 115) id 3EB0F83; Thu, 6 Oct 2022 09:27:06 +0300 (MSK) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mail1.oktetlabs.ru X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=ALL_TRUSTED, DKIM_ADSP_DISCARD autolearn=no autolearn_force=no version=3.4.6 Received: from aros.oktetlabs.ru (aros.oktetlabs.ru [192.168.38.17]) by shelob.oktetlabs.ru (Postfix) with ESMTP id D210F7B; Thu, 6 Oct 2022 09:27:04 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 shelob.oktetlabs.ru D210F7B Authentication-Results: shelob.oktetlabs.ru/D210F7B; dkim=none; dkim-atps=neutral From: Andrew Rybchenko To: Ciara Loftus , Qi Zhang Cc: dev@dpdk.org, Bruce Richardson Subject: [PATCH v4 5/6] net/af_xdp: log errors on XDP program removal failures Date: Thu, 6 Oct 2022 09:26:53 +0300 Message-Id: <20221006062654.1420349-6-andrew.rybchenko@oktetlabs.ru> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20221006062654.1420349-1-andrew.rybchenko@oktetlabs.ru> References: <20220624102354.1516606-1-ciara.loftus@intel.com> <20221006062654.1420349-1-andrew.rybchenko@oktetlabs.ru> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Make it visible in logs if something goes wrong on XDP program removal failure. Signed-off-by: Andrew Rybchenko --- drivers/net/af_xdp/rte_eth_af_xdp.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/drivers/net/af_xdp/rte_eth_af_xdp.c b/drivers/net/af_xdp/rte_eth_af_xdp.c index 9957de2314..f7c2321a18 100644 --- a/drivers/net/af_xdp/rte_eth_af_xdp.c +++ b/drivers/net/af_xdp/rte_eth_af_xdp.c @@ -866,18 +866,24 @@ eth_stats_reset(struct rte_eth_dev *dev) return 0; } -static void +static int remove_xdp_program(struct pmd_internals *internals) { uint32_t curr_prog_id = 0; + int ret; - if (bpf_get_link_xdp_id(internals->if_index, &curr_prog_id, - XDP_FLAGS_UPDATE_IF_NOEXIST)) { + ret = bpf_get_link_xdp_id(internals->if_index, &curr_prog_id, + XDP_FLAGS_UPDATE_IF_NOEXIST); + if (ret != 0) { AF_XDP_LOG(ERR, "bpf_get_link_xdp_id failed\n"); - return; + return ret; } - bpf_set_link_xdp_fd(internals->if_index, -1, - XDP_FLAGS_UPDATE_IF_NOEXIST); + + ret = bpf_set_link_xdp_fd(internals->if_index, -1, + XDP_FLAGS_UPDATE_IF_NOEXIST); + if (ret != 0) + AF_XDP_LOG(ERR, "bpf_set_link_xdp_fd failed\n"); + return ret; } static void @@ -932,7 +938,8 @@ eth_dev_close(struct rte_eth_dev *dev) */ dev->data->mac_addrs = NULL; - remove_xdp_program(internals); + if (remove_xdp_program(internals) != 0) + AF_XDP_LOG(ERR, "Error while removing XDP program.\n"); if (internals->shared_umem) { struct internal_list *list; From patchwork Thu Oct 6 06:26:54 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 117436 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id A2143A00C2; Thu, 6 Oct 2022 08:27:39 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D989842B85; Thu, 6 Oct 2022 08:27:12 +0200 (CEST) Received: from shelob.oktetlabs.ru (shelob.oktetlabs.ru [91.220.146.113]) by mails.dpdk.org (Postfix) with ESMTP id 8E5B840697 for ; Thu, 6 Oct 2022 08:27:06 +0200 (CEST) Received: by shelob.oktetlabs.ru (Postfix, from userid 115) id 6244E74; Thu, 6 Oct 2022 09:27:06 +0300 (MSK) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mail1.oktetlabs.ru X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=ALL_TRUSTED, DKIM_ADSP_DISCARD, URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.6 Received: from aros.oktetlabs.ru (aros.oktetlabs.ru [192.168.38.17]) by shelob.oktetlabs.ru (Postfix) with ESMTP id 0A5E97F; Thu, 6 Oct 2022 09:27:05 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 shelob.oktetlabs.ru 0A5E97F Authentication-Results: shelob.oktetlabs.ru/0A5E97F; dkim=none; dkim-atps=neutral From: Andrew Rybchenko To: Ciara Loftus , Qi Zhang Cc: dev@dpdk.org, Bruce Richardson Subject: [PATCH v4 6/6] net/af_xdp: make compatible with libbpf v0.8.0 Date: Thu, 6 Oct 2022 09:26:54 +0300 Message-Id: <20221006062654.1420349-7-andrew.rybchenko@oktetlabs.ru> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20221006062654.1420349-1-andrew.rybchenko@oktetlabs.ru> References: <20220624102354.1516606-1-ciara.loftus@intel.com> <20221006062654.1420349-1-andrew.rybchenko@oktetlabs.ru> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Ciara Loftus libbpf v0.8.0 deprecates the bpf_get_link_xdp_id() and bpf_set_link_xdp_fd() functions. Use meson to detect if bpf_xdp_attach() is available and if so, use the recommended replacement functions bpf_xdp_query_id(), bpf_xdp_attach() and bpf_xdp_detach(). Signed-off-by: Ciara Loftus Signed-off-by: Andrew Rybchenko --- doc/guides/rel_notes/release_22_11.rst | 4 +++ drivers/net/af_xdp/meson.build | 5 ++++ drivers/net/af_xdp/rte_eth_af_xdp.c | 38 +++++++++++++++++++++++++- 3 files changed, 46 insertions(+), 1 deletion(-) diff --git a/doc/guides/rel_notes/release_22_11.rst b/doc/guides/rel_notes/release_22_11.rst index f1cc129933..490186b992 100644 --- a/doc/guides/rel_notes/release_22_11.rst +++ b/doc/guides/rel_notes/release_22_11.rst @@ -78,6 +78,10 @@ New Features Added new rte_flow action which allows application to re-route packets directly to the kernel without software involvement. +* **Updated AF_XDP PMD.** + + * Made compatible with libbpf v0.8.0 (when used with libxdp). + * **Updated Intel iavf driver.** * Added flow subscription support. diff --git a/drivers/net/af_xdp/meson.build b/drivers/net/af_xdp/meson.build index 9d5ffab96b..858047989e 100644 --- a/drivers/net/af_xdp/meson.build +++ b/drivers/net/af_xdp/meson.build @@ -64,4 +64,9 @@ if build dependencies : bpf_dep) cflags += ['-DRTE_NET_AF_XDP_LIBBPF_OBJ_OPEN'] endif + if cc.has_function('bpf_xdp_attach', + prefix : '#include ', + dependencies : bpf_dep) + cflags += ['-DRTE_NET_AF_XDP_LIBBPF_XDP_ATTACH'] + endif endif diff --git a/drivers/net/af_xdp/rte_eth_af_xdp.c b/drivers/net/af_xdp/rte_eth_af_xdp.c index f7c2321a18..b6ec9bf490 100644 --- a/drivers/net/af_xdp/rte_eth_af_xdp.c +++ b/drivers/net/af_xdp/rte_eth_af_xdp.c @@ -866,6 +866,40 @@ eth_stats_reset(struct rte_eth_dev *dev) return 0; } +#ifdef RTE_NET_AF_XDP_LIBBPF_XDP_ATTACH + +static int link_xdp_prog_with_dev(int ifindex, int fd, __u32 flags) +{ + return bpf_xdp_attach(ifindex, fd, flags, NULL); +} + +static int +remove_xdp_program(struct pmd_internals *internals) +{ + uint32_t curr_prog_id = 0; + int ret; + + ret = bpf_xdp_query_id(internals->if_index, XDP_FLAGS_UPDATE_IF_NOEXIST, + &curr_prog_id); + if (ret != 0) { + AF_XDP_LOG(ERR, "bpf_xdp_query_id failed\n"); + return ret; + } + + ret = bpf_xdp_detach(internals->if_index, XDP_FLAGS_UPDATE_IF_NOEXIST, + NULL); + if (ret != 0) + AF_XDP_LOG(ERR, "bpf_xdp_detach failed\n"); + return ret; +} + +#else + +static int link_xdp_prog_with_dev(int ifindex, int fd, __u32 flags) +{ + return bpf_set_link_xdp_fd(ifindex, fd, flags); +} + static int remove_xdp_program(struct pmd_internals *internals) { @@ -886,6 +920,8 @@ remove_xdp_program(struct pmd_internals *internals) return ret; } +#endif + static void xdp_umem_destroy(struct xsk_umem_info *umem) { @@ -1205,7 +1241,7 @@ load_custom_xdp_prog(const char *prog_path, int if_index, struct bpf_map **map) } /* Link the program with the given network device */ - ret = bpf_set_link_xdp_fd(if_index, prog_fd, + ret = link_xdp_prog_with_dev(if_index, prog_fd, XDP_FLAGS_UPDATE_IF_NOEXIST); if (ret) { AF_XDP_LOG(ERR, "Failed to set prog fd %d on interface\n",