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;