Commit 8f82dc8d authored by Don Morris's avatar Don Morris Committed by Bryan Drewery
Browse files

hyperv: Flag hn and storvsc statistics with CTLFLAG_STATS.

Reviewed by:    vangyzen, whu, bdrewery
Sponsored by:	Dell EMC
Differential Revision: https://reviews.freebsd.org/D30060
parent 24a41a52
...@@ -5055,21 +5055,25 @@ hn_create_rx_data(struct hn_softc *sc, int ring_cnt) ...@@ -5055,21 +5055,25 @@ hn_create_rx_data(struct hn_softc *sc, int ring_cnt)
if (rxr->hn_rx_sysctl_tree != NULL) { if (rxr->hn_rx_sysctl_tree != NULL) {
SYSCTL_ADD_ULONG(ctx, SYSCTL_ADD_ULONG(ctx,
SYSCTL_CHILDREN(rxr->hn_rx_sysctl_tree), SYSCTL_CHILDREN(rxr->hn_rx_sysctl_tree),
OID_AUTO, "packets", CTLFLAG_RW, OID_AUTO, "packets",
&rxr->hn_pkts, "# of packets received"); CTLFLAG_RW | CTLFLAG_STATS, &rxr->hn_pkts,
"# of packets received");
SYSCTL_ADD_ULONG(ctx, SYSCTL_ADD_ULONG(ctx,
SYSCTL_CHILDREN(rxr->hn_rx_sysctl_tree), SYSCTL_CHILDREN(rxr->hn_rx_sysctl_tree),
OID_AUTO, "rss_pkts", CTLFLAG_RW, OID_AUTO, "rss_pkts",
CTLFLAG_RW | CTLFLAG_STATS,
&rxr->hn_rss_pkts, &rxr->hn_rss_pkts,
"# of packets w/ RSS info received"); "# of packets w/ RSS info received");
SYSCTL_ADD_ULONG(ctx, SYSCTL_ADD_ULONG(ctx,
SYSCTL_CHILDREN(rxr->hn_rx_sysctl_tree), SYSCTL_CHILDREN(rxr->hn_rx_sysctl_tree),
OID_AUTO, "rsc_pkts", CTLFLAG_RW, OID_AUTO, "rsc_pkts",
CTLFLAG_RW | CTLFLAG_STATS,
&rxr->hn_rsc_pkts, &rxr->hn_rsc_pkts,
"# of RSC packets received"); "# of RSC packets received");
SYSCTL_ADD_ULONG(ctx, SYSCTL_ADD_ULONG(ctx,
SYSCTL_CHILDREN(rxr->hn_rx_sysctl_tree), SYSCTL_CHILDREN(rxr->hn_rx_sysctl_tree),
OID_AUTO, "rsc_drop", CTLFLAG_RW, OID_AUTO, "rsc_drop",
CTLFLAG_RW | CTLFLAG_STATS,
&rxr->hn_rsc_drop, &rxr->hn_rsc_drop,
"# of RSC fragments dropped"); "# of RSC fragments dropped");
SYSCTL_ADD_INT(ctx, SYSCTL_ADD_INT(ctx,
...@@ -5082,7 +5086,7 @@ hn_create_rx_data(struct hn_softc *sc, int ring_cnt) ...@@ -5082,7 +5086,7 @@ hn_create_rx_data(struct hn_softc *sc, int ring_cnt)
} }
SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "lro_queued", SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "lro_queued",
CTLTYPE_U64 | CTLFLAG_RW | CTLFLAG_MPSAFE, sc, CTLTYPE_U64 | CTLFLAG_RW | CTLFLAG_MPSAFE | CTLFLAG_STATS , sc,
__offsetof(struct hn_rx_ring, hn_lro.lro_queued), __offsetof(struct hn_rx_ring, hn_lro.lro_queued),
#if __FreeBSD_version < 1100095 #if __FreeBSD_version < 1100095
hn_rx_stat_int_sysctl, hn_rx_stat_int_sysctl,
...@@ -5091,7 +5095,7 @@ hn_create_rx_data(struct hn_softc *sc, int ring_cnt) ...@@ -5091,7 +5095,7 @@ hn_create_rx_data(struct hn_softc *sc, int ring_cnt)
#endif #endif
"LU", "LRO queued"); "LU", "LRO queued");
SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "lro_flushed", SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "lro_flushed",
CTLTYPE_U64 | CTLFLAG_RW | CTLFLAG_MPSAFE, sc, CTLTYPE_U64 | CTLFLAG_RW | CTLFLAG_MPSAFE | CTLFLAG_STATS , sc,
__offsetof(struct hn_rx_ring, hn_lro.lro_flushed), __offsetof(struct hn_rx_ring, hn_lro.lro_flushed),
#if __FreeBSD_version < 1100095 #if __FreeBSD_version < 1100095
hn_rx_stat_int_sysctl, hn_rx_stat_int_sysctl,
...@@ -5100,7 +5104,7 @@ hn_create_rx_data(struct hn_softc *sc, int ring_cnt) ...@@ -5100,7 +5104,7 @@ hn_create_rx_data(struct hn_softc *sc, int ring_cnt)
#endif #endif
"LU", "LRO flushed"); "LU", "LRO flushed");
SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "lro_tried", SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "lro_tried",
CTLTYPE_ULONG | CTLFLAG_RW | CTLFLAG_MPSAFE, sc, CTLTYPE_ULONG | CTLFLAG_RW | CTLFLAG_MPSAFE | CTLFLAG_STATS , sc,
__offsetof(struct hn_rx_ring, hn_lro_tried), __offsetof(struct hn_rx_ring, hn_lro_tried),
hn_rx_stat_ulong_sysctl, "LU", "# of LRO tries"); hn_rx_stat_ulong_sysctl, "LU", "# of LRO tries");
#if __FreeBSD_version >= 1100099 #if __FreeBSD_version >= 1100099
...@@ -5129,15 +5133,15 @@ hn_create_rx_data(struct hn_softc *sc, int ring_cnt) ...@@ -5129,15 +5133,15 @@ hn_create_rx_data(struct hn_softc *sc, int ring_cnt)
"Trust ip packet verification on host side, " "Trust ip packet verification on host side, "
"when csum info is missing"); "when csum info is missing");
SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "csum_ip", SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "csum_ip",
CTLTYPE_ULONG | CTLFLAG_RW | CTLFLAG_MPSAFE, sc, CTLTYPE_ULONG | CTLFLAG_RW | CTLFLAG_MPSAFE | CTLFLAG_STATS , sc,
__offsetof(struct hn_rx_ring, hn_csum_ip), __offsetof(struct hn_rx_ring, hn_csum_ip),
hn_rx_stat_ulong_sysctl, "LU", "RXCSUM IP"); hn_rx_stat_ulong_sysctl, "LU", "RXCSUM IP");
SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "csum_tcp", SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "csum_tcp",
CTLTYPE_ULONG | CTLFLAG_RW | CTLFLAG_MPSAFE, sc, CTLTYPE_ULONG | CTLFLAG_RW | CTLFLAG_MPSAFE | CTLFLAG_STATS , sc,
__offsetof(struct hn_rx_ring, hn_csum_tcp), __offsetof(struct hn_rx_ring, hn_csum_tcp),
hn_rx_stat_ulong_sysctl, "LU", "RXCSUM TCP"); hn_rx_stat_ulong_sysctl, "LU", "RXCSUM TCP");
SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "csum_udp", SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "csum_udp",
CTLTYPE_ULONG | CTLFLAG_RW | CTLFLAG_MPSAFE, sc, CTLTYPE_ULONG | CTLFLAG_RW | CTLFLAG_MPSAFE | CTLFLAG_STATS , sc,
__offsetof(struct hn_rx_ring, hn_csum_udp), __offsetof(struct hn_rx_ring, hn_csum_udp),
hn_rx_stat_ulong_sysctl, "LU", "RXCSUM UDP"); hn_rx_stat_ulong_sysctl, "LU", "RXCSUM UDP");
SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "csum_trusted", SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "csum_trusted",
...@@ -5146,11 +5150,11 @@ hn_create_rx_data(struct hn_softc *sc, int ring_cnt) ...@@ -5146,11 +5150,11 @@ hn_create_rx_data(struct hn_softc *sc, int ring_cnt)
hn_rx_stat_ulong_sysctl, "LU", hn_rx_stat_ulong_sysctl, "LU",
"# of packets that we trust host's csum verification"); "# of packets that we trust host's csum verification");
SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "small_pkts", SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "small_pkts",
CTLTYPE_ULONG | CTLFLAG_RW | CTLFLAG_MPSAFE, sc, CTLTYPE_ULONG | CTLFLAG_RW | CTLFLAG_MPSAFE | CTLFLAG_STATS , sc,
__offsetof(struct hn_rx_ring, hn_small_pkts), __offsetof(struct hn_rx_ring, hn_small_pkts),
hn_rx_stat_ulong_sysctl, "LU", "# of small packets received"); hn_rx_stat_ulong_sysctl, "LU", "# of small packets received");
SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "rx_ack_failed", SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "rx_ack_failed",
CTLTYPE_ULONG | CTLFLAG_RW | CTLFLAG_MPSAFE, sc, CTLTYPE_ULONG | CTLFLAG_RW | CTLFLAG_MPSAFE | CTLFLAG_STATS , sc,
__offsetof(struct hn_rx_ring, hn_ack_failed), __offsetof(struct hn_rx_ring, hn_ack_failed),
hn_rx_stat_ulong_sysctl, "LU", "# of RXBUF ack failures"); hn_rx_stat_ulong_sysctl, "LU", "# of RXBUF ack failures");
SYSCTL_ADD_INT(ctx, child, OID_AUTO, "rx_ring_cnt", SYSCTL_ADD_INT(ctx, child, OID_AUTO, "rx_ring_cnt",
...@@ -5391,10 +5395,11 @@ hn_tx_ring_create(struct hn_softc *sc, int id) ...@@ -5391,10 +5395,11 @@ hn_tx_ring_create(struct hn_softc *sc, int id)
"over active"); "over active");
} }
SYSCTL_ADD_ULONG(ctx, child, OID_AUTO, "packets", SYSCTL_ADD_ULONG(ctx, child, OID_AUTO, "packets",
CTLFLAG_RW, &txr->hn_pkts, CTLFLAG_RW | CTLFLAG_STATS, &txr->hn_pkts,
"# of packets transmitted"); "# of packets transmitted");
SYSCTL_ADD_ULONG(ctx, child, OID_AUTO, "sends", SYSCTL_ADD_ULONG(ctx, child, OID_AUTO, "sends",
CTLFLAG_RW, &txr->hn_sends, "# of sends"); CTLFLAG_RW | CTLFLAG_STATS, &txr->hn_sends,
"# of sends");
} }
} }
...@@ -5517,32 +5522,32 @@ hn_create_tx_data(struct hn_softc *sc, int ring_cnt) ...@@ -5517,32 +5522,32 @@ hn_create_tx_data(struct hn_softc *sc, int ring_cnt)
} }
SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "no_txdescs", SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "no_txdescs",
CTLTYPE_ULONG | CTLFLAG_RW | CTLFLAG_MPSAFE, sc, CTLTYPE_ULONG | CTLFLAG_RW | CTLFLAG_MPSAFE | CTLFLAG_STATS, sc,
__offsetof(struct hn_tx_ring, hn_no_txdescs), __offsetof(struct hn_tx_ring, hn_no_txdescs),
hn_tx_stat_ulong_sysctl, "LU", "# of times short of TX descs"); hn_tx_stat_ulong_sysctl, "LU", "# of times short of TX descs");
SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "send_failed", SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "send_failed",
CTLTYPE_ULONG | CTLFLAG_RW | CTLFLAG_MPSAFE, sc, CTLTYPE_ULONG | CTLFLAG_RW | CTLFLAG_MPSAFE | CTLFLAG_STATS, sc,
__offsetof(struct hn_tx_ring, hn_send_failed), __offsetof(struct hn_tx_ring, hn_send_failed),
hn_tx_stat_ulong_sysctl, "LU", "# of hyper-v sending failure"); hn_tx_stat_ulong_sysctl, "LU", "# of hyper-v sending failure");
SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "txdma_failed", SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "txdma_failed",
CTLTYPE_ULONG | CTLFLAG_RW | CTLFLAG_MPSAFE, sc, CTLTYPE_ULONG | CTLFLAG_RW | CTLFLAG_MPSAFE | CTLFLAG_STATS, sc,
__offsetof(struct hn_tx_ring, hn_txdma_failed), __offsetof(struct hn_tx_ring, hn_txdma_failed),
hn_tx_stat_ulong_sysctl, "LU", "# of TX DMA failure"); hn_tx_stat_ulong_sysctl, "LU", "# of TX DMA failure");
SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "agg_flush_failed", SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "agg_flush_failed",
CTLTYPE_ULONG | CTLFLAG_RW | CTLFLAG_MPSAFE, sc, CTLTYPE_ULONG | CTLFLAG_RW | CTLFLAG_MPSAFE | CTLFLAG_STATS, sc,
__offsetof(struct hn_tx_ring, hn_flush_failed), __offsetof(struct hn_tx_ring, hn_flush_failed),
hn_tx_stat_ulong_sysctl, "LU", hn_tx_stat_ulong_sysctl, "LU",
"# of packet transmission aggregation flush failure"); "# of packet transmission aggregation flush failure");
SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "tx_collapsed", SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "tx_collapsed",
CTLTYPE_ULONG | CTLFLAG_RW | CTLFLAG_MPSAFE, sc, CTLTYPE_ULONG | CTLFLAG_RW | CTLFLAG_MPSAFE | CTLFLAG_STATS, sc,
__offsetof(struct hn_tx_ring, hn_tx_collapsed), __offsetof(struct hn_tx_ring, hn_tx_collapsed),
hn_tx_stat_ulong_sysctl, "LU", "# of TX mbuf collapsed"); hn_tx_stat_ulong_sysctl, "LU", "# of TX mbuf collapsed");
SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "tx_chimney", SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "tx_chimney",
CTLTYPE_ULONG | CTLFLAG_RW | CTLFLAG_MPSAFE, sc, CTLTYPE_ULONG | CTLFLAG_RW | CTLFLAG_MPSAFE | CTLFLAG_STATS, sc,
__offsetof(struct hn_tx_ring, hn_tx_chimney), __offsetof(struct hn_tx_ring, hn_tx_chimney),
hn_tx_stat_ulong_sysctl, "LU", "# of chimney send"); hn_tx_stat_ulong_sysctl, "LU", "# of chimney send");
SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "tx_chimney_tried", SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "tx_chimney_tried",
CTLTYPE_ULONG | CTLFLAG_RW | CTLFLAG_MPSAFE, sc, CTLTYPE_ULONG | CTLFLAG_RW | CTLFLAG_MPSAFE | CTLFLAG_STATS, sc,
__offsetof(struct hn_tx_ring, hn_tx_chimney_tried), __offsetof(struct hn_tx_ring, hn_tx_chimney_tried),
hn_tx_stat_ulong_sysctl, "LU", "# of chimney send tries"); hn_tx_stat_ulong_sysctl, "LU", "# of chimney send tries");
SYSCTL_ADD_INT(ctx, child, OID_AUTO, "txdesc_cnt", SYSCTL_ADD_INT(ctx, child, OID_AUTO, "txdesc_cnt",
......
...@@ -1006,12 +1006,15 @@ storvsc_sysctl(device_t dev) ...@@ -1006,12 +1006,15 @@ storvsc_sysctl(device_t dev)
ctx = device_get_sysctl_ctx(dev); ctx = device_get_sysctl_ctx(dev);
child = SYSCTL_CHILDREN(device_get_sysctl_tree(dev)); child = SYSCTL_CHILDREN(device_get_sysctl_tree(dev));
SYSCTL_ADD_ULONG(ctx, child, OID_AUTO, "data_bio_cnt", CTLFLAG_RW, SYSCTL_ADD_ULONG(ctx, child, OID_AUTO, "data_bio_cnt",
&sc->sysctl_data.data_bio_cnt, "# of bio data block"); CTLFLAG_RW | CTLFLAG_STATS, &sc->sysctl_data.data_bio_cnt,
SYSCTL_ADD_ULONG(ctx, child, OID_AUTO, "data_vaddr_cnt", CTLFLAG_RW, "# of bio data block");
&sc->sysctl_data.data_vaddr_cnt, "# of vaddr data block"); SYSCTL_ADD_ULONG(ctx, child, OID_AUTO, "data_vaddr_cnt",
SYSCTL_ADD_ULONG(ctx, child, OID_AUTO, "data_sg_cnt", CTLFLAG_RW, CTLFLAG_RW | CTLFLAG_STATS, &sc->sysctl_data.data_vaddr_cnt,
&sc->sysctl_data.data_sg_cnt, "# of sg data block"); "# of vaddr data block");
SYSCTL_ADD_ULONG(ctx, child, OID_AUTO, "data_sg_cnt",
CTLFLAG_RW | CTLFLAG_STATS, &sc->sysctl_data.data_sg_cnt,
"# of sg data block");
/* dev.storvsc.UNIT.channel */ /* dev.storvsc.UNIT.channel */
ch_tree = SYSCTL_ADD_NODE(ctx, child, OID_AUTO, "channel", ch_tree = SYSCTL_ADD_NODE(ctx, child, OID_AUTO, "channel",
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment