[dpdk-dev,v1,1/1] ixgbe: Fix oerrors by setting it to 0

Message ID 1438097889-151949-1-git-send-email-maryam.tahhan@intel.com (mailing list archive)
State Accepted, archived
Headers

Commit Message

Tahhan, Maryam July 28, 2015, 3:38 p.m. UTC
  Fix afebc86be1346136125af8026dc215f81c202c50. oerrors was txdgpc -
hw_stats->gptc, txdgpc is the number of packets DMA'ed by the host
and was being reset on every call to read stats so it could be < gptc.
Because we currently have no way to add txdgpc to struct hw_stats so
that we can maintain a persistent value per port oerrors has now been
set to 0. References to txdgpc is now removed as we don't use it. This
patch also removes rxnfgpc as it's not used anywhere.

Signed-off-by: Maryam Tahhan <maryam.tahhan@intel.com>
---
 drivers/net/ixgbe/ixgbe_ethdev.c | 17 +++--------------
 1 file changed, 3 insertions(+), 14 deletions(-)
  

Comments

Wenzhuo Lu July 29, 2015, 2:19 a.m. UTC | #1
Hi,

> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Maryam Tahhan
> Sent: Tuesday, July 28, 2015 11:38 PM
> To: dev@dpdk.org
> Subject: [dpdk-dev] [PATCH v1 1/1] ixgbe: Fix oerrors by setting it to 0
> 
> Fix afebc86be1346136125af8026dc215f81c202c50. oerrors was txdgpc -
> hw_stats->gptc, txdgpc is the number of packets DMA'ed by the host and was
> being reset on every call to read stats so it could be < gptc.
> Because we currently have no way to add txdgpc to struct hw_stats so that we
> can maintain a persistent value per port oerrors has now been set to 0.
> References to txdgpc is now removed as we don't use it. This patch also
> removes rxnfgpc as it's not used anywhere.
> 
> Signed-off-by: Maryam Tahhan <maryam.tahhan@intel.com>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
  
Ananyev, Konstantin July 29, 2015, 8:48 a.m. UTC | #2
> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Maryam Tahhan
> Sent: Tuesday, July 28, 2015 4:38 PM
> To: dev@dpdk.org
> Subject: [dpdk-dev] [PATCH v1 1/1] ixgbe: Fix oerrors by setting it to 0
> 
> Fix afebc86be1346136125af8026dc215f81c202c50. oerrors was txdgpc -
> hw_stats->gptc, txdgpc is the number of packets DMA'ed by the host
> and was being reset on every call to read stats so it could be < gptc.
> Because we currently have no way to add txdgpc to struct hw_stats so
> that we can maintain a persistent value per port oerrors has now been
> set to 0. References to txdgpc is now removed as we don't use it. This
> patch also removes rxnfgpc as it's not used anywhere.
> 

Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>

> Signed-off-by: Maryam Tahhan <maryam.tahhan@intel.com>
> ---
>  drivers/net/ixgbe/ixgbe_ethdev.c | 17 +++--------------
>  1 file changed, 3 insertions(+), 14 deletions(-)
>
  
Thomas Monjalon July 29, 2015, 11:19 p.m. UTC | #3
> > Fix afebc86be1346136125af8026dc215f81c202c50. oerrors was txdgpc -
> > hw_stats->gptc, txdgpc is the number of packets DMA'ed by the host
> > and was being reset on every call to read stats so it could be < gptc.
> > Because we currently have no way to add txdgpc to struct hw_stats so
> > that we can maintain a persistent value per port oerrors has now been
> > set to 0. References to txdgpc is now removed as we don't use it. This
> > patch also removes rxnfgpc as it's not used anywhere.
> > 
> > Signed-off-by: Maryam Tahhan <maryam.tahhan@intel.com>
> Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>

Applied, thanks

It's a bit sad.
Is it a consequence of forbidding updates in the base driver?
  
Tahhan, Maryam July 30, 2015, 9:18 a.m. UTC | #4
> From: Thomas Monjalon [mailto:thomas.monjalon@6wind.com]
> Sent: Thursday, July 30, 2015 12:20 AM
> To: Tahhan, Maryam
> Cc: dev@dpdk.org; Ananyev, Konstantin
> Subject: Re: [dpdk-dev] [PATCH v1 1/1] ixgbe: Fix oerrors by setting it to 0
> 
> > > Fix afebc86be1346136125af8026dc215f81c202c50. oerrors was txdgpc -
> > > hw_stats->gptc, txdgpc is the number of packets DMA'ed by the host
> > > and was being reset on every call to read stats so it could be < gptc.
> > > Because we currently have no way to add txdgpc to struct hw_stats so
> > > that we can maintain a persistent value per port oerrors has now
> > > been set to 0. References to txdgpc is now removed as we don't use
> > > it. This patch also removes rxnfgpc as it's not used anywhere.
> > >
> > > Signed-off-by: Maryam Tahhan <maryam.tahhan@intel.com>
> > Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
> 
> Applied, thanks
> 
> It's a bit sad.
> Is it a consequence of forbidding updates in the base driver?

