From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tomasz Duszynski Subject: Re: [PATCH 2/2] app/testpmd: add command to resume a TM node Date: Mon, 19 Feb 2018 08:17:14 +0100 Message-ID: <20180219071714.GA5726@sh> References: <1517477799-18946-1-git-send-email-tdu@semihalf.com> <1517477799-18946-3-git-send-email-tdu@semihalf.com> <54CBAA185211B4429112C315DA58FF6D332FA949@IRSMSX103.ger.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Cc: Tomasz Duszynski , "dev@dpdk.org" , "Lu, Wenzhuo" , "Wu, Jingjing" To: "Singh, Jasvinder" Return-path: Received: from mail-lf0-f66.google.com (mail-lf0-f66.google.com [209.85.215.66]) by dpdk.org (Postfix) with ESMTP id C4F471B1AB for ; Mon, 19 Feb 2018 08:17:16 +0100 (CET) Received: by mail-lf0-f66.google.com with SMTP id h78so11676946lfg.6 for ; Sun, 18 Feb 2018 23:17:16 -0800 (PST) Content-Disposition: inline In-Reply-To: <54CBAA185211B4429112C315DA58FF6D332FA949@IRSMSX103.ger.corp.intel.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On Fri, Feb 16, 2018 at 01:10:39PM +0000, Singh, Jasvinder wrote: > > > > -----Original Message----- > > From: Tomasz Duszynski [mailto:tdu@semihalf.com] > > Sent: Thursday, February 1, 2018 9:37 AM > > To: dev@dpdk.org > > Cc: Lu, Wenzhuo ; Wu, Jingjing > > ; Singh, Jasvinder ; > > Tomasz Duszynski > > Subject: [PATCH 2/2] 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 > > --- > > app/test-pmd/cmdline.c | 4 ++ > > app/test-pmd/cmdline_tm.c | 70 > > +++++++++++++++++++++++++++++ > > app/test-pmd/cmdline_tm.h | 1 + > > doc/guides/testpmd_app_ug/testpmd_funcs.rst | 5 +++ > > 4 files changed, 80 insertions(+) > > > > diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index > > 6bbd606..f9827f6 100644 > > --- a/app/test-pmd/cmdline.c > > +++ b/app/test-pmd/cmdline.c > > @@ -800,6 +800,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" > > > > @@ -16251,6 +16254,7 @@ cmdline_parse_ctx_t main_ctx[] =3D { > > (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, > > NULL, > > }; > > diff --git a/app/test-pmd/cmdline_tm.c b/app/test-pmd/cmdline_tm.c index > > c9a18dd..807e724 100644 > > --- a/app/test-pmd/cmdline_tm.c > > +++ b/app/test-pmd/cmdline_tm.c > > @@ -2036,6 +2036,76 @@ cmdline_parse_inst_t > > cmd_suspend_port_tm_node =3D { > > }, > > }; > > > > +/* *** 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 =3D > > + TOKEN_STRING_INITIALIZER( > > + struct cmd_resume_port_tm_node_result, resume, > > "resume"); > > +cmdline_parse_token_string_t cmd_resume_port_tm_node_port =3D > > + TOKEN_STRING_INITIALIZER( > > + struct cmd_resume_port_tm_node_result, port, "port"); > > +cmdline_parse_token_string_t cmd_resume_port_tm_node_tm =3D > > + TOKEN_STRING_INITIALIZER( > > + struct cmd_resume_port_tm_node_result, tm, "tm"); > > +cmdline_parse_token_string_t cmd_resume_port_tm_node_node =3D > > + TOKEN_STRING_INITIALIZER( > > + struct cmd_resume_port_tm_node_result, node, "node"); > > +cmdline_parse_token_num_t cmd_resume_port_tm_node_port_id =3D > > + 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 =3D > > + 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 =3D parsed_result; > > + struct rte_tm_error error; > > + uint32_t node_id =3D res->node_id; > > + portid_t port_id =3D res->port_id; > > + int ret; > > + > > + if (port_id_is_invalid(port_id, ENABLED_WARN)) > > + return; > > + > > + /* Port status */ > > + if (!port_is_started(port_id)) { > > + printf(" Port %u not started (error)\n", port_id); > > + return; > > + } > > I suggest to remove the CLI layer restriction to check the port status fo= r node suspend/resume. > The device can check at the driver layer whether it is ok suspend/resume = node in started/stopped state depending upon the allowed configuration. Fair enough. Thanks for the review. > > Besides this, > Reviewed-by: Jasvinder Singh -- - Tomasz Duszy=C5=84ski