Skip to content

Commit e483911

Browse files
lunndavem330
authored andcommitted
net: mvneta: Fix clearing of MIB statistics
The existing function to clear the MIB statatistics was using the wrong address for the registers. Also, the counters would of been cleared when the interface was brought up, not during the probe. Fix both of these. Signed-off-by: Andrew Lunn <[email protected]> Signed-off-by: Russell King <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 9b0cdef commit e483911

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

drivers/net/ethernet/marvell/mvneta.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,8 @@
101101
#define MVNETA_TXQ_CMD 0x2448
102102
#define MVNETA_TXQ_DISABLE_SHIFT 8
103103
#define MVNETA_TXQ_ENABLE_MASK 0x000000ff
104+
#define MVNETA_RX_DISCARD_FRAME_COUNT 0x2484
105+
#define MVNETA_OVERRUN_FRAME_COUNT 0x2488
104106
#define MVNETA_GMAC_CLOCK_DIVIDER 0x24f4
105107
#define MVNETA_GMAC_1MS_CLOCK_ENABLE BIT(31)
106108
#define MVNETA_ACC_MODE 0x2500
@@ -192,7 +194,7 @@
192194
#define MVNETA_GMAC_AN_FLOW_CTRL_EN BIT(11)
193195
#define MVNETA_GMAC_CONFIG_FULL_DUPLEX BIT(12)
194196
#define MVNETA_GMAC_AN_DUPLEX_EN BIT(13)
195-
#define MVNETA_MIB_COUNTERS_BASE 0x3080
197+
#define MVNETA_MIB_COUNTERS_BASE 0x3000
196198
#define MVNETA_MIB_LATE_COLLISION 0x7c
197199
#define MVNETA_DA_FILT_SPEC_MCAST 0x3400
198200
#define MVNETA_DA_FILT_OTH_MCAST 0x3500
@@ -576,6 +578,8 @@ static void mvneta_mib_counters_clear(struct mvneta_port *pp)
576578
/* Perform dummy reads from MIB counters */
577579
for (i = 0; i < MVNETA_MIB_LATE_COLLISION; i += 4)
578580
dummy = mvreg_read(pp, (MVNETA_MIB_COUNTERS_BASE + i));
581+
dummy = mvreg_read(pp, MVNETA_RX_DISCARD_FRAME_COUNT);
582+
dummy = mvreg_read(pp, MVNETA_OVERRUN_FRAME_COUNT);
579583
}
580584

581585
/* Get System Network Statistics */
@@ -804,7 +808,6 @@ static void mvneta_port_up(struct mvneta_port *pp)
804808
u32 q_map;
805809

806810
/* Enable all initialized TXs. */
807-
mvneta_mib_counters_clear(pp);
808811
q_map = 0;
809812
for (queue = 0; queue < txq_number; queue++) {
810813
struct mvneta_tx_queue *txq = &pp->txqs[queue];
@@ -1081,6 +1084,8 @@ static void mvneta_defaults_set(struct mvneta_port *pp)
10811084
mvreg_write(pp, MVNETA_INTR_ENABLE,
10821085
(MVNETA_RXQ_INTR_ENABLE_ALL_MASK
10831086
| MVNETA_TXQ_INTR_ENABLE_ALL_MASK));
1087+
1088+
mvneta_mib_counters_clear(pp);
10841089
}
10851090

10861091
/* Set max sizes for tx queues */

0 commit comments

Comments
 (0)