Skip to contentSkip to conversation

mpc52xx: Correct calculation of FEC RX errors.

PATCH In review Grzegorz Bernacki 2 participants 2 messages May 24, 2007 – May 28, 2007 Network drivers

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 mpc52xx: Correct calculation of FEC RX errors.

'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.

---

 drivers/net/fec_mpc52xx/fec.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)
drivers/net/fec_mpc52xx/fec.c +0 -0
index f0ce87e..d2087f6 100644
@@ -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 - (
#1 lore raw

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

Sylvain

Quoted 37 lines · Grzegorz Bernacki

'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.

---

 drivers/net/fec_mpc52xx/fec.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)
drivers/net/fec_mpc52xx/fec.c +3 -1
index f0ce87e..d2087f6 100644
@@ -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 protected]
https://ozlabs.org/mailman/listinfo/linuxppc-embedded