dpdk: add support for DPDK 18.02, deprecate 17.08 56/10556/2
authorDamjan Marion <damarion@cisco.com>
Thu, 15 Feb 2018 10:59:04 +0000 (11:59 +0100)
committerDave Barach <openvpp@barachs.net>
Thu, 15 Feb 2018 12:38:16 +0000 (12:38 +0000)
17.11 is still default.

Change-Id: I524d232579db8a59c717c5d760398b6b7f811d03
Signed-off-by: Damjan Marion <damarion@cisco.com>
dpdk/Makefile
src/plugins/dpdk/buffer.c
src/plugins/dpdk/device/dpdk.h
src/plugins/dpdk/device/format.c
src/plugins/dpdk/ipsec/ipsec.c

index 869cac2..844d641 100644 (file)
@@ -29,8 +29,8 @@ PKG_SUFFIX ?= vpp1
 DPDK_BASE_URL ?= http://fast.dpdk.org/rel
 DPDK_TARBALL := dpdk-$(DPDK_VERSION).tar.xz
 DPDK_TAR_URL := $(DPDK_BASE_URL)/$(DPDK_TARBALL)
-DPDK_17.08_TARBALL_MD5_CKSUM := 0641f59ea8ea98afefa7cfa2699f6241
 DPDK_17.11_TARBALL_MD5_CKSUM := 53ee9e054a8797c9e67ffa0eb5d0c701
+DPDK_18.02_TARBALL_MD5_CKSUM := ca13077a014a2102c6e10153dfa3b920
 DPDK_SOURCE := $(B)/dpdk-$(DPDK_VERSION)
 MACHINE=$(shell uname -m)
 
@@ -40,23 +40,14 @@ NASM_TARBALL := nasm-$(NASM_VER).tar.xz
 NASM_TAR_URL := $(NASM_BASE_URL)/$(NASM_VER)/$(NASM_TARBALL)
 NASM_SOURCE := $(B)/nasm-$(NASM_VER)
 
-ISA_L_CRYPTO_LIB := n
-
-ifeq ($(DPDK_VERSION),17.08)
-IPSEC_MB_VER ?= 0.46
-else
+ifeq ($(DPDK_VERSION),17.11)
 IPSEC_MB_VER ?= 0.47
+else
+IPSEC_MB_VER ?= 0.48
 endif
-ISA_L_CRYPTO_VER := 2.18.0
 
 ifeq ($(MACHINE),$(filter $(MACHINE),x86_64))
   AESNI ?= y
-# DPDK pre 17.08 depends on ISA-L Crypto library for GCM PMD
-  ifneq ($(firstword $(sort $(DPDK_VERSION), 17.08)), 17.08)
-  ISA_L_CRYPTO_LIB = y
-  IPSEC_MB_VER = 0.45
-  $(info Building ISA-L Crypto $(ISA_L_CRYPTO_VER) library)
-  endif
 $(info Building IPSec-MB $(IPSEC_MB_VER) library)
 else
   AESNI ?= N
@@ -66,11 +57,6 @@ AESNIMB_LIB_TARBALL := v$(IPSEC_MB_VER).tar.gz
 AESNIMB_LIB_TARBALL_URL := http://github.com/01org/intel-ipsec-mb/archive/$(AESNIMB_LIB_TARBALL)
 AESNIMB_LIB_SOURCE := $(B)/intel-ipsec-mb-$(IPSEC_MB_VER)
 
-ISA_L_CRYPTO_LIB_TARBALL := v$(ISA_L_CRYPTO_VER).tar.gz
-ISA_L_CRYPTO_LIB_TARBALL_URL := http://github.com/01org/isa-l_crypto/archive/$(ISA_L_CRYPTO_LIB_TARBALL)
-ISA_L_CRYPTO_LIB_SOURCE := $(B)/isa-l_crypto-$(ISA_L_CRYPTO_VER)
-ISA_L_CRYPTO_INSTALL_DIR := $(ISA_L_CRYPTO_LIB_SOURCE)/install
-
 ifneq (,$(findstring clang,$(CC)))
 DPDK_CC=clang
 else ifneq (,$(findstring icc,$(CC)))
