[v3] net/ixgbe: include QPRDC in imissed stat

Message ID 20200519050807.21730-1-codh@amazon.com (mailing list archive)
State Changes Requested, archived
Delegated to: Qi Zhang
Headers
Series [v3] net/ixgbe: include QPRDC in imissed stat |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK
ci/travis-robot success Travis build: passed
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-nxp-Performance success Performance Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS

Commit Message

Harris, Cody May 19, 2020, 5:08 a.m. UTC
  The ixgbe imissed statstic originally only contained dropped packets
counted by the RXMPC registers. This change includes additional types of
packet drops counted by the QPRDC registers.

Intel support confimed that the packet drops counted by the QPRDC registers
do not double-count drops counted by RXMPC registers:

"RXMPC counts packets that are dropped because there is no room in the
internal packet buffer.  QPRDC counts packets that are dropped because they
can't be transferred to system memory. These packets have been stored in
the internal packet buffer, so there should be no overlap with RXMPC."

Signed-off-by: Cody Harris <codh@amazon.com>
---
 drivers/net/ixgbe/ixgbe_ethdev.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Harris, Cody May 19, 2020, 5:09 a.m. UTC | #1
Sorry about all the revisions, I hit some style issues I didn't know about.

Be nice, it's my first time contributing anything :)

-Cody

On 5/18/20, 10:08 PM, "Cody Harris" <codh@amazon.com> wrote:

    The ixgbe imissed statstic originally only contained dropped packets
    counted by the RXMPC registers. This change includes additional types of
    packet drops counted by the QPRDC registers.
    
    Intel support confimed that the packet drops counted by the QPRDC registers
    do not double-count drops counted by RXMPC registers:
    
    "RXMPC counts packets that are dropped because there is no room in the
    internal packet buffer.  QPRDC counts packets that are dropped because they
    can't be transferred to system memory. These packets have been stored in
    the internal packet buffer, so there should be no overlap with RXMPC."
    
    Signed-off-by: Cody Harris <codh@amazon.com>
    ---
     drivers/net/ixgbe/ixgbe_ethdev.c | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
    index a4e5c539d..7284ca28e 100644
    --- a/drivers/net/ixgbe/ixgbe_ethdev.c
    +++ b/drivers/net/ixgbe/ixgbe_ethdev.c
    @@ -3366,7 +3366,7 @@ ixgbe_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)
     	}
     
     	/* Rx Errors */
    -	stats->imissed  = total_missed_rx;
    +	stats->imissed  = total_missed_rx + total_qprdc;
     	stats->ierrors  = hw_stats->crcerrs +
     			  hw_stats->mspdc +
     			  hw_stats->rlec +
    -- 
    2.24.1.AMZN
  
Zhao1, Wei May 28, 2020, 3:53 a.m. UTC | #2
HI,Cody Harris

> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Cody Harris
> Sent: Tuesday, May 19, 2020 1:08 PM
> To: dev@dpdk.org
> Cc: Cody Harris <codh@amazon.com>
> Subject: [dpdk-dev] [PATCH v3] net/ixgbe: include QPRDC in imissed stat
> 
> The ixgbe imissed statstic originally only contained dropped packets counted by
> the RXMPC registers. This change includes additional types of packet drops
> counted by the QPRDC registers.
> 
> Intel support confimed that the packet drops counted by the QPRDC registers
> do not double-count drops counted by RXMPC registers:
> 
> "RXMPC counts packets that are dropped because there is no room in the
> internal packet buffer.  QPRDC counts packets that are dropped because they
> can't be transferred to system memory. These packets have been stored in the
> internal packet buffer, so there should be no overlap with RXMPC."
> 
> Signed-off-by: Cody Harris <codh@amazon.com>
> ---
>  drivers/net/ixgbe/ixgbe_ethdev.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c
> b/drivers/net/ixgbe/ixgbe_ethdev.c
> index a4e5c539d..7284ca28e 100644
> --- a/drivers/net/ixgbe/ixgbe_ethdev.c
> +++ b/drivers/net/ixgbe/ixgbe_ethdev.c
> @@ -3366,7 +3366,7 @@ ixgbe_dev_stats_get(struct rte_eth_dev *dev,
> struct rte_eth_stats *stats)
>  	}
> 
>  	/* Rx Errors */
> -	stats->imissed  = total_missed_rx;
> +	stats->imissed  = total_missed_rx + total_qprdc;

