summaryrefslogtreecommitdiff
path: root/entry/src/kni_entry.cpp
diff options
context:
space:
mode:
authorluwenpeng <[email protected]>2022-06-23 10:15:57 +0800
committerluwenpeng <[email protected]>2022-06-23 11:10:03 +0800
commit3cc6d58dc55026e8877020acb758cd61a3c1d6ff (patch)
tree7228a422559e4e57e471fcf2c6206ad83c5dc62a /entry/src/kni_entry.cpp
parent990d8ae173f62c43b9f70a9a37a9804da13317ab (diff)
TSG-10961 在KNI插件中配置TAP网卡的RPSv5.0.1
Diffstat (limited to 'entry/src/kni_entry.cpp')
-rw-r--r--entry/src/kni_entry.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/entry/src/kni_entry.cpp b/entry/src/kni_entry.cpp
index db81b59..8e44711 100644
--- a/entry/src/kni_entry.cpp
+++ b/entry/src/kni_entry.cpp
@@ -2702,6 +2702,16 @@ extern "C" int kni_init(){
MESA_load_profile_int_nodef(profile, "io_uring", "flags", (int *)&g_kni_handle->iouring_conf.flags);
MESA_load_profile_int_nodef(profile, "io_uring", "sq_thread_idle", (int *)&g_kni_handle->iouring_conf.sq_thread_idle);
+ MESA_load_profile_int_nodef(profile, "tap", "tap_rps_enable", &g_kni_handle->tap_rps_enable);
+ if (g_kni_handle->tap_rps_enable)
+ {
+ if (MESA_load_profile_string_nodef(profile, "tap", "tap_rps_mask", g_kni_handle->tap_rps_mask, sizeof(g_kni_handle->tap_rps_mask)) < 0)
+ {
+ KNI_LOG_ERROR(local_logger, TAP_RSS_LOG_TAG "under tap mode, when enable tap_rps_enable, tap_rps_mask is required.");
+ goto error_out;
+ }
+ }
+
int tap_allow_mutilthread = 0;
MESA_load_profile_int_nodef(profile, "tap", "tap_allow_mutilthread", &tap_allow_mutilthread);
if (tap_allow_mutilthread)
@@ -2799,6 +2809,19 @@ extern "C" int kni_init(){
}
}
}
+
+ if (g_kni_handle->tap_rps_enable)
+ {
+ char rps_cmd[2048];
+ for (int i = 0; i < g_kni_handle->thread_count; i++)
+ {
+ memset(rps_cmd, 0, sizeof(rps_cmd));
+ snprintf(rps_cmd, sizeof(rps_cmd), "echo %s > /sys/class/net/%s/queues/rx-%d/rps_cpus", g_kni_handle->tap_rps_mask, tap_name, i);
+ system(rps_cmd);
+ KNI_LOG_DEBUG(local_logger, TAP_RSS_LOG_TAG "'%s'", rps_cmd);
+ }
+ }
+
//init ssl dynamic bypass htable
ret = ssl_dynamic_bypass_htable_init(profile, local_logger);
if(ret < 0){