net/bnxt: fix xstats get
Fix to return count in xstats get op in all cases.
Driver was returning 0 if the 'xstats' parameter being passed to
xstats_get_op was NULL. This won't work on some applications that
rely on a valid count being passed even in this case so that it can
allocate memory accordingly followed by a reissue of the xstats_get_op
to get the actual stats populated by the driver.
Fixes: 063e59ddd2
("net/bnxt: fix crash in xstats get")
Cc: stable@dpdk.org
Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Reviewed-by: Lance Richardson <lance.richardson@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
This commit is contained in:
parent
527b10089c
commit
eac4fc71cd
@ -594,10 +594,15 @@ int bnxt_dev_xstats_get_op(struct rte_eth_dev *eth_dev,
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
if (xstats == NULL)
|
||||
return 0;
|
||||
stat_count = RTE_DIM(bnxt_rx_stats_strings) +
|
||||
RTE_DIM(bnxt_tx_stats_strings) +
|
||||
RTE_DIM(bnxt_func_stats_strings) +
|
||||
RTE_DIM(bnxt_rx_ext_stats_strings) +
|
||||
RTE_DIM(bnxt_tx_ext_stats_strings) +
|
||||
bnxt_flow_stats_cnt(bp);
|
||||
|
||||
memset(xstats, 0, sizeof(*xstats));
|
||||
if (n < stat_count || xstats == NULL)
|
||||
return stat_count;
|
||||
|
||||
bnxt_hwrm_func_qstats(bp, 0xffff, NULL, &func_qstats);
|
||||
bnxt_hwrm_port_qstats(bp);
|
||||
@ -609,17 +614,7 @@ int bnxt_dev_xstats_get_op(struct rte_eth_dev *eth_dev,
|
||||
(bp->fw_tx_port_stats_ext_size /
|
||||
stat_size));
|
||||
|
||||
count = RTE_DIM(bnxt_rx_stats_strings) +
|
||||
RTE_DIM(bnxt_tx_stats_strings) +
|
||||
RTE_DIM(bnxt_func_stats_strings) +
|
||||
RTE_DIM(bnxt_rx_ext_stats_strings) +
|
||||
RTE_DIM(bnxt_tx_ext_stats_strings) +
|
||||
bnxt_flow_stats_cnt(bp);
|
||||
|
||||
stat_count = count;
|
||||
|
||||
if (n < count)
|
||||
return count;
|
||||
memset(xstats, 0, sizeof(*xstats));
|
||||
|
||||
count = 0;
|
||||
for (i = 0; i < RTE_DIM(bnxt_rx_stats_strings); i++) {
|
||||
|
Loading…
Reference in New Issue
Block a user