[dpdk-dev,v3] i40e: fixed tx packets stats bug

Message ID 1416557231-2732-1-git-send-email-zhida.zang@intel.com (mailing list archive)
State Changes Requested, archived
Headers

Commit Message

zzang Nov. 21, 2014, 8:07 a.m. UTC
  v3 changes:
-updated commit log
-fixed the bug that stats data can't be cleared

Signed-off-by: Zhida Zang <zhida.zang@intel.com>
---
 lib/librte_pmd_i40e/i40e_ethdev.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)
  

Comments

Thomas Monjalon Nov. 21, 2014, 10:46 a.m. UTC | #1
Hi Zhida,

I guess you are not familiar with git, because you removed the
commit log in this version.
Other strange thing, there is no uppercase in your name in the
From field, which will be converted in author name. French people
cares about uppercases in names ;)
Last thing: new versions should be sent with --in-reply-to option:
	http://dpdk.org/dev#send
  
Jijiang Liu Nov. 21, 2014, 12:28 p.m. UTC | #2
> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of zhida zang
> Sent: Friday, November 21, 2014 4:07 PM
> To: dev@dpdk.org
> Subject: [dpdk-dev] [PATCH v3] i40e: fixed tx packets stats bug
> 
> v3 changes:
> -updated commit log
> -fixed the bug that stats data can't be cleared
> 
> Signed-off-by: Zhida Zang <zhida.zang@intel.com>
> ---
>  lib/librte_pmd_i40e/i40e_ethdev.c | 10 +++++++---
>  1 file changed, 7 insertions(+), 3 deletions(-)
> 
> diff --git a/lib/librte_pmd_i40e/i40e_ethdev.c
> b/lib/librte_pmd_i40e/i40e_ethdev.c
> index 4b7a827..c1ea37e 100644
> --- a/lib/librte_pmd_i40e/i40e_ethdev.c
> +++ b/lib/librte_pmd_i40e/i40e_ethdev.c
> @@ -1102,6 +1102,7 @@ i40e_dev_stats_get(struct rte_eth_dev *dev, struct
> rte_eth_stats *stats)
>  	struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data-
> >dev_private);
>  	struct i40e_hw_port_stats *ns = &pf->stats; /* new stats */
>  	struct i40e_hw_port_stats *os = &pf->stats_offset; /* old stats */
> +	struct i40e_eth_stats *ves = &pf->main_vsi->eth_stats; /* vsi stats */
> 
>  	/* Get statistics of struct i40e_eth_stats */
>  	i40e_stat_update_48(hw, I40E_GLPRT_GORCH(hw->port), @@ -1277,15
> +1278,18 @@ i40e_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats
> *stats)
>  	/* GLPRT_MSPDC not supported */
>  	/* GLPRT_XEC not supported */
> 
> -	pf->offset_loaded = true;
> -
>  	if (pf->main_vsi)
>  		i40e_update_vsi_stats(pf->main_vsi);
> 
>  	stats->ipackets = ns->eth.rx_unicast + ns->eth.rx_multicast +
>  						ns->eth.rx_broadcast;
> -	stats->opackets = ns->eth.tx_unicast + ns->eth.tx_multicast +
> +	if (pf->offset_loaded)
> +		stats->opackets = ves->tx_unicast + ves->tx_multicast +
> +						ves->tx_broadcast;
> +	else
> +		stats->opackets = ns->eth.tx_unicast + ns->eth.tx_multicast +
>  						ns->eth.tx_broadcast;
> +	pf->offset_loaded = true;
>  	stats->ibytes   = ns->eth.rx_bytes;
>  	stats->obytes   = ns->eth.tx_bytes;
>  	stats->oerrors  = ns->eth.tx_errors;
> --
> 1.9.3

Acked-by: Jijiang Liu <Jijiang.liu@intel.com>
  
Zhang, Helin Nov. 24, 2014, 4 a.m. UTC | #3
Hi Zhida

Please rework your patch and send a new version according to the comments from Thomas! Commit log was missed in your patch.

Regards,
Helin

> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of zhida zang
> Sent: Friday, November 21, 2014 4:07 PM
> To: dev@dpdk.org
> Subject: [dpdk-dev] [PATCH v3] i40e: fixed tx packets stats bug
> 
> v3 changes:
> -updated commit log
> -fixed the bug that stats data can't be cleared
> 
> Signed-off-by: Zhida Zang <zhida.zang@intel.com>
> ---
>  lib/librte_pmd_i40e/i40e_ethdev.c | 10 +++++++---
>  1 file changed, 7 insertions(+), 3 deletions(-)
> 
> diff --git a/lib/librte_pmd_i40e/i40e_ethdev.c
> b/lib/librte_pmd_i40e/i40e_ethdev.c
> index 4b7a827..c1ea37e 100644
> --- a/lib/librte_pmd_i40e/i40e_ethdev.c
> +++ b/lib/librte_pmd_i40e/i40e_ethdev.c
> @@ -1102,6 +1102,7 @@ i40e_dev_stats_get(struct rte_eth_dev *dev, struct
> rte_eth_stats *stats)
>  	struct i40e_hw *hw =
> I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private);
>  	struct i40e_hw_port_stats *ns = &pf->stats; /* new stats */
>  	struct i40e_hw_port_stats *os = &pf->stats_offset; /* old stats */
> +	struct i40e_eth_stats *ves = &pf->main_vsi->eth_stats; /* vsi stats */
> 
>  	/* Get statistics of struct i40e_eth_stats */
>  	i40e_stat_update_48(hw, I40E_GLPRT_GORCH(hw->port), @@ -1277,15
> +1278,18 @@ i40e_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats
> *stats)
>  	/* GLPRT_MSPDC not supported */
>  	/* GLPRT_XEC not supported */
> 
> -	pf->offset_loaded = true;
> -
>  	if (pf->main_vsi)
>  		i40e_update_vsi_stats(pf->main_vsi);
> 
>  	stats->ipackets = ns->eth.rx_unicast + ns->eth.rx_multicast +
>  						ns->eth.rx_broadcast;
> -	stats->opackets = ns->eth.tx_unicast + ns->eth.tx_multicast +
> +	if (pf->offset_loaded)
> +		stats->opackets = ves->tx_unicast + ves->tx_multicast +
> +						ves->tx_broadcast;
> +	else
> +		stats->opackets = ns->eth.tx_unicast + ns->eth.tx_multicast +
>  						ns->eth.tx_broadcast;
> +	pf->offset_loaded = true;
>  	stats->ibytes   = ns->eth.rx_bytes;
>  	stats->obytes   = ns->eth.tx_bytes;
>  	stats->oerrors  = ns->eth.tx_errors;
> --
> 1.9.3
  

Patch

diff --git a/lib/librte_pmd_i40e/i40e_ethdev.c b/lib/librte_pmd_i40e/i40e_ethdev.c
index 4b7a827..c1ea37e 100644
--- a/lib/librte_pmd_i40e/i40e_ethdev.c
+++ b/lib/librte_pmd_i40e/i40e_ethdev.c
@@ -1102,6 +1102,7 @@  i40e_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)
 	struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private);
 	struct i40e_hw_port_stats *ns = &pf->stats; /* new stats */
 	struct i40e_hw_port_stats *os = &pf->stats_offset; /* old stats */
+	struct i40e_eth_stats *ves = &pf->main_vsi->eth_stats; /* vsi stats */
 
 	/* Get statistics of struct i40e_eth_stats */
 	i40e_stat_update_48(hw, I40E_GLPRT_GORCH(hw->port),
@@ -1277,15 +1278,18 @@  i40e_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)
 	/* GLPRT_MSPDC not supported */
 	/* GLPRT_XEC not supported */
 
-	pf->offset_loaded = true;
-
 	if (pf->main_vsi)
 		i40e_update_vsi_stats(pf->main_vsi);
 
 	stats->ipackets = ns->eth.rx_unicast + ns->eth.rx_multicast +
 						ns->eth.rx_broadcast;
-	stats->opackets = ns->eth.tx_unicast + ns->eth.tx_multicast +
+	if (pf->offset_loaded)
+		stats->opackets = ves->tx_unicast + ves->tx_multicast +
+						ves->tx_broadcast;
+	else
+		stats->opackets = ns->eth.tx_unicast + ns->eth.tx_multicast +
 						ns->eth.tx_broadcast;
+	pf->offset_loaded = true;
 	stats->ibytes   = ns->eth.rx_bytes;
 	stats->obytes   = ns->eth.tx_bytes;
 	stats->oerrors  = ns->eth.tx_errors;