If Rx queue is disabled in the RXDCTL register, packet direct to this queue is also dropped and count by this 
Register QPRDC, but the definition of imissed is "Total of RX packets dropped by the HW because there are no available buffer" in rte layer.
So, it maybe mislead users if we mix the 2 statistic, is that so?
Also, x550 has other definition for this register, we can not mix them.


>  	stats->ierrors  = hw_stats->crcerrs +
>  			  hw_stats->mspdc +
>  			  hw_stats->rlec +
> --
> 2.24.1.AMZN
  
Zhao1, Wei May 28, 2020, 8:09 a.m. UTC | #3
Hi, Cody Harris

  More info, you can get the number of dropped packet per queue by stats->q_errors, 
No need to add this into imissed.

> -----Original Message-----
> From: Zhao1, Wei
> Sent: Thursday, May 28, 2020 11:54 AM
> To: Cody Harris <codh@amazon.com>; dev@dpdk.org
> Subject: RE: [dpdk-dev] [PATCH v3] net/ixgbe: include QPRDC in imissed stat
> 
> HI,Cody Harris
> 
> > -----Original Message-----
> > From: dev <dev-bounces@dpdk.org> On Behalf Of Cody Harris
> > Sent: Tuesday, May 19, 2020 1:08 PM
> > To: dev@dpdk.org
> > Cc: Cody Harris <codh@amazon.com>
> > Subject: [dpdk-dev] [PATCH v3] net/ixgbe: include QPRDC in imissed
> > stat
> >
> > The ixgbe imissed statstic originally only contained dropped packets
> > counted by the RXMPC registers. This change includes additional types
> > of packet drops counted by the QPRDC registers.
> >
> > Intel support confimed that the packet drops counted by the QPRDC
> > registers do not double-count drops counted by RXMPC registers:
> >
> > "RXMPC counts packets that are dropped because there is no room in the
> > internal packet buffer.  QPRDC counts packets that are dropped because
> > they can't be transferred to system memory. These packets have been
> > stored in the internal packet buffer, so there should be no overlap with
> RXMPC."
> >
> > Signed-off-by: Cody Harris <codh@amazon.com>
> > ---
> >  drivers/net/ixgbe/ixgbe_ethdev.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c
> > b/drivers/net/ixgbe/ixgbe_ethdev.c
> > index a4e5c539d..7284ca28e 100644
> > --- a/drivers/net/ixgbe/ixgbe_ethdev.c
> > +++ b/drivers/net/ixgbe/ixgbe_ethdev.c
> > @@ -3366,7 +3366,7 @@ ixgbe_dev_stats_get(struct rte_eth_dev *dev,
> > struct rte_eth_stats *stats)
> >  	}
> >
> >  	/* Rx Errors */
> > -	stats->imissed  = total_missed_rx;
> > +	stats->imissed  = total_missed_rx + total_qprdc;
> 
> If Rx queue is disabled in the RXDCTL register, packet direct to this queue is
> also dropped and count by this Register QPRDC, but the definition of imissed is
> "Total of RX packets dropped by the HW because there are no available buffer"
> in rte layer.
> So, it maybe mislead users if we mix the 2 statistic, is that so?
> Also, x550 has other definition for this register, we can not mix them.
> 
> 
> >  	stats->ierrors  = hw_stats->crcerrs +
> >  			  hw_stats->mspdc +
> >  			  hw_stats->rlec +
> > --
> > 2.24.1.AMZN
  
Harris, Cody May 28, 2020, 8:17 a.m. UTC | #4
Hi Zhao Wei,

I understand that the QPRDC drop count is available by stats->q_errors. I'm interested to know why imissed doesn't include it. The name imissed makes it sound like the counter counts incoming missed (valid) packets regardless of where the drop occurs during reception.

I think the name imissed is misleading if it doesn't include all types of dropped valid packets, so I made this CR to see how receptive the DPDK maintainers would be to include all dropped packet counts.

Thanks for your review,

~Cody

On 5/28/20, 1:10 AM, "Zhao1, Wei" <wei.zhao1@intel.com> wrote:

    CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you can confirm the sender and know the content is safe.
    
    
    
    Hi, Cody Harris
    
      More info, you can get the number of dropped packet per queue by stats->q_errors,
    No need to add this into imissed.
    
    > -----Original Message-----
    > From: Zhao1, Wei
    > Sent: Thursday, May 28, 2020 11:54 AM
    > To: Cody Harris <codh@amazon.com>; dev@dpdk.org
    > Subject: RE: [dpdk-dev] [PATCH v3] net/ixgbe: include QPRDC in imissed stat
    >
    > HI,Cody Harris
    >
    > > -----Original Message-----
    > > From: dev <dev-bounces@dpdk.org> On Behalf Of Cody Harris
    > > Sent: Tuesday, May 19, 2020 1:08 PM
    > > To: dev@dpdk.org
    > > Cc: Cody Harris <codh@amazon.com>
    > > Subject: [dpdk-dev] [PATCH v3] net/ixgbe: include QPRDC in imissed
    > > stat
    > >
    > > The ixgbe imissed statstic originally only contained dropped packets
    > > counted by the RXMPC registers. This change includes additional types
    > > of packet drops counted by the QPRDC registers.
    > >
    > > Intel support confimed that the packet drops counted by the QPRDC
    > > registers do not double-count drops counted by RXMPC registers:
    > >
    > > "RXMPC counts packets that are dropped because there is no room in the
    > > internal packet buffer.  QPRDC counts packets that are dropped because
    > > they can't be transferred to system memory. These packets have been
    > > stored in the internal packet buffer, so there should be no overlap with
    > RXMPC."
    > >
    > > Signed-off-by: Cody Harris <codh@amazon.com>
    > > ---
    > >  drivers/net/ixgbe/ixgbe_ethdev.c | 2 +-
    > >  1 file changed, 1 insertion(+), 1 deletion(-)
    > >
    > > diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c
    > > b/drivers/net/ixgbe/ixgbe_ethdev.c
    > > index a4e5c539d..7284ca28e 100644
    > > --- a/drivers/net/ixgbe/ixgbe_ethdev.c
    > > +++ b/drivers/net/ixgbe/ixgbe_ethdev.c
    > > @@ -3366,7 +3366,7 @@ ixgbe_dev_stats_get(struct rte_eth_dev *dev,
    > > struct rte_eth_stats *stats)
    > >     }
    > >
    > >     /* Rx Errors */
    > > -   stats->imissed  = total_missed_rx;
    > > +   stats->imissed  = total_missed_rx + total_qprdc;
    >
    > If Rx queue is disabled in the RXDCTL register, packet direct to this queue is
    > also dropped and count by this Register QPRDC, but the definition of imissed is
    > "Total of RX packets dropped by the HW because there are no available buffer"
    > in rte layer.
    > So, it maybe mislead users if we mix the 2 statistic, is that so?
    > Also, x550 has other definition for this register, we can not mix them.
    >
    >
    > >     stats->ierrors  = hw_stats->crcerrs +
    > >                       hw_stats->mspdc +
    > >                       hw_stats->rlec +
    > > --
    > > 2.24.1.AMZN
  
Zhao1, Wei May 28, 2020, 9:43 a.m. UTC | #5
Hi, Harris, Cody

  I have reply in other mail for " why imissed doesn't include it ", thanks.