@@ -163,10 +149,6 @@ else
 DPDK_EXTRA_CFLAGS := -g -O0
 endif
 
-ifeq ($(ISA_L_CRYPTO_LIB),y)
-DPDK_EXTRA_CFLAGS += -I$(ISA_L_CRYPTO_INSTALL_DIR)/include -Wl,-z,muldefs
-DPDK_EXTRA_LDFLAGS += -L$(I)/lib
-endif
 DPDK_MAKE_EXTRA_ARGS += AESNI_MULTI_BUFFER_LIB_PATH=$(AESNIMB_LIB_SOURCE)
 
 # assemble DPDK make arguments
@@ -248,20 +230,11 @@ $(CURDIR)/$(AESNIMB_LIB_TARBALL):
                else curl -o $@ -LO $(AESNIMB_LIB_TARBALL_URL) ; \
        fi
 
-$(CURDIR)/$(ISA_L_CRYPTO_LIB_TARBALL):
-       @if [ -e $(DPDK_DOWNLOAD_DIR)/$(ISA_L_CRYPTO_LIB_TARBALL) ] ; \
-               then cp $(DPDK_DOWNLOAD_DIR)/$(ISA_L_CRYPTO_LIB_TARBALL) $(CURDIR) ; \
-               else curl -o $@ -LO $(ISA_L_CRYPTO_LIB_TARBALL_URL) ; \
-       fi
-
 DPDK_DOWNLOADS = $(CURDIR)/$(DPDK_TARBALL)
 ifeq ($(AESNI),y)
 DPDK_DOWNLOADS += $(CURDIR)/$(NASM_TARBALL)
 DPDK_DOWNLOADS += $(CURDIR)/$(AESNIMB_LIB_TARBALL)
 endif
-ifeq ($(ISA_L_CRYPTO_LIB),y)
-DPDK_DOWNLOADS += $(CURDIR)/$(ISA_L_CRYPTO_LIB_TARBALL)
-endif
 
 $(B)/.download.ok: $(DPDK_DOWNLOADS)
        @mkdir -p $(B)
@@ -282,10 +255,6 @@ ifeq ($(AESNI),y)
        @tar --directory $(B) --extract --file $(CURDIR)/$(NASM_TARBALL)
        @echo --- extracting $(AESNIMB_LIB_TARBALL) ---
        @tar --directory $(B) --extract --file $(CURDIR)/$(AESNIMB_LIB_TARBALL)
-endif
-ifeq ($(ISA_L_CRYPTO_LIB),y)
-       @echo --- extracting $(ISA_L_CRYPTO_LIB_TARBALL) ---
-       @tar --directory $(B) --extract --file $(CURDIR)/$(ISA_L_CRYPTO_LIB_TARBALL)
 endif
        @touch $@
 
@@ -320,19 +289,10 @@ build-nasm:
 build-ipsec-mb:
        mkdir -p $(I)/lib/
        # Do not build GCM stuff if we are building ISA_L
-       make -C $(AESNIMB_LIB_SOURCE) -j NO_GCM=$(ISA_L_CRYPTO_LIB) \
+       make -C $(AESNIMB_LIB_SOURCE) -j \
          DEBUG=$(DPDK_DEBUG) EXTRA_CFLAGS=-fPIC NASM=$(NASM_SOURCE)/nasm
        cp $(AESNIMB_LIB_SOURCE)/libIPSec_MB.a $(I)/lib/
 
-.PHONY: build-isal-crypto
-build-isal-crypto:
-       mkdir -p $(I)/lib/
-       cd $(ISA_L_CRYPTO_LIB_SOURCE) && ./autogen.sh && \
-         ./configure --prefix=$(ISA_L_CRYPTO_INSTALL_DIR) \
-         --libdir=$(ISA_L_CRYPTO_INSTALL_DIR)/lib CFLAGS='-fPIC -DPIC -O2'
-       make -C $(ISA_L_CRYPTO_LIB_SOURCE) -j install
-       cp $(ISA_L_CRYPTO_INSTALL_DIR)/lib/libisal_crypto.a $(I)/lib/
-
 .PHONY: build-dpdk
 build-dpdk:
        @if [ ! -e $(B)/.config.ok ] ; then echo 'Please run "make config" first' && false ; fi
