From 9884a2bcbe74647a49fb3969211e12fa399da2a1 Mon Sep 17 00:00:00 2001 From: Lemmy Huang 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 --- 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 #include #include +#include #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 + 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 #include #include #include - #include #include #include 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 #include #include -- 2.27.0