[dpdk-dev,4/4] fm10k: remove crc size from all byte counters

Message ID 1447670117-17723-5-git-send-email-harry.van.haaren@intel.com (mailing list archive)
State Superseded, archived
Headers

Commit Message

Van Haaren, Harry Nov. 16, 2015, 10:35 a.m. UTC
  This patch removes the crc bytes from byte counter statistics.

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
---
 drivers/net/fm10k/fm10k_ethdev.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)
  

Comments

Michael Qiu Nov. 17, 2015, 1:23 a.m. UTC | #1
Hi, Harry

Have you ever tested this patch by yourself?

fm10k's stats should already remove the crc bytes by default.

After your patch applied, if send a packet without vlan(64 bytes),
we expect receive 60 bytes, but it will disappoint you, that only
56 bytes shows in system.

Thanks,
Michael

On 2015/11/16 18:36, Harry van Haaren wrote:
> This patch removes the crc bytes from byte counter statistics.
>
> Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
> ---
>  drivers/net/fm10k/fm10k_ethdev.c | 8 +++++---
>  1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/fm10k/fm10k_ethdev.c b/drivers/net/fm10k/fm10k_ethdev.c
> index 441f713..fdb2e81 100644
> --- a/drivers/net/fm10k/fm10k_ethdev.c
> +++ b/drivers/net/fm10k/fm10k_ethdev.c
> @@ -1183,11 +1183,13 @@ fm10k_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)
>  
>  	ipackets = opackets = ibytes = obytes = 0;
>  	for (i = 0; (i < RTE_ETHDEV_QUEUE_STAT_CNTRS) &&
> -		(i < hw->mac.max_queues); ++i) {
> +			(i < hw->mac.max_queues); ++i) {
>  		stats->q_ipackets[i] = hw_stats->q[i].rx_packets.count;
>  		stats->q_opackets[i] = hw_stats->q[i].tx_packets.count;
> -		stats->q_ibytes[i]   = hw_stats->q[i].rx_bytes.count;
> -		stats->q_obytes[i]   = hw_stats->q[i].tx_bytes.count;
> +		stats->q_ibytes[i]   = hw_stats->q[i].rx_bytes.count -
> +			(stats->q_ipackets[i] * 4);
> +		stats->q_obytes[i]   = hw_stats->q[i].tx_bytes.count -
> +			(stats->q_opackets[i] * 4);
>  		ipackets += stats->q_ipackets[i];
>  		opackets += stats->q_opackets[i];
>  		ibytes   += stats->q_ibytes[i];
  

Patch

diff --git a/drivers/net/fm10k/fm10k_ethdev.c b/drivers/net/fm10k/fm10k_ethdev.c
index 441f713..fdb2e81 100644
--- a/drivers/net/fm10k/fm10k_ethdev.c
+++ b/drivers/net/fm10k/fm10k_ethdev.c
@@ -1183,11 +1183,13 @@  fm10k_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)
 
 	ipackets = opackets = ibytes = obytes = 0;
 	for (i = 0; (i < RTE_ETHDEV_QUEUE_STAT_CNTRS) &&
-		(i < hw->mac.max_queues); ++i) {
+			(i < hw->mac.max_queues); ++i) {
 		stats->q_ipackets[i] = hw_stats->q[i].rx_packets.count;
 		stats->q_opackets[i] = hw_stats->q[i].tx_packets.count;
-		stats->q_ibytes[i]   = hw_stats->q[i].rx_bytes.count;
-		stats->q_obytes[i]   = hw_stats->q[i].tx_bytes.count;
+		stats->q_ibytes[i]   = hw_stats->q[i].rx_bytes.count -
+			(stats->q_ipackets[i] * 4);
+		stats->q_obytes[i]   = hw_stats->q[i].tx_bytes.count -
+			(stats->q_opackets[i] * 4);
 		ipackets += stats->q_ipackets[i];
 		opackets += stats->q_opackets[i];
 		ibytes   += stats->q_ibytes[i];