summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/io/ixgbe/ixgbe_stat.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/io/ixgbe/ixgbe_stat.c')
-rw-r--r--usr/src/uts/common/io/ixgbe/ixgbe_stat.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/usr/src/uts/common/io/ixgbe/ixgbe_stat.c b/usr/src/uts/common/io/ixgbe/ixgbe_stat.c
index fa7cbf28e8..776af1fba4 100644
--- a/usr/src/uts/common/io/ixgbe/ixgbe_stat.c
+++ b/usr/src/uts/common/io/ixgbe/ixgbe_stat.c
@@ -95,9 +95,22 @@ ixgbe_update_stats(kstat_t *ks, int rw)
ixgbe_ks->gprc.value.ul += IXGBE_READ_REG(hw, IXGBE_QPRC(i));
ixgbe_ks->gptc.value.ul += IXGBE_READ_REG(hw, IXGBE_QPTC(i));
ixgbe_ks->tor.value.ui64 += IXGBE_READ_REG(hw, IXGBE_QBRC(i));
- ixgbe_ks->got.value.ui64 += IXGBE_READ_REG(hw, IXGBE_QBTC(i));
+ ixgbe_ks->tot.value.ui64 += IXGBE_READ_REG(hw, IXGBE_QBTC(i));
}
+
+ /*
+ * This is a Workaround:
+ * Currently h/w GORCH, GOTCH, TORH registers are not
+ * correctly implemented. We found that the values in
+ * these registers are same as those in corresponding
+ * *L registers (i.e. GORCL, GOTCL, and TORL). Here the
+ * gor and got stat data will not be retrieved through
+ * GORC{H/L} and GOTC{H/L} registers but be obtained by
+ * simply assigning tor/tot stat data, so the gor/got
+ * stat data will not be accurate.
+ */
ixgbe_ks->gor.value.ui64 = ixgbe_ks->tor.value.ui64;
+ ixgbe_ks->got.value.ui64 = ixgbe_ks->tot.value.ui64;
ixgbe_ks->prc64.value.ul += IXGBE_READ_REG(hw, IXGBE_PRC64);
ixgbe_ks->prc127.value.ul += IXGBE_READ_REG(hw, IXGBE_PRC127);