Module Name:    src
Committed By:   msaitoh
Date:           Tue Mar  5 09:42:36 UTC 2019

Modified Files:
        src/sys/dev/pci/ixgbe: ixgbe.c ixgbe_type.h

Log Message:
 NetBSD currently uses traffic class 0 only. Other traffic classes aren't used
yet. When IXGBE_TC_COUNTER_NUM is set to lower than IXGBE_DCB_MAX_TRAFFIC_CLASS
(e.g. 1), other traffic classes' counters are not used. It means we don't
generate evcnt for them and don't add the values in
ixgbe_update_stats_counters().


To generate a diff of this commit:
cvs rdiff -u -r1.174 -r1.175 src/sys/dev/pci/ixgbe/ixgbe.c
cvs rdiff -u -r1.37 -r1.38 src/sys/dev/pci/ixgbe/ixgbe_type.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/pci/ixgbe/ixgbe.c
diff -u src/sys/dev/pci/ixgbe/ixgbe.c:1.174 src/sys/dev/pci/ixgbe/ixgbe.c:1.175
--- src/sys/dev/pci/ixgbe/ixgbe.c:1.174	Fri Feb 22 06:49:15 2019
+++ src/sys/dev/pci/ixgbe/ixgbe.c	Tue Mar  5 09:42:36 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: ixgbe.c,v 1.174 2019/02/22 06:49:15 msaitoh Exp $ */
+/* $NetBSD: ixgbe.c,v 1.175 2019/03/05 09:42:36 msaitoh Exp $ */
 
 /******************************************************************************
 
@@ -1592,8 +1592,8 @@ ixgbe_update_stats_counters(struct adapt
 		}
 	}
 
-	/* 8 registers */
-	for (i = 0; i < IXGBE_DCB_MAX_TRAFFIC_CLASS; i++) {
+	/* 8 registers exist */
+	for (i = 0; i < IXGBE_TC_COUNTER_NUM; i++) {
 		uint32_t mp;
 
 		/* MPC */
@@ -1773,7 +1773,7 @@ ixgbe_add_hw_stats(struct adapter *adapt
 
 	/* Max number of traffic class is 8 */
 	KASSERT(IXGBE_DCB_MAX_TRAFFIC_CLASS == 8);
-	for (i = 0; i < IXGBE_DCB_MAX_TRAFFIC_CLASS; i++) {
+	for (i = 0; i < IXGBE_TC_COUNTER_NUM; i++) {
 		snprintf(adapter->tcs[i].evnamebuf,
 		    sizeof(adapter->tcs[i].evnamebuf), "%s tc%d",
 		    xname, i);
@@ -2072,7 +2072,7 @@ ixgbe_clear_evcnt(struct adapter *adapte
 	adapter->msf_sicount.ev_count = 0;
 	adapter->phy_sicount.ev_count = 0;
 
-	for (i = 0; i < IXGBE_DCB_MAX_TRAFFIC_CLASS; i++) {
+	for (i = 0; i < IXGBE_TC_COUNTER_NUM; i++) {
 		if (i < __arraycount(stats->mpc)) {
 			stats->mpc[i].ev_count = 0;
 			if (hw->mac.type == ixgbe_mac_82598EB)
@@ -3605,7 +3605,7 @@ ixgbe_detach(device_t dev, int flags)
 	evcnt_detach(&adapter->msf_sicount);
 	evcnt_detach(&adapter->phy_sicount);
 
-	for (i = 0; i < IXGBE_DCB_MAX_TRAFFIC_CLASS; i++) {
+	for (i = 0; i < IXGBE_TC_COUNTER_NUM; i++) {
 		if (i < __arraycount(stats->mpc)) {
 			evcnt_detach(&stats->mpc[i]);
 			if (hw->mac.type == ixgbe_mac_82598EB)

Index: src/sys/dev/pci/ixgbe/ixgbe_type.h
diff -u src/sys/dev/pci/ixgbe/ixgbe_type.h:1.37 src/sys/dev/pci/ixgbe/ixgbe_type.h:1.38
--- src/sys/dev/pci/ixgbe/ixgbe_type.h:1.37	Thu Dec  6 13:25:02 2018
+++ src/sys/dev/pci/ixgbe/ixgbe_type.h	Tue Mar  5 09:42:36 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: ixgbe_type.h,v 1.37 2018/12/06 13:25:02 msaitoh Exp $ */
+/* $NetBSD: ixgbe_type.h,v 1.38 2019/03/05 09:42:36 msaitoh Exp $ */
 
 /******************************************************************************
   SPDX-License-Identifier: BSD-3-Clause
@@ -3852,6 +3852,21 @@ struct ixgbe_fc_info {
 	enum ixgbe_fc_mode requested_mode; /* FC mode requested by caller */
 };
 
+/*
+ * NetBSD currently uses traffic class 0 only. Other traffic classes aren't
+ * used yet. When IXGBE_TC_COUNTER_NUM is set to lower than
+ * IXGBE_DCB_MAX_TRAFFIC_CLASS (e.g. 1), other traffic classes' counters are
+ * not used. It means we don't generate evcnt for them and don't add the values
+ * in ixgbe_update_stats_counters().
+ */
+#if !defined(IXGBE_TC_COUNTER_NUM)
+#define IXGBE_TC_COUNTER_NUM IXGBE_DCB_MAX_TRAFFIC_CLASS
+#endif
+#if ((IXGBE_TC_COUNTER_NUM < 1)					\
+    || (IXGBE_TC_COUNTER_NUM > IXGBE_DCB_MAX_TRAFFIC_CLASS))
+#error Wrong IXGBE_TC_COUNTER_NUM value
+#endif
+
 /* Statistics counters collected by the MAC */
 struct ixgbe_hw_stats {
 	char namebuf[32];
@@ -3866,7 +3881,7 @@ struct ixgbe_hw_stats {
 	struct evcnt mspdc;
 	struct evcnt mbsdc;
 	struct evcnt mpctotal;
-	struct evcnt mpc[8];
+	struct evcnt mpc[IXGBE_TC_COUNTER_NUM];
 	struct evcnt mlfc;
 	struct evcnt mrfc;
 	struct evcnt rlec;
@@ -3874,10 +3889,10 @@ struct ixgbe_hw_stats {
 	struct evcnt lxonrxc;
 	struct evcnt lxofftxc;
 	struct evcnt lxoffrxc;
-	struct evcnt pxontxc[8];
-	struct evcnt pxonrxc[8];
-	struct evcnt pxofftxc[8];
-	struct evcnt pxoffrxc[8];
+	struct evcnt pxontxc[IXGBE_TC_COUNTER_NUM];
+	struct evcnt pxonrxc[IXGBE_TC_COUNTER_NUM];
+	struct evcnt pxofftxc[IXGBE_TC_COUNTER_NUM];
+	struct evcnt pxoffrxc[IXGBE_TC_COUNTER_NUM];
 	struct evcnt prc64;
 	struct evcnt prc127;
 	struct evcnt prc255;
@@ -3890,7 +3905,7 @@ struct ixgbe_hw_stats {
 	struct evcnt gptc;
 	struct evcnt gorc;
 	struct evcnt gotc;
-	struct evcnt rnbc[8];
+	struct evcnt rnbc[IXGBE_TC_COUNTER_NUM];
 	struct evcnt ruc;
 	struct evcnt rfc;
 	struct evcnt roc;
@@ -3915,7 +3930,7 @@ struct ixgbe_hw_stats {
 	struct evcnt qbrc[16];
 	struct evcnt qbtc[16];
 	struct evcnt qprdc[16];
-	struct evcnt pxon2offc[8];
+	struct evcnt pxon2offc[IXGBE_TC_COUNTER_NUM];
 	u64 fdirustat_add;
 	u64 fdirustat_remove;
 	u64 fdirfstat_fadd;

Reply via email to