Yes, that sounds good. What do you think of having the command to be "show port (port_id|all) (module_eeprom|eeprom)"?
On Wed, Sep 2, 2020 at 6:00 AM Ferruh Yigit <ferruh.yi...@intel.com> wrote: > On 9/1/2020 8:07 PM, David Liu wrote: > > Change display message. > > Add EEPROM dump command > > "show port <port_id> eeprom" > > Add module EEPROM dump command > > "show port <port_id> module_eeprom" > > Commands will dump the content of the > > EEPROM/module EEPROM for the selected port. > > > > Signed-off-by: David Liu <d...@iol.unh.edu> > > --- > > app/test-pmd/cmdline.c | 87 ++++++++++++++ > > app/test-pmd/config.c | 126 ++++++++++++++++++++ > > app/test-pmd/testpmd.h | 2 + > > doc/guides/testpmd_app_ug/testpmd_funcs.rst | 14 +++ > > 4 files changed, 229 insertions(+) > > > > diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c > > index a037a55c6..71c98dd96 100644 > > --- a/app/test-pmd/cmdline.c > > +++ b/app/test-pmd/cmdline.c > > @@ -166,6 +166,12 @@ static void cmd_help_long_parsed(void > *parsed_result, > > "show port > (info|stats|summary|xstats|fdir|stat_qmap|dcb_tc|cap) (port_id|all)\n" > > " Display information for port_id, or all.\n\n" > > > > + "show port (port_id) eeprom \n" > > + " Display the EEPROM infomation for given > port_id.\n\n" > > + > > + "show port (port_id) module_eeprom \n" > > + " Display the port moudle EEPROM infomation for > given port_id.\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" > > @@ -7594,6 +7600,85 @@ cmdline_parse_inst_t cmd_showdevice = { > > NULL, > > }, > > }; > > + > > +/* ** SHOW EEPROM INFO *** */ > > +struct cmd_showeeprom_result { > > + cmdline_fixed_string_t show; > > + cmdline_fixed_string_t port; > > + cmdline_fixed_string_t type; > > + uint16_t portnum; > > +}; > > + > > +static void cmd_showeeprom_parsed(void *parsed_result, > > + __rte_unused struct cmdline *cl, > > + __rte_unused void *data) > > +{ > > + struct cmd_showeeprom_result *res = parsed_result; > > + > > + port_eeprom_display(res->portnum); > > +} > > + > > +cmdline_parse_token_string_t cmd_showeeprom_show = > > + TOKEN_STRING_INITIALIZER(struct cmd_showeeprom_result, show, > "show"); > > +cmdline_parse_token_string_t cmd_showeeprom_port = > > + TOKEN_STRING_INITIALIZER(struct cmd_showeeprom_result, port, > "port"); > > +cmdline_parse_token_num_t cmd_showeeprom_portnum = > > + TOKEN_NUM_INITIALIZER(struct cmd_showeeprom_result, portnum, > UINT16); > > +cmdline_parse_token_string_t cmd_showeeprom_type = > > + TOKEN_STRING_INITIALIZER(struct cmd_showeeprom_result, type, > "eeprom"); > > + > > +cmdline_parse_inst_t cmd_showeeprom = { > > + .f = cmd_showeeprom_parsed, > > + .data = NULL, > > + .help_str = "show port <port_id> eeprom", > > + .tokens = { > > + (void *)&cmd_showeeprom_show, > > + (void *)&cmd_showeeprom_port, > > + (void *)&cmd_showeeprom_portnum, > > + (void *)&cmd_showeeprom_type, > > + NULL, > > + }, > > +}; > > + > > +/* ** SHOW MODULE EEPROM INFO *** */ > > +struct cmd_showmoduleeeprom_result { > > + cmdline_fixed_string_t show; > > + cmdline_fixed_string_t port; > > + cmdline_fixed_string_t type; > > + uint16_t portnum; > > +}; > > + > > +static void cmd_showmoduleeeprom_parsed(void *parsed_result, > > + __rte_unused struct cmdline *cl, > > + __rte_unused void *data) > > +{ > > + struct cmd_showmoduleeeprom_result *res = parsed_result; > > + > > + port_module_eeprom_display(res->portnum); > > +} > > + > > +cmdline_parse_token_string_t cmd_showmoduleeeprom_show = > > + TOKEN_STRING_INITIALIZER(struct cmd_showmoduleeeprom_result, > show, "show"); > > +cmdline_parse_token_string_t cmd_showmoduleeeprom_port = > > + TOKEN_STRING_INITIALIZER(struct cmd_showmoduleeeprom_result, > port, "port"); > > +cmdline_parse_token_num_t cmd_showmoduleeeprom_portnum = > > + TOKEN_NUM_INITIALIZER(struct cmd_showmoduleeeprom_result, portnum, > UINT16); > > +cmdline_parse_token_string_t cmd_showmoduleeeprom_type = > > + TOKEN_STRING_INITIALIZER(struct cmd_showmoduleeeprom_result, type, > "module_eeprom"); > > + > > +cmdline_parse_inst_t cmd_showmoduleeeprom = { > > + .f = cmd_showmoduleeeprom_parsed, > > + .data = NULL, > > + .help_str = "show port <port_id> module_eeprom", > > + .tokens = { > > + (void *)&cmd_showmoduleeeprom_show, > > + (void *)&cmd_showmoduleeeprom_port, > > + (void *)&cmd_showmoduleeeprom_portnum, > > + (void *)&cmd_showmoduleeeprom_type, > > + NULL, > > + }, > > +};> + > > Since both commands are simple and related, what do you think merging their > implementation? This reduces the clutter. > Please check '#' usage in the 'TOKEN_STRING_INITIALIZER', and "port > start|stop|close all" implementation can be sample. >