> -----Original Message-----
> From: Harris, Cody <codh@amazon.com>
> Sent: Thursday, May 28, 2020 4:17 PM
> To: Zhao1, Wei <wei.zhao1@intel.com>; dev@dpdk.org
> Cc: Ye, Xiaolong <xiaolong.ye@intel.com>; Guo, Jia <jia.guo@intel.com>
> Subject: Re: [dpdk-dev] [PATCH v3] net/ixgbe: include QPRDC in imissed stat
> 
> Hi Zhao Wei,
> 
> I understand that the QPRDC drop count is available by stats->q_errors. I'm
> interested to know why imissed doesn't include it. The name imissed makes it
> sound like the counter counts incoming missed (valid) packets regardless of
> where the drop occurs during reception.
> 
> I think the name imissed is misleading if it doesn't include all types of dropped
> valid packets, so I made this CR to see how receptive the DPDK maintainers
> would be to include all dropped packet counts.
> 
> Thanks for your review,
> 
> ~Cody
> 
> On 5/28/20, 1:10 AM, "Zhao1, Wei" <wei.zhao1@intel.com> wrote:
> 
>     CAUTION: This email originated from outside of the organization. Do not
> click links or open attachments unless you can confirm the sender and know the
> content is safe.
> 
> 
> 
>     Hi, Cody Harris
> 
>       More info, you can get the number of dropped packet per queue by
> stats->q_errors,
>     No need to add this into imissed.
> 
>     > -----Original Message-----
>     > From: Zhao1, Wei
>     > Sent: Thursday, May 28, 2020 11:54 AM
>     > To: Cody Harris <codh@amazon.com>; dev@dpdk.org
>     > Subject: RE: [dpdk-dev] [PATCH v3] net/ixgbe: include QPRDC in imissed
> stat
>     >
>     > HI,Cody Harris
>     >
>     > > -----Original Message-----
>     > > From: dev <dev-bounces@dpdk.org> On Behalf Of Cody Harris
>     > > Sent: Tuesday, May 19, 2020 1:08 PM
>     > > To: dev@dpdk.org
>     > > Cc: Cody Harris <codh@amazon.com>
>     > > Subject: [dpdk-dev] [PATCH v3] net/ixgbe: include QPRDC in imissed
>     > > stat
>     > >
>     > > The ixgbe imissed statstic originally only contained dropped packets
>     > > counted by the RXMPC registers. This change includes additional types
>     > > of packet drops counted by the QPRDC registers.
>     > >
>     > > Intel support confimed that the packet drops counted by the QPRDC
>     > > registers do not double-count drops counted by RXMPC registers:
>     > >
>     > > "RXMPC counts packets that are dropped because there is no room in
> the
>     > > internal packet buffer.  QPRDC counts packets that are dropped
> because
>     > > they can't be transferred to system memory. These packets have been
>     > > stored in the internal packet buffer, so there should be no overlap with
>     > RXMPC."
>     > >
>     > > Signed-off-by: Cody Harris <codh@amazon.com>
>     > > ---
>     > >  drivers/net/ixgbe/ixgbe_ethdev.c | 2 +-
>     > >  1 file changed, 1 insertion(+), 1 deletion(-)
>     > >
>     > > diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c
>     > > b/drivers/net/ixgbe/ixgbe_ethdev.c
>     > > index a4e5c539d..7284ca28e 100644
>     > > --- a/drivers/net/ixgbe/ixgbe_ethdev.c
>     > > +++ b/drivers/net/ixgbe/ixgbe_ethdev.c
>     > > @@ -3366,7 +3366,7 @@ ixgbe_dev_stats_get(struct rte_eth_dev
> *dev,
>     > > struct rte_eth_stats *stats)
>     > >     }
>     > >
>     > >     /* Rx Errors */
>     > > -   stats->imissed  = total_missed_rx;
>     > > +   stats->imissed  = total_missed_rx + total_qprdc;
>     >
>     > If Rx queue is disabled in the RXDCTL register, packet direct to this
> queue is
>     > also dropped and count by this Register QPRDC, but the definition of
> imissed is
>     > "Total of RX packets dropped by the HW because there are no available
> buffer"
>     > in rte layer.
>     > So, it maybe mislead users if we mix the 2 statistic, is that so?
>     > Also, x550 has other definition for this register, we can not mix them.
>     >
>     >
>     > >     stats->ierrors  = hw_stats->crcerrs +
>     > >                       hw_stats->mspdc +
>     > >                       hw_stats->rlec +
>     > > --
>     > > 2.24.1.AMZN
> 
>
  

Patch

diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
index a4e5c539d..7284ca28e 100644
--- a/drivers/net/ixgbe/ixgbe_ethdev.c
+++ b/drivers/net/ixgbe/ixgbe_ethdev.c
@@ -3366,7 +3366,7 @@  ixgbe_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)
 	}
 
 	/* Rx Errors */
-	stats->imissed  = total_missed_rx;
+	stats->imissed  = total_missed_rx + total_qprdc;
 	stats->ierrors  = hw_stats->crcerrs +
 			  hw_stats->mspdc +
 			  hw_stats->rlec +