Module Name:    src
Committed By:   hikaru
Date:           Sat Feb 13 06:33:21 UTC 2016

Modified Files:
        src/sys/dev/marvell: if_mvxpe.c if_mvxpereg.h

Log Message:
Count up if_{opackets,oerrors,ierrors,collisions}.
And also "MAC Transmit Error" is tx error, not rx.


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/sys/dev/marvell/if_mvxpe.c
cvs rdiff -u -r1.3 -r1.4 src/sys/dev/marvell/if_mvxpereg.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/marvell/if_mvxpe.c
diff -u src/sys/dev/marvell/if_mvxpe.c:1.9 src/sys/dev/marvell/if_mvxpe.c:1.10
--- src/sys/dev/marvell/if_mvxpe.c:1.9	Sat Feb 13 06:12:46 2016
+++ src/sys/dev/marvell/if_mvxpe.c	Sat Feb 13 06:33:21 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_mvxpe.c,v 1.9 2016/02/13 06:12:46 hikaru Exp $	*/
+/*	$NetBSD: if_mvxpe.c,v 1.10 2016/02/13 06:33:21 hikaru Exp $	*/
 /*
  * Copyright (c) 2015 Internet Initiative Japan Inc.
  * All rights reserved.
@@ -25,7 +25,7 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_mvxpe.c,v 1.9 2016/02/13 06:12:46 hikaru Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_mvxpe.c,v 1.10 2016/02/13 06:33:21 hikaru Exp $");
 
 #include "opt_multiprocessor.h"
 
@@ -189,67 +189,71 @@ STATIC struct mvxpe_mib_def {
 	int reg64;
 	const char *sysctl_name;
 	const char *desc;
+	int ext;
+#define MVXPE_MIBEXT_IF_OERRORS	1
+#define MVXPE_MIBEXT_IF_IERRORS	2
+#define MVXPE_MIBEXT_IF_COLLISIONS	3
 } mvxpe_mib_list[] = {
 	{MVXPE_MIB_RX_GOOD_OCT, 1,	"rx_good_oct",
-	    "Good Octets Rx"},
+	    "Good Octets Rx", 0},
 	{MVXPE_MIB_RX_BAD_OCT, 0,	"rx_bad_oct",
-	    "Bad  Octets Rx"},
-	{MVXPE_MIB_RX_MAC_TRNS_ERR, 0,	"rx_mac_err",
-	    "MAC Transmit Error"},
+	    "Bad  Octets Rx", 0},
+	{MVXPE_MIB_TX_MAC_TRNS_ERR, 0,	"tx_mac_err",
+	    "MAC Transmit Error", MVXPE_MIBEXT_IF_OERRORS},
 	{MVXPE_MIB_RX_GOOD_FRAME, 0,	"rx_good_frame",
-	    "Good Frames Rx"},
+	    "Good Frames Rx", 0},
 	{MVXPE_MIB_RX_BAD_FRAME, 0,	"rx_bad_frame",
-	    "Bad Frames Rx"},
+	    "Bad Frames Rx", 0},
 	{MVXPE_MIB_RX_BCAST_FRAME, 0,	"rx_bcast_frame",
-	    "Broadcast Frames Rx"},
+	    "Broadcast Frames Rx", 0},
 	{MVXPE_MIB_RX_MCAST_FRAME, 0,	"rx_mcast_frame",
-	    "Multicast Frames Rx"},
+	    "Multicast Frames Rx", 0},
 	{MVXPE_MIB_RX_FRAME64_OCT, 0,	"rx_frame_1_64",
-	    "Frame Size    1 -   64"},
+	    "Frame Size    1 -   64", 0},
 	{MVXPE_MIB_RX_FRAME127_OCT, 0,	"rx_frame_65_127",
-	    "Frame Size   65 -  127"},
+	    "Frame Size   65 -  127", 0},
 	{MVXPE_MIB_RX_FRAME255_OCT, 0,	"rx_frame_128_255",
-	    "Frame Size  128 -  255"},
+	    "Frame Size  128 -  255", 0},
 	{MVXPE_MIB_RX_FRAME511_OCT, 0,	"rx_frame_256_511",
 	    "Frame Size  256 -  511"},
 	{MVXPE_MIB_RX_FRAME1023_OCT, 0,	"rx_frame_512_1023",
-	    "Frame Size  512 - 1023"},
+	    "Frame Size  512 - 1023", 0},
 	{MVXPE_MIB_RX_FRAMEMAX_OCT, 0,	"rx_fame_1024_max",
-	    "Frame Size 1024 -  Max"},
+	    "Frame Size 1024 -  Max", 0},
 	{MVXPE_MIB_TX_GOOD_OCT, 1,	"tx_good_oct",
-	    "Good Octets Tx"},
+	    "Good Octets Tx", 0},
 	{MVXPE_MIB_TX_GOOD_FRAME, 0,	"tx_good_frame",
-	    "Good Frames Tx"},
+	    "Good Frames Tx", 0},
 	{MVXPE_MIB_TX_EXCES_COL, 0,	"tx_exces_collision",
-	    "Excessive Collision"},
+	    "Excessive Collision", MVXPE_MIBEXT_IF_OERRORS},
 	{MVXPE_MIB_TX_MCAST_FRAME, 0,	"tx_mcast_frame",
 	    "Multicast Frames Tx"},
 	{MVXPE_MIB_TX_BCAST_FRAME, 0,	"tx_bcast_frame",
 	    "Broadcast Frames Tx"},
 	{MVXPE_MIB_TX_MAC_CTL_ERR, 0,	"tx_mac_err",
-	    "Unknown MAC Control"},
+	    "Unknown MAC Control", 0},
 	{MVXPE_MIB_FC_SENT, 0,		"fc_tx",
-	    "Flow Control Tx"},
+	    "Flow Control Tx", 0},
 	{MVXPE_MIB_FC_GOOD, 0,		"fc_rx_good",
-	    "Good Flow Control Rx"},
+	    "Good Flow Control Rx", 0},
 	{MVXPE_MIB_FC_BAD, 0,		"fc_rx_bad",
-	    "Bad Flow Control Rx"},
+	    "Bad Flow Control Rx", 0},
 	{MVXPE_MIB_PKT_UNDERSIZE, 0,	"pkt_undersize",
-	    "Undersized Packets Rx"},
+	    "Undersized Packets Rx", MVXPE_MIBEXT_IF_IERRORS},
 	{MVXPE_MIB_PKT_FRAGMENT, 0,	"pkt_fragment",
-	    "Fragmented Packets Rx"},
+	    "Fragmented Packets Rx", MVXPE_MIBEXT_IF_IERRORS},
 	{MVXPE_MIB_PKT_OVERSIZE, 0,	"pkt_oversize",
-	    "Oversized Packets Rx"},
+	    "Oversized Packets Rx", MVXPE_MIBEXT_IF_IERRORS},
 	{MVXPE_MIB_PKT_JABBER, 0,	"pkt_jabber",
-	    "Jabber Packets Rx"},
+	    "Jabber Packets Rx", MVXPE_MIBEXT_IF_IERRORS},
 	{MVXPE_MIB_MAC_RX_ERR, 0,	"mac_rx_err",
-	    "MAC Rx Errors"},
+	    "MAC Rx Errors", MVXPE_MIBEXT_IF_IERRORS},
 	{MVXPE_MIB_MAC_CRC_ERR, 0,	"mac_crc_err",
-	    "MAC CRC Errors"},
+	    "MAC CRC Errors", MVXPE_MIBEXT_IF_IERRORS},
 	{MVXPE_MIB_MAC_COL, 0,		"mac_collision",
-	    "MAC Collision"},
+	    "MAC Collision", MVXPE_MIBEXT_IF_COLLISIONS},
 	{MVXPE_MIB_MAC_LATE_COL, 0,	"mac_late_collision",
-	    "MAC Late Collision"},
+	    "MAC Late Collision", MVXPE_MIBEXT_IF_OERRORS},
 };
 
 /*
@@ -1690,6 +1694,7 @@ mvxpe_start(struct ifnet *ifp)
 		    sc->sc_tx_ring[q].tx_queue_len);
 		DPRINTIFNET(ifp, 1, "a packet is added to tx ring\n");
 		sc->sc_tx_pending++;
+		ifp->if_opackets++;
 		ifp->if_timer = 1;
 		sc->sc_wdogsoft = 1;
 		bpf_mtap(ifp, m);
@@ -3207,6 +3212,7 @@ mvxpe_clear_mib(struct mvxpe_softc *sc)
 STATIC void
 mvxpe_update_mib(struct mvxpe_softc *sc)
 {
+	struct ifnet *ifp = &sc->sc_ethercom.ec_if;
 	int i;
 
 	KASSERT_SC_MTX(sc);
@@ -3214,6 +3220,7 @@ mvxpe_update_mib(struct mvxpe_softc *sc)
 	for (i = 0; i < __arraycount(mvxpe_mib_list); i++) {
 		uint32_t val_hi;
 		uint32_t val_lo;
+		uint64_t val;
 
 		if (mvxpe_mib_list[i].reg64) {
 			/* XXX: implement bus_space_read_8() */
