From patchwork Thu Jul 21 12:14:13 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Loftus, Ciara" X-Patchwork-Id: 114073 X-Patchwork-Delegate: andrew.rybchenko@oktetlabs.ru 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 CA1AFA00C2; Thu, 21 Jul 2022 14:14:34 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id AB4ED40A87; Thu, 21 Jul 2022 14:14:34 +0200 (CEST) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mails.dpdk.org (Postfix) with ESMTP id 49929400D7 for ; Thu, 21 Jul 2022 14:14:33 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1658405673; x=1689941673; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=QeA9sEVUzr/begXf6hzhS6wfObeNGbDBrzS8D5++ziA=; b=VmcVyDZ3J91GmH1GKRqRXWGJ+/62s3EAJvOAOHZvskOy/xHewWWDUHhb DqIT/vCP8reaDHDHTefiE4MFsc9DN/Zugfl2eGgkShjUQVzDpXrNrrkSv 1Ey0Prg2wMAzljuQ3qgW6FuhUNXU1zKdByv/JTox8qAzAYsfi7RI1PlY2 bJGQirPnw7/tkcqNpQUzV8eCG8Bq/lGoVx2cdBD5hGQrS7VvbFb4sMRSX leJIfqoJJPR/amEppnAcNrqLRfm46PaeUvIvE7XA7+s/p2Hzv1ZxNbIdX rKulD+g4QPyAgGNsvsot5L9UAhu4PaJmCQrkrDWrD7KFI6VVHwXSL7KU1 A==; X-IronPort-AV: E=McAfee;i="6400,9594,10414"; a="351017354" X-IronPort-AV: E=Sophos;i="5.92,289,1650956400"; d="scan'208";a="351017354" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jul 2022 05:14:28 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.92,289,1650956400"; d="scan'208";a="573715903" Received: from silpixa00401086.ir.intel.com (HELO localhost.localdomain) ([10.55.128.124]) by orsmga006.jf.intel.com with ESMTP; 21 Jul 2022 05:14:27 -0700 From: Ciara Loftus To: dev@dpdk.org Cc: andrew.rybchenko@oktetlabs.ru, Ciara Loftus Subject: [RFC PATCH 1/3] net/af_xdp: simplify libbpf version checking in meson Date: Thu, 21 Jul 2022 12:14:13 +0000 Message-Id: <20220721121415.1709202-1-ciara.loftus@intel.com> X-Mailer: git-send-email 2.25.1 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 Test if the libbpf version is >= v0.7.0 at the beginning of the meson build. Later when we want to check if the version is <= v0.6.0 just use the inverse of the first check ie. ! >= v0.7.0. Signed-off-by: Ciara Loftus --- drivers/net/af_xdp/meson.build | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/net/af_xdp/meson.build b/drivers/net/af_xdp/meson.build index 1e0de23705..c90ab10a7b 100644 --- a/drivers/net/af_xdp/meson.build +++ b/drivers/net/af_xdp/meson.build @@ -9,10 +9,14 @@ endif sources = files('rte_eth_af_xdp.c') +bpf_ver_dep = false + xdp_dep = dependency('libxdp', version : '>=1.2.2', 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) +else + bpf_ver_dep = dependency('libbpf', version : '>=0.7.0', required: false, method: 'pkg-config') endif if cc.has_header('linux/if_xdp.h') @@ -22,8 +26,6 @@ if cc.has_header('linux/if_xdp.h') 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') if bpf_ver_dep.found() cflags += ['-DRTE_NET_AF_XDP_LIBBPF_OBJ_OPEN'] endif @@ -33,10 +35,8 @@ if cc.has_header('linux/if_xdp.h') endif elif bpf_dep.found() and cc.has_header('bpf/xsk.h') and cc.has_header('bpf/bpf.h') # libxdp not found. Rely solely on libbpf for xsk functionality - # which is only available in versions <= v0.6.0. - bpf_ver_dep = dependency('libbpf', version : '<=0.6.0', - required: false, method: 'pkg-config') - if bpf_ver_dep.found() + # which is only available in versions < v0.7.0. + if not bpf_ver_dep.found() ext_deps += bpf_dep bpf_shumem_ver_dep = dependency('libbpf', version : '>=0.2.0', required: false, method: 'pkg-config') From patchwork Thu Jul 21 12:14:14 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Loftus, Ciara" X-Patchwork-Id: 114074 X-Patchwork-Delegate: andrew.rybchenko@oktetlabs.ru 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 05DF2A00C2; Thu, 21 Jul 2022 14:14:41 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8437841614; Thu, 21 Jul 2022 14:14:35 +0200 (CEST) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mails.dpdk.org (Postfix) with ESMTP id E1178400D7 for ; Thu, 21 Jul 2022 14:14:33 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1658405674; x=1689941674; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=9GXkUq+K/PGqakh9IBNeX0Q0akkfzQVWQJTrlWUDBFE=; b=QJXsNZ8MFgVfjPESj7iqROPAoudCrTT+QPdfv/bPGzeo3G2K+KFKWuj7 /VbOwJDyj+bX4WU9dQGk2PJTfhYi79AAv1mdbzWs71awJ34FwQ21UxFGA JFhwCFojt1qM2fs/9V5BWGPDj8s6sdt6FeRh2Za83hQne+lLKm7ONMtVd eSGVVt6FEbuBO5vBjGNX0FsfJDoV23WiBEysVNS7/lL2RqSQAPUXwtqDR bzD2EirowomFVx2Wv5h4pBLFofNKumBsqhsHdSE2QQBMCMFaQowaoHCba VFzQuIup7OmC6vQzalXw8Qx0m01MUQO1tPhNyE687oVStkTZpjncgRRZI w==; X-IronPort-AV: E=McAfee;i="6400,9594,10414"; a="351017359" X-IronPort-AV: E=Sophos;i="5.92,289,1650956400"; d="scan'208";a="351017359" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jul 2022 05:14:29 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.92,289,1650956400"; d="scan'208";a="573715909" Received: from silpixa00401086.ir.intel.com (HELO localhost.localdomain) ([10.55.128.124]) by orsmga006.jf.intel.com with ESMTP; 21 Jul 2022 05:14:28 -0700 From: Ciara Loftus To: dev@dpdk.org Cc: andrew.rybchenko@oktetlabs.ru, Ciara Loftus Subject: [RFC PATCH 2/3] net/af_xdp: determine libbpf version by checking for symbols Date: Thu, 21 Jul 2022 12:14:14 +0000 Message-Id: <20220721121415.1709202-2-ciara.loftus@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220721121415.1709202-1-ciara.loftus@intel.com> References: <20220721121415.1709202-1-ciara.loftus@intel.com> 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 Instead of using pkg-config to query the version of the libbpf library, search for symbols in the library and use their presence or absence to determine what version of the library is being linked. Suggested-by: Andrew Rybchenko Signed-off-by: Ciara Loftus --- drivers/net/af_xdp/meson.build | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/drivers/net/af_xdp/meson.build b/drivers/net/af_xdp/meson.build index c90ab10a7b..d91545f9c3 100644 --- a/drivers/net/af_xdp/meson.build +++ b/drivers/net/af_xdp/meson.build @@ -15,8 +15,12 @@ xdp_dep = dependency('libxdp', version : '>=1.2.2', required: false, method: 'pk bpf_dep = dependency('libbpf', required: false, method: 'pkg-config') if not bpf_dep.found() bpf_dep = cc.find_library('bpf', required: false) -else - bpf_ver_dep = dependency('libbpf', version : '>=0.7.0', required: false, method: 'pkg-config') +endif + +libbpf070 = false + +if bpf_dep.found() and cc.has_header('bpf/bpf.h') and cc.has_header_symbol('bpf/bpf.h', 'bpf_btf_load') + libbpf070 = true endif if cc.has_header('linux/if_xdp.h') @@ -26,7 +30,7 @@ if cc.has_header('linux/if_xdp.h') cflags += ['-DRTE_NET_AF_XDP_SHARED_UMEM'] ext_deps += xdp_dep ext_deps += bpf_dep - if bpf_ver_dep.found() + if libbpf070 cflags += ['-DRTE_NET_AF_XDP_LIBBPF_OBJ_OPEN'] endif else @@ -36,11 +40,10 @@ if cc.has_header('linux/if_xdp.h') elif bpf_dep.found() and cc.has_header('bpf/xsk.h') and cc.has_header('bpf/bpf.h') # libxdp not found. Rely solely on libbpf for xsk functionality # which is only available in versions < v0.7.0. - if not bpf_ver_dep.found() + if not libbpf070 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() + bpf_shumem_ver_dep = cc.has_header_symbol('bpf/bpf.h', 'bpf_prog_bind_map') + if bpf_shumem_ver_dep cflags += ['-DRTE_NET_AF_XDP_SHARED_UMEM'] endif else From patchwork Thu Jul 21 12:14:15 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Loftus, Ciara" X-Patchwork-Id: 114075 X-Patchwork-Delegate: andrew.rybchenko@oktetlabs.ru 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 01160A00C2; Thu, 21 Jul 2022 14:14:48 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 6EA404282E; Thu, 21 Jul 2022 14:14:36 +0200 (CEST) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mails.dpdk.org (Postfix) with ESMTP id 66CF1400D7 for ; Thu, 21 Jul 2022 14:14:34 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1658405674; x=1689941674; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=YqigU2exCG0QJCY1P2vxLFleyIQkS3TnDEmBrd6IPag=; b=Bak/wcOER1EgyX3zMwfcm0KpdjClpuzhbsTQ+EEfxveTLbQ3dR2T6gvX Z451xcDJWnF/v/0wjslSYs9CQ44EyRfaCwjn6V4Uw/rXrrf2I7Ao2o1Ta YlgWeQKLwS44EIJC4vjnC7uzb/Ff0YUY3GMoYtCeoev2ih3CdzbU6ja+f WjrgUxG/PlDseaVXWgLwa1Jjrw/F26crbRKMMyP4QduWQ62vucRvmHmeV BH8dAuE9peEQDYyH6CtSj7bH738pNy093oxxaqmypwA9tXYEM1FmgNeJz l2ij1QUAimBQngfu2PBj7IiOSd6mizlFXeZtUAxvVV8iCmZaTUrQ0sWT7 Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10414"; a="351017364" X-IronPort-AV: E=Sophos;i="5.92,289,1650956400"; d="scan'208";a="351017364" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jul 2022 05:14:31 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.92,289,1650956400"; d="scan'208";a="573715916" Received: from silpixa00401086.ir.intel.com (HELO localhost.localdomain) ([10.55.128.124]) by orsmga006.jf.intel.com with ESMTP; 21 Jul 2022 05:14:29 -0700 From: Ciara Loftus To: dev@dpdk.org Cc: andrew.rybchenko@oktetlabs.ru, Ciara Loftus Subject: [RFC PATCH 3/3] net/af_xdp: use autoconf file instead of cflags Date: Thu, 21 Jul 2022 12:14:15 +0000 Message-Id: <20220721121415.1709202-3-ciara.loftus@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220721121415.1709202-1-ciara.loftus@intel.com> References: <20220721121415.1709202-1-ciara.loftus@intel.com> 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 Generate af_xdp_autoconf.h which contains the different features detected by the meson build instead of using cflags. Suggested-by: Andrew Rybchenko Signed-off-by: Ciara Loftus --- drivers/net/af_xdp/compat.h | 8 +++++--- drivers/net/af_xdp/meson.build | 15 ++++++++------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/drivers/net/af_xdp/compat.h b/drivers/net/af_xdp/compat.h index 28ea64aeaa..e1f8ead7c8 100644 --- a/drivers/net/af_xdp/compat.h +++ b/drivers/net/af_xdp/compat.h @@ -2,7 +2,9 @@ * Copyright(c) 2020 Intel Corporation. */ -#ifdef RTE_NET_AF_XDP_LIBXDP +#include "af_xdp_autoconf.h" + +#ifdef HAVE_LIBXDP #include #else #include @@ -12,7 +14,7 @@ #include #if KERNEL_VERSION(5, 10, 0) <= LINUX_VERSION_CODE && \ - defined(RTE_NET_AF_XDP_SHARED_UMEM) + defined(HAVE_LIBBPF_SHARED_UMEM) #define ETH_AF_XDP_SHARED_UMEM 1 #endif @@ -60,7 +62,7 @@ tx_syscall_needed(struct xsk_ring_prod *q __rte_unused) } #endif -#ifdef RTE_NET_AF_XDP_LIBBPF_OBJ_OPEN +#ifdef HAVE_LIBBPF_OBJ_OPEN static int load_program(const char *prog_path, struct bpf_object **obj) { struct bpf_program *prog; diff --git a/drivers/net/af_xdp/meson.build b/drivers/net/af_xdp/meson.build index d91545f9c3..d1f6febbca 100644 --- a/drivers/net/af_xdp/meson.build +++ b/drivers/net/af_xdp/meson.build @@ -23,15 +23,17 @@ if bpf_dep.found() and cc.has_header('bpf/bpf.h') and cc.has_header_symbol('bpf/ libbpf070 = true endif +config = configuration_data() + if cc.has_header('linux/if_xdp.h') if xdp_dep.found() and cc.has_header('xdp/xsk.h') if bpf_dep.found() and cc.has_header('bpf/bpf.h') - cflags += ['-DRTE_NET_AF_XDP_LIBXDP'] - cflags += ['-DRTE_NET_AF_XDP_SHARED_UMEM'] + config.set('HAVE_LIBXDP', 1) + config.set('HAVE_LIBBPF_SHARED_UMEM', 1) ext_deps += xdp_dep ext_deps += bpf_dep if libbpf070 - cflags += ['-DRTE_NET_AF_XDP_LIBBPF_OBJ_OPEN'] + config.set('HAVE_LIBBPF_OBJ_OPEN', 1) endif else build = false @@ -42,10 +44,7 @@ if cc.has_header('linux/if_xdp.h') # which is only available in versions < v0.7.0. if not libbpf070 ext_deps += bpf_dep - bpf_shumem_ver_dep = cc.has_header_symbol('bpf/bpf.h', 'bpf_prog_bind_map') - if bpf_shumem_ver_dep - cflags += ['-DRTE_NET_AF_XDP_SHARED_UMEM'] - endif + config.set('HAVE_LIBBPF_SHARED_UMEM', cc.has_header_symbol('bpf/bpf.h', 'bpf_prog_bind_map')) else build = false reason = 'missing dependency, "libxdp" or "libbpf <= v0.6.0"' @@ -58,3 +57,5 @@ else build = false reason = 'missing header, "linux/if_xdp.h"' endif + +configure_file(output : 'af_xdp_autoconf.h', configuration : config)