On 4/4/2019 9:51 AM, Xiaolong Ye wrote: > Overview > ======== > > This patchset adds a new PMD driver for AF_XDP which is a proposed > faster version of AF_PACKET interface in Linux, see below links [1] [2] for > details of AF_XDP introduction: > > AF_XDP roadmap > ============== > - AF_XDP is included in upstream kernel since 4.18, and AF_XDP support > in libbpf has been merged in v5.1-rc1. > - Now i40e and ixgbe drivers have supported zero copy mode. > > Change logs > =========== > v11: > > - fix the meson build issue > > v10: > > - refine the Makefile, remove RTE_KERNELDIR related CFLAGS > - add a new internal file af_xdp_deps.h to handle the dependency for > asm/barrier.h > - fix a typo observed by Stephen > - rename xsk.h to bpf/xsk.h as xsk.h is assumed to be installed in > /usr/local/include/bpf > - add libbpf build steps in af_xdp.rst > > > v9: > - adjust header files order according to Stephen's suggestion > > v8: > - address Ferruh's comments on V7 > - replace posix_memalign with rte_memzone_reserve_aligned to get better > performance > - keep the first patch only as Oliver suggested as zero copy part > implementation is still in suspense, we may provide the related patch > later. > > v7: > - mention mtu limitation in af_xdp.rst > - fix the vdev name in af_xdp.rst > > V6: > > - remove the newline in AF_XDP_LOG definition to avoid double new lines > issue. > - rename MEMPOOL_F_PAGE_ALIGN to MEMPOOL_CHUNK_F_PAGE_ALIGN. > > V5: > > - disable AF_XDP pmd by default due to it requires kernel more recent > than minimum kernel version supported by DPDK > - address other review comments of Maxime > > V4: > > - change vdev name to net_af_xdp > - adopt dynamic log type for all logging > - Fix other style issues raised by Stephen > > V3: > > - Fix all style issues pointed by Stephen, Mattias, David. > - Drop the testpmd change as we'll adopt Jerin's suggestion to add a new > mempool driver to handle the application use of AF_XDP's zero copy feature. > > V2: > - Fix a NULL pointer reference crash issue > - Fix txonly stop sending traffic in zc mode > - Refactor rte_mbuf.c to avoid ABI breakage. > - Fix multiple style issues pointed by Ferruh, David, Stephen, Luca. > > changes vs RFC sent by Qi last Aug: > > - Re-work base on AF_XDP's interface changes since the new libbpf has > provided higher-level APIs that hide many of the details of the AP_XDP > uapi. After the rework, it helps to reduce 300+ lines of code. > > - multi-queues is not supported due to current libbpf doesn't support > multi-sockets on a single umem. > > - No extra steps to load xdp program manually, since the current behavior of > libbpf would load a default xdp program when user calls xsk_socket__create. > userspace application only needs to handle the cleanup. > > How to try > ========== > > 1. take the kernel >= v5.1-rc1, build kernel and replace your host > kernel with it. > > make sure you turn on XDP sockets when compiling > > Networking support --> > Networking options --> > [ * ] XDP sockets > > 2. build & install libbpf in tools/lib/bpf > > cd tools/lib/bpf > make install_lib > make install_headers > > 3. ethtool -L enp59s0f0 combined 1 > > 4. extra step to build dpdk > > explicitly enable AF_XDP pmd by adding below line to > config/common_linux > > CONFIG_RTE_LIBRTE_PMD_AF_XDP=y > > 5. start testpmd > > ./build/app/testpmd -c 0xc -n 4 --vdev net_af_xdp,iface=enp59s0f0,queue=0 > -- -i --rxq=1 --txq=1 > > in this case, default xdp program will be loaded and linked to queue 0 of > enp59s0f0, > network traffics travel to queue 0 will be redirected to af_xdp socket. > > Xiaolong Ye (1): > net/af_xdp: introduce AF XDP PMD driver
Reviewed-by: Ferruh Yigit <ferruh.yi...@intel.com>