[v2,4/4] net/gve: add standard and extended statistics

Message ID 20230216181025.23485-4-levendsayar@gmail.com (mailing list archive)
State Superseded, archived
Delegated to: Ferruh Yigit
Headers
Series [v2,1/4] net/gve: change offloading capability |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation warning apply issues

Commit Message

Levend Sayar Feb. 16, 2023, 6:10 p.m. UTC
  NIC statistics are enhanced with rx/tx queue errors.

Signed-off-by: Levend Sayar <levendsayar@gmail.com>
---
 drivers/net/gve/gve_ethdev.c | 49 +++++++++++++++++++++++++++++++-----
 1 file changed, 43 insertions(+), 6 deletions(-)
  

Patch

diff --git a/drivers/net/gve/gve_ethdev.c b/drivers/net/gve/gve_ethdev.c
index 735847ede7..88adec7253 100644
--- a/drivers/net/gve/gve_ethdev.c
+++ b/drivers/net/gve/gve_ethdev.c
@@ -417,6 +417,18 @@  gve_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *xstats, unsigned i
 			if (--requested == 0)
 				return n;
 			xstat++;
+
+			xstat->id = indx++;
+			xstat->value = rxq->errors;
+			if (--requested == 0)
+				return n;
+			xstat++;
+
+			xstat->id = indx++;
+			xstat->value = rxq->no_mbufs;
+			if (--requested == 0)
+				return n;
+			xstat++;
 		}
 
 		for (i = 0; i < dev->data->nb_tx_queues; i++) {
@@ -432,10 +444,16 @@  gve_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *xstats, unsigned i
 			if (--requested == 0)
 				return n;
 			xstat++;
+
+			xstat->id = indx++;
+			xstat->value = txq->errors;
+			if (--requested == 0)
+				return n;
+			xstat++;
 		}
 	}
 
-	return (dev->data->nb_tx_queues + dev->data->nb_rx_queues) * 2;
+	return (dev->data->nb_rx_queues * 4) + (dev->data->nb_tx_queues * 3);
 }
 
 static int
@@ -454,29 +472,48 @@  gve_xstats_get_names(struct rte_eth_dev *dev, struct rte_eth_xstat_name *xstats_
 		uint16_t i;
 
 		for (i = 0; i < dev->data->nb_rx_queues; i++) {
-			snprintf(xstats_name->name, sizeof(xstats_name->name), "rx_q%d_packets", i);
+			snprintf(xstats_name->name, sizeof(xstats_name->name),
+					"rx_q%d_packets", i);
+			if (--requested == 0)
+				return n;
+			xstats_name++;
+			snprintf(xstats_name->name, sizeof(xstats_name->name),
+					"rx_q%d_bytes", i);
 			if (--requested == 0)
 				return n;
 			xstats_name++;
-			snprintf(xstats_name->name, sizeof(xstats_name->name), "rx_q%d_bytes", i);
+			snprintf(xstats_name->name, sizeof(xstats_name->name),
+					"rx_q%d_errors", i);
+			if (--requested == 0)
+				return n;
+			xstats_name++;
+			snprintf(xstats_name->name, sizeof(xstats_name->name),
+					"rx_q%d_no_mbufs", i);
 			if (--requested == 0)
 				return n;
 			xstats_name++;
 		}
 
 		for (i = 0; i < dev->data->nb_tx_queues; i++) {
-			snprintf(xstats_name->name, sizeof(xstats_name->name), "tx_q%d_packets", i);
+			snprintf(xstats_name->name, sizeof(xstats_name->name),
+					"tx_q%d_packets", i);
+			if (--requested == 0)
+				return n;
+			xstats_name++;
+			snprintf(xstats_name->name, sizeof(xstats_name->name),
+					"tx_q%d_bytes", i);
 			if (--requested == 0)
 				return n;
 			xstats_name++;
-			snprintf(xstats_name->name, sizeof(xstats_name->name), "tx_q%d_bytes", i);
+			snprintf(xstats_name->name, sizeof(xstats_name->name),
+					"tx_q%d_errors", i);
 			if (--requested == 0)
 				return n;
 			xstats_name++;
 		}
 	}
 
-	return (dev->data->nb_tx_queues + dev->data->nb_rx_queues) * 2;
+	return (dev->data->nb_rx_queues * 4) + (dev->data->nb_tx_queues * 3);
 }
 
 static const struct eth_dev_ops gve_eth_dev_ops = {