All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ferruh Yigit <ferruh.yigit@intel.com>
To: dev@dpdk.org
Cc: Nicolas Pernas Maradei <nicolas.pernas.maradei@emutex.com>
Subject: [RFC 11/21] net/pcap: group stats related fields into a struct
Date: Thu, 21 Jul 2016 18:22:50 +0100	[thread overview]
Message-ID: <1469121780-26099-12-git-send-email-ferruh.yigit@intel.com> (raw)
In-Reply-To: <1469121780-26099-1-git-send-email-ferruh.yigit@intel.com>

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 drivers/net/pcap/rte_eth_pcap.c | 72 +++++++++++++++++++++--------------------
 1 file changed, 37 insertions(+), 35 deletions(-)

diff --git a/drivers/net/pcap/rte_eth_pcap.c b/drivers/net/pcap/rte_eth_pcap.c
index 31eed58..ec25912 100644
--- a/drivers/net/pcap/rte_eth_pcap.c
+++ b/drivers/net/pcap/rte_eth_pcap.c
@@ -64,13 +64,17 @@ static struct timeval start_time;
 static uint64_t start_cycles;
 static uint64_t hz;
 
+struct queue_stat {
+	volatile unsigned long pkts;
+	volatile unsigned long bytes;
+	volatile unsigned long err_pkts;
+};
+
 struct pcap_rx_queue {
 	pcap_t *pcap;
 	uint8_t in_port;
 	struct rte_mempool *mb_pool;
-	volatile unsigned long rx_pkts;
-	volatile unsigned long rx_bytes;
-	volatile unsigned long err_pkts;
+	struct queue_stat rx_stat;
 	char name[PATH_MAX];
 	char type[ETH_PCAP_ARG_MAXLEN];
 };
@@ -78,9 +82,7 @@ struct pcap_rx_queue {
 struct pcap_tx_queue {
 	pcap_dumper_t *dumper;
 	pcap_t *pcap;
-	volatile unsigned long tx_pkts;
-	volatile unsigned long tx_bytes;
-	volatile unsigned long err_pkts;
+	struct queue_stat tx_stat;
 	char name[PATH_MAX];
 	char type[ETH_PCAP_ARG_MAXLEN];
 };
@@ -234,8 +236,8 @@ eth_pcap_rx(void *queue,
 		num_rx++;
 		rx_bytes += header.caplen;
 	}
-	pcap_q->rx_pkts += num_rx;
-	pcap_q->rx_bytes += rx_bytes;
+	pcap_q->rx_stat.pkts += num_rx;
+	pcap_q->rx_stat.bytes += rx_bytes;
 	return num_rx;
 }
 
@@ -306,9 +308,9 @@ eth_pcap_tx_dumper(void *queue,
 	 * we flush the pcap dumper within each burst.
 	 */
 	pcap_dump_flush(dumper_q->dumper);
-	dumper_q->tx_pkts += num_tx;
-	dumper_q->tx_bytes += tx_bytes;
-	dumper_q->err_pkts += nb_pkts - num_tx;
+	dumper_q->tx_stat.pkts += num_tx;
+	dumper_q->tx_stat.bytes += tx_bytes;
+	dumper_q->tx_stat.err_pkts += nb_pkts - num_tx;
 	return num_tx;
 }
 
@@ -362,9 +364,9 @@ eth_pcap_tx(void *queue,
 		rte_pktmbuf_free(mbuf);
 	}
 
-	tx_queue->tx_pkts += num_tx;
-	tx_queue->tx_bytes += tx_bytes;
-	tx_queue->err_pkts += nb_pkts - num_tx;
+	tx_queue->tx_stat.pkts += num_tx;
+	tx_queue->tx_stat.bytes += tx_bytes;
+	tx_queue->tx_stat.err_pkts += nb_pkts - num_tx;
 	return num_tx;
 }
 
