On Fri,  9 Apr 2021 12:03:12 -0700 Tony Nguyen wrote:
> From: Radoslaw Tyl <radoslawx....@intel.com>
> 
> The global rx error does not take into account all the error counters
> that are counted by device.
> 
> Extend rx error with the following counters:
> - illegal byte error
> - number of receive fragment errors
> - receive jabber
> - receive oversize error
> - receive undersize error
> - frames marked as checksum invalid by hardware
> 
> The above were added in order to align statistics with other products.
> 
> Signed-off-by: Radoslaw Tyl <radoslawx....@intel.com>
> Tested-by: Tony Brelinski <tonyx.brelin...@intel.com>
> Signed-off-by: Tony Nguyen <anthony.l.ngu...@intel.com>
> ---
>  drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 11 ++++++++++-
>  1 file changed, 10 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c 
> b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
> index 7ba1c2985ef7..7711828401d9 100644
> --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
> +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
> @@ -7240,12 +7240,21 @@ void ixgbe_update_stats(struct ixgbe_adapter *adapter)
>       hwstats->ptc1023 += IXGBE_READ_REG(hw, IXGBE_PTC1023);
>       hwstats->ptc1522 += IXGBE_READ_REG(hw, IXGBE_PTC1522);
>       hwstats->bptc += IXGBE_READ_REG(hw, IXGBE_BPTC);
> +     hwstats->illerrc += IXGBE_READ_REG(hw, IXGBE_ILLERRC);
>  
>       /* Fill out the OS statistics structure */
>       netdev->stats.multicast = hwstats->mprc;
>  
>       /* Rx Errors */
> -     netdev->stats.rx_errors = hwstats->crcerrs + hwstats->rlec;
> +     netdev->stats.rx_errors = hwstats->crcerrs +
> +                                 hwstats->illerrc +
> +                                 hwstats->rlec +
> +                                 hwstats->rfc +
> +                                 hwstats->rjc +
> +                                 hwstats->roc +
> +                                 hwstats->ruc +

IDK what the HW counts exactly but perhaps rlec includes other
counters? Note that the stats you add with this patch are RFC 2819 /
RMON counters, and AFAIU they overlap with IEEE counters.

If the RMON counters are somehow exclusively counting their events you
should update rx_length_errors as well.

> +                                 hw_csum_rx_error;

AFAICT this is incorrect L4 csum, that's not supposed be counted as NIC
rx_error. Let the appropriate protocol code check this and increment
its own counter.

>       netdev->stats.rx_dropped = 0;
>       netdev->stats.rx_length_errors = hwstats->rlec;
>       netdev->stats.rx_crc_errors = hwstats->crcerrs;

Reply via email to