On 04/03, Ferruh Yigit wrote: >On 4/3/2019 3:22 PM, Ye Xiaolong wrote: >> On 04/03, Ferruh Yigit wrote: >> [snip] >>> >>> It seems, 'tools/include/asm/barrier.h' is required for 'smp_wmb()' & >>> 'smp_rmb()' in 'xsk.h'. >>> We have equivalents of these in DPDK [1], and perhaps it can be possible to >>> use >>> them and not include this header at all. >>> >>> in 'rte_eth_af_xdp.c', before including 'xsk.h', we can include an local >>> compatibility header which does following should work: >>> #define smp_rmb() rte_rmb() >>> #define smp_wmb() rte_wmb() >>> >>> @Xiaolong, what do you think? >> >> It sounds perfect to me, I'll take it in my next version. >> Something to confirm, So we can now assume af_xdp pmd user would use kernel >> (say v5.1-rc4) >> that contains fixes regarding to xsk.h and libelf, I still need to do >> following >> changes. >> >> 1. I shall use <bpf/xsk.h> as xsk.h should be installed in system folders. >> 2. `-lelf` is not needed in rte.app.mk >> 3. I need to document the libbpf build and install steps in af_xdp.rst >> 4. add the above two defines before including xsk.h > >Looks good to me, >only for item 4) instead of putting those defines into .c file directly, can >create a private header in driver folder, put those lines and I assume will >need >a few includes for rte_rmb as well, and include that header before xsk.h.
Sounds better, will do. Thanks, Xiaolong > >> >> Thanks, >> Xiaolong >> >> >>> >>> [1] >>> https://git.dpdk.org/dpdk/tree/lib/librte_eal/common/include/arch/x86/rte_atomic.h?h=v19.02#n30 >>> >>>> >>>> The one in tools/include also is GPL-2.0 only so it cannot be included >>>> from the PMD, which is BSD-3-clause only (and it recursively includes >>>> the other arch-specific kernel headers) >>>> >>>>> Anyway, as Xiaolong mentioned, following is working, can it work from >>>>> a distro >>>>> point of view: >>>>> - get kernel source code (>= v5.1-rc1) >>>>> - build libbfp and install >>>>> - set 'RTE_KERNELDIR' to point kernel source path >>>>> - build dpdk with af_xdp enabled >>>> >>>> As long as the full kernel tree is required, we cannot enable it in >>>> Debian and Ubuntu - we can't have it at build time on the build >>>> workers, and also there's the licensing problem. >>> >>> Got it. >>> >>> In above steps, 'libbpf' also build from kernel source tree, will it be >>> problem >>> in you builds to not have it build from source? >>> >>> If not, taking into account that xsk.h also will be fixed, only >>> 'tools/include/asm/barrier.h' remains the problem, and it looks like it can >>> be >>> solved, please check above. >>> >>> >>>> >>>>>> Also, the license in asm/barrier.h is GPL-2.0 only. It is not a >>>>>> userspace header so it is not covered by the userspace exception, >>>>>> which >>>>>> means at the very least the af_xdp PMD shared object is also >>>>>> licensed >>>>>> under GPL-2.0 only, isn't it? >>>>>> >>>>> >>>>> >>> >