sync kernelevent: kernel event thread report kernel events to app thread directly without passing through lstack thread
(cherry picked from commit 6f72d5dec577570de98b45cea09d87b71e8f030e)
This commit is contained in:
parent
57ff18c7ed
commit
3ea9fe46c2
67
0007-cosmetic-changes.patch
Normal file
67
0007-cosmetic-changes.patch
Normal file
@ -0,0 +1,67 @@
|
||||
From 52e6a745e4b5bf27de66b55283c0e0f474213258 Mon Sep 17 00:00:00 2001
|
||||
From: Honggang LI <honggangli@163.com>
|
||||
Date: Mon, 21 Aug 2023 08:48:00 +0800
|
||||
Subject: [PATCH] cosmetic changes
|
||||
|
||||
Signed-off-by: Honggang LI <honggangli@163.com>
|
||||
---
|
||||
src/lstack/core/lstack_init.c | 2 +-
|
||||
src/lstack/core/lstack_lwip.c | 1 -
|
||||
src/lstack/include/lstack_cfg.h | 2 +-
|
||||
src/ltran/ltran_dfx.c | 2 +-
|
||||
4 files changed, 3 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/src/lstack/core/lstack_init.c b/src/lstack/core/lstack_init.c
|
||||
index 406a0b8..db203d2 100644
|
||||
--- a/src/lstack/core/lstack_init.c
|
||||
+++ b/src/lstack/core/lstack_init.c
|
||||
@@ -256,7 +256,7 @@ __attribute__((constructor)) void gazelle_network_init(void)
|
||||
return;
|
||||
}
|
||||
|
||||
- /* check lstack num, and get process idx */
|
||||
+ /* check lstack num */
|
||||
if (check_params_from_primary() < 0) {
|
||||
LSTACK_PRE_LOG(LSTACK_ERR, "lstack num error, not same to primary process!\n");
|
||||
LSTACK_EXIT(1, "lstack num error, not same to primary process!\n");
|
||||
diff --git a/src/lstack/core/lstack_lwip.c b/src/lstack/core/lstack_lwip.c
|
||||
index c1346f6..bcdbac0 100644
|
||||
--- a/src/lstack/core/lstack_lwip.c
|
||||
+++ b/src/lstack/core/lstack_lwip.c
|
||||
@@ -1239,7 +1239,6 @@ static inline void clone_lwip_socket_opt(struct lwip_sock *dst_sock, struct lwip
|
||||
dst_sock->conn->pcb.tcp->netif_idx = src_sock->conn->pcb.tcp->netif_idx;
|
||||
dst_sock->conn->pcb.tcp->flags = src_sock->conn->pcb.tcp->flags;
|
||||
dst_sock->conn->pcb.tcp->keep_idle = src_sock->conn->pcb.tcp->keep_idle;
|
||||
- dst_sock->conn->pcb.tcp->keep_idle = src_sock->conn->pcb.tcp->keep_idle;
|
||||
dst_sock->conn->pcb.tcp->keep_intvl = src_sock->conn->pcb.tcp->keep_intvl;
|
||||
dst_sock->conn->pcb.tcp->keep_cnt = src_sock->conn->pcb.tcp->keep_cnt;
|
||||
}
|
||||
diff --git a/src/lstack/include/lstack_cfg.h b/src/lstack/include/lstack_cfg.h
|
||||
index 9102fee..52a1abd 100644
|
||||
--- a/src/lstack/include/lstack_cfg.h
|
||||
+++ b/src/lstack/include/lstack_cfg.h
|
||||
@@ -82,7 +82,7 @@ struct cfg_params {
|
||||
uint32_t read_connect_number;
|
||||
uint32_t rpc_number;
|
||||
uint32_t nic_read_number;
|
||||
- uint8_t use_ltran; // ture:lstack read from nic false:read form ltran
|
||||
+ uint8_t use_ltran; // false:lstack read from nic. true:lstack read form ltran process.
|
||||
|
||||
uint16_t num_process;
|
||||
uint16_t num_listen_port;
|
||||
diff --git a/src/ltran/ltran_dfx.c b/src/ltran/ltran_dfx.c
|
||||
index b8d9c99..e5fd0c8 100644
|
||||
--- a/src/ltran/ltran_dfx.c
|
||||
+++ b/src/ltran/ltran_dfx.c
|
||||
@@ -836,7 +836,7 @@ static void gazelle_print_lstack_stat_snmp_core(const struct gazelle_stack_dfx_d
|
||||
printf("ip_in_deliver: %u\n", snmp->ip_in_deliver);
|
||||
printf("ip_out_req: %u\n", snmp->ip_out_req);
|
||||
printf("ip_out_discard: %u\n", snmp->ip_out_discard);
|
||||
- printf("ip_outnort: %u\n", snmp->ip_out_discard);
|
||||
+ printf("ip_outnort: %u\n", snmp->ip_outnort);
|
||||
printf("ip_reasm_ok: %u\n", snmp->ip_reasm_ok);
|
||||
printf("ip_reasm_fail: %u\n", snmp->ip_reasm_fail);
|
||||
printf("ip_frag_ok: %u\n", snmp->ip_frag_ok);
|
||||
--
|
||||
2.27.0
|
||||
|
||||
120
0008-add-loongarch64-and-sw64-arch-support.patch
Normal file
120
0008-add-loongarch64-and-sw64-arch-support.patch
Normal file
@ -0,0 +1,120 @@
|
||||
From 7b2803bfe36e6ca19d4389d28c5d9f15dcbe95e8 Mon Sep 17 00:00:00 2001
|
||||
From: herengui <herengui@kylinsec.com.cn>
|
||||
Date: Wed, 30 Aug 2023 15:41:03 +0800
|
||||
Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=BE=99=E8=8A=AF=E5=92=8C?=
|
||||
=?UTF-8?q?=E7=94=B3=E5=A8=81=E6=9E=B6=E6=9E=84=E6=94=AF=E6=8C=81?=
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Signed-off-by: herengui <herengui@kylinsec.com.cn>
|
||||
---
|
||||
src/lstack/Makefile | 9 +++++++--
|
||||
src/ltran/CMakeLists.txt | 17 +++++++++++++----
|
||||
test/unitest/ltran/CMakeLists.txt | 5 ++++-
|
||||
3 files changed, 24 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/src/lstack/Makefile b/src/lstack/Makefile
|
||||
index 3550244..8f684ba 100644
|
||||
--- a/src/lstack/Makefile
|
||||
+++ b/src/lstack/Makefile
|
||||
@@ -26,6 +26,7 @@ CC ?= gcc
|
||||
OPTIMIZATION = -O2 -g
|
||||
RM = rm -f
|
||||
LDFLAGS = -shared -ldl -lm -lpthread -lrt -lnuma -lconfig -lboundscheck
|
||||
+ARCH := $(shell uname -m)
|
||||
|
||||
ifneq ($(CC),clang)
|
||||
SEC_FLAGS = -fstack-protector-strong -Werror -Wall -Wl,-z,relro, -Wl,-z,now -Wl,-z,noexecstack -Wtrampolines -fPIC -D_FORTIFY_SOURCE=2
|
||||
@@ -88,18 +89,22 @@ ifeq ($(DPDK_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
|
||||
+ ifneq ($(ARCH), loongarch64)
|
||||
+ LIBRTE_LIB += $(LIB_PATH)/librte_pmd_i40e.so
|
||||
+ endif
|
||||
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_telemetry.so \
|
||||
$(LIB_PATH)/librte_pcapng.so
|
||||
+ ifneq ($(ARCH), loongarch64)
|
||||
+ LIBRTE_LIB += $(LIB_PATH)/librte_net_i40e.so
|
||||
+ endif
|
||||
endif
|
||||
|
||||
DEP_LIBS = $(LWIP_LIB) $(LIBRTE_LIB)
|
||||
diff --git a/src/ltran/CMakeLists.txt b/src/ltran/CMakeLists.txt
|
||||
index b8d92b7..e098a77 100644
|
||||
--- a/src/ltran/CMakeLists.txt
|
||||
+++ b/src/ltran/CMakeLists.txt
|
||||
@@ -30,12 +30,18 @@ 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_bond -Wl,-lrte_pmd_i40e -Wl,-lrte_pmd_hinic -Wl,-lrte_pmd_ixgbe \
|
||||
+ set(DPDK_LINK_FLAGS "-Wl,-lrte_pmd_bond -Wl,-lrte_pmd_hinic -Wl,-lrte_pmd_ixgbe \
|
||||
-Wl,-lrte_pmd_pcap -Wl,-lrte_pmd_virtio")
|
||||
+ if(NOT CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "loongarch64")
|
||||
+ set(DPDK_LINK_FLAGS "${DPDK_LINK_FLAGS} -Wl,-lrte_pmd_i40e")
|
||||
+ endif()
|
||||
else()
|
||||
set(DPDK_DIR /usr/local/include/)
|
||||
- set(DPDK_LINK_FLAGS "-Wl,-lrte_net_bond -Wl,-lrte_net_i40e -Wl,-lrte_net_hinic -Wl,-lrte_net_ixgbe \
|
||||
+ set(DPDK_LINK_FLAGS "-Wl,-lrte_net_bond -Wl,-lrte_net_hinic -Wl,-lrte_net_ixgbe \
|
||||
-Wl,-lpcap -Wl,-lrte_net_pcap -Wl,-lrte_net_virtio -Wl,-lrte_pcapng -Wl,-lrte_telemetry")
|
||||
+ if(NOT CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "loongarch64")
|
||||
+ set(DPDK_LINK_FLAGS "${DPDK_LINK_FLAGS} -Wl,-lrte_net_i40e")
|
||||
+ endif()
|
||||
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
|
||||
@@ -44,12 +50,15 @@ add_executable(ltran main.c ltran_param.c ltran_config.c ltran_ethdev.c ltran_st
|
||||
${COMMON_DIR}/gazelle_parse_config.c)
|
||||
|
||||
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
|
||||
+target_compile_options(ltran PRIVATE -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
|
||||
-D_GNU_SOURCE -W -Wall -Wstrict-prototypes -Wmissing-declarations -Wmissing-prototypes -Wold-style-definition
|
||||
- -Wpointer-arith -Wcast-align -Wcast-qual -Wnested-externs -Wformat-nonliteral -Wformat-security -Wundef
|
||||
+ -Wpointer-arith -Wcast-qual -Wnested-externs -Wformat-nonliteral -Wformat-security -Wundef
|
||||
-Wdeprecated -Wwrite-strings -Wno-implicit-fallthrough -D_FORTIFY_SOURCE=2)
|
||||
+if(NOT CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "sw_64")
|
||||
+ target_compile_options(ltran PRIVATE -march=native -Wcast-align)
|
||||
+endif()
|
||||
|
||||
target_link_libraries(ltran PRIVATE config boundscheck rte_pdump -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack -Wtrampolines)
|
||||
set_target_properties(ltran PROPERTIES LINK_FLAGS "-L$ENV{DPDK_LIB_PATH} -Wl,--no-whole-archive \
|
||||
diff --git a/test/unitest/ltran/CMakeLists.txt b/test/unitest/ltran/CMakeLists.txt
|
||||
index 9496053..60bda83 100644
|
||||
--- a/test/unitest/ltran/CMakeLists.txt
|
||||
+++ b/test/unitest/ltran/CMakeLists.txt
|
||||
@@ -47,12 +47,15 @@ set_target_properties(ltran_test PROPERTIES LINK_FLAGS "-L$ENV{DPDK_LIB_PATH} -W
|
||||
-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_enetc -Wl,-lrte_net_enic -Wl,-lrte_net_failsafe -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_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,--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")
|
||||
+if(NOT CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "loongarch64")
|
||||
+ set_target_properties(ltran_test PROPERTIES LINK_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-lrte_net_i40e")
|
||||
+endif()
|
||||
target_include_directories(ltran_test PRIVATE ${LIB_PATH})
|
||||
target_link_libraries(ltran_test PRIVATE config boundscheck cunit pthread)
|
||||
--
|
||||
2.27.0
|
||||
|
||||
39
0009-CFG-fixed-the-dpdk-primary-default-parameter.patch
Normal file
39
0009-CFG-fixed-the-dpdk-primary-default-parameter.patch
Normal file
@ -0,0 +1,39 @@
|
||||
From d8d70edfd8d5fc7ac617671c5ac8fe8364727e29 Mon Sep 17 00:00:00 2001
|
||||
From: yinbin <yinbin8@huawei.com>
|
||||
Date: Thu, 7 Sep 2023 19:55:58 +0800
|
||||
Subject: [PATCH] CFG:fixed the dpdk primary default parameter
|
||||
|
||||
---
|
||||
src/lstack/core/lstack_cfg.c | 9 +++++----
|
||||
1 file changed, 5 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/src/lstack/core/lstack_cfg.c b/src/lstack/core/lstack_cfg.c
|
||||
index 32d63b9..9fc16dd 100644
|
||||
--- a/src/lstack/core/lstack_cfg.c
|
||||
+++ b/src/lstack/core/lstack_cfg.c
|
||||
@@ -770,6 +770,8 @@ static int32_t parse_dpdk_args(void)
|
||||
}
|
||||
start_index = 1;
|
||||
|
||||
+ struct cfg_params *global_params = get_global_cfg_params();
|
||||
+ global_params->is_primary = 1;
|
||||
for (i = 0; i < g_config_params.dpdk_argc; i++) {
|
||||
arg = config_setting_get_string_elem(args, i);
|
||||
if (arg == NULL)
|
||||
@@ -780,10 +782,9 @@ static int32_t parse_dpdk_args(void)
|
||||
}
|
||||
g_config_params.dpdk_argv[start_index + i] = p;
|
||||
|
||||
- const char *primary = "primary";
|
||||
- if (strcmp(p, primary) == 0) {
|
||||
- struct cfg_params *global_params = get_global_cfg_params();
|
||||
- global_params->is_primary = 1;
|
||||
+ const char *secondary = "secondary";
|
||||
+ if (strcmp(p, secondary) == 0) {
|
||||
+ global_params->is_primary = 0;
|
||||
}
|
||||
|
||||
(void)fprintf(stderr, "%s ", g_config_params.dpdk_argv[start_index + i]);
|
||||
--
|
||||
2.27.0
|
||||
|
||||
26
0010-suport-clang-build.patch
Normal file
26
0010-suport-clang-build.patch
Normal file
@ -0,0 +1,26 @@
|
||||
From 655bcc55ae2045b1a457f7b654569361ea32bfc2 Mon Sep 17 00:00:00 2001
|
||||
From: luofeng14 <luofeng13@huawei.com>
|
||||
Date: Tue, 12 Sep 2023 02:05:34 +0000
|
||||
Subject: [PATCH] suport clang build
|
||||
|
||||
Signed-off-by: luofeng14 <luofeng13@huawei.com>
|
||||
---
|
||||
src/lstack/Makefile | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/lstack/Makefile b/src/lstack/Makefile
|
||||
index 8f684ba..30965f8 100644
|
||||
--- a/src/lstack/Makefile
|
||||
+++ b/src/lstack/Makefile
|
||||
@@ -40,7 +40,7 @@ INC = -I$(LSTACK_DIR)/include \
|
||||
-I$(LWIP_INCLUDE_FILE) \
|
||||
-I$(DPDK_INCLUDE_FILE)
|
||||
|
||||
-CFLAGS = $(OPTIMIZATION) -fno-strict-aliasing $(INC)
|
||||
+CFLAGS += $(OPTIMIZATION) -fno-strict-aliasing $(INC) -Wno-error=unused-function
|
||||
|
||||
ifeq ($(GAZELLE_COVERAGE_ENABLE), 1)
|
||||
LDFLAGS += -fprofile-arcs -ftest-coverage
|
||||
--
|
||||
2.27.0
|
||||
|
||||
25
0011-ethdev-fix-pbuf-chain-tot_len-incorrect.patch
Normal file
25
0011-ethdev-fix-pbuf-chain-tot_len-incorrect.patch
Normal file
@ -0,0 +1,25 @@
|
||||
From d98cb71e63fed73197334b373cfb979b6a47e1ea Mon Sep 17 00:00:00 2001
|
||||
From: yinbin <yinbin8@huawei.com>
|
||||
Date: Fri, 15 Sep 2023 10:16:19 +0800
|
||||
Subject: [PATCH] ethdev: fix pbuf chain tot_len incorrect p->tot_len = p->len
|
||||
+ (p->next ? p->next->tot_len : 0)
|
||||
|
||||
---
|
||||
src/lstack/netif/lstack_ethdev.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/src/lstack/netif/lstack_ethdev.c b/src/lstack/netif/lstack_ethdev.c
|
||||
index 3ea8e52..e3e823b 100644
|
||||
--- a/src/lstack/netif/lstack_ethdev.c
|
||||
+++ b/src/lstack/netif/lstack_ethdev.c
|
||||
@@ -96,6 +96,7 @@ void eth_dev_recv(struct rte_mbuf *mbuf, struct protocol_stack *stack)
|
||||
break;
|
||||
}
|
||||
next->tot_len = pkt_len;
|
||||
+ pkt_len -= len;
|
||||
#if CHECKSUM_CHECK_IP_HW || CHECKSUM_CHECK_TCP_HW
|
||||
next->ol_flags = m->ol_flags;
|
||||
#endif
|
||||
--
|
||||
2.27.0
|
||||
|
||||
105
0012-kernelevent-kernel-event-thread-report-kernel-events.patch
Normal file
105
0012-kernelevent-kernel-event-thread-report-kernel-events.patch
Normal file
@ -0,0 +1,105 @@
|
||||
From 4267e381b25e42f19b2dd160fbf08efb5d8bd0fb Mon Sep 17 00:00:00 2001
|
||||
From: jiangheng <jiangheng14@huawei.com>
|
||||
Date: Mon, 4 Sep 2023 11:16:12 +0800
|
||||
Subject: [PATCH] kernelevent: kernel event thread report kernel events to app
|
||||
thread directly without passing through lstack thread
|
||||
|
||||
---
|
||||
src/lstack/core/lstack_protocol_stack.c | 53 +++++++++++++------------
|
||||
1 file changed, 27 insertions(+), 26 deletions(-)
|
||||
|
||||
diff --git a/src/lstack/core/lstack_protocol_stack.c b/src/lstack/core/lstack_protocol_stack.c
|
||||
index 3a6e792..ca0b046 100644
|
||||
--- a/src/lstack/core/lstack_protocol_stack.c
|
||||
+++ b/src/lstack/core/lstack_protocol_stack.c
|
||||
@@ -38,7 +38,7 @@
|
||||
#include "lstack_stack_stat.h"
|
||||
#include "lstack_protocol_stack.h"
|
||||
|
||||
-#define KERNEL_EVENT_100us 100
|
||||
+#define KERNEL_EVENT_10us 10
|
||||
|
||||
static PER_THREAD struct protocol_stack *g_stack_p = NULL;
|
||||
static struct protocol_stack_group g_stack_group = {0};
|
||||
@@ -258,6 +258,29 @@ static int32_t create_thread(void *arg, char *thread_name, stack_thread_func fun
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static void wakeup_kernel_event(struct protocol_stack *stack)
|
||||
+{
|
||||
+ if (stack->kernel_event_num <= 0) {
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ for (int32_t i = 0; i < stack->kernel_event_num; i++) {
|
||||
+ struct wakeup_poll *wakeup = stack->kernel_events[i].data.ptr;
|
||||
+ if (wakeup->type == WAKEUP_CLOSE) {
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ __atomic_store_n(&wakeup->have_kernel_event, true, __ATOMIC_RELEASE);
|
||||
+ if (__atomic_load_n(&wakeup->in_wait, __ATOMIC_ACQUIRE)) {
|
||||
+ __atomic_store_n(&wakeup->in_wait, false, __ATOMIC_RELEASE);
|
||||
+ rte_mb();
|
||||
+ pthread_mutex_unlock(&wakeup->wait);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return;
|
||||
+}
|
||||
+
|
||||
static void* gazelle_kernelevent_thread(void *arg)
|
||||
{
|
||||
struct thread_params *t_params = (struct thread_params*) arg;
|
||||
@@ -272,8 +295,9 @@ static void* gazelle_kernelevent_thread(void *arg)
|
||||
|
||||
for (;;) {
|
||||
stack->kernel_event_num = posix_api->epoll_wait_fn(stack->epollfd, stack->kernel_events, KERNEL_EPOLL_MAX, -1);
|
||||
- while (stack->kernel_event_num > 0) {
|
||||
- usleep(KERNEL_EVENT_100us);
|
||||
+ if (stack->kernel_event_num > 0) {
|
||||
+ wakeup_kernel_event(stack);
|
||||
+ usleep(KERNEL_EVENT_10us);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -416,28 +440,6 @@ END1:
|
||||
return NULL;
|
||||
}
|
||||
|
||||
-static void wakeup_kernel_event(struct protocol_stack *stack)
|
||||
-{
|
||||
- if (stack->kernel_event_num == 0) {
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- for (int32_t i = 0; i < stack->kernel_event_num; i++) {
|
||||
- struct wakeup_poll *wakeup = stack->kernel_events[i].data.ptr;
|
||||
- if (wakeup->type == WAKEUP_CLOSE) {
|
||||
- continue;
|
||||
- }
|
||||
-
|
||||
- __atomic_store_n(&wakeup->have_kernel_event, true, __ATOMIC_RELEASE);
|
||||
- if (list_is_null(&wakeup->wakeup_list[stack->stack_idx])) {
|
||||
- list_add_node(&stack->wakeup_list, &wakeup->wakeup_list[stack->stack_idx]);
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- stack->kernel_event_num = 0;
|
||||
-}
|
||||
-
|
||||
-
|
||||
static void* gazelle_stack_thread(void *arg)
|
||||
{
|
||||
struct thread_params *t_params = (struct thread_params*) arg;
|
||||
@@ -485,7 +487,6 @@ static void* gazelle_stack_thread(void *arg)
|
||||
read_recv_list(stack, read_connect_number);
|
||||
|
||||
if ((wakeup_tick & 0xf) == 0) {
|
||||
- wakeup_kernel_event(stack);
|
||||
wakeup_stack_epoll(stack);
|
||||
}
|
||||
|
||||
--
|
||||
2.27.0
|
||||
|
||||
18
gazelle.spec
18
gazelle.spec
@ -2,14 +2,14 @@
|
||||
|
||||
Name: gazelle
|
||||
Version: 1.0.2
|
||||
Release: 3
|
||||
Release: 4
|
||||
Summary: gazelle is a high performance user-mode stack
|
||||
License: MulanPSL-2.0
|
||||
URL: https://gitee.com/openeuler/gazelle
|
||||
Source0: %{name}-%{version}.tar.gz
|
||||
|
||||
BuildRequires: cmake gcc-c++
|
||||
BuildRequires: lwip >= 2.1.3-75
|
||||
BuildRequires: lwip >= 2.1.3-76
|
||||
BuildRequires: dpdk-devel >= 21.11-5
|
||||
BuildRequires: numactl-devel libpcap-devel libconfig-devel libboundscheck uthash-devel
|
||||
|
||||
@ -22,6 +22,12 @@ Patch9003: 0003-set-localhost-ip-when-bind-ip-is-same-as-ip-in-lstac.patch
|
||||
Patch9004: 0004-refactoring-preload-module.patch
|
||||
Patch9005: 0005-fix-previous-commit-refactoring-preload-module.patch
|
||||
Patch9006: 0006-add-lstack_preload.c-to-makefile.patch
|
||||
Patch9007: 0007-cosmetic-changes.patch
|
||||
Patch9008: 0008-add-loongarch64-and-sw64-arch-support.patch
|
||||
Patch9009: 0009-CFG-fixed-the-dpdk-primary-default-parameter.patch
|
||||
Patch9010: 0010-suport-clang-build.patch
|
||||
Patch9011: 0011-ethdev-fix-pbuf-chain-tot_len-incorrect.patch
|
||||
Patch9012: 0012-kernelevent-kernel-event-thread-report-kernel-events.patch
|
||||
|
||||
%description
|
||||
%{name} is a high performance user-mode stack.
|
||||
@ -63,6 +69,14 @@ install -Dpm 0640 %{_builddir}/%{name}-%{version}/src/ltran/ltran.conf %{b
|
||||
%config(noreplace) %{conf_path}/ltran.conf
|
||||
|
||||
%changelog
|
||||
* Sat Oct 7 2023 yinbin6 <yinbin8@huawei.com> - 1.0.2-4
|
||||
- kernelevent: kernel event thread report kernel events to app thread directly without passing through lstack thread
|
||||
- ethdev: fix pbuf chain tot_len incorrect p->tot_len = p->len + (p->next ? p->next->tot_len : 0)
|
||||
- suport clang build
|
||||
- CFG:fixed the dpdk primary default parameter
|
||||
- 添加龙芯和申威架构支持
|
||||
- cosmetic changes
|
||||
|
||||
* Sat Aug 19 2023 jiangheng12 <jiangheng14@huawei.com> - 1.0.2-3
|
||||
- add lstack_preload.c to makefile fix compile failure
|
||||
- fix previous commit "refactoring preload module"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user