@@ -501,7 +503,7 @@ eth_dev_info(struct rte_eth_dev *dev,
 
 static void
 eth_stats_get(struct rte_eth_dev *dev,
-		struct rte_eth_stats *igb_stats)
+		struct rte_eth_stats *stats)
 {
 	unsigned i;
 	unsigned long rx_packets_total = 0, rx_bytes_total = 0;
@@ -511,27 +513,27 @@ eth_stats_get(struct rte_eth_dev *dev,
 
 	for (i = 0; i < RTE_ETHDEV_QUEUE_STAT_CNTRS &&
 			i < dev->data->nb_rx_queues; i++) {
-		igb_stats->q_ipackets[i] = internal->rx_queue[i].rx_pkts;
-		igb_stats->q_ibytes[i] = internal->rx_queue[i].rx_bytes;
-		rx_packets_total += igb_stats->q_ipackets[i];
-		rx_bytes_total += igb_stats->q_ibytes[i];
+		stats->q_ipackets[i] = internal->rx_queue[i].rx_stat.pkts;
+		stats->q_ibytes[i] = internal->rx_queue[i].rx_stat.bytes;
+		rx_packets_total += stats->q_ipackets[i];
+		rx_bytes_total += stats->q_ibytes[i];
 	}
 
 	for (i = 0; i < RTE_ETHDEV_QUEUE_STAT_CNTRS &&
 			i < dev->data->nb_tx_queues; i++) {
-		igb_stats->q_opackets[i] = internal->tx_queue[i].tx_pkts;
-		igb_stats->q_obytes[i] = internal->tx_queue[i].tx_bytes;
-		igb_stats->q_errors[i] = internal->tx_queue[i].err_pkts;
-		tx_packets_total += igb_stats->q_opackets[i];
-		tx_bytes_total += igb_stats->q_obytes[i];
-		tx_packets_err_total += igb_stats->q_errors[i];
+		stats->q_opackets[i] = internal->tx_queue[i].tx_stat.pkts;
+		stats->q_obytes[i] = internal->tx_queue[i].tx_stat.bytes;
+		stats->q_errors[i] = internal->tx_queue[i].tx_stat.err_pkts;
+		tx_packets_total += stats->q_opackets[i];
+		tx_bytes_total += stats->q_obytes[i];
+		tx_packets_err_total += stats->q_errors[i];
 	}
 
-	igb_stats->ipackets = rx_packets_total;
-	igb_stats->ibytes = rx_bytes_total;
-	igb_stats->opackets = tx_packets_total;
-	igb_stats->obytes = tx_bytes_total;
-	igb_stats->oerrors = tx_packets_err_total;
+	stats->ipackets = rx_packets_total;
+	stats->ibytes = rx_bytes_total;
+	stats->opackets = tx_packets_total;
+	stats->obytes = tx_bytes_total;
+	stats->oerrors = tx_packets_err_total;
 }
 
 static void
@@ -540,13 +542,13 @@ eth_stats_reset(struct rte_eth_dev *dev)
 	unsigned i;
 	struct pmd_internals *internal = dev->data->dev_private;
 	for (i = 0; i < dev->data->nb_rx_queues; i++) {
-		internal->rx_queue[i].rx_pkts = 0;
-		internal->rx_queue[i].rx_bytes = 0;
+		internal->rx_queue[i].rx_stat.pkts = 0;
+		internal->rx_queue[i].rx_stat.bytes = 0;
 	}
 	for (i = 0; i < dev->data->nb_tx_queues; i++) {
-		internal->tx_queue[i].tx_pkts = 0;
-		internal->tx_queue[i].tx_bytes = 0;
-		internal->tx_queue[i].err_pkts = 0;
+		internal->tx_queue[i].tx_stat.pkts = 0;
+		internal->tx_queue[i].tx_stat.bytes = 0;
+		internal->tx_queue[i].tx_stat.err_pkts = 0;
 	}
 }
 
-- 
2.7.4

  parent reply	other threads:[~2016-07-21 17:24 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-07-21 17:22 [RFC 00/21] pcap pmd improvements Ferruh Yigit
2016-07-21 17:22 ` [RFC 01/21] net/pcap: create own configuration parameter Ferruh Yigit
2016-07-21 17:22 ` [RFC 02/21] net/pcap: use macros for param string Ferruh Yigit
2016-07-21 17:22 ` [RFC 03/21] net/pcap: reorganize private structs Ferruh Yigit
2016-07-21 17:22 ` [RFC 04/21] net/pcap: add checks for max queue number Ferruh Yigit
2016-07-21 17:22 ` [RFC 05/21] net/pcap: update function to reuse it Ferruh Yigit
2016-07-21 17:22 ` [RFC 06/21] net/pcap: don't carry numa_node argument Ferruh Yigit
2016-07-21 17:22 ` [RFC 07/21] net/pcap: don't carry kvlist argument Ferruh Yigit
2016-07-21 17:22 ` [RFC 08/21] net/pcap: move comment to correct place Ferruh Yigit
2016-07-21 17:22 ` [RFC 09/21] net/pcap: remove duplicated max queue number check Ferruh Yigit
2016-07-21 17:22 ` [RFC 10/21] net/pcap: use single_iface variable instead of hardcoded Ferruh Yigit
2016-07-21 17:22 ` Ferruh Yigit [this message]
2016-07-21 17:22 ` [RFC 12/21] net/pcap: make const array static Ferruh Yigit
2016-07-21 17:22 ` [RFC 13/21] net/pcap: reorder header files Ferruh Yigit
2016-07-21 17:22 ` [RFC 14/21] net/pcap: reorder functions Ferruh Yigit
2016-07-21 17:22 ` [RFC 15/21] net/pcap: update how single iface handled Ferruh Yigit
2016-07-21 17:22 ` [RFC 16/21] net/pcap: remove unnecessary check Ferruh Yigit
2016-07-21 17:22 ` [RFC 17/21] net/pcap: remove redundant assignment Ferruh Yigit
2016-07-21 17:22 ` [RFC 18/21] net/pcap: simplify function Ferruh Yigit
2016-07-21 17:22 ` [RFC 19/21] net/pcap: fix missing tx iface assignment Ferruh Yigit
2016-07-21 17:22 ` [RFC 20/21] net/pcap: coding convention updates Ferruh Yigit
2016-07-21 17:23 ` [RFC 21/21] net/pcap: remove rte prefix from static functions 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=1469121780-26099-12-git-send-email-ferruh.yigit@intel.com \
    --to=ferruh.yigit@intel.com \
    --cc=dev@dpdk.org \
    --cc=nicolas.pernas.maradei@emutex.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.