On Fri, Apr 05, 2019 at 04:31:16PM +0100, Ferruh Yigit wrote: > On 4/5/2019 4:23 PM, Bruce Richardson wrote: > > On Fri, Apr 05, 2019 at 11:05:25PM +0800, Ye Xiaolong wrote: > >> Hi, Ferruh > >> > >> On 04/05, Ferruh Yigit wrote: > >>> On 4/4/2019 9:51 AM, 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]. > >>>> > >>>> This is the vanilla version PMD which just uses a raw buffer registered > >>>> as > >>>> the umem. > >>>> > >>>> [1] https://fosdem.org/2018/schedule/event/af_xdp/ > >>>> [2] https://lwn.net/Articles/745934/ > >>>> > >>>> Signed-off-by: Xiaolong Ye <xiaolong...@intel.com> > >>> > >>> <...> > >>> > >>>> diff --git a/drivers/net/af_xdp/meson.build > >>>> b/drivers/net/af_xdp/meson.build > >>>> new file mode 100644 > >>>> index 000000000..840c93728 > >>>> --- /dev/null > >>>> +++ b/drivers/net/af_xdp/meson.build > >>>> @@ -0,0 +1,19 @@ > >>>> +# SPDX-License-Identifier: BSD-3-Clause > >>>> +# Copyright(c) 2019 Intel Corporation > >>>> + > >>>> +if host_machine.system() == 'linux' > >>>> + bpf_dep = dependency('libbpf', required: false) > >>>> + if bpf_dep.found() > >>>> + build = true > >>>> + else > >>>> + bpf_dep = cc.find_library('bpf', required: false) > >>>> + if bpf_dep.found() and cc.has_header('bpf/xsk.h', > >>>> dependencies: bpf_dep) and cc.has_header('linux/if_xdp.h') > >>>> + build = true > >>>> + pkgconfig_extra_libs += '-lbpf' > >>>> + else > >>>> + build = false > >>>> + endif > >>>> + endif > >>>> + ext_deps += bpf_dep > >>>> +endif > >>>> +sources = files('rte_eth_af_xdp.c') > >>> > >>> if system is not 'linux', by default build will be 'true', right, so will > >>> it try > >>> to build the driver in that case? > >>> What about setting "build = false" before the linux check, so won't need > >>> to set > >>> it false again in the if block, only set it true if dependencies found? > >> > >> This is a good catch, we do need to initialize build = false first, > >> otherwise > >> meson/ninja would just try to build af_xdp pmd if system is not linux, > >> which is > >> undesired. Do I need to send a separate patch for this so you can squash > >> it into > >> af_xdp pmd patch? > >> > >>> And can 'ext_deps' go out of if block? > >> > >> If we move `ext_deps += bpf_dep` out of if block and build system is not > >> linux, there > >> would be error "ERROR: Unknown variable "bpf_dep".", so we need either > >> initialize > >> bpf_dep (to value like NULL?) first or keep `ext_deps += bpf_dep` inside > >> the if > >> block, I'd prefer keep it as it is, what's you opinion? > > > > Actually, a suggestion - rather than limiting the build to linux, why not > > just limit the build to the presence of libbpf, and not bother checking the > > OS? > > If this won't cause a problem for other OS in case they have the library, I > have > no objection. > Well, they shouldn't have, and we also check for the header file "linux/if_xdp.h", so I don't think an additional check for linux itself is required. Generally, I think it's better to check for the requirements of a driver directly, rather than assuming that only certain environments would ever have them. Just sent my suggested patch: http://patches.dpdk.org/patch/52357/
/Bruce