Hi > -----Original Message----- > From: dev <dev-boun...@dpdk.org> On Behalf Of Rahul Lakkireddy > Sent: Monday, December 21, 2020 06:47 > To: dev@dpdk.org > Cc: kaara.sat...@chelsio.com > Subject: [dpdk-dev] [PATCH] app/testpmd: increase array for fetching supported > FEC caps > > From: Karra Satwik <kaara.sat...@chelsio.com> > > Request the driver for number of entries in the FEC caps array and then > dynamically allocate the array. > > Signed-off-by: Karra Satwik <kaara.sat...@chelsio.com> > Signed-off-by: Rahul Lakkireddy <rahul.lakkire...@chelsio.com> > --- > app/test-pmd/cmdline.c | 29 ++++++++++++++++++++--------- > 1 file changed, 20 insertions(+), 9 deletions(-) > > diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index > 2ccbaa039..d7a90d55e 100644 > --- a/app/test-pmd/cmdline.c > +++ b/app/test-pmd/cmdline.c > @@ -16263,29 +16263,40 @@ cmd_show_fec_capability_parsed(void > *parsed_result, > __rte_unused struct cmdline *cl, > __rte_unused void *data) > { > -#define FEC_CAP_NUM 2 > struct cmd_show_fec_capability_result *res = parsed_result; > - struct rte_eth_fec_capa speed_fec_capa[FEC_CAP_NUM]; > - unsigned int num = FEC_CAP_NUM; > - unsigned int ret_num; > - int ret; > + struct rte_eth_fec_capa *speed_fec_capa; > + int num, ret; > > if (!rte_eth_dev_is_valid_port(res->cmd_pid)) { > printf("Invalid port id %u\n", res->cmd_pid); > return; > } > > - ret = rte_eth_fec_get_capability(res->cmd_pid, speed_fec_capa, num); > + ret = rte_eth_fec_get_capability(res->cmd_pid, NULL, 0); > if (ret == -ENOTSUP) { > printf("Function not implemented\n"); > return; > } else if (ret < 0) { > - printf("Get FEC capability failed\n"); > + printf("Get FEC capability failed: %d\n", ret); > + return; > + } > + > + num = ret; > + speed_fec_capa = calloc(num, sizeof(*speed_fec_capa)); > + if (!speed_fec_capa) {
if (speed_fec_capa == NULL) { You can check the DPDK coding style 1.9.1. http://doc.dpdk.org/guides/contributing/coding_style.html NULL is the preferred null pointer constant. Use NULL instead of (type *)0 or (type *)NULL, except where the compiler does not know the destination type. Except for this minor issue, Acked-by: Xiaoyun Li <xiaoyun...@intel.com> > + printf("Failed to alloc FEC capability buffer\n"); > return; > } > > - ret_num = (unsigned int)ret; > - show_fec_capability(ret_num, speed_fec_capa); > + ret = rte_eth_fec_get_capability(res->cmd_pid, speed_fec_capa, num); > + if (ret < 0) { > + printf("Error getting FEC capability: %d\n", ret); > + goto out; > + } > + > + show_fec_capability(num, speed_fec_capa); > +out: > + free(speed_fec_capa); > } > > cmdline_parse_token_string_t cmd_show_fec_capability_show = > -- > 2.24.0