[dpdk-dev] [PATCH v3] pcap: add support for rx and tx byte counters

Mcnamara, John john.mcnamara at intel.com
Mon Jul 13 14:56:46 CEST 2015


> -----Original Message-----
> From: Klaus Degner [mailto:kd at allegro-packets.com]
> Sent: Friday, July 10, 2015 8:13 PM
> To: dev at dpdk.org
> Cc: Mcnamara, John; Klaus Degner
> Subject: [PATCH v3] pcap: add support for rx and tx byte counters
> 
> add support for rx and tx byte counters in addition to existing rx and tx
> packet counters, updated with new dpdk master branch
> ---
>  drivers/net/pcap/rte_eth_pcap.c | 22 ++++++++++++++++++++--
>  1 file changed, 20 insertions(+), 2 deletions(-)

Hi Klaus,

Thanks, getting better.

Patches need to be signed off by doing --signoff/-s when committing. See the contributing guidelines here:

    http://dpdk.org/dev

This and other issues could be picked up using Linux checkpatch utility:

    $ checkpatch.pl --ignore PREFER_KERNEL_TYPES,SPLIT_STRING,VOLATILE -q *.patch

    WARNING: Possible unwrapped commit description (prefer a maximum 75 chars per line)
    #11: 
    add support for rx and tx byte counters in addition to existing rx and tx packet counters, updated with new dpdk master branch

    (Cut 2 warnings that don't apply to the patch.)

    ERROR: Missing Signed-off-by: line(s)

    total: 1 errors, 3 warnings, 0 checks, 103 lines checked


> 
> diff --git a/drivers/net/pcap/rte_eth_pcap.c
> b/drivers/net/pcap/rte_eth_pcap.c index 682628f..0fd04b5 100644
> --- a/drivers/net/pcap/rte_eth_pcap.c
> +++ b/drivers/net/pcap/rte_eth_pcap.c
> ...
>  	if (unlikely(pcap_q->pcap == NULL || nb_pkts == 0))
>  		return 0;
> @@ -222,6 +225,7 @@ eth_pcap_rx(void *queue,
>  			rte_memcpy(rte_pktmbuf_mtod(mbuf, void *), packet,
>  					header.len);
>  			mbuf->data_len = (uint16_t)header.len;
> +			bytes_rx += header.len;

This looks like it should be outside the if() statement to calculate the RX bytes for both normal and (non-error) jumbo frames.


>  		} else {
>  			/* Try read jumbo frame into multi mbufs. */
>  			if (unlikely(eth_pcap_rx_jumbo(pcap_q->mb_pool,
> @@ -237,6 +241,7 @@ eth_pcap_rx(void *queue,
>  		num_rx++;
>  	}
>  	pcap_q->rx_pkts += num_rx;
> +	pcap_q->rx_bytes += bytes_rx;

Rename bytes_rx to rx_bytes for consistency with the existing member name.


>  	/*
> @@ -306,6 +313,7 @@ eth_pcap_tx_dumper(void *queue,
>  	 */
>  	pcap_dump_flush(dumper_q->dumper);
>  	dumper_q->tx_pkts += num_tx;
> +	dumper_q->tx_bytes += bytes_tx;

Rename bytes_tx, same as previous comment.

Also, this code needs to be added to eth_pcap_tx() as well. The is one RX code path but there are two TX code paths (for writing to a file and to an interface).


>  	dumper_q->err_pkts += nb_pkts - num_tx;
>  	return num_tx;
>  }
> @@ -499,25 +507,32 @@ eth_stats_get(struct rte_eth_dev *dev,
>  		struct rte_eth_stats *igb_stats)
>  {
>  	unsigned i;
> -	unsigned long rx_total = 0, tx_total = 0, tx_err_total = 0;
> +	unsigned long rx_total = 0, rx_b_total = 0;
> +	unsigned long tx_total = 0, tx_err_total = 0, tx_b_total = 0;

The rx_b_total and tx_b_total variable names aren't very clear. Call them rx_bytes_total and tx_bytes_total. In general try to keep the variable names consistent with the existing code.

Also, this would be better to align the rx and tx variables:

	unsigned long rx_total = 0, rx_bytes_total = 0;
	unsigned long tx_total = 0, tx_bytes_total = 0, tx_err_total = 0;

Also, it would probably be best to rename rx/tx_total to rx/tx_packets_total (and the tx_err_total) in this function since there are now two types of totals. That would make code like this clearer:

-	igb_stats->opackets = tx_total;
-	igb_stats->obytes = tx_b_total;

+	igb_stats->opackets = tx_packets_total;
+	igb_stats->obytes = tx_bytes_total;

John.
-- 




More information about the dev mailing list