242 lines
11 KiB
Diff
242 lines
11 KiB
Diff
From 9884a2bcbe74647a49fb3969211e12fa399da2a1 Mon Sep 17 00:00:00 2001
|
|
From: Lemmy Huang <huangliming5@huawei.com>
|
|
Date: Thu, 15 Jun 2023 13:07:33 +0800
|
|
Subject: [PATCH] adapt to dpdk-19.11 and dpdk-21.11
|
|
|
|
Signed-off-by: Lemmy Huang <huangliming5@huawei.com>
|
|
---
|
|
src/common/dpdk_common.h | 1 +
|
|
src/lstack/Makefile | 47 +++++++++++++++-------
|
|
src/lstack/include/lstack_lockless_queue.h | 2 +
|
|
src/lstack/netif/lstack_ethdev.c | 6 ++-
|
|
src/ltran/CMakeLists.txt | 41 ++++++++++++++-----
|
|
src/ltran/ltran_dfx.c | 2 +-
|
|
src/ltran/ltran_param.h | 1 +
|
|
7 files changed, 74 insertions(+), 26 deletions(-)
|
|
|
|
diff --git a/src/common/dpdk_common.h b/src/common/dpdk_common.h
|
|
index 2f0e8d1..38f09ae 100644
|
|
--- a/src/common/dpdk_common.h
|
|
+++ b/src/common/dpdk_common.h
|
|
@@ -17,6 +17,7 @@
|
|
#include <rte_mbuf.h>
|
|
#include <rte_ring.h>
|
|
#include <lwip/pbuf.h>
|
|
+#include <lwip/dpdk_version.h>
|
|
|
|
#include "gazelle_opt.h"
|
|
|
|
diff --git a/src/lstack/Makefile b/src/lstack/Makefile
|
|
index ab039ec..d9c8396 100644
|
|
--- a/src/lstack/Makefile
|
|
+++ b/src/lstack/Makefile
|
|
@@ -14,6 +14,12 @@ ROOT_DIR := $(dir $(abspath $(LSTACK_DIR)))
|
|
LWIP_INCLUDE_FILE ?= /usr/include/lwip
|
|
LIB_PATH ?= /usr/lib64
|
|
|
|
+ifeq ($(DPDK_VERSION_1911), 1)
|
|
+ DPDK_INCLUDE_FILE ?= /usr/include/dpdk
|
|
+else
|
|
+ DPDK_INCLUDE_FILE ?= /usr/local/include/
|
|
+endif
|
|
+
|
|
AR = ar
|
|
ARFLAGS = crDP
|
|
CC ?= gcc
|
|
@@ -30,7 +36,8 @@ $(info $(CC):$(SEC_FLAGS))
|
|
|
|
INC = -I$(LSTACK_DIR)/include \
|
|
-I$(LSTACK_DIR)/../common \
|
|
- -I$(LWIP_INCLUDE_FILE)
|
|
+ -I$(LWIP_INCLUDE_FILE) \
|
|
+ -I$(DPDK_INCLUDE_FILE)
|
|
|
|
CFLAGS = $(OPTIMIZATION) -fno-strict-aliasing $(INC)
|
|
|
|
@@ -58,8 +65,8 @@ include $(patsubst %, %/dir.mk, $(DIRS))
|
|
OBJS = $(subst .c,.o,$(SRCS))
|
|
|
|
LWIP_LIB = $(LIB_PATH)/liblwip.a
|
|
-LIBRTE_LIB = $(LIB_PATH)/librte_bus_pci.so \
|
|
- $(LIB_PATH)/librte_pci.so \
|
|
+LIBRTE_LIB = $(LIB_PATH)/librte_pci.so \
|
|
+ $(LIB_PATH)/librte_bus_pci.so \
|
|
$(LIB_PATH)/librte_cmdline.so \
|
|
$(LIB_PATH)/librte_hash.so \
|
|
$(LIB_PATH)/librte_mempool.so \
|
|
@@ -69,25 +76,35 @@ LIBRTE_LIB = $(LIB_PATH)/librte_bus_pci.so \
|
|
$(LIB_PATH)/librte_gro.so \
|
|
$(LIB_PATH)/librte_ring.so \
|
|
$(LIB_PATH)/librte_mbuf.so \
|
|
- $(LIB_PATH)/librte_telemetry.so \
|
|
$(LIB_PATH)/librte_kni.so \
|
|
- $(LIB_PATH)/librte_net_ixgbe.so \
|
|
$(LIB_PATH)/librte_kvargs.so \
|
|
- $(LIB_PATH)/librte_net_hinic.so \
|
|
- $(LIB_PATH)/librte_net_i40e.so \
|
|
- $(LIB_PATH)/librte_net_virtio.so \
|
|
$(LIB_PATH)/librte_bus_vdev.so \
|
|
$(LIB_PATH)/librte_net.so \
|
|
- $(LIB_PATH)/librte_rcu.so \
|
|
$(LIB_PATH)/librte_ethdev.so \
|
|
$(LIB_PATH)/librte_pdump.so \
|
|
- $(LIB_PATH)/librte_bpf.so \
|
|
- $(LIB_PATH)/librte_pcapng.so \
|
|
- $(LIB_PATH)/librte_security.so \
|
|
- $(LIB_PATH)/librte_cryptodev.so \
|
|
- $(LIB_PATH)/librte_net_pcap.so \
|
|
- $(LIB_PATH)/librte_net_bond.so
|
|
|
|
+ifeq ($(DPDK_VERSION_1911), 1)
|
|
+ CFLAGS += -DDPDK_VERSION_1911=1
|
|
+ LIBRTE_LIB += $(LIB_PATH)/librte_pmd_pcap.so \
|
|
+ $(LIB_PATH)/librte_pmd_bond.so \
|
|
+ $(LIB_PATH)/librte_pmd_hinic.so \
|
|
+ $(LIB_PATH)/librte_pmd_i40e.so \
|
|
+ $(LIB_PATH)/librte_pmd_ixgbe.so \
|
|
+ $(LIB_PATH)/librte_pmd_virtio.so
|
|
+else
|
|
+ LIBRTE_LIB += $(LIB_PATH)/librte_net_pcap.so \
|
|
+ $(LIB_PATH)/librte_net_bond.so \
|
|
+ $(LIB_PATH)/librte_net_hinic.so \
|
|
+ $(LIB_PATH)/librte_net_i40e.so \
|
|
+ $(LIB_PATH)/librte_net_ixgbe.so \
|
|
+ $(LIB_PATH)/librte_net_virtio.so \
|
|
+ $(LIB_PATH)/librte_pcapng.so \
|
|
+ $(LIB_PATH)/librte_rcu.so \
|
|
+ $(LIB_PATH)/librte_telemetry.so \
|
|
+ $(LIB_PATH)/librte_bpf.so \
|
|
+ $(LIB_PATH)/librte_security.so \
|
|
+ $(LIB_PATH)/librte_cryptodev.so
|
|
+endif
|
|
|
|
DEP_LIBS = $(LWIP_LIB) $(LIBRTE_LIB)
|
|
LDFLAGS += -Wl,--whole-archive $(DEP_LIBS) $(OBJS) -Wl,--no-whole-archive
|
|
diff --git a/src/lstack/include/lstack_lockless_queue.h b/src/lstack/include/lstack_lockless_queue.h
|
|
index c6f6f32..b0fc31f 100644
|
|
--- a/src/lstack/include/lstack_lockless_queue.h
|
|
+++ b/src/lstack/include/lstack_lockless_queue.h
|
|
@@ -13,6 +13,8 @@
|
|
#ifndef __GAZELLE_LOCKLESS_QUEUE_H__
|
|
#define __GAZELLE_LOCKLESS_QUEUE_H__
|
|
|
|
+#include <stdbool.h>
|
|
+
|
|
typedef struct lockless_queue_node {
|
|
struct lockless_queue_node *volatile next;
|
|
} lockless_queue_node;
|
|
diff --git a/src/lstack/netif/lstack_ethdev.c b/src/lstack/netif/lstack_ethdev.c
|
|
index e4e7ebd..2052240 100644
|
|
--- a/src/lstack/netif/lstack_ethdev.c
|
|
+++ b/src/lstack/netif/lstack_ethdev.c
|
|
@@ -780,7 +780,11 @@ int32_t gazelle_eth_dev_poll(struct protocol_stack *stack, uint8_t use_ltran_fla
|
|
struct rte_ether_hdr *ethh = rte_pktmbuf_mtod(stack->pkts[i], struct rte_ether_hdr *);
|
|
if (unlikely(RTE_BE16(RTE_ETHER_TYPE_ARP) == ethh->ether_type)) {
|
|
stack_broadcast_arp(stack->pkts[i], stack);
|
|
- if (!use_ltran_flag && !rte_is_broadcast_ether_addr(ðh->dst_addr)) {
|
|
+#if DPDK_VERSION_1911
|
|
+ if (!rte_is_broadcast_ether_addr(ðh->d_addr)) {
|
|
+#else /* DPDK_VERSION_1911 */
|
|
+ if (!rte_is_broadcast_ether_addr(ðh->dst_addr)) {
|
|
+#endif /* DPDK_VERSION_1911 */
|
|
// copy arp into other process
|
|
transfer_arp_to_other_process(stack->pkts[i]);
|
|
transfer_type = TRANSFER_KERNEL;
|
|
diff --git a/src/ltran/CMakeLists.txt b/src/ltran/CMakeLists.txt
|
|
index f37a232..1370dc8 100644
|
|
--- a/src/ltran/CMakeLists.txt
|
|
+++ b/src/ltran/CMakeLists.txt
|
|
@@ -27,12 +27,40 @@ if($ENV{GAZELLE_COVERAGE_ENABLE})
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ftest-coverage -fprofile-arcs")
|
|
endif($ENV{GAZELLE_COVERAGE_ENABLE})
|
|
|
|
+if($ENV{DPDK_VERSION_1911})
|
|
+ set(DPDK_DIR /usr/include/dpdk)
|
|
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DDPDK_VERSION_1911=1")
|
|
+ set(DPDK_LINK_FLAGS "-Wl,-lrte_pmd_af_packet -Wl,-lrte_pmd_ark -Wl,-lrte_pmd_atlantic -Wl,-lrte_pmd_axgbe \
|
|
+ -Wl,-lrte_pmd_bnxt -Wl,-lrte_pmd_bond -Wl,-lrte_pmd_cxgbe -Wl,-lrte_pmd_dpaa -Wl,-lrte_pmd_dpaa2 \
|
|
+ -Wl,-lrte_pmd_e1000 -Wl,-lrte_pmd_ena -Wl,-lrte_pmd_enetc -Wl,-lrte_pmd_enic -Wl,-lrte_pmd_failsafe \
|
|
+ -Wl,-lrte_pmd_i40e -Wl,-lrte_pmd_hinic -Wl,-lrte_pmd_ixgbe -Wl,-lrte_pmd_kni \
|
|
+ -Wl,-lrte_pmd_nfp -Wl,-lrte_pmd_null -Wl,-lpcap -Wl,-lrte_pmd_qede -Wl,-lrte_pmd_ring -Wl,-lrte_pmd_softnic \
|
|
+ -Wl,-lrte_pmd_pcap -Wl,-lrte_pmd_tap -Wl,-lrte_pmd_vdev_netvsc -Wl,-lrte_pmd_virtio -Wl,-lrte_pmd_vhost \
|
|
+ -Wl,-lrte_mempool_octeontx -Wl,-lrte_pmd_octeontx -Wl,-lrte_bus_vmbus -Wl,-lrte_pmd_netvsc \
|
|
+ -Wl,-lrte_pmd_vmxnet3_uio -Wl,-lrte_pmd_bbdev_null \
|
|
+ -Wl,-lrte_pmd_null_crypto -Wl,-lrte_pmd_octeontx_crypto -Wl,-lrte_pmd_crypto_scheduler \
|
|
+ -Wl,-lrte_pmd_dpaa2_sec -Wl,-lrte_pmd_dpaa_sec -Wl,-lrte_pmd_caam_jr -Wl,-lrte_pmd_virtio_crypto \
|
|
+ -Wl,-lrte_pmd_octeontx_zip -Wl,-lrte_pmd_qat -Wl,-lrte_pmd_skeleton_event -Wl,-lrte_pmd_sw_event \
|
|
+ -Wl,-lrte_pmd_dsw_event -Wl,-lrte_pmd_octeontx_ssovf -Wl,-lrte_pmd_dpaa_event -Wl,-lrte_pmd_dpaa2_event \
|
|
+ -Wl,-lrte_pmd_opdl_event -Wl,-lrte_pmd_lio -Wl,-lrte_pmd_thunderx_nicvf -Wl,-lrte_pmd_ifc")
|
|
+else()
|
|
+ set(DPDK_DIR /usr/local/include/)
|
|
+ set(DPDK_LINK_FLAGS "-Wl,-lrte_net_af_packet -Wl,-lrte_net_ark -Wl,-lrte_net_atlantic -Wl,-lrte_net_axgbe \
|
|
+ -Wl,-lrte_net_bnxt -Wl,-lrte_net_bond -Wl,-lrte_net_cxgbe -Wl,-lrte_net_dpaa -Wl,-lrte_net_dpaa2 \
|
|
+ -Wl,-lrte_net_e1000 -Wl,-lrte_net_ena -Wl,-lrte_net_enetc -Wl,-lrte_net_enic -Wl,-lrte_net_failsafe \
|
|
+ -Wl,-lrte_net_i40e -Wl,-lrte_net_hinic -Wl,-lrte_net_ixgbe -Wl,-lrte_net_kni \
|
|
+ -Wl,-lrte_net_nfp -Wl,-lrte_net_null -Wl,-lpcap -Wl,-lrte_net_qede -Wl,-lrte_net_ring -Wl,-lrte_net_softnic \
|
|
+ -Wl,-lrte_net_pcap -Wl,-lrte_net_tap -Wl,-lrte_net_vdev_netvsc -Wl,-lrte_net_virtio -Wl,-lrte_net_vhost \
|
|
+ -Wl,-lrte_mempool_octeontx -Wl,-lrte_net_octeontx -Wl,-lrte_bus_vmbus -Wl,-lrte_net_netvsc \
|
|
+ -Wl,-lrte_telemetry")
|
|
+endif($ENV{DPDK_VERSION_1911})
|
|
+
|
|
add_executable(ltran main.c ltran_param.c ltran_config.c ltran_ethdev.c ltran_stat.c ltran_errno.c
|
|
ltran_monitor.c ltran_instance.c ltran_stack.c ltran_tcp_conn.c ltran_tcp_sock.c
|
|
ltran_forward.c ltran_timer.c ${COMMON_DIR}/gazelle_dfx_msg.c ${COMMON_DIR}/dpdk_common.c
|
|
${COMMON_DIR}/gazelle_parse_config.c)
|
|
|
|
-target_include_directories(ltran PRIVATE ${COMMON_DIR} ${PROJECT_SOURCE_DIR} ${LWIP_DIR})
|
|
+target_include_directories(ltran PRIVATE ${COMMON_DIR} ${PROJECT_SOURCE_DIR} ${LWIP_DIR} ${DPDK_DIR})
|
|
target_compile_options(ltran PRIVATE -march=native -fno-strict-aliasing -D__ARM_FEATURE_CRC32=1 -DRTE_MACHINE_CPUFLAG_NEON
|
|
-DRTE_MACHINE_CPUFLAG_CRC32 -DRTE_MACHINE_CPUFLAG_PMULL -DRTE_MACHINE_CPUFLAG_AES
|
|
-DRTE_MACHINE_CPUFLAG_SHA1 -DRTE_MACHINE_CPUFLAG_SHA2 -include rte_config.h
|
|
@@ -51,16 +79,11 @@ set_target_properties(ltran PROPERTIES LINK_FLAGS "-L$ENV{DPDK_LIB_PATH} -Wl,--w
|
|
-Wl,-Bstatic -lrte_eal -Wl,-Bdynamic -Wl,-lrte_cmdline \
|
|
-Wl,-lrte_sched -Wl,-lrte_reorder -Wl,-lrte_kni -Wl,-lrte_common_cpt -Wl,-lrte_common_octeontx -Wl,-lrte_common_dpaax -Wl,-lrte_bus_pci \
|
|
-Wl,-lrte_bus_dpaa -Wl,-lrte_bus_vdev -Wl,-lrte_bus_fslmc -Wl,-lrte_mempool_bucket -Wl,-lrte_mempool_stack -Wl,-lrte_mempool_dpaa \
|
|
- -Wl,-lrte_mempool_dpaa2 -Wl,-lrte_net_af_packet -Wl,-lrte_net_ark -Wl,-lrte_net_atlantic -Wl,-lrte_net_axgbe \
|
|
- -Wl,-lrte_net_bnxt -Wl,-lrte_net_bond -Wl,-lrte_net_cxgbe -Wl,-lrte_net_dpaa -Wl,-lrte_net_dpaa2 -Wl,-lrte_net_e1000 -Wl,-lrte_net_ena \
|
|
- -Wl,-lrte_net_enetc -Wl,-lrte_net_enic -Wl,-lrte_net_failsafe -Wl,-lrte_net_i40e -Wl,-lrte_net_hinic -Wl,-lrte_net_ixgbe -Wl,-lrte_net_kni \
|
|
- -Wl,-lrte_net_nfp -Wl,-lrte_net_null -Wl,-lpcap -Wl,-lrte_net_qede -Wl,-lrte_net_ring -Wl,-lrte_net_softnic -Wl,-lrte_net_pcap \
|
|
- -Wl,-lrte_net_tap -Wl,-lrte_net_vdev_netvsc -Wl,-lrte_net_virtio -Wl,-lrte_net_vhost \
|
|
- -Wl,-lrte_bus_vmbus -Wl,-lrte_net_netvsc -Wl,-lrte_mempool_octeontx -Wl,-lrte_net_octeontx \
|
|
- -Wl,-lrte_bus_ifpga -Wl,-lrte_stack -Wl,-lrte_telemetry\
|
|
+ -Wl,-lrte_mempool_dpaa2 -Wl,-lrte_bus_ifpga -Wl,-lrte_stack \
|
|
+ ${DPDK_LINK_FLAGS} \
|
|
-Wl,--no-whole-archive -Wl,-lm -Wl,-lrt -Wl,-lnuma -Wl,-ldl -Wl,-export-dynamic -Wl,-export-dynamic \
|
|
-Wl,--as-needed -Wl,-export-dynamic -Wl,-Map=ltran.map -Wl,--cref")
|
|
|
|
add_executable(gazellectl ltran_dfx.c ${COMMON_DIR}/gazelle_dfx_msg.c)
|
|
-target_include_directories(gazellectl PRIVATE $ENV{DPDK_INCLUDE_FILE} ${COMMON_DIR})
|
|
+target_include_directories(gazellectl PRIVATE $ENV{DPDK_INCLUDE_FILE} ${COMMON_DIR} ${DPDK_DIR})
|
|
target_link_libraries(gazellectl PRIVATE boundscheck -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack)
|
|
diff --git a/src/ltran/ltran_dfx.c b/src/ltran/ltran_dfx.c
|
|
index e41c6db..b8d9c99 100644
|
|
--- a/src/ltran/ltran_dfx.c
|
|
+++ b/src/ltran/ltran_dfx.c
|
|
@@ -10,10 +10,10 @@
|
|
* See the Mulan PSL v2 for more details.
|
|
*/
|
|
|
|
+#include <stdbool.h>
|
|
#include <stdio.h>
|
|
#include <stdint.h>
|
|
#include <sys/time.h>
|
|
-
|
|
#include <arpa/inet.h>
|
|
#include <getopt.h>
|
|
#include <errno.h>
|
|
diff --git a/src/ltran/ltran_param.h b/src/ltran/ltran_param.h
|
|
index 40a92b1..75addcd 100644
|
|
--- a/src/ltran/ltran_param.h
|
|
+++ b/src/ltran/ltran_param.h
|
|
@@ -13,6 +13,7 @@
|
|
#ifndef __GAZELLE_PARAM_H__
|
|
#define __GAZELLE_PARAM_H__
|
|
|
|
+#include <stdbool.h>
|
|
#include <netinet/in.h>
|
|
#include <rte_ether.h>
|
|
|
|
--
|
|
2.27.0
|
|
|