From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm1-f66.google.com (mail-wm1-f66.google.com [209.85.128.66]) by dpdk.org (Postfix) with ESMTP id 7FC841B563 for ; Wed, 3 Apr 2019 20:52:56 +0200 (CEST) Received: by mail-wm1-f66.google.com with SMTP id r186so5501611wmf.1 for ; Wed, 03 Apr 2019 11:52:56 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :references:content-transfer-encoding:user-agent:mime-version; bh=ub2qwgJI0cSqwmCGujaVxh2rQF5cL/89mfui0I4+uow=; b=bsnQgJMvAITOmqMPqe5xacGvAFuY/ZO0TAGj5A5skWZXJXq2nNxA5W8zRhjKfH9s9L hSYm4Q6f/OI+bHzhDcoQuJjXY6KOVsETv+WHgBvtd3kXwHVCHbN51MuLmIi/dVmACPKP Auy3JhRObGn2AN6Lx8WpwBFlzy1xBgS9bn4E2Vmddf9hYMugCYqC3BTFEYtU4tmcCytQ WlmPMXvKiBkCH7YrBwLSquluINBgOEqmn+Is+jaRkLE5R9iVCSFma1A7FZ2qwLi3MQFV 747nd5mxyc31VHJLjXic2EDqWqO8cV5PEeNBf7o66i7Kr1PrB+LHuWM/Z5TR4nwsKRpy yHBQ== X-Gm-Message-State: APjAAAXkXcbMer0Dbta1rIbe2vb9fBX9+RICsRLnUKmjS2Y9GJRQVIxs +WgFyt0fr1mOFs2WANJrEcg= X-Google-Smtp-Source: APXvYqyit3Zk0vtL3PBtGTPpIO4nq2Bi6OzgAIvSKlQpGfevHZ+/z0sf8NuKDpZ+C4VaFPmmgLmWrg== X-Received: by 2002:a7b:c00e:: with SMTP id c14mr1065098wmb.110.1554317575995; Wed, 03 Apr 2019 11:52:55 -0700 (PDT) Received: from localhost ([2a01:4b00:f419:6f00:250:b6ff:feb7:bd60]) by smtp.gmail.com with ESMTPSA id a22sm15693167wmj.44.2019.04.03.11.52.54 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 03 Apr 2019 11:52:54 -0700 (PDT) Message-ID: <181fca1e5a2274ad2e7638c25b459ab7f426f254.camel@debian.org> From: Luca Boccassi To: Ferruh Yigit , Xiaolong Ye , dev@dpdk.org, Stephen Hemminger Cc: Qi Zhang , Karlsson Magnus , Topel Bjorn , Maxime Coquelin , Bruce Richardson , Ananyev Konstantin , David Marchand , Andrew Rybchenko , Olivier Matz Date: Wed, 03 Apr 2019 19:52:53 +0100 In-Reply-To: <25be95ff-132c-9e3e-fe3d-b5aac3dfb388@intel.com> References: <20190301080947.91086-1-xiaolong.ye@intel.com> <20190403165949.44857-1-xiaolong.ye@intel.com> <20190403165949.44857-2-xiaolong.ye@intel.com> <25be95ff-132c-9e3e-fe3d-b5aac3dfb388@intel.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.30.5-1 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v10 1/1] net/af_xdp: introduce AF XDP PMD driver X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Apr 2019 18:52:56 -0000 On Wed, 2019-04-03 at 18:44 +0100, Ferruh Yigit wrote: > On 4/3/2019 5:59 PM, Xiaolong Ye wrote: > > Add a new PMD driver for AF_XDP which is a proposed faster version > > of > > AF_PACKET interface in Linux. More info about AF_XDP, please refer > > to [1] > > [2]. > >=20 > > This is the vanilla version PMD which just uses a raw buffer > > registered as > > the umem. > >=20 > > [1]=20 > > https://fosdem.org/2018/schedule/event/af_xdp/ > >=20 > > [2]=20 > > https://lwn.net/Articles/745934/ > >=20 > >=20 > > Signed-off-by: Xiaolong Ye < > > xiaolong.ye@intel.com > > > >=20 > I am not able to test functionality but code looks good to me, I can > compile via > Makefile (with suggested steps in doc) but not able to build with > meson, can you > please check below comments? >=20 > <...> >=20 > > @@ -0,0 +1,21 @@ > > +# SPDX-License-Identifier: BSD-3-Clause > > +# Copyright(c) 2019 Intel Corporation > > + > > +if host_machine.system() !=3D 'linux' > > + build =3D false > > +endif >=20 > After this point, if build is false it shouldn't continue to below > checks I think. >=20 > > + > > +bpf_dep =3D dependency('libbpf', required: false) >=20 > My library is in '/usr/local/lib64/libbpf.so' but this line can't > find it. Where > does 'dependency()' checks for libraries? dependency() uses only pkg-config (or cmake or embedded specific tools, neither of which applies to bpf), so if you haven't built from bpf-next=20 you won't have the pkg-config file installed, and it will fall back to the next block. Side note, there's an issue open upstream in Meson to merge dependency() and find_library(), with some traction but it's not done yet. For me building from bpf-next it works fine: $ PKG_CONFIG_PATH=3D/tmp/bpf/lib64/pkgconfig/ ninja -C build-gcc-shared ... Dependency libbpf found: YES 0.0.2 ... $ lddtree build-gcc-shared/drivers/librte_pmd_af_xdp.so.1.1=20 librte_pmd_af_xdp.so.1.1 =3D> build-gcc-shared/drivers/librte_pmd_af_xdp.so= .1.1 (interpreter =3D> none) libm.so.6 =3D> /lib/x86_64-linux-gnu/libm.so.6 libdl.so.2 =3D> /lib/x86_64-linux-gnu/libdl.so.2 libnuma.so.1 =3D> /lib/x86_64-linux-gnu/libnuma.so.1 librte_ethdev.so.12 =3D> build-gcc-shared/drivers/../lib/librte_ethdev.= so.12 librte_eal.so.10 =3D> build-gcc-shared/drivers/../lib/librte_eal.so.10 librte_kvargs.so.1 =3D> build-gcc-shared/drivers/../lib/librte_kvargs.s= o.1 librte_net.so.1 =3D> build-gcc-shared/drivers/../lib/librte_net.so.1 librte_mbuf.so.5 =3D> build-gcc-shared/drivers/../lib/librte_mbuf.so.5 librte_mempool.so.5 =3D> build-gcc-shared/drivers/../lib/librte_mempool= .so.5 librte_ring.so.2 =3D> build-gcc-shared/drivers/../lib/librte_ring.so.2 librte_cmdline.so.2 =3D> build-gcc-shared/drivers/../lib/librte_cmdline= .so.2 librte_meter.so.2 =3D> build-gcc-shared/drivers/../lib/librte_meter.so.= 2 librte_bus_pci.so.2 =3D> not found librte_pci.so.1 =3D> build-gcc-shared/drivers/../lib/librte_pci.so.1 librte_bus_vdev.so.2 =3D> not found libbsd.so.0 =3D> /lib/x86_64-linux-gnu/libbsd.so.0 librt.so.1 =3D> /lib/x86_64-linux-gnu/librt.so.1 libbpf.so.0 =3D> /tmp/bpf/lib64/libbpf.so.0 libelf.so.1 =3D> /lib/x86_64-linux-gnu/libelf.so.1 libz.so.1 =3D> /lib/x86_64-linux-gnu/libz.so.1 libpthread.so.0 =3D> /lib/x86_64-linux-gnu/libpthread.so.0 libc.so.6 =3D> /lib/x86_64-linux-gnu/libc.so.6 ld-linux-x86-64.so.2 =3D> /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 > > +if bpf_dep.found() > > + build =3D true > > +else > > + bpf_dep =3D cc.find_library('libbpf', required: false) >=20 > Also this line can't find it, in log it says "(tried pkgconfig and > cmake)" and > yes there is no pkgconfig for it, any idea how 'cmake' used? The issue here is that it should be cc.find_library('bpf' - not 'libbpf'. I missed this when reviewing, good catch. That's because find_library just does a compilation test passing the value to the compiler as a linker flag - so right now it's passing -llibbpf. Fixing this line and the header line below makes it work without pkg-config: $ CPPFLAGS=3D-I/tmp/bpf/include LDFLAGS=3D-L/tmp/bpf/lib64 meson testt ... Dependency libbpf found: NO (tried pkgconfig and cmake) Library bpf found: YES > > + if bpf_dep.found() and cc.has_header('xsk.h', dependencies: > > bpf_dep) and cc.has_header('linux/if_xdp.h') >=20 > Should this be 'lib/xsk.h' now? Yes, this should be 'bpf/xsk.h' --=20 Kind regards, Luca Boccassi From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by dpdk.space (Postfix) with ESMTP id DAEF3A0679 for ; Wed, 3 Apr 2019 20:52:59 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 230EE5A; Wed, 3 Apr 2019 20:52:58 +0200 (CEST) Received: from mail-wm1-f66.google.com (mail-wm1-f66.google.com [209.85.128.66]) by dpdk.org (Postfix) with ESMTP id 7FC841B563 for ; Wed, 3 Apr 2019 20:52:56 +0200 (CEST) Received: by mail-wm1-f66.google.com with SMTP id r186so5501611wmf.1 for ; Wed, 03 Apr 2019 11:52:56 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :references:content-transfer-encoding:user-agent:mime-version; bh=ub2qwgJI0cSqwmCGujaVxh2rQF5cL/89mfui0I4+uow=; b=bsnQgJMvAITOmqMPqe5xacGvAFuY/ZO0TAGj5A5skWZXJXq2nNxA5W8zRhjKfH9s9L hSYm4Q6f/OI+bHzhDcoQuJjXY6KOVsETv+WHgBvtd3kXwHVCHbN51MuLmIi/dVmACPKP Auy3JhRObGn2AN6Lx8WpwBFlzy1xBgS9bn4E2Vmddf9hYMugCYqC3BTFEYtU4tmcCytQ WlmPMXvKiBkCH7YrBwLSquluINBgOEqmn+Is+jaRkLE5R9iVCSFma1A7FZ2qwLi3MQFV 747nd5mxyc31VHJLjXic2EDqWqO8cV5PEeNBf7o66i7Kr1PrB+LHuWM/Z5TR4nwsKRpy yHBQ== X-Gm-Message-State: APjAAAXkXcbMer0Dbta1rIbe2vb9fBX9+RICsRLnUKmjS2Y9GJRQVIxs +WgFyt0fr1mOFs2WANJrEcg= X-Google-Smtp-Source: APXvYqyit3Zk0vtL3PBtGTPpIO4nq2Bi6OzgAIvSKlQpGfevHZ+/z0sf8NuKDpZ+C4VaFPmmgLmWrg== X-Received: by 2002:a7b:c00e:: with SMTP id c14mr1065098wmb.110.1554317575995; Wed, 03 Apr 2019 11:52:55 -0700 (PDT) Received: from localhost ([2a01:4b00:f419:6f00:250:b6ff:feb7:bd60]) by smtp.gmail.com with ESMTPSA id a22sm15693167wmj.44.2019.04.03.11.52.54 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 03 Apr 2019 11:52:54 -0700 (PDT) Message-ID: <181fca1e5a2274ad2e7638c25b459ab7f426f254.camel@debian.org> From: Luca Boccassi To: Ferruh Yigit , Xiaolong Ye , dev@dpdk.org, Stephen Hemminger Cc: Qi Zhang , Karlsson Magnus , Topel Bjorn , Maxime Coquelin , Bruce Richardson , Ananyev Konstantin , David Marchand , Andrew Rybchenko , Olivier Matz Date: Wed, 03 Apr 2019 19:52:53 +0100 In-Reply-To: <25be95ff-132c-9e3e-fe3d-b5aac3dfb388@intel.com> References: <20190301080947.91086-1-xiaolong.ye@intel.com> <20190403165949.44857-1-xiaolong.ye@intel.com> <20190403165949.44857-2-xiaolong.ye@intel.com> <25be95ff-132c-9e3e-fe3d-b5aac3dfb388@intel.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.30.5-1 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v10 1/1] net/af_xdp: introduce AF XDP PMD driver X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Message-ID: <20190403185253.FERl4Igdc2x5uuvnMZCcdpZ8chRY473JwXnshN8P3JM@z> On Wed, 2019-04-03 at 18:44 +0100, Ferruh Yigit wrote: > On 4/3/2019 5:59 PM, Xiaolong Ye wrote: > > Add a new PMD driver for AF_XDP which is a proposed faster version > > of > > AF_PACKET interface in Linux. More info about AF_XDP, please refer > > to [1] > > [2]. > >=20 > > This is the vanilla version PMD which just uses a raw buffer > > registered as > > the umem. > >=20 > > [1]=20 > > https://fosdem.org/2018/schedule/event/af_xdp/ > >=20 > > [2]=20 > > https://lwn.net/Articles/745934/ > >=20 > >=20 > > Signed-off-by: Xiaolong Ye < > > xiaolong.ye@intel.com > > > >=20 > I am not able to test functionality but code looks good to me, I can > compile via > Makefile (with suggested steps in doc) but not able to build with > meson, can you > please check below comments? >=20 > <...> >=20 > > @@ -0,0 +1,21 @@ > > +# SPDX-License-Identifier: BSD-3-Clause > > +# Copyright(c) 2019 Intel Corporation > > + > > +if host_machine.system() !=3D 'linux' > > + build =3D false > > +endif >=20 > After this point, if build is false it shouldn't continue to below > checks I think. >=20 > > + > > +bpf_dep =3D dependency('libbpf', required: false) >=20 > My library is in '/usr/local/lib64/libbpf.so' but this line can't > find it. Where > does 'dependency()' checks for libraries? dependency() uses only pkg-config (or cmake or embedded specific tools, neither of which applies to bpf), so if you haven't built from bpf-next=20 you won't have the pkg-config file installed, and it will fall back to the next block. Side note, there's an issue open upstream in Meson to merge dependency() and find_library(), with some traction but it's not done yet. For me building from bpf-next it works fine: $ PKG_CONFIG_PATH=3D/tmp/bpf/lib64/pkgconfig/ ninja -C build-gcc-shared ... Dependency libbpf found: YES 0.0.2 ... $ lddtree build-gcc-shared/drivers/librte_pmd_af_xdp.so.1.1=20 librte_pmd_af_xdp.so.1.1 =3D> build-gcc-shared/drivers/librte_pmd_af_xdp.so= .1.1 (interpreter =3D> none) libm.so.6 =3D> /lib/x86_64-linux-gnu/libm.so.6 libdl.so.2 =3D> /lib/x86_64-linux-gnu/libdl.so.2 libnuma.so.1 =3D> /lib/x86_64-linux-gnu/libnuma.so.1 librte_ethdev.so.12 =3D> build-gcc-shared/drivers/../lib/librte_ethdev.= so.12 librte_eal.so.10 =3D> build-gcc-shared/drivers/../lib/librte_eal.so.10 librte_kvargs.so.1 =3D> build-gcc-shared/drivers/../lib/librte_kvargs.s= o.1 librte_net.so.1 =3D> build-gcc-shared/drivers/../lib/librte_net.so.1 librte_mbuf.so.5 =3D> build-gcc-shared/drivers/../lib/librte_mbuf.so.5 librte_mempool.so.5 =3D> build-gcc-shared/drivers/../lib/librte_mempool= .so.5 librte_ring.so.2 =3D> build-gcc-shared/drivers/../lib/librte_ring.so.2 librte_cmdline.so.2 =3D> build-gcc-shared/drivers/../lib/librte_cmdline= .so.2 librte_meter.so.2 =3D> build-gcc-shared/drivers/../lib/librte_meter.so.= 2 librte_bus_pci.so.2 =3D> not found librte_pci.so.1 =3D> build-gcc-shared/drivers/../lib/librte_pci.so.1 librte_bus_vdev.so.2 =3D> not found libbsd.so.0 =3D> /lib/x86_64-linux-gnu/libbsd.so.0 librt.so.1 =3D> /lib/x86_64-linux-gnu/librt.so.1 libbpf.so.0 =3D> /tmp/bpf/lib64/libbpf.so.0 libelf.so.1 =3D> /lib/x86_64-linux-gnu/libelf.so.1 libz.so.1 =3D> /lib/x86_64-linux-gnu/libz.so.1 libpthread.so.0 =3D> /lib/x86_64-linux-gnu/libpthread.so.0 libc.so.6 =3D> /lib/x86_64-linux-gnu/libc.so.6 ld-linux-x86-64.so.2 =3D> /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 > > +if bpf_dep.found() > > + build =3D true > > +else > > + bpf_dep =3D cc.find_library('libbpf', required: false) >=20 > Also this line can't find it, in log it says "(tried pkgconfig and > cmake)" and > yes there is no pkgconfig for it, any idea how 'cmake' used? The issue here is that it should be cc.find_library('bpf' - not 'libbpf'. I missed this when reviewing, good catch. That's because find_library just does a compilation test passing the value to the compiler as a linker flag - so right now it's passing -llibbpf. Fixing this line and the header line below makes it work without pkg-config: $ CPPFLAGS=3D-I/tmp/bpf/include LDFLAGS=3D-L/tmp/bpf/lib64 meson testt ... Dependency libbpf found: NO (tried pkgconfig and cmake) Library bpf found: YES > > + if bpf_dep.found() and cc.has_header('xsk.h', dependencies: > > bpf_dep) and cc.has_header('linux/if_xdp.h') >=20 > Should this be 'lib/xsk.h' now? Yes, this should be 'bpf/xsk.h' --=20 Kind regards, Luca Boccassi