net/dpaa2: add CGR counters in xstats
authorHemant Agrawal <hemant.agrawal@nxp.com>
Thu, 29 Aug 2019 10:27:24 +0000 (15:57 +0530)
committerFerruh Yigit <ferruh.yigit@intel.com>
Tue, 8 Oct 2019 10:14:31 +0000 (12:14 +0200)
Add congestion frame drop and byte drop count in xtra stats.

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
drivers/net/dpaa2/dpaa2_ethdev.c

index 0a3ce1a..4c6585f 100644 (file)
@@ -84,6 +84,8 @@ static const struct rte_dpaa2_xstats_name_off dpaa2_xstats_strings[] = {
        {"ingress_nobuffer_discards", 2, 2},
        {"egress_discarded_frames", 2, 3},
        {"egress_confirmed_frames", 2, 4},
+       {"cgr_reject_frames", 4, 0},
+       {"cgr_reject_bytes", 4, 1},
 };
 
 static const enum rte_filter_op dpaa2_supported_filter_ops[] = {
@@ -1381,7 +1383,7 @@ dpaa2_dev_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *xstats,
        struct dpaa2_dev_priv *priv = dev->data->dev_private;
        struct fsl_mc_io *dpni = (struct fsl_mc_io *)priv->hw;
        int32_t  retcode;
-       union dpni_statistics value[3] = {};
+       union dpni_statistics value[5] = {};
        unsigned int i = 0, num = RTE_DIM(dpaa2_xstats_strings);
 
        if (n < num)
@@ -1408,6 +1410,18 @@ dpaa2_dev_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *xstats,
        if (retcode)
                goto err;
 
+       for (i = 0; i < priv->max_cgs; i++) {
+               if (!priv->cgid_in_use[i]) {
+                       /* Get Counters from page_4*/
+                       retcode = dpni_get_statistics(dpni, CMD_PRI_LOW,
+                                                     priv->token,
+                                                     4, 0, &value[4]);
+                       if (retcode)
+                               goto err;
+                       break;
+               }
+       }
+
        for (i = 0; i < num; i++) {
                xstats[i].id = i;
                xstats[i].value = value[dpaa2_xstats_strings[i].page_id].
@@ -1449,7 +1463,7 @@ dpaa2_xstats_get_by_id(struct rte_eth_dev *dev, const uint64_t *ids,
                struct dpaa2_dev_priv *priv = dev->data->dev_private;
                struct fsl_mc_io *dpni = (struct fsl_mc_io *)priv->hw;
                int32_t  retcode;
-               union dpni_statistics value[3] = {};
+               union dpni_statistics value[5] = {};
 
                if (n < stat_cnt)
                        return stat_cnt;
@@ -1475,6 +1489,12 @@ dpaa2_xstats_get_by_id(struct rte_eth_dev *dev, const uint64_t *ids,
                if (retcode)
                        return 0;
 
+               /* Get Counters from page_4*/
+               retcode = dpni_get_statistics(dpni, CMD_PRI_LOW, priv->token,
+                                             4, 0, &value[4]);
+               if (retcode)
+                       return 0;
+
                for (i = 0; i < stat_cnt; i++) {
                        values[i] = value[dpaa2_xstats_strings[i].page_id].
                                raw.counter[dpaa2_xstats_strings[i].stats_id];