gazelle/0066-release-kni-device.patch
xiusailong af183e9773 backport upstream patches from repository
(cherry picked from commit acaa789aa85d602fc946045431a51d0422696c4e)
2022-07-22 14:30:50 +08:00

126 lines
3.5 KiB
Diff
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

From 7fac90c4e7bb0faf7c5341452a7b2a02470748d3 Mon Sep 17 00:00:00 2001
From: jiangheng <jiangheng14@huawei.com>
Date: Thu, 14 Jul 2022 22:25:44 +0800
Subject: [PATCH 13/19] release-kni-device
---
src/common/dpdk_common.c | 11 ++++++++++-
src/common/dpdk_common.h | 1 +
src/lstack/api/lstack_signal.c | 7 ++++++-
src/lstack/core/lstack_init.c | 2 ++
src/ltran/main.c | 5 +++--
5 files changed, 22 insertions(+), 4 deletions(-)
diff --git a/src/common/dpdk_common.c b/src/common/dpdk_common.c
index 939d135..8d056f9 100644
--- a/src/common/dpdk_common.c
+++ b/src/common/dpdk_common.c
@@ -184,6 +184,15 @@ int32_t dpdk_kni_init(uint16_t port, struct rte_mempool *pool)
return 0;
}
+void dpdk_kni_release(void)
+{
+ if (g_pkni) {
+ rte_kni_release(g_pkni);
+ }
+
+ g_pkni = NULL;
+}
+
int32_t kni_process_tx(struct rte_mbuf **pkts_burst, uint32_t count)
{
uint32_t i = rte_kni_tx_burst(g_pkni, pkts_burst, count);
@@ -211,4 +220,4 @@ void kni_process_rx(uint16_t port)
pkts_burst[i] = NULL;
}
}
-}
\ No newline at end of file
+}
diff --git a/src/common/dpdk_common.h b/src/common/dpdk_common.h
index 6a6a030..2066159 100644
--- a/src/common/dpdk_common.h
+++ b/src/common/dpdk_common.h
@@ -66,6 +66,7 @@ struct rte_kni* get_gazelle_kni(void);
int32_t dpdk_kni_init(uint16_t port, struct rte_mempool *pool);
int32_t kni_process_tx(struct rte_mbuf **pkts_burst, uint32_t count);
void kni_process_rx(uint16_t port);
+void dpdk_kni_release(void);
struct rte_eth_conf;
struct rte_eth_dev_info;
diff --git a/src/lstack/api/lstack_signal.c b/src/lstack/api/lstack_signal.c
index 4dba472..e73bc61 100644
--- a/src/lstack/api/lstack_signal.c
+++ b/src/lstack/api/lstack_signal.c
@@ -18,6 +18,8 @@
#include <lwip/lwipsock.h>
#include <lwip/posix_api.h>
+#include "lstack_cfg.h"
+#include "dpdk_common.h"
#include "lstack_log.h"
#include "lstack_control_plane.h"
@@ -55,9 +57,12 @@ static inline bool match_hijack_signal(int sig)
static void lstack_sig_default_handler(int sig)
{
LSTACK_LOG(ERR, LSTACK, "lstack dumpedcaught signal%d\n", sig);
- control_fd_close();
dump_stack();
lwip_exit();
+ if (!use_ltran()) {
+ dpdk_kni_release();
+ }
+ control_fd_close();
(void)kill(getpid(), sig);
}
diff --git a/src/lstack/core/lstack_init.c b/src/lstack/core/lstack_init.c
index 78040b0..a506b34 100644
--- a/src/lstack/core/lstack_init.c
+++ b/src/lstack/core/lstack_init.c
@@ -152,6 +152,8 @@ __attribute__((destructor)) void gazelle_network_exit(void)
if (ret < 0) {
LSTACK_LOG(ERR, LSTACK, "rte_pdump_uninit failed\n");
}
+
+ dpdk_kni_release();
}
}
diff --git a/src/ltran/main.c b/src/ltran/main.c
index 701df3c..328ca89 100644
--- a/src/ltran/main.c
+++ b/src/ltran/main.c
@@ -18,6 +18,7 @@
#include <sys/types.h>
#include <rte_malloc.h>
+#include "dpdk_common.h"
#include "ltran_config.h"
#include "ltran_log.h"
#include "ltran_stat.h"
@@ -55,6 +56,7 @@ static void sig_default_handler(int32_t sig)
{
LTRAN_ERR("ltran dumpedcaught signal%d.\n", sig);
print_stack();
+ dpdk_kni_release();
kill(getpid(), sig);
}
@@ -125,8 +127,7 @@ static void ltran_core_destroy(void)
gazelle_stack_htable_destroy();
gazelle_tcp_conn_htable_destroy();
gazelle_tcp_sock_htable_destroy();
-
- return;
+ dpdk_kni_release();
}
static void wait_thread_finish(pthread_t ctrl_thread, uint32_t next_core)
--
2.23.0