From: Ajit Khaparde <ajit.khaparde@broadcom.com>
To: dev@dpdk.org
Cc: ferruh.yigit@intel.com
Subject: [dpdk-dev] [PATCH 07/13] net/bnxt: check if initialization is done before accessing stats
Date: Mon, 8 Jan 2018 12:24:31 -0800 [thread overview]
Message-ID: <20180108202437.56305-8-ajit.khaparde@broadcom.com> (raw)
In-Reply-To: <20180108202437.56305-1-ajit.khaparde@broadcom.com>
Maintain state of PMD initialization and check it before checking stats.
In certain cases, we might end up accessing stats before the required
HWRM commands are processed by FW.
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
drivers/net/bnxt/bnxt.h | 1 +
drivers/net/bnxt/bnxt_ethdev.c | 2 ++
drivers/net/bnxt/bnxt_stats.c | 9 +++++++++
3 files changed, 12 insertions(+)
diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h
index 345750be7..7e3d7aefd 100644
--- a/drivers/net/bnxt/bnxt.h
+++ b/drivers/net/bnxt/bnxt.h
@@ -245,6 +245,7 @@ struct bnxt {
#define BNXT_FLAG_UPDATE_HASH (1 << 5)
#define BNXT_FLAG_PTP_SUPPORTED (1 << 6)
#define BNXT_FLAG_MULTI_HOST (1 << 7)
+#define BNXT_FLAG_INIT_DONE (1 << 31)
#define BNXT_PF(bp) (!((bp)->flags & BNXT_FLAG_VF))
#define BNXT_VF(bp) ((bp)->flags & BNXT_FLAG_VF)
#define BNXT_NPAR(bp) ((bp)->port_partition_type)
diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index 475faac2a..c2d158dea 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -590,6 +590,7 @@ static int bnxt_dev_start_op(struct rte_eth_dev *eth_dev)
if (rc)
goto error;
+ bp->flags |= BNXT_FLAG_INIT_DONE;
return 0;
error:
@@ -635,6 +636,7 @@ static void bnxt_dev_stop_op(struct rte_eth_dev *eth_dev)
}
bnxt_set_hwrm_link_config(bp, false);
bnxt_hwrm_port_clr_stats(bp);
+ bp->flags &= ~BNXT_FLAG_INIT_DONE;
bnxt_shutdown_nic(bp);
bp->dev_stopped = 1;
}
diff --git a/drivers/net/bnxt/bnxt_stats.c b/drivers/net/bnxt/bnxt_stats.c
index 2606e93c1..470c6438d 100644
--- a/drivers/net/bnxt/bnxt_stats.c
+++ b/drivers/net/bnxt/bnxt_stats.c
@@ -236,6 +236,10 @@ int bnxt_stats_get_op(struct rte_eth_dev *eth_dev,
struct bnxt *bp = eth_dev->data->dev_private;
memset(bnxt_stats, 0, sizeof(*bnxt_stats));
+ if (!(bp->flags & BNXT_FLAG_INIT_DONE)) {
+ RTE_LOG(ERR, PMD, "Device Initialization not complete!\n");
+ return 0;
+ }
for (i = 0; i < bp->rx_cp_nr_rings; i++) {
struct bnxt_rx_queue *rxq = bp->rx_queues[i];
@@ -267,6 +271,11 @@ void bnxt_stats_reset_op(struct rte_eth_dev *eth_dev)
{
struct bnxt *bp = (struct bnxt *)eth_dev->data->dev_private;
+ if (!(bp->flags & BNXT_FLAG_INIT_DONE)) {
+ RTE_LOG(ERR, PMD, "Device Initialization not complete!\n");
+ return;
+ }
+
bnxt_clear_all_hwrm_stat_ctxs(bp);
rte_atomic64_clear(&bp->rx_mbuf_alloc_fail);
}
--
2.14.3 (Apple Git-98)
next prev parent reply other threads:[~2018-01-08 20:24 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-08 20:24 [dpdk-dev] [PATCH 00/13] bnxt atchset Ajit Khaparde
2018-01-08 20:24 ` [dpdk-dev] [PATCH 01/13] net/bnxt: check return values in bnxt_dev_init Ajit Khaparde
2018-01-08 20:53 ` Stephen Hemminger
2018-01-08 20:24 ` [dpdk-dev] [PATCH 02/13] net/bnxt: fix double increment of idx during Tx ring alloc Ajit Khaparde
2018-01-08 20:24 ` [dpdk-dev] [PATCH 03/13] net/bnxt: parse checksum offload flags Ajit Khaparde
2018-01-08 20:24 ` [dpdk-dev] [PATCH 04/13] net/bnxt: fix grp_info usage Ajit Khaparde
2018-01-08 20:24 ` [dpdk-dev] [PATCH 05/13] net/bnxt: return proper error code Ajit Khaparde
2018-01-08 20:24 ` [dpdk-dev] [PATCH 06/13] net/bnxt: add check for multi host PF per port Ajit Khaparde
2018-01-08 20:24 ` Ajit Khaparde [this message]
2018-01-08 20:24 ` [dpdk-dev] [PATCH 08/13] net/bnxt: fix check for ether_type Ajit Khaparde
2018-01-08 20:24 ` [dpdk-dev] [PATCH 09/13] net/bnxt: remove unnecessary addition of a temporary filter Ajit Khaparde
2018-01-08 20:24 ` [dpdk-dev] [PATCH 10/13] net/bnxt: fix duplicate filter pattern creation error Ajit Khaparde
2018-01-08 20:24 ` [dpdk-dev] [PATCH 11/13] net/bnxt: fix bug with duplicate pattern for 5tuple filter Ajit Khaparde
2018-01-08 20:24 ` [dpdk-dev] [PATCH 12/13] bnxt/bnxt: free the aggregration ring while freeing all the HWRM rings Ajit Khaparde
2018-01-08 20:24 ` [dpdk-dev] [PATCH 13/13] net/bnxt: check on-chip resources Ajit Khaparde
2018-01-10 20:32 ` [dpdk-dev] [PATCH 00/13] bnxt atchset Ferruh Yigit
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180108202437.56305-8-ajit.khaparde@broadcom.com \
--to=ajit.khaparde@broadcom.com \
--cc=dev@dpdk.org \
--cc=ferruh.yigit@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).