From mboxrd@z Thu Jan 1 00:00:00 1970 From: Qi Zhang Subject: [RFC v2 0/7] PMD driver for AF_XDP Date: Thu, 8 Mar 2018 21:52:42 +0800 Message-ID: <20180308135249.28187-1-qi.z.zhang@intel.com> Cc: magnus.karlsson@intel.com, bjorn.topel@intel.com, Qi Zhang To: dev@dpdk.org 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) List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 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