summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Mustacchi <rm@joyent.com>2017-09-13 22:27:55 +0000
committerRobert Mustacchi <rm@joyent.com>2017-09-13 22:52:43 +0000
commit06640bd55ff2c7401a7f0365e685acf2c97a17fc (patch)
tree0cc1d02cf8313e4ce625d883e6e75f3c7fa7edc7
parentd709fbe5025f68320da403c082de4ef170ee9cf7 (diff)
downloadillumos-joyent-06640bd55ff2c7401a7f0365e685acf2c97a17fc.tar.gz
qede kstat fixes
-rw-r--r--usr/src/uts/common/io/qede/qede_gld.c37
-rw-r--r--usr/src/uts/common/io/qede/qede_kstat.c88
-rw-r--r--usr/src/uts/common/io/qede/qede_version.h2
3 files changed, 93 insertions, 34 deletions
diff --git a/usr/src/uts/common/io/qede/qede_gld.c b/usr/src/uts/common/io/qede/qede_gld.c
index 0294c73553..7e7d41745b 100644
--- a/usr/src/uts/common/io/qede/qede_gld.c
+++ b/usr/src/uts/common/io/qede/qede_gld.c
@@ -588,8 +588,6 @@ qede_mac_stats(void * arg,
qede_fastpath_t *fp = &qede->fp_array[0];
qede_rx_ring_t *rx_ring;
qede_tx_ring_t *tx_ring;
- uint64_t tot_cnt = 0;
- int i,j;
if ((qede == NULL) || (value == NULL))
{
@@ -653,46 +651,19 @@ qede_mac_stats(void * arg,
break;
case MAC_STAT_RBYTES:
- tot_cnt = 0;
- for (i = 0; i < qede->num_fp; i++, fp++) {
- rx_ring = fp->rx_ring;
- tot_cnt += rx_ring->rx_byte_cnt;
- }
- *value = tot_cnt;
+ *value = vstats.common.rx_ucast_bytes + vstats.common.rx_mcast_bytes + vstats.common.rx_bcast_bytes;
break;
case MAC_STAT_IPACKETS:
- /* *value = vstats.rx_ucast_pkts + vstats.rx_mcast_pkts + vstats.rx_bcast_pkts; */
- tot_cnt = 0;
- for (i = 0; i < qede->num_fp; i++, fp++) {
- rx_ring = fp->rx_ring;
- tot_cnt += rx_ring->rx_pkt_cnt;
- }
- *value = tot_cnt;
+ *value = vstats.common.rx_ucast_pkts + vstats.common.rx_mcast_pkts + vstats.common.rx_bcast_pkts;
break;
case MAC_STAT_OBYTES:
- /**value = vstats.tx_ucast_bytes + vstats.tx_mcast_bytes + vstats.tx_bcast_bytes;*/
- tot_cnt = 0;
- for (i = 0; i < qede->num_fp; i++, fp++) {
- for (j = 0; j < qede->num_tc; j++) {
- tx_ring = fp->tx_ring[j];
- tot_cnt += tx_ring->tx_byte_count;
- }
- }
- *value = tot_cnt;
+ *value = vstats.common.tx_ucast_bytes + vstats.common.tx_mcast_bytes + vstats.common.tx_bcast_bytes;
break;
case MAC_STAT_OPACKETS:
- /* *value = vstats.tx_ucast_pkts + vstats.tx_mcast_pkts + vstats.tx_bcast_pkts;*/
- tot_cnt = 0;
- for (i = 0; i < qede->num_fp; i++, fp++) {
- for (j = 0; j < qede->num_tc; j++) {
- tx_ring = fp->tx_ring[j];
- tot_cnt += tx_ring->tx_pkt_count;
- }
- }
- *value = tot_cnt;
+ *value = vstats.common.tx_ucast_pkts + vstats.common.tx_mcast_pkts + vstats.common.tx_bcast_pkts;
break;
case ETHER_STAT_ALIGN_ERRORS:
diff --git a/usr/src/uts/common/io/qede/qede_kstat.c b/usr/src/uts/common/io/qede/qede_kstat.c
index 63d7e8d4f2..431b6b4304 100644
--- a/usr/src/uts/common/io/qede/qede_kstat.c
+++ b/usr/src/uts/common/io/qede/qede_kstat.c
@@ -901,6 +901,7 @@ boolean_t qede_kstat_init(qede_t *qede)
{
/*BnxeLogWarn(qede, "Failed to create link kstat");*/
cmn_err(CE_WARN, "Failed to create link kstat");
+ qede_kstat_fini(qede);
return B_FALSE;
}
@@ -932,6 +933,7 @@ boolean_t qede_kstat_init(qede_t *qede)
{
/*BnxeLogWarn(qede, "Failed to create intr kstat");*/
cmn_err(CE_WARN, "Failed to create intr kstat");
+ qede_kstat_fini(qede);
return B_FALSE;
}
@@ -974,6 +976,87 @@ boolean_t qede_kstat_init(qede_t *qede)
kstat_install(qede->kstats_intr);
+
+/****************************************************************/
+
+ if ((qede->kstats_vport = kstat_create("qede",
+ qede->instance,
+ "L2Stats",
+ "net",
+ KSTAT_TYPE_NAMED,
+ QEDE_KSTAT_VPORT_STATS_SIZE,
+ 0)) == NULL)
+ {
+ /*BnxeLogWarn(qede, "Failed to create l2chip kstat");*/
+ cmn_err(CE_WARN, "Failed to create L2Stats kstat");
+ qede_kstat_fini(qede);
+ return B_FALSE;
+ }
+
+ pStatsVport = (qede_kstat_vport_stats_t *)qede->kstats_vport->ks_data;
+
+ QEDE_KSTAT_VPORT(rxUcastBytes, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(rxMcastBytes, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(rxBcastBytes, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(rxUcastPkts, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(rxMcastPkts, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(rxBcastPkts, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(txUcastBytes, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(txMcastBytes, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(txBcastBytes, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(txUcastPkts, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(txMcastPkts, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(txBcastPkts, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(rx64bytePkts, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(rx127bytePkts, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(rx255bytePkts, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(rx511bytePkts, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(rx1023bytePkts, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(rx1518bytePkts, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(rx1518bytePkts, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(rx1522bytePkts, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(rx2047bytePkts, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(rx4095bytePkts, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(rx9216bytePkts, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(rx16383bytePkts, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(tx64bytePkts, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(tx64to127bytePkts, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(tx128to255bytePkts, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(tx256to511bytePkts, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(tx512to1023bytePkts, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(tx1024to1518bytePkts, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(tx1519to2047bytePkts, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(tx2048to4095bytePkts, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(tx4096to9216bytePkts, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(tx9217to16383bytePkts, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(rxMacCtrlFrames, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(rxPauseFrames, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(txPauseFrames, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(rxCRCerrors, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(rxAlignErrors, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(rxCarrierErrors, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(rxOversizeErrors, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(rxJabbers, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(rxUndersizePkts, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(rxFragments, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(txLpiEntryCnt, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(txTotalCollisions, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(brbTruncates, KSTAT_DATA_UINT64);
+
+ QEDE_KSTAT_VPORT(noBuffDiscards, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(mftagFilterDiscards, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(macFilterDiscards, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(txErrDropPkts, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(coalescedPkts, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(coalescedEvents, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(coalescedAbortsNum, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(nonCoalescedPkts, KSTAT_DATA_UINT64);
+ QEDE_KSTAT_VPORT(coalescedBytes, KSTAT_DATA_UINT64);
+
+ qede->kstats_vport->ks_update = qede_kstat_vport_stats_update;
+ qede->kstats_vport->ks_private = (void *)qede;
+
+ kstat_install(qede->kstats_vport);
for (i = 0; i < qede->num_fp; i++) {
if(!qede_kstat_init_rxq(qede,i))
{
@@ -1011,6 +1094,11 @@ void qede_kstat_fini(qede_t *qede)
kstat_delete(qede->kstats_intr);
qede->kstats_intr = NULL;
}
+ if(qede->kstats_vport)
+ {
+ kstat_delete(qede->kstats_vport);
+ qede->kstats_vport = NULL;
+ }
for (i = 0; i < qede->num_fp; i++) {
diff --git a/usr/src/uts/common/io/qede/qede_version.h b/usr/src/uts/common/io/qede/qede_version.h
index d1a305e014..a8844ddc50 100644
--- a/usr/src/uts/common/io/qede/qede_version.h
+++ b/usr/src/uts/common/io/qede/qede_version.h
@@ -36,4 +36,4 @@
#define MAJVERSION 8
#define MINVERSION 0
-#define REVVERSION 21
+#define REVVERSION 22