ixgbe: fix Tx error stats by setting it to 0
authorMaryam Tahhan <maryam.tahhan@intel.com>
Tue, 28 Jul 2015 15:38:09 +0000 (16:38 +0100)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Thu, 30 Jul 2015 00:15:32 +0000 (02:15 +0200)
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.

Fixes: afebc86be134 ("ixgbe: refactor stats register reads")

Signed-off-by: Maryam Tahhan <maryam.tahhan@intel.com>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
drivers/net/ixgbe/ixgbe_ethdev.c

index 082f361..3687ebf 100644 (file)
@@ -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.