@@ -343,9 +303,6 @@ ifeq ($(AESNI),y)
 BUILD_TARGETS += build-nasm
 BUILD_TARGETS += build-ipsec-mb
 endif
-ifeq ($(ISA_L_CRYPTO_LIB),y)
-BUILD_TARGETS += build-isal-crypto
-endif
 BUILD_TARGETS += build-dpdk
 
 $(B)/.build.ok: $(BUILD_TARGETS)
index 01ec1ac..7b17578 100644 (file)
@@ -471,11 +471,7 @@ dpdk_pool_create (vlib_main_t * vm, u8 * pool_name, u32 elt_size,
   i32 ret;
 
   obj_size = rte_mempool_calc_obj_size (elt_size, 0, 0);
-#if RTE_VERSION < RTE_VERSION_NUM(17, 11, 0, 0)
-  size = rte_mempool_xmem_size (num_elts, obj_size, 21);
-#else
   size = rte_mempool_xmem_size (num_elts, obj_size, 21, 0);
-#endif
 
   error =
     vlib_physmem_region_alloc (vm, (i8 *) pool_name, size, numa, 0, pri);
@@ -492,15 +488,9 @@ dpdk_pool_create (vlib_main_t * vm, u8 * pool_name, u32 elt_size,
 
   rte_mempool_set_ops_byname (mp, RTE_MBUF_DEFAULT_MEMPOOL_OPS, NULL);
 
-#if RTE_VERSION < RTE_VERSION_NUM(17, 11, 0, 0)
-  ret =
-    rte_mempool_populate_phys_tab (mp, pr->mem, pr->page_table, pr->n_pages,
-                                  pr->log2_page_size, NULL, NULL);
-#else
   ret =
     rte_mempool_populate_iova_tab (mp, pr->mem, pr->page_table, pr->n_pages,
                                   pr->log2_page_size, NULL, NULL);
-#endif
   if (ret != (i32) mp->size)
     {
       rte_mempool_free (mp);
index 5313a24..4f4a2e5 100644 (file)
@@ -39,9 +39,7 @@
 #include <rte_eth_bond.h>
 #include <rte_sched.h>
 #include <rte_net.h>
-#if RTE_VERSION >= RTE_VERSION_NUM(17, 11, 0, 0)
 #include <rte_bus_pci.h>
-#endif
 
 #include <vnet/unix/pcap.h>
 #include <vnet/devices/devices.h>
@@ -119,11 +117,7 @@ typedef struct
   u64 tx_tail;
 } tx_ring_hdr_t;
 
-#if RTE_VERSION < RTE_VERSION_NUM(17, 11, 0, 0)
-typedef uint8_t dpdk_portid_t;
-#else
 typedef uint16_t dpdk_portid_t;
-#endif
 
 typedef struct
 {
index d9ee2bd..d661fa7 100644 (file)
   _(DEV_TX_OFFLOAD_OUTER_IPV4_CKSUM, "outer-ipv4-cksum") \
   _(DEV_TX_OFFLOAD_QINQ_INSERT, "qinq-insert")
 
-#if RTE_VERSION < RTE_VERSION_NUM(17, 11, 0, 0)
-#define PKT_RX_VLAN PKT_RX_VLAN_PKT
-#endif
-
 #define foreach_dpdk_pkt_rx_offload_flag                                \
   _ (PKT_RX_VLAN, "RX packet is a 802.1q VLAN packet")                  \
   _ (PKT_RX_RSS_HASH, "RX packet with RSS hash result")                 \
index bf5d5bf..3dce075 100644 (file)
@@ -806,11 +806,7 @@ crypto_op_init (struct rte_mempool *mempool,
   op->sess_type = RTE_CRYPTO_OP_WITH_SESSION;
   op->type = RTE_CRYPTO_OP_TYPE_SYMMETRIC;
   op->status = RTE_CRYPTO_OP_STATUS_NOT_PROCESSED;
-#if RTE_VERSION < RTE_VERSION_NUM(17, 11, 0, 0)
-  op->phys_addr = rte_mempool_virt2phy (NULL, _obj);
-#else
   op->phys_addr = rte_mempool_virt2iova (_obj);
-#endif
   op->mempool = mempool;
 }