Subject: Re: [PATCH] mpc52xx: Correct calculation of FEC RX errors.

From: Sylvain Munaut <[email-masked]>
Date: Mon, 28 May 2007 21:04:30 +0200

Nice catch,
I knew something was wrong ( 4 billion errors ;) but I never bothered to
look
it up.

Sylvain

Grzegorz Bernacki wrote:
> 'ifconfig eth0' command for mpc5200B-based cards shows error for RX.
> However none of RX MIB counters is set to value greater than zero.
> Number of errors is equal to number of multicast packet. In linux 2.4
> calculation of RX errors is slightly different and takes into account
> number of multicast packet. This change is a port of calculation method
> of RX errors for FEC controller from linux 2.4 to 2.6.
>
> Signed-off-by: Grzegorz Bernacki <[email-masked]>
> ---
>
>  drivers/net/fec_mpc52xx/fec.c |    4 +++-
>  1 files changed, 3 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/net/fec_mpc52xx/fec.c b/drivers/net/fec_mpc52xx/fec.c
> index f0ce87e..d2087f6 100644
> --- a/drivers/net/fec_mpc52xx/fec.c
> +++ b/drivers/net/fec_mpc52xx/fec.c
> @@ -395,7 +395,9 @@ static struct net_device_stats *fec_get_stats(struct
> net_device *dev)
>
>         stats->rx_bytes = in_be32(&fec->rmon_r_octets);
>         stats->rx_packets = in_be32(&fec->rmon_r_packets);
> -       stats->rx_errors = stats->rx_packets -
> in_be32(&fec->ieee_r_frame_ok);
> +       stats->rx_errors = stats->rx_packets - (
> +                       in_be32(&fec->ieee_r_frame_ok) +
> +                       in_be32(&fec->rmon_r_mc_pkt));
>         stats->tx_bytes = in_be32(&fec->rmon_t_octets);
>         stats->tx_packets = in_be32(&fec->rmon_t_packets);
>         stats->tx_errors = stats->tx_packets - (
>
> _______________________________________________
> Linuxppc-embedded mailing list
> [email-masked]
> https://ozlabs.org/mailman/listinfo/linuxppc-embedded
>
>