Hi

> -----Original Message-----
> From: Yigit, Ferruh <ferruh.yi...@intel.com>
> Sent: Monday, February 8, 2021 23:15
> To: Li, Xiaoyun <xiaoyun...@intel.com>; Singh, Jasvinder
> <jasvinder.si...@intel.com>; Wu, Jingjing <jingjing...@intel.com>; Adrien
> Mazarguil <adrien.mazarg...@6wind.com>; Dumitrescu, Cristian
> <cristian.dumitre...@intel.com>
> Cc: Yigit, Ferruh <ferruh.yi...@intel.com>; dev@dpdk.org; sta...@dpdk.org
> Subject: [PATCH v2] app/testpmd: fix meter commands help strings
> 
> Helps strings syntax is "command : description", the 'command' part was 
> missing,
> updated command help strings.
> 
> Fixes: 281eeb8afc55 ("app/testpmd: add commands for metering and policing")
> Fixes: 30ffb4e67ee3 ("app/testpmd: add commands traffic metering and
> policing")
> Fixes: e63b50162aa3 ("app/testpmd: clean metering and policing commands")
> Cc: sta...@dpdk.org
> 
> Signed-off-by: Ferruh Yigit <ferruh.yi...@intel.com>
> ---
> Cc: jasvinder.si...@intel.com
> Cc: cristian.dumitre...@intel.com
> 
> - "set port meter dscp table" documented with 'port_id' & 'mtr_id', but
>   command itself is not requiring it, can be better to double check the
>   intention in the command.
> - In command "show port meter stats <port_id> <mtr_id> yes|no", it is
>   not clear what 'yes|no' is, can be better to have a 'clear' keyword
>   there: "show port meter stats <port_id> <mtr_id> clear yes|no"
> - 'meter' commands seems using many high level commands, that is harder
>   to remember when you take all commands into account:
>   "show port meter ..."
>   "add port meter ..."
>   "del port meter ..."
>   "create port meter ..."
>   "enable port meter ..."
>   "disable port meter ..."
>   "set port meter ..."
>   And some high level commands created just for 'meter'. Instead I think
>   it is better to group the commands, like:
>   "port meter [add,del,create,enable,disable] ..."
>   "show port meter ..."
>   It is already too late but it worth to keep in mind for the possible
>   future update.
> 
> v2:
> * Fixed typo, actiono -> action0
> * Added more info to help string, like "<variable>(possible values)"
> ---
>  app/test-pmd/cmdline.c     |  2 +-
>  app/test-pmd/cmdline_mtr.c | 33 +++++++++++++++++++--------------
>  2 files changed, 20 insertions(+), 15 deletions(-)
> 
> diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index
> 59722d268bc3..1b9da38fb745 100644
> --- a/app/test-pmd/cmdline.c
> +++ b/app/test-pmd/cmdline.c
> @@ -719,7 +719,7 @@ static void cmd_help_long_parsed(void *parsed_result,
>                       "set port meter profile (port_id) (mtr_id) 
> (profile_id)\n"
>                       "    meter update meter profile\n\n"
> 
> -                     "set port meter dscp table (port_id) (mtr_id)
> [(dscp_tbl_entry0)\n"
> +                     "set port meter dscp table [(dscp_tbl_entry0)\n"
>                       "(dscp_tbl_entry1)...(dscp_tbl_entry63)]\n"
>                       "    update meter dscp table entries\n\n"
> 

I still have some concern on this one.
I understand the command itself doesn't include port_id & meter_id.
But this command use (void *)&cmd_set_port_meter_dscp_table_token_string, to 
take a string from cmd.
And in parser cmd_set_port_meter_dscp_table_parsed(), it will use 
parse_multi_token_string() to parse this token_string.
static int
parse_multi_token_string(char *t_str, uint16_t *port_id,
        uint32_t *mtr_id, enum rte_color **dscp_table)
{
        char *token;
        uint64_t val;
        int ret;

        /* First token: port id */
        token = strtok_r(t_str, PARSE_DELIMITER, &t_str);
        if (token ==  NULL)
                return -1;

        ret = parse_uint(&val, token);
        if (ret != 0 || val > UINT16_MAX)
                return -1;

        *port_id = val;

        /* Second token: meter id */
        token = strtok_r(t_str, PARSE_DELIMITER, &t_str);
        if (token == NULL)
                return 0;

        ret = parse_uint(&val, token);
        if (ret != 0 || val > UINT32_MAX)
                return -1;

        *mtr_id = val;

        ret = parse_dscp_table_entries(t_str, dscp_table);
        if (ret != 0)
                return -1;

        return 0;
}

In this function, the first thing in that string will be parsed as port id, the 
second thing will be parsed as meter id and then table entries.
So I think if the helper string is "set port meter dscp table 
[(dscp_tbl_entry0)...]". This will actually confuse users.
If a user follows the helper and sets command "set port meter dscp table 
dscp_tbl_entry0", user will get error because the " dscp_tbl_entry0" is treated 
as portid and there is no meter id provided.

I understand they shouldn't put port id and meter id in token string parse and 
should be put in command itself. But that's another story.

> --
> 2.29.2

Reply via email to