Yes, that's exactly it.

In the meantime I'm going to look at/investigate another way to allow us to maintain additional (anything not in struct hw_stats) per port stats/registers in addition to the base driver. 

All the best
Maryam
  

Patch

diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
index 082f361..3687ebf 100644
--- a/drivers/net/ixgbe/ixgbe_ethdev.c
+++ b/drivers/net/ixgbe/ixgbe_ethdev.c
@@ -2040,7 +2040,6 @@  static void
 ixgbe_read_stats_registers(struct ixgbe_hw *hw, struct ixgbe_hw_stats
 						   *hw_stats, uint64_t *total_missed_rx,
 						   uint64_t *total_qbrc, uint64_t *total_qprc,
-						   uint64_t *rxnfgpc, uint64_t *txdgpc,
 						   uint64_t *total_qprdc)
 {
 	uint32_t bprc, lxon, lxoff, total;
@@ -2093,8 +2092,6 @@  ixgbe_read_stats_registers(struct ixgbe_hw *hw, struct ixgbe_hw_stats
 
 	/* Note that gprc counts missed packets */
 	hw_stats->gprc += IXGBE_READ_REG(hw, IXGBE_GPRC);
-	*rxnfgpc += IXGBE_READ_REG(hw, IXGBE_RXNFGPC);
-	*txdgpc += IXGBE_READ_REG(hw, IXGBE_TXDGPC);
 
 	if (hw->mac.type != ixgbe_mac_82598EB) {
 		hw_stats->gorc += IXGBE_READ_REG(hw, IXGBE_GORCL);
@@ -2188,18 +2185,15 @@  ixgbe_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)
 	struct ixgbe_hw_stats *hw_stats =
 			IXGBE_DEV_PRIVATE_TO_STATS(dev->data->dev_private);
 	uint64_t total_missed_rx, total_qbrc, total_qprc, total_qprdc;
-	uint64_t rxnfgpc, txdgpc;
 	unsigned i;
 
 	total_missed_rx = 0;
 	total_qbrc = 0;
 	total_qprc = 0;
 	total_qprdc = 0;
-	rxnfgpc = 0;
-	txdgpc = 0;
 
 	ixgbe_read_stats_registers(hw, hw_stats, &total_missed_rx, &total_qbrc,
-			&total_qprc, &rxnfgpc, &txdgpc, &total_qprdc);
+			&total_qprc, &total_qprdc);
 
 	if (stats == NULL)
 		return;
@@ -2235,9 +2229,7 @@  ixgbe_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)
 	                  hw_stats->fclast;
 
 	/* Tx Errors */
-	/*txdgpc: packets that are DMA'ed*/
-	/*gptc: packets that are sent*/
-	stats->oerrors  = txdgpc - hw_stats->gptc;
+	stats->oerrors  = 0;
 }
 
 static void
@@ -2262,7 +2254,6 @@  ixgbe_dev_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstats *xstats,
 	struct ixgbe_hw_stats *hw_stats =
 			IXGBE_DEV_PRIVATE_TO_STATS(dev->data->dev_private);
 	uint64_t total_missed_rx, total_qbrc, total_qprc, total_qprdc;
-	uint64_t rxnfgpc, txdgpc;
 	unsigned i, count = IXGBE_NB_XSTATS;
 
 	if (n < count)
@@ -2272,11 +2263,9 @@  ixgbe_dev_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstats *xstats,
 	total_qbrc = 0;
 	total_qprc = 0;
 	total_qprdc = 0;
-	rxnfgpc = 0;
-	txdgpc = 0;
 
 	ixgbe_read_stats_registers(hw, hw_stats, &total_missed_rx, &total_qbrc,
-							   &total_qprc, &rxnfgpc, &txdgpc, &total_qprdc);
+							   &total_qprc, &total_qprdc);
 
 	/* If this is a reset xstats is NULL, and we have cleared the
 	 * registers by reading them.