@@ -3229,8 +3236,23 @@ mvxpe_update_mib(struct mvxpe_softc *sc)
 		if ((val_lo | val_hi) == 0)
 			continue;
 
-		sc->sc_sysctl_mib[i].counter +=
-	       	    ((uint64_t)val_hi << 32) | (uint64_t)val_lo;
+		val = ((uint64_t)val_hi << 32) | (uint64_t)val_lo;
+		sc->sc_sysctl_mib[i].counter += val;
+
+		switch (mvxpe_mib_list[i].ext) {
+		case MVXPE_MIBEXT_IF_OERRORS:
+			ifp->if_oerrors += val;
+			break;
+		case MVXPE_MIBEXT_IF_IERRORS:
+			ifp->if_ierrors += val;
+			break;
+		case MVXPE_MIBEXT_IF_COLLISIONS:
+			ifp->if_collisions += val;
+			break;
+		default:
+			break;
+		}
+
 	}
 }
 

Index: src/sys/dev/marvell/if_mvxpereg.h
diff -u src/sys/dev/marvell/if_mvxpereg.h:1.3 src/sys/dev/marvell/if_mvxpereg.h:1.4
--- src/sys/dev/marvell/if_mvxpereg.h:1.3	Fri Feb 12 09:24:15 2016
+++ src/sys/dev/marvell/if_mvxpereg.h	Sat Feb 13 06:33:21 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_mvxpereg.h,v 1.3 2016/02/12 09:24:15 hikaru Exp $	*/
+/*	$NetBSD: if_mvxpereg.h,v 1.4 2016/02/13 06:33:21 hikaru Exp $	*/
 /*
  * Copyright (c) 2015 Internet Initiative Japan Inc.
  * All rights reserved.
@@ -244,7 +244,7 @@
 /* Rx */
 #define MVXPE_MIB_RX_GOOD_OCT		0x00 /* 64bit */
 #define MVXPE_MIB_RX_BAD_OCT		0x08
-#define MVXPE_MIB_RX_MAC_TRNS_ERR	0x0c
+#define MVXPE_MIB_TX_MAC_TRNS_ERR	0x0c
 #define MVXPE_MIB_RX_GOOD_FRAME		0x10
 #define MVXPE_MIB_RX_BAD_FRAME		0x14
 #define MVXPE_MIB_RX_BCAST_FRAME	0x18

Reply via email to