Commit 302476c9 authored by Paulius Zaleckas's avatar Paulius Zaleckas Committed by David S. Miller

mv643xx_eth: Add Rx Discard and Rx Overrun statistics

These statistics helped me a lot while searching who is losing
packets in my setup.
I added these stats to MIB group since they are very similar,
but just in other registers.
I have tested this patch on 88F6281 SoC.
Signed-off-by: default avatarPaulius Zaleckas <paulius.zaleckas@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 44151acb
...@@ -136,6 +136,8 @@ static char mv643xx_eth_driver_version[] = "1.4"; ...@@ -136,6 +136,8 @@ static char mv643xx_eth_driver_version[] = "1.4";
#define INT_MASK 0x0068 #define INT_MASK 0x0068
#define INT_MASK_EXT 0x006c #define INT_MASK_EXT 0x006c
#define TX_FIFO_URGENT_THRESHOLD 0x0074 #define TX_FIFO_URGENT_THRESHOLD 0x0074
#define RX_DISCARD_FRAME_CNT 0x0084
#define RX_OVERRUN_FRAME_CNT 0x0088
#define TXQ_FIX_PRIO_CONF_MOVED 0x00dc #define TXQ_FIX_PRIO_CONF_MOVED 0x00dc
#define TX_BW_RATE_MOVED 0x00e0 #define TX_BW_RATE_MOVED 0x00e0
#define TX_BW_MTU_MOVED 0x00e8 #define TX_BW_MTU_MOVED 0x00e8
...@@ -334,6 +336,9 @@ struct mib_counters { ...@@ -334,6 +336,9 @@ struct mib_counters {
u32 bad_crc_event; u32 bad_crc_event;
u32 collision; u32 collision;
u32 late_collision; u32 late_collision;
/* Non MIB hardware counters */
u32 rx_discard;
u32 rx_overrun;
}; };
struct lro_counters { struct lro_counters {
...@@ -1225,6 +1230,10 @@ static void mib_counters_clear(struct mv643xx_eth_private *mp) ...@@ -1225,6 +1230,10 @@ static void mib_counters_clear(struct mv643xx_eth_private *mp)
for (i = 0; i < 0x80; i += 4) for (i = 0; i < 0x80; i += 4)
mib_read(mp, i); mib_read(mp, i);
/* Clear non MIB hw counters also */
rdlp(mp, RX_DISCARD_FRAME_CNT);
rdlp(mp, RX_OVERRUN_FRAME_CNT);
} }
static void mib_counters_update(struct mv643xx_eth_private *mp) static void mib_counters_update(struct mv643xx_eth_private *mp)
...@@ -1262,6 +1271,9 @@ static void mib_counters_update(struct mv643xx_eth_private *mp) ...@@ -1262,6 +1271,9 @@ static void mib_counters_update(struct mv643xx_eth_private *mp)
p->bad_crc_event += mib_read(mp, 0x74); p->bad_crc_event += mib_read(mp, 0x74);
p->collision += mib_read(mp, 0x78); p->collision += mib_read(mp, 0x78);
p->late_collision += mib_read(mp, 0x7c); p->late_collision += mib_read(mp, 0x7c);
/* Non MIB hardware counters */
p->rx_discard += rdlp(mp, RX_DISCARD_FRAME_CNT);
p->rx_overrun += rdlp(mp, RX_OVERRUN_FRAME_CNT);
spin_unlock_bh(&mp->mib_counters_lock); spin_unlock_bh(&mp->mib_counters_lock);
mod_timer(&mp->mib_counters_timer, jiffies + 30 * HZ); mod_timer(&mp->mib_counters_timer, jiffies + 30 * HZ);
...@@ -1413,6 +1425,8 @@ static const struct mv643xx_eth_stats mv643xx_eth_stats[] = { ...@@ -1413,6 +1425,8 @@ static const struct mv643xx_eth_stats mv643xx_eth_stats[] = {
MIBSTAT(bad_crc_event), MIBSTAT(bad_crc_event),
MIBSTAT(collision), MIBSTAT(collision),
MIBSTAT(late_collision), MIBSTAT(late_collision),
MIBSTAT(rx_discard),
MIBSTAT(rx_overrun),
LROSTAT(lro_aggregated), LROSTAT(lro_aggregated),
LROSTAT(lro_flushed), LROSTAT(lro_flushed),
LROSTAT(lro_no_desc), LROSTAT(lro_no_desc),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment