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:
Tomasz Duszynski 2018-02-19 08:46:19 +01:00 committed by Cristian Dumitrescu
parent 079dcbb8e6
commit 12f76f5247
4 changed files with 74 additions and 0 deletions

View File

@ -774,6 +774,9 @@ static void cmd_help_long_parsed(void *parsed_result,
"suspend port tm node (port_id) (node_id)"
" 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"
" 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_set_port_tm_node_parent,
(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_cfg_tunnel_udp_port,
NULL,

View File

@ -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 *** */
struct cmd_port_tm_hierarchy_commit_result {
cmdline_fixed_string_t port;

View File

@ -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_set_port_tm_node_parent;
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;
#endif /* _CMDLINE_TM_H_ */

View File

@ -2512,6 +2512,11 @@ Suspend port traffic management hierarchy node
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
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~