[5/8] net/kni: do not count unsent packets as errors

Message ID 1564046068-21905-6-git-send-email-david.marchand@redhat.com (mailing list archive)
State Changes Requested, archived
Delegated to: Ferruh Yigit
Headers
Series oerrors stats fixes for virtual pmds |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

David Marchand July 25, 2019, 9:14 a.m. UTC
  err_pkts reflects the number of packets that the driver did not manage to
send.
This is a temporary situation, those packets are not freed and the
application can still retry to send them later.
Hence, we can't count them as transmit failed.

Fixes: 75e2bc54c018 ("net/kni: add KNI PMD")
Cc: stable@dpdk.org

Signed-off-by: David Marchand <david.marchand@redhat.com>
---
 drivers/net/kni/rte_eth_kni.c | 3 ---
 1 file changed, 3 deletions(-)
  

Comments

Ferruh Yigit July 25, 2019, 4:12 p.m. UTC | #1
On 7/25/2019 10:14 AM, David Marchand wrote:
> err_pkts reflects the number of packets that the driver did not manage to
> send.
> This is a temporary situation, those packets are not freed and the
> application can still retry to send them later.
> Hence, we can't count them as transmit failed.

'err_pkts' seems calculated wrong both in Rx & Tx and KNI PMD, looks like we can
remove it completely, what do you think?

> 
> Fixes: 75e2bc54c018 ("net/kni: add KNI PMD")
> Cc: stable@dpdk.org
> 
> Signed-off-by: David Marchand <david.marchand@redhat.com>
> ---
>  drivers/net/kni/rte_eth_kni.c | 3 ---
>  1 file changed, 3 deletions(-)
> 
> diff --git a/drivers/net/kni/rte_eth_kni.c b/drivers/net/kni/rte_eth_kni.c
> index 9e0c6bd..8026566 100644
> --- a/drivers/net/kni/rte_eth_kni.c
> +++ b/drivers/net/kni/rte_eth_kni.c
> @@ -270,7 +270,6 @@ eth_kni_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)
>  	unsigned long rx_packets_total = 0, rx_bytes_total = 0;
>  	unsigned long tx_packets_total = 0, tx_bytes_total = 0;
>  	struct rte_eth_dev_data *data = dev->data;
> -	unsigned long tx_packets_err_total = 0;
>  	unsigned int i, num_stats;
>  	struct pmd_queue *q;
>  
> @@ -292,14 +291,12 @@ eth_kni_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)
>  		stats->q_obytes[i] = q->tx.bytes;
>  		tx_packets_total += stats->q_opackets[i];
>  		tx_bytes_total += stats->q_obytes[i];
> -		tx_packets_err_total += q->tx.err_pkts;
>  	}
>  
>  	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;
>  
>  	return 0;
>  }
>
  
David Marchand July 25, 2019, 7:07 p.m. UTC | #2
On Thu, Jul 25, 2019 at 6:12 PM Ferruh Yigit <ferruh.yigit@intel.com> wrote:
>
> On 7/25/2019 10:14 AM, David Marchand wrote:
> > err_pkts reflects the number of packets that the driver did not manage to
> > send.
> > This is a temporary situation, those packets are not freed and the
> > application can still retry to send them later.
> > Hence, we can't count them as transmit failed.
>
> 'err_pkts' seems calculated wrong both in Rx & Tx and KNI PMD, looks like we can
> remove it completely, what do you think?

On the rx side, I agree that err_pkts makes little sense.
On the tx side, it can be seen as a "tx full" counter.

So not sure about the tx side, but I sure can remove the rx part (in a
separate patch?).
  
David Marchand July 26, 2019, 7:24 a.m. UTC | #3
On Thu, Jul 25, 2019 at 9:07 PM David Marchand
<david.marchand@redhat.com> wrote:
>
> On Thu, Jul 25, 2019 at 6:12 PM Ferruh Yigit <ferruh.yigit@intel.com> wrote:
> >
> > On 7/25/2019 10:14 AM, David Marchand wrote:
> > > err_pkts reflects the number of packets that the driver did not manage to
> > > send.
> > > This is a temporary situation, those packets are not freed and the
> > > application can still retry to send them later.
> > > Hence, we can't count them as transmit failed.
> >
> > 'err_pkts' seems calculated wrong both in Rx & Tx and KNI PMD, looks like we can
> > remove it completely, what do you think?
>
> On the rx side, I agree that err_pkts makes little sense.
> On the tx side, it can be seen as a "tx full" counter.
>
> So not sure about the tx side, but I sure can remove the rx part (in a
> separate patch?).

On second thought, we have nothing to report "tx full" for now (unless
adding xstats support but it is too late for 19.08).
I will go with dropping those bits if you are still okay with this
(and idem with the others drivers for which you commented in the same
way).
  
Ferruh Yigit July 26, 2019, 10:17 a.m. UTC | #4
On 7/26/2019 8:24 AM, David Marchand wrote:
> On Thu, Jul 25, 2019 at 9:07 PM David Marchand
> <david.marchand@redhat.com> wrote:
>>
>> On Thu, Jul 25, 2019 at 6:12 PM Ferruh Yigit <ferruh.yigit@intel.com> wrote:
>>>
>>> On 7/25/2019 10:14 AM, David Marchand wrote:
>>>> err_pkts reflects the number of packets that the driver did not manage to
>>>> send.
>>>> This is a temporary situation, those packets are not freed and the
>>>> application can still retry to send them later.
>>>> Hence, we can't count them as transmit failed.
>>>
>>> 'err_pkts' seems calculated wrong both in Rx & Tx and KNI PMD, looks like we can
>>> remove it completely, what do you think?
>>
>> On the rx side, I agree that err_pkts makes little sense.
>> On the tx side, it can be seen as a "tx full" counter.
>>
>> So not sure about the tx side, but I sure can remove the rx part (in a
>> separate patch?).
> 
> On second thought, we have nothing to report "tx full" for now (unless
> adding xstats support but it is too late for 19.08).
> I will go with dropping those bits if you are still okay with this

+1 to drop, thanks.

> (and idem with the others drivers for which you commented in the same
> way).
> 
>
  

Patch

diff --git a/drivers/net/kni/rte_eth_kni.c b/drivers/net/kni/rte_eth_kni.c
index 9e0c6bd..8026566 100644
--- a/drivers/net/kni/rte_eth_kni.c
+++ b/drivers/net/kni/rte_eth_kni.c
@@ -270,7 +270,6 @@  eth_kni_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)
 	unsigned long rx_packets_total = 0, rx_bytes_total = 0;
 	unsigned long tx_packets_total = 0, tx_bytes_total = 0;
 	struct rte_eth_dev_data *data = dev->data;
-	unsigned long tx_packets_err_total = 0;
 	unsigned int i, num_stats;
 	struct pmd_queue *q;
 
@@ -292,14 +291,12 @@  eth_kni_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)
 		stats->q_obytes[i] = q->tx.bytes;
 		tx_packets_total += stats->q_opackets[i];
 		tx_bytes_total += stats->q_obytes[i];
-		tx_packets_err_total += q->tx.err_pkts;
 	}
 
 	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;
 
 	return 0;
 }