app/testpmd: add command to resume a TM node
Traffic manager provides an API for resuming an arbitrary node in a hierarchy. This commit adds support for calling this API from testpmd. Signed-off-by: Tomasz Duszynski <tdu@semihalf.com> Reviewed-by: Jasvinder Singh <jasvinder.singh@intel.com>
This commit is contained in:
parent
079dcbb8e6
commit
12f76f5247
@ -774,6 +774,9 @@ static void cmd_help_long_parsed(void *parsed_result,
|
|||||||
"suspend port tm node (port_id) (node_id)"
|
"suspend port tm node (port_id) (node_id)"
|
||||||
" Suspend tm node.\n\n"
|
" Suspend tm node.\n\n"
|
||||||
|
|
||||||
|
"resume port tm node (port_id) (node_id)"
|
||||||
|
" Resume tm node.\n\n"
|
||||||
|
|
||||||
"port tm hierarchy commit (port_id) (clean_on_fail)\n"
|
"port tm hierarchy commit (port_id) (clean_on_fail)\n"
|
||||||
" Commit tm hierarchy.\n\n"
|
" Commit tm hierarchy.\n\n"
|
||||||
|
|
||||||
@ -16697,6 +16700,7 @@ cmdline_parse_ctx_t main_ctx[] = {
|
|||||||
(cmdline_parse_inst_t *)&cmd_del_port_tm_node,
|
(cmdline_parse_inst_t *)&cmd_del_port_tm_node,
|
||||||
(cmdline_parse_inst_t *)&cmd_set_port_tm_node_parent,
|
(cmdline_parse_inst_t *)&cmd_set_port_tm_node_parent,
|
||||||
(cmdline_parse_inst_t *)&cmd_suspend_port_tm_node,
|
(cmdline_parse_inst_t *)&cmd_suspend_port_tm_node,
|
||||||
|
(cmdline_parse_inst_t *)&cmd_resume_port_tm_node,
|
||||||
(cmdline_parse_inst_t *)&cmd_port_tm_hierarchy_commit,
|
(cmdline_parse_inst_t *)&cmd_port_tm_hierarchy_commit,
|
||||||
(cmdline_parse_inst_t *)&cmd_cfg_tunnel_udp_port,
|
(cmdline_parse_inst_t *)&cmd_cfg_tunnel_udp_port,
|
||||||
NULL,
|
NULL,
|
||||||
|
@ -2030,6 +2030,70 @@ cmdline_parse_inst_t cmd_suspend_port_tm_node = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* *** Resume Port TM Node *** */
|
||||||
|
struct cmd_resume_port_tm_node_result {
|
||||||
|
cmdline_fixed_string_t resume;
|
||||||
|
cmdline_fixed_string_t port;
|
||||||
|
cmdline_fixed_string_t tm;
|
||||||
|
cmdline_fixed_string_t node;
|
||||||
|
uint16_t port_id;
|
||||||
|
uint32_t node_id;
|
||||||
|
};
|
||||||
|
|
||||||
|
cmdline_parse_token_string_t cmd_resume_port_tm_node_resume =
|
||||||
|
TOKEN_STRING_INITIALIZER(
|
||||||
|
struct cmd_resume_port_tm_node_result, resume, "resume");
|
||||||
|
cmdline_parse_token_string_t cmd_resume_port_tm_node_port =
|
||||||
|
TOKEN_STRING_INITIALIZER(
|
||||||
|
struct cmd_resume_port_tm_node_result, port, "port");
|
||||||
|
cmdline_parse_token_string_t cmd_resume_port_tm_node_tm =
|
||||||
|
TOKEN_STRING_INITIALIZER(
|
||||||
|
struct cmd_resume_port_tm_node_result, tm, "tm");
|
||||||
|
cmdline_parse_token_string_t cmd_resume_port_tm_node_node =
|
||||||
|
TOKEN_STRING_INITIALIZER(
|
||||||
|
struct cmd_resume_port_tm_node_result, node, "node");
|
||||||
|
cmdline_parse_token_num_t cmd_resume_port_tm_node_port_id =
|
||||||
|
TOKEN_NUM_INITIALIZER(
|
||||||
|
struct cmd_resume_port_tm_node_result, port_id, UINT16);
|
||||||
|
cmdline_parse_token_num_t cmd_resume_port_tm_node_node_id =
|
||||||
|
TOKEN_NUM_INITIALIZER(
|
||||||
|
struct cmd_resume_port_tm_node_result, node_id, UINT32);
|
||||||
|
|
||||||
|
static void cmd_resume_port_tm_node_parsed(void *parsed_result,
|
||||||
|
__attribute__((unused)) struct cmdline *cl,
|
||||||
|
__attribute__((unused)) void *data)
|
||||||
|
{
|
||||||
|
struct cmd_resume_port_tm_node_result *res = parsed_result;
|
||||||
|
struct rte_tm_error error;
|
||||||
|
uint32_t node_id = res->node_id;
|
||||||
|
portid_t port_id = res->port_id;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
if (port_id_is_invalid(port_id, ENABLED_WARN))
|
||||||
|
return;
|
||||||
|
|
||||||
|
ret = rte_tm_node_resume(port_id, node_id, &error);
|
||||||
|
if (ret != 0) {
|
||||||
|
print_err_msg(&error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cmdline_parse_inst_t cmd_resume_port_tm_node = {
|
||||||
|
.f = cmd_resume_port_tm_node_parsed,
|
||||||
|
.data = NULL,
|
||||||
|
.help_str = "Resume port tm node",
|
||||||
|
.tokens = {
|
||||||
|
(void *)&cmd_resume_port_tm_node_resume,
|
||||||
|
(void *)&cmd_resume_port_tm_node_port,
|
||||||
|
(void *)&cmd_resume_port_tm_node_tm,
|
||||||
|
(void *)&cmd_resume_port_tm_node_node,
|
||||||
|
(void *)&cmd_resume_port_tm_node_port_id,
|
||||||
|
(void *)&cmd_resume_port_tm_node_node_id,
|
||||||
|
NULL,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
/* *** Port TM Hierarchy Commit *** */
|
/* *** Port TM Hierarchy Commit *** */
|
||||||
struct cmd_port_tm_hierarchy_commit_result {
|
struct cmd_port_tm_hierarchy_commit_result {
|
||||||
cmdline_fixed_string_t port;
|
cmdline_fixed_string_t port;
|
||||||
|
@ -23,6 +23,7 @@ extern cmdline_parse_inst_t cmd_add_port_tm_leaf_node;
|
|||||||
extern cmdline_parse_inst_t cmd_del_port_tm_node;
|
extern cmdline_parse_inst_t cmd_del_port_tm_node;
|
||||||
extern cmdline_parse_inst_t cmd_set_port_tm_node_parent;
|
extern cmdline_parse_inst_t cmd_set_port_tm_node_parent;
|
||||||
extern cmdline_parse_inst_t cmd_suspend_port_tm_node;
|
extern cmdline_parse_inst_t cmd_suspend_port_tm_node;
|
||||||
|
extern cmdline_parse_inst_t cmd_resume_port_tm_node;
|
||||||
extern cmdline_parse_inst_t cmd_port_tm_hierarchy_commit;
|
extern cmdline_parse_inst_t cmd_port_tm_hierarchy_commit;
|
||||||
|
|
||||||
#endif /* _CMDLINE_TM_H_ */
|
#endif /* _CMDLINE_TM_H_ */
|
||||||
|
@ -2512,6 +2512,11 @@ Suspend port traffic management hierarchy node
|
|||||||
|
|
||||||
testpmd> suspend port tm node (port_id) (node_id)
|
testpmd> suspend port tm node (port_id) (node_id)
|
||||||
|
|
||||||
|
Resume port traffic management hierarchy node
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
testpmd> resume port tm node (port_id) (node_id)
|
||||||
|
|
||||||
Commit port traffic management hierarchy
|
Commit port traffic management hierarchy
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user