-----Original Message-----
> Date: Wed, 31 Jan 2018 10:38:32 +0000
> From: Ophir Munk <ophi...@mellanox.com>
> To: Jerin Jacob <jerin.ja...@caviumnetworks.com>
> CC: "dev@dpdk.org" <dev@dpdk.org>, Thomas Monjalon <tho...@monjalon.net>,
>  Pascal Mazon <pascal.ma...@6wind.com>, Jan Viktorin
>  <vikto...@rehivetech.com>, Jianbo Liu <jianbo....@arm.com>
> Subject: RE: [dpdk-dev]  [PATCH] net/tap: fix build issue with ARM32
> 
> Hi,
> Please see inline
> 
> > -----Original Message-----
> > From: Jerin Jacob [mailto:jerin.ja...@caviumnetworks.com]
> > Sent: Wednesday, January 31, 2018 12:24 PM
> > To: Ophir Munk <ophi...@mellanox.com>
> > Cc: dev@dpdk.org; Thomas Monjalon <tho...@monjalon.net>; Pascal
> > Mazon <pascal.ma...@6wind.com>; Jan Viktorin
> > <vikto...@rehivetech.com>; Jianbo Liu <jianbo....@arm.com>
> > Subject: Re: [dpdk-dev] [PATCH] net/tap: fix build issue with ARM32
> > 
> > -----Original Message-----
> > > Date: Wed, 31 Jan 2018 09:59:45 +0000
> > > From: Ophir Munk <ophi...@mellanox.com>
> > > To: Jerin Jacob <jerin.ja...@caviumnetworks.com>, "dev@dpdk.org"
> > >  <dev@dpdk.org>
> > > CC: Thomas Monjalon <tho...@monjalon.net>, Pascal Mazon
> > > <pascal.ma...@6wind.com>, Jan Viktorin <vikto...@rehivetech.com>,
> > > Jianbo  Liu <jianbo....@arm.com>
> > > Subject: RE: [dpdk-dev]  [PATCH] net/tap: fix build issue with ARM32
> > >
> > > Hi,
> > > Please see comments inline
> > >
> > > > -----Original Message-----
> > > > From: dev [mailto:dev-boun...@dpdk.org] On Behalf Of Jerin Jacob
> > > > Sent: Wednesday, January 31, 2018 7:14 AM
> > > > To: dev@dpdk.org
> > > > Cc: Thomas Monjalon <tho...@monjalon.net>; Jerin Jacob
> > > > <jerin.ja...@caviumnetworks.com>; Pascal Mazon
> > > > <pascal.ma...@6wind.com>; Jan Viktorin <vikto...@rehivetech.com>;
> > > > Jianbo Liu <jianbo....@arm.com>
> > > > Subject: [dpdk-dev] [PATCH] net/tap: fix build issue with ARM32
> > > >
> > > > arm32 Linux does not support eBPF interface.
> > > > Since tap PMD driver has a dependency on eBPF(the symbol __NR_bpf),
> > > > disabling it armv7 config.
> > > >
> > > > compilation error log:
> > > > In file included from /tmp/dpdk/drivers/net/tap/tap_bpf_api.c:15:0:
> > > > /tmp/dpdk/drivers/net/tap/tap_bpf.h:103:4: error: #error __NR_bpf
> > > > not defined  #  error __NR_bpf not defined
> > > >     ^
> > >
> > > arm architecture is missing is file drivers/tap/tap_bpf.h I suggest
> > > adding it, for example
> > >
> > > # elif defined(__arm__)
> > > #  define __NR_bpf 386
> > 
> > By looking at Linux source code
> > https://emea01.safelinks.protection.outlook.com/?url=http%3A%2F%2Felixi
> > r.free-
> > electrons.com%2Flinux%2Fv4.15%2Fsource%2Ftools%2Fbuild%2Ffeature%2
> > Ftest-
> > bpf.c%23L6&data=02%7C01%7Cophirmu%40mellanox.com%7C19f50ad7f27
> > 34d00173808d56894c997%7Ca652971c7d2e4d9ba6a4d149256f461b%7C0%
> > 7C0%7C636529910613736017&sdata=ynsxHG9fvao4LyfWLo4GVJjlKNmcF0q
> > 0BkFocJyarAE%3D&reserved=0
> > I am not sure, Is eBPF support available for arm32 support?
> 
> TAP eBPF has a graceful approach: it must successfully compile on all Linux
> distributions. If a specific kernel cannot support eBPF it will gracefully
> refuse the eBPF netlink message sent to it. 
> Thus, there is no harm even if there is no eBPF support available for arm32.

OK. But, To enable grace full refuse, we should not any random system call 
number like #define __NR_bpf 386.
It should at least unused for arm32.

> 
> You should enable TAP compilation for cases where you only need TAP without 
> eBPF.

Yes. It would have been better if new eBPF depended features would have
under conditional compilation flag so it it can be turned off selectively.

> 
> > 
> > >
> > > It should work for you. Can you please try it?
> > 
> > I don't have access to an arm32 board. I was facing cross compilation build
> > issue with arm32.
> > 
> > > If it doesn't work for you, please have a look in this link:
> > >
> > >
> > https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fsou
> > >
> > rceforge.net%2Fp%2Fpredef%2Fwiki%2FArchitectures%2F&data=02%7C01%
> > 7Coph
> > >
> > irmu%40mellanox.com%7C19f50ad7f2734d00173808d56894c997%7Ca6529
> > 71c7d2e4
> > >
> > d9ba6a4d149256f461b%7C0%7C0%7C636529910613736017&sdata=g5fEkG
> > Gwm%2BJgR
> > > KyDrxJgbFII0%2B1%2BxtbT%2FE4Qy1HACEg%3D&reserved=0
> > > where you can see more arm architecture definitions.
> > > You should find the one suitable for you.
> > 
> > I guess, it is not just matter of enabling the build for arm32. It should 
> > work at
> > runtime too, If some can confirm following addition in the
> > drivers/net/tap/tap_bpf.h works then we can add it.
> > 
> 
> As mentioned above it must not work at runtime too.
> 
> > # elif defined(__arm__)
> > #  define __NR_bpf 386
> > 
> > >
> > > > /tmp/dpdk/drivers/net/tap/tap_bpf_api.c: In function ‘sys_bpf’:
> > > > /tmp/dpdk/drivers/net/tap/tap_bpf_api.c:92:17: error: ‘__NR_bpf’
> > > > undeclared (first use in this function)
> > > >   return syscall(__NR_bpf, cmd, attr, size);
> > > >                  ^
> > > > /tmp/dpdk/drivers/net/tap/tap_bpf_api.c:92:17: note: each undeclared
> > > > identifier is reported only once for each function it appears in
> > > > /tmp/dpdk/drivers/net/tap/tap_bpf_api.c:93:1: error: control reaches
> > > > end of non-void function [-Werror=return-type]  }  ^
> > > > cc1: all warnings being treated as errors
> > > >
> > > > Fixes: b02d85e1 ("net/tap: add eBPF API")
> > > >
> > > > Cc: Pascal Mazon <pascal.ma...@6wind.com>
> > > > Cc: Jan Viktorin <vikto...@rehivetech.com>
> > > > Cc: Jianbo Liu <jianbo....@arm.com>
> > > >
> > > > Signed-off-by: Jerin Jacob <jerin.ja...@caviumnetworks.com>
> > > > ---
> > > >  config/defconfig_arm-armv7a-linuxapp-gcc | 1 +
> > > >  1 file changed, 1 insertion(+)
> > > >
> > > > diff --git a/config/defconfig_arm-armv7a-linuxapp-gcc
> > > > b/config/defconfig_arm-armv7a-linuxapp-gcc
> > > > index a20b7a85f..4a55bb397 100644
> > > > --- a/config/defconfig_arm-armv7a-linuxapp-gcc
> > > > +++ b/config/defconfig_arm-armv7a-linuxapp-gcc
> > > > @@ -80,3 +80,4 @@ CONFIG_RTE_LIBRTE_BNX2X_PMD=n
> > > > CONFIG_RTE_LIBRTE_QEDE_PMD=n
> > CONFIG_RTE_LIBRTE_SFC_EFX_PMD=n
> > > > CONFIG_RTE_LIBRTE_AVP_PMD=n
> > > > +CONFIG_RTE_LIBRTE_PMD_TAP=n
> > > > --
> > >
> > > I suggest fixing the compilation issue by adding the missing
> > > architecture system call number (as suggested above) instead of
> > > disabling TAP compilation by default
> > >
> > > > 2.16.1
> > >

Reply via email to