[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 --- 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
[dpdk-dev] [PATCH v3] i40e: fixed tx packets stats bug
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 -- Thomas 2014-11-21 16:07, zhida zang: > v3 changes: > -updated commit log > -fixed the bug that stats data can't be cleared > > Signed-off-by: Zhida Zang > --- > lib/librte_pmd_i40e/i40e_ethdev.c | 10 +++--- > 1 file changed, 7 insertions(+), 3 deletions(-)
[dpdk-dev] [PATCH v3] i40e: fixed tx packets stats bug
> -Original Message- > From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of zhida zang > Sent: Friday, November 21, 2014 4:07 PM > To: dev at 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 > --- > 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
[dpdk-dev] [PATCH v3] i40e: fixed tx packets stats bug
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 at dpdk.org] On Behalf Of zhida zang > Sent: Friday, November 21, 2014 4:07 PM > To: dev at 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 > --- > 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