From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by dpdk.org (Postfix) with ESMTP id C9F565B34 for ; Thu, 8 Mar 2018 14:52:49 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 08 Mar 2018 05:52:48 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.47,441,1515484800"; d="scan'208";a="26294129" Received: from dpdk51.sh.intel.com ([10.67.110.184]) by fmsmga002.fm.intel.com with ESMTP; 08 Mar 2018 05:52:47 -0800 From: Qi Zhang To: dev@dpdk.org Cc: magnus.karlsson@intel.com, bjorn.topel@intel.com, Qi Zhang Date: Thu, 8 Mar 2018 21:52:42 +0800 Message-Id: <20180308135249.28187-1-qi.z.zhang@intel.com> X-Mailer: git-send-email 2.13.6 Subject: [dpdk-dev] [RFC v2 0/7] PMD driver for AF_XDP 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: Thu, 08 Mar 2018 13:52:50 -0000 v2: - fix lisence header - clean up bpf dependency, bpf program is embedded, no "xdpsock_kern.o" required - clean up make file, only linux_header is required - fix all the compile warning. - fix packet number return in Tx. The RFC patches add a new PMD driver for AF_XDP which is a proposed faster version of AF_PACKET interface in Linux, see below link for detail AF_XDP introduction: https://fosdem.org/2018/schedule/event/af_xdp/ https://lwn.net/Articles/745934/ This patchset is base on v18.02. It also require a linux kernel that have below AF_XDP RFC patches be applied. https://patchwork.ozlabs.org/patch/867961/ https://patchwork.ozlabs.org/patch/867960/ https://patchwork.ozlabs.org/patch/867938/ https://patchwork.ozlabs.org/patch/867939/ https://patchwork.ozlabs.org/patch/867940/ https://patchwork.ozlabs.org/patch/867941/ https://patchwork.ozlabs.org/patch/867942/ https://patchwork.ozlabs.org/patch/867943/ https://patchwork.ozlabs.org/patch/867944/ https://patchwork.ozlabs.org/patch/867945/ https://patchwork.ozlabs.org/patch/867946/ https://patchwork.ozlabs.org/patch/867947/ https://patchwork.ozlabs.org/patch/867948/ https://patchwork.ozlabs.org/patch/867949/ https://patchwork.ozlabs.org/patch/867950/ https://patchwork.ozlabs.org/patch/867951/ https://patchwork.ozlabs.org/patch/867952/ https://patchwork.ozlabs.org/patch/867953/ https://patchwork.ozlabs.org/patch/867954/ https://patchwork.ozlabs.org/patch/867955/ https://patchwork.ozlabs.org/patch/867956/ https://patchwork.ozlabs.org/patch/867957/ https://patchwork.ozlabs.org/patch/867958/ https://patchwork.ozlabs.org/patch/867959/ There is no clean upstream target yet since kernel patch is still in RFC stage, The purpose of the patchset is just for anyone that want to eveluate af_xdp with DPDK application and get feedback for further improvement. To try with the new PMD 1. compile and install the kernel with above patches applied. (commit 91e6dd8284256e should work) 2. configure $LINUX_HEADER_DIR (dir of "make headers_install") at driver/net/af_xdp/Makefile 3. make sure libelf and libbpf is installed. 4. testpmd cmdline example: ./testpmd -c 0x3 -n 4 --vdev 'eth_af_xdp,iface=eth0' -- -i --mbuf-size=1856 --mp-flags=65 BTW, performance test shows our PMD can reach 94%~98% of the orignal benchmark when share memory is enabled. Qi Zhang (7): net/af_xdp: new PMD driver lib/mbuf: enable parse flags when create mempool lib/mempool: allow page size aligned mempool net/af_xdp: use mbuf mempool for buffer management net/af_xdp: enable share mempool net/af_xdp: load BPF file app/testpmd: enable parameter for mempool flags app/test-pmd/parameters.c | 12 + app/test-pmd/testpmd.c | 15 +- app/test-pmd/testpmd.h | 1 + config/common_base | 5 + config/common_linuxapp | 1 + drivers/net/Makefile | 1 + drivers/net/af_xdp/Makefile | 29 + drivers/net/af_xdp/bpf_load.c | 168 +++++ drivers/net/af_xdp/bpf_load.h | 11 + drivers/net/af_xdp/meson.build | 7 + drivers/net/af_xdp/rte_eth_af_xdp.c | 909 ++++++++++++++++++++++++++ drivers/net/af_xdp/rte_pmd_af_xdp_version.map | 4 + drivers/net/af_xdp/xdpsock_queue.h | 66 ++ lib/librte_mbuf/rte_mbuf.c | 15 +- lib/librte_mbuf/rte_mbuf.h | 8 +- lib/librte_mempool/rte_mempool.c | 2 + lib/librte_mempool/rte_mempool.h | 1 + mk/rte.app.mk | 1 + 18 files changed, 1246 insertions(+), 10 deletions(-) create mode 100644 drivers/net/af_xdp/Makefile create mode 100644 drivers/net/af_xdp/bpf_load.c create mode 100644 drivers/net/af_xdp/bpf_load.h create mode 100644 drivers/net/af_xdp/meson.build create mode 100644 drivers/net/af_xdp/rte_eth_af_xdp.c create mode 100644 drivers/net/af_xdp/rte_pmd_af_xdp_version.map create mode 100644 drivers/net/af_xdp/xdpsock_queue.h -- 2.13.6