From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Zhang, Qi Z" Subject: Re: [RFC v2 6/7] net/af_xdp: load BPF file Date: Thu, 8 Mar 2018 14:20:56 +0000 Message-ID: <039ED4275CED7440929022BC67E7061153160BD9@SHSMSX103.ccr.corp.intel.com> References: <20180308135249.28187-1-qi.z.zhang@intel.com> <20180308135249.28187-7-qi.z.zhang@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Cc: "Karlsson, Magnus" , "Topel, Bjorn" To: "dev@dpdk.org" Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id 6B2831F1C for ; Thu, 8 Mar 2018 15:21:03 +0100 (CET) In-Reply-To: <20180308135249.28187-7-qi.z.zhang@intel.com> Content-Language: en-US List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" > -----Original Message----- > From: Zhang, Qi Z > Sent: Thursday, March 8, 2018 9:53 PM > To: dev@dpdk.org > Cc: Karlsson, Magnus ; Topel, Bjorn > ; Zhang, Qi Z > Subject: [RFC v2 6/7] net/af_xdp: load BPF file >=20 > Add libbpf and libelf dependency in Makefile. > Durring initialization, a bpf prog which call imm "xdpsk_redirect" > will be loaded. Then the driver will always try to link XDP fd with DRV m= ode > first, then SKB mode if failed in previoius. Link will be released during > dev_close. >=20 > Note: this is workaround solution, af_xdp may remove BPF dependency in > future. >=20 > Signed-off-by: Qi Zhang > --- > drivers/net/af_xdp/Makefile | 5 +- > drivers/net/af_xdp/bpf_load.c | 168 > ++++++++++++++++++++++++++++++++++++ > drivers/net/af_xdp/bpf_load.h | 11 +++ > drivers/net/af_xdp/rte_eth_af_xdp.c | 80 ++++++++++++++--- > mk/rte.app.mk | 2 +- > 5 files changed, 254 insertions(+), 12 deletions(-) create mode 100644 > drivers/net/af_xdp/bpf_load.c create mode 100644 > drivers/net/af_xdp/bpf_load.h >=20 > diff --git a/drivers/net/af_xdp/Makefile b/drivers/net/af_xdp/Makefile in= dex > 990073655..f16b5306b 100644 > --- a/drivers/net/af_xdp/Makefile > +++ b/drivers/net/af_xdp/Makefile > @@ -12,7 +12,9 @@ EXPORT_MAP :=3D rte_pmd_af_xdp_version.map >=20 > +static char bpf_log_buf[BPF_LOG_BUF_SIZE]; > + > +struct bpf_insn prog[] =3D { > + { > + .code =3D 0x85, //call imm > + .dst_reg =3D 0, > + .src_reg =3D 0, > + .off =3D 0, > + .imm =3D BPF_FUNC_xdpsk_redirect, > + }, > + { > + .code =3D 0x95, //exit > + .dst_reg =3D 0, > + .src_reg =3D 0, > + .off =3D 0, > + .imm =3D 0, > + }, > +}; > + > +int load_bpf_file(void) > +{ > + int fd; > + > + fd =3D bpf_load_program(BPF_PROG_TYPE_XDP, prog, > + ARRAY_SIZE(prog), Sorry for one mistake. checkpatch recommend to use ARRAY_SIZE here, but seems this macro is not de= fined by default, so compile failed here, replace with "2" is a quick fix. > + "GPL", 0, > + bpf_log_buf, BPF_LOG_BUF_SIZE); > + > +=09