代码拉取完成,页面将自动刷新
同步操作将从 src-openEuler/gazelle 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
From 71defaec9e10ee23bf9b3e01989dac4feab94d82 Mon Sep 17 00:00:00 2001
From: jiangheng <jiangheng14@huawei.com>
Date: Mon, 9 Oct 2023 10:28:30 +0800
Subject: [PATCH] statck: the for loop in lstack thread is defined as
stack_polling
---
src/lstack/core/lstack_protocol_stack.c | 85 ++++++++++++----------
src/lstack/include/lstack_protocol_stack.h | 1 +
2 files changed, 49 insertions(+), 37 deletions(-)
diff --git a/src/lstack/core/lstack_protocol_stack.c b/src/lstack/core/lstack_protocol_stack.c
index 09cba14..ea85bc1 100644
--- a/src/lstack/core/lstack_protocol_stack.c
+++ b/src/lstack/core/lstack_protocol_stack.c
@@ -432,18 +432,60 @@ END:
return NULL;
}
-static void* gazelle_stack_thread(void *arg)
+void stack_polling(uint32_t wakeup_tick)
{
- struct thread_params *t_params = (struct thread_params*) arg;
-
- uint16_t queue_id = t_params->queue_id;
struct cfg_params *cfg = get_global_cfg_params();
uint8_t use_ltran_flag = cfg->use_ltran;
bool kni_switch = cfg->kni_switch;
bool use_sockmap = cfg->use_sockmap;
- uint32_t read_connect_number = cfg->read_connect_number;
+ bool stack_mode_rtc = cfg->stack_mode_rtc;
uint32_t rpc_number = cfg->rpc_number;
uint32_t nic_read_number = cfg->nic_read_number;
+ uint32_t read_connect_number = cfg->read_connect_number;
+ struct protocol_stack *stack = get_protocol_stack();
+
+ poll_rpc_msg(stack, rpc_number);
+ gazelle_eth_dev_poll(stack, use_ltran_flag, nic_read_number);
+ sys_timer_run();
+ if (cfg->low_power_mod != 0) {
+ low_power_idling(stack);
+ }
+
+ if (stack_mode_rtc) {
+ return;
+ }
+
+ do_lwip_read_recvlist(stack, read_connect_number);
+ if ((wakeup_tick & 0xf) == 0) {
+ wakeup_stack_epoll(stack);
+ }
+
+ /* run to completion mode currently does not support sockmap */
+ if (use_sockmap) {
+ netif_poll(&stack->netif);
+ /* reduce traversal times */
+ if ((wakeup_tick & 0xff) == 0) {
+ read_same_node_recv_list(stack);
+ }
+ }
+
+ /* run to completion mode currently does not support kni */
+ /* KNI requests are generally low-rate I/Os,
+ * so processing KNI requests only in the thread with queue_id No.0 is sufficient. */
+ if (kni_switch && !stack->queue_id && !(wakeup_tick & 0xfff)) {
+ rte_kni_handle_request(get_gazelle_kni());
+ if (get_kni_started()) {
+ kni_handle_rx(get_port_id());
+ }
+ }
+ return;
+}
+
+static void* gazelle_stack_thread(void *arg)
+{
+ struct thread_params *t_params = (struct thread_params*) arg;
+
+ uint16_t queue_id = t_params->queue_id;
uint32_t wakeup_tick = 0;
struct protocol_stack *stack = stack_thread_init(arg);
@@ -461,39 +503,8 @@ static void* gazelle_stack_thread(void *arg)
LSTACK_LOG(INFO, LSTACK, "stack_%02hu init success\n", queue_id);
for (;;) {
- poll_rpc_msg(stack, rpc_number);
-
- gazelle_eth_dev_poll(stack, use_ltran_flag, nic_read_number);
-
- if (use_sockmap) {
- netif_poll(&stack->netif);
- /* reduce traversal times */
- if ((wakeup_tick & 0xff) == 0) {
- read_same_node_recv_list(stack);
- }
- }
- do_lwip_read_recvlist(stack, read_connect_number);
-
- if ((wakeup_tick & 0xf) == 0) {
- wakeup_stack_epoll(stack);
- }
-
- /* KNI requests are generally low-rate I/Os,
- * so processing KNI requests only in the thread with queue_id No.0 is sufficient. */
- if (kni_switch && !queue_id && !(wakeup_tick & 0xfff)) {
- rte_kni_handle_request(get_gazelle_kni());
- if (get_kni_started()) {
- kni_handle_rx(get_port_id());
- }
- }
-
+ stack_polling(wakeup_tick);
wakeup_tick++;
-
- sys_timer_run();
-
- if (cfg->low_power_mod != 0) {
- low_power_idling(stack);
- }
}
return NULL;
diff --git a/src/lstack/include/lstack_protocol_stack.h b/src/lstack/include/lstack_protocol_stack.h
index a4f6ac2..7cb37bf 100644
--- a/src/lstack/include/lstack_protocol_stack.h
+++ b/src/lstack/include/lstack_protocol_stack.h
@@ -167,5 +167,6 @@ void stack_replenish_sendring(struct rpc_msg *msg);
void stack_get_conntable(struct rpc_msg *msg);
void stack_get_connnum(struct rpc_msg *msg);
void stack_recvlist_count(struct rpc_msg *msg);
+void stack_polling(uint32_t wakeup_tick);
void kni_handle_tx(struct rte_mbuf *mbuf);
#endif
--
2.27.0
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。