@@ -187,6 +187,9 @@ static void cmd_help_long_parsed(void *parsed_result,
"show port (info|stats|xstats|fdir|stat_qmap|dcb_tc) (port_id|all)\n"
" Display information for port_id, or all.\n\n"
+ "show port perf all\n"
+ " Display performance information for all.\n\n"
+
"show port X rss reta (size) (mask0,mask1,...)\n"
" Display the rss redirection table entry indicated"
" by masks on port X. size is used to indicate the"
@@ -5401,6 +5404,9 @@ static void cmd_showportall_parsed(void *parsed_result,
else if (!strcmp(res->what, "dcb_tc"))
FOREACH_PORT(i, ports)
port_dcb_info_display(i);
+ else if (!strcmp(res->what, "perf"))
+ if (cur_fwd_eng == &port_fwd_engine)
+ print_perf_stats();
}
cmdline_parse_token_string_t cmd_showportall_show =
@@ -5410,13 +5416,14 @@ cmdline_parse_token_string_t cmd_showportall_port =
TOKEN_STRING_INITIALIZER(struct cmd_showportall_result, port, "port");
cmdline_parse_token_string_t cmd_showportall_what =
TOKEN_STRING_INITIALIZER(struct cmd_showportall_result, what,
- "info#stats#xstats#fdir#stat_qmap#dcb_tc");
+ "info#stats#xstats#fdir#stat_qmap#dcb_tc#perf");
cmdline_parse_token_string_t cmd_showportall_all =
TOKEN_STRING_INITIALIZER(struct cmd_showportall_result, all, "all");
cmdline_parse_inst_t cmd_showportall = {
.f = cmd_showportall_parsed,
.data = NULL,
- .help_str = "show|clear port info|stats|xstats|fdir|stat_qmap|dcb_tc all",
+ .help_str = "show|clear port info|stats|xstats|fdir|stat_qmap|"
+ "dcb_tc|perf all",
.tokens = {
(void *)&cmd_showportall_show,
(void *)&cmd_showportall_port,
@@ -9725,6 +9732,268 @@ cmdline_parse_inst_t cmd_mcast_addr = {
},
};
+/* *** SHOW ROUTE *** */
+struct cmd_show_route_result {
+ cmdline_fixed_string_t show;
+ cmdline_fixed_string_t route;
+};
+
+static void cmd_show_route_parsed(
+ __attribute__((unused)) void *parsed_result,
+ __attribute__((unused)) struct cmdline *cl,
+ __attribute__((unused)) void *data)
+{
+ fwd_config_display();
+ print_port_info();
+ show_route();
+}
+
+cmdline_parse_token_string_t cmd_show_route_show =
+ TOKEN_STRING_INITIALIZER(struct cmd_show_route_result,
+ show, "show");
+cmdline_parse_token_string_t cmd_show_route_route =
+ TOKEN_STRING_INITIALIZER(struct cmd_show_route_result,
+ route, "route");
+
+cmdline_parse_inst_t cmd_show_route = {
+ .f = cmd_show_route_parsed,
+ .data = NULL,
+ .help_str = "show route table: show route",
+ .tokens = {
+ (void *)&cmd_show_route_show,
+ (void *)&cmd_show_route_route,
+ NULL,
+ },
+};
+
+/* *** SET DRAIN INTERVAL NS *** */
+struct cmd_set_drain_ns_result {
+ cmdline_fixed_string_t set;
+ cmdline_fixed_string_t drain;
+ uint32_t drain_ns;
+};
+
+static void cmd_set_drain_ns_parsed(void *parsed_result,
+ __attribute__((unused)) struct cmdline *cl,
+ __attribute__((unused)) void *data)
+{
+ struct cmd_set_drain_ns_result *res = parsed_result;
+
+ set_drain_interval_ns(res->drain_ns);
+}
+
+cmdline_parse_token_string_t cmd_set_drain_ns_set =
+ TOKEN_STRING_INITIALIZER(struct cmd_set_drain_ns_result,
+ set, "set");
+cmdline_parse_token_string_t cmd_set_drain_ns_drain =
+ TOKEN_STRING_INITIALIZER(struct cmd_set_drain_ns_result,
+ drain, "drain");
+cmdline_parse_token_num_t cmd_set_drain_ns_drain_ns =
+ TOKEN_NUM_INITIALIZER(struct cmd_set_drain_ns_result,
+ drain_ns, UINT32);
+
+cmdline_parse_inst_t cmd_set_drain_ns = {
+ .f = cmd_set_drain_ns_parsed,
+ .data = NULL,
+ .help_str = "set portfwd drain interval (ns): set drain <ns>",
+ .tokens = {
+ (void *)&cmd_set_drain_ns_set,
+ (void *)&cmd_set_drain_ns_drain,
+ (void *)&cmd_set_drain_ns_drain_ns,
+ NULL,
+ },
+};
+
+/* *** SET IP ROUTE *** */
+struct cmd_set_ip_route_result {
+ cmdline_fixed_string_t set;
+ cmdline_fixed_string_t route;
+ uint32_t srcp;
+ cmdline_fixed_string_t dstp;
+};
+
+static void cmd_set_route_ip_parsed(void *parsed_result,
+ __attribute__((unused)) struct cmdline *cl,
+ __attribute__((unused)) void *data)
+{
+ struct cmd_set_ip_route_result *res = parsed_result;
+
+ set_ip_route(res->srcp);
+}
+
+cmdline_parse_token_string_t cmd_set_ip_route_set =
+ TOKEN_STRING_INITIALIZER(struct cmd_set_ip_route_result,
+ set, "set");
+cmdline_parse_token_string_t cmd_set_ip_route_route =
+ TOKEN_STRING_INITIALIZER(struct cmd_set_ip_route_result,
+ route, "route");
+cmdline_parse_token_num_t cmd_set_ip_route_srcp =
+ TOKEN_NUM_INITIALIZER(struct cmd_set_ip_route_result,
+ srcp, UINT32);
+cmdline_parse_token_string_t cmd_set_ip_route_dstp =
+ TOKEN_STRING_INITIALIZER(struct cmd_set_ip_route_result,
+ dstp, "ip");
+
+cmdline_parse_inst_t cmd_set_ip_route = {
+ .f = cmd_set_route_ip_parsed,
+ .data = NULL,
+ .help_str = "set ip route on <srcport>: set route <srcport> ip",
+ .tokens = {
+ (void *)&cmd_set_ip_route_set,
+ (void *)&cmd_set_ip_route_route,
+ (void *)&cmd_set_ip_route_srcp,
+ (void *)&cmd_set_ip_route_dstp,
+ NULL,
+ },
+};
+
+/* *** SET FIXED ROUTE *** */
+struct cmd_set_fixed_route_result {
+ cmdline_fixed_string_t set;
+ cmdline_fixed_string_t route;
+ uint32_t srcp;
+ uint32_t dstp;
+};
+
+static void cmd_set_route_fixed_parsed(void *parsed_result,
+ __attribute__((unused)) struct cmdline *cl,
+ __attribute__((unused)) void *data)
+{
+ struct cmd_set_fixed_route_result *res = parsed_result;
+
+ set_fixed_route(res->srcp, res->dstp);
+}
+
+cmdline_parse_token_string_t cmd_set_fixed_route_set =
+ TOKEN_STRING_INITIALIZER(struct cmd_set_fixed_route_result,
+ set, "set");
+cmdline_parse_token_string_t cmd_set_fixed_route_route =
+ TOKEN_STRING_INITIALIZER(struct cmd_set_fixed_route_result,
+ route, "route");
+cmdline_parse_token_num_t cmd_set_fixed_route_srcp =
+ TOKEN_NUM_INITIALIZER(struct cmd_set_fixed_route_result,
+ srcp, UINT32);
+cmdline_parse_token_num_t cmd_set_fixed_route_dstp =
+ TOKEN_NUM_INITIALIZER(struct cmd_set_fixed_route_result,
+ dstp, UINT32);
+
+cmdline_parse_inst_t cmd_set_fixed_route = {
+ .f = cmd_set_route_fixed_parsed,
+ .data = NULL,
+ .help_str = "set fixed route from <srcport> to <dstport>: "
+ "set route <srcport> <dstport>",
+ .tokens = {
+ (void *)&cmd_set_fixed_route_set,
+ (void *)&cmd_set_fixed_route_route,
+ (void *)&cmd_set_fixed_route_srcp,
+ (void *)&cmd_set_fixed_route_dstp,
+ NULL,
+ },
+};
+
+/* *** SET AFFINITY *** */
+struct cmd_set_affinity_result {
+ cmdline_fixed_string_t set;
+ cmdline_fixed_string_t affinity;
+ uint32_t fsid;
+ uint32_t lcid;
+};
+
+static void cmd_set_affinity_parsed(void *parsed_result,
+ __attribute__((unused)) struct cmdline *cl,
+ __attribute__((unused)) void *data)
+{
+ struct cmd_set_affinity_result *res = parsed_result;
+
+ set_fwd_stream_affinity(res->fsid, res->lcid);
+}
+
+cmdline_parse_token_string_t cmd_set_affinity_set =
+ TOKEN_STRING_INITIALIZER(struct cmd_set_affinity_result,
+ set, "set");
+cmdline_parse_token_string_t cmd_set_affinity_affinity =
+ TOKEN_STRING_INITIALIZER(struct cmd_set_affinity_result,
+ affinity, "affinity");
+cmdline_parse_token_num_t cmd_set_affinity_fsid =
+ TOKEN_NUM_INITIALIZER(struct cmd_set_affinity_result,
+ fsid, UINT32);
+cmdline_parse_token_num_t cmd_set_affinity_lcid =
+ TOKEN_NUM_INITIALIZER(struct cmd_set_affinity_result,
+ lcid, UINT32);
+
+cmdline_parse_inst_t cmd_set_affinity = {
+ .f = cmd_set_affinity_parsed,
+ .data = NULL,
+ .help_str = "set lcore affinity for fwd stream <fsid> to <lcid>: "
+ "set affinity <fsid> <lcid>",
+ .tokens = {
+ (void *)&cmd_set_affinity_set,
+ (void *)&cmd_set_affinity_affinity,
+ (void *)&cmd_set_affinity_fsid,
+ (void *)&cmd_set_affinity_lcid,
+ NULL,
+ },
+};
+
+/* *** SET IP *** */
+struct cmd_set_ip_result {
+ cmdline_fixed_string_t set;
+ cmdline_fixed_string_t ip;
+ uint32_t srcp;
+ uint32_t num0;
+ uint32_t num1;
+ uint32_t num2;
+ uint32_t num3;
+};
+
+static void cmd_set_ip_parsed(void *parsed_result,
+ __attribute__((unused)) struct cmdline *cl,
+ __attribute__((unused)) void *data)
+{
+ struct cmd_set_ip_result *res = parsed_result;
+
+ set_ip(res->srcp, res->num0, res->num1, res->num2, res->num3);
+}
+
+cmdline_parse_token_string_t cmd_set_ip_set =
+ TOKEN_STRING_INITIALIZER(struct cmd_set_ip_result,
+ set, "set");
+cmdline_parse_token_string_t cmd_set_ip_ip =
+ TOKEN_STRING_INITIALIZER(struct cmd_set_ip_result,
+ ip, "ip");
+cmdline_parse_token_num_t cmd_set_ip_srcp =
+ TOKEN_NUM_INITIALIZER(struct cmd_set_ip_result,
+ srcp, UINT32);
+cmdline_parse_token_num_t cmd_set_ip_num0 =
+ TOKEN_NUM_INITIALIZER(struct cmd_set_ip_result,
+ num0, UINT32);
+cmdline_parse_token_num_t cmd_set_ip_num1 =
+ TOKEN_NUM_INITIALIZER(struct cmd_set_ip_result,
+ num1, UINT32);
+cmdline_parse_token_num_t cmd_set_ip_num2 =
+ TOKEN_NUM_INITIALIZER(struct cmd_set_ip_result,
+ num2, UINT32);
+cmdline_parse_token_num_t cmd_set_ip_num3 =
+ TOKEN_NUM_INITIALIZER(struct cmd_set_ip_result,
+ num3, UINT32);
+
+cmdline_parse_inst_t cmd_set_ip = {
+ .f = cmd_set_ip_parsed,
+ .data = NULL,
+ .help_str = "set ip for <srcport>: set ip <srcport> "
+ "<num0> <num1> <num2> <num3>",
+ .tokens = {
+ (void *)&cmd_set_ip_set,
+ (void *)&cmd_set_ip_ip,
+ (void *)&cmd_set_ip_srcp,
+ (void *)&cmd_set_ip_num0,
+ (void *)&cmd_set_ip_num1,
+ (void *)&cmd_set_ip_num2,
+ (void *)&cmd_set_ip_num3,
+ NULL,
+ },
+};
+
/* l2 tunnel config
* only support E-tag now.
*/
@@ -10537,6 +10806,12 @@ cmdline_parse_ctx_t main_ctx[] = {
(cmdline_parse_inst_t *)&cmd_config_e_tag_forwarding_en_dis,
(cmdline_parse_inst_t *)&cmd_config_e_tag_filter_add,
(cmdline_parse_inst_t *)&cmd_config_e_tag_filter_del,
+ (cmdline_parse_inst_t *)&cmd_show_route,
+ (cmdline_parse_inst_t *)&cmd_set_drain_ns,
+ (cmdline_parse_inst_t *)&cmd_set_ip_route,
+ (cmdline_parse_inst_t *)&cmd_set_fixed_route,
+ (cmdline_parse_inst_t *)&cmd_set_ip,
+ (cmdline_parse_inst_t *)&cmd_set_affinity,
NULL,
};