| 6707 | } |
| 6708 | |
| 6709 | static void |
| 6710 | iflib_add_device_sysctl_post(if_ctx_t ctx) |
| 6711 | { |
| 6712 | if_shared_ctx_t sctx = ctx->ifc_sctx; |
| 6713 | if_softc_ctx_t scctx = &ctx->ifc_softc_ctx; |
| 6714 | device_t dev = iflib_get_dev(ctx); |
| 6715 | struct sysctl_oid_list *child; |
| 6716 | struct sysctl_ctx_list *ctx_list; |
| 6717 | iflib_fl_t fl; |
| 6718 | iflib_txq_t txq; |
| 6719 | iflib_rxq_t rxq; |
| 6720 | int i, j; |
| 6721 | char namebuf[NAME_BUFLEN]; |
| 6722 | char *qfmt; |
| 6723 | struct sysctl_oid *queue_node, *fl_node, *node; |
| 6724 | struct sysctl_oid_list *queue_list, *fl_list; |
| 6725 | ctx_list = device_get_sysctl_ctx(dev); |
| 6726 | |
| 6727 | node = ctx->ifc_sysctl_node; |
| 6728 | child = SYSCTL_CHILDREN(node); |
| 6729 | |
| 6730 | if (scctx->isc_ntxqsets > 100) |
| 6731 | qfmt = "txq%03d"; |
| 6732 | else if (scctx->isc_ntxqsets > 10) |
| 6733 | qfmt = "txq%02d"; |
| 6734 | else |
| 6735 | qfmt = "txq%d"; |
| 6736 | for (i = 0, txq = ctx->ifc_txqs; i < scctx->isc_ntxqsets; i++, txq++) { |
| 6737 | snprintf(namebuf, NAME_BUFLEN, qfmt, i); |
| 6738 | queue_node = SYSCTL_ADD_NODE(ctx_list, child, OID_AUTO, namebuf, |
| 6739 | CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, "Queue Name"); |
| 6740 | queue_list = SYSCTL_CHILDREN(queue_node); |
| 6741 | #if MEMORY_LOGGING |
| 6742 | SYSCTL_ADD_QUAD(ctx_list, queue_list, OID_AUTO, "txq_dequeued", |
| 6743 | CTLFLAG_RD, |
| 6744 | &txq->ift_dequeued, "total mbufs freed"); |
| 6745 | SYSCTL_ADD_QUAD(ctx_list, queue_list, OID_AUTO, "txq_enqueued", |
| 6746 | CTLFLAG_RD, |
| 6747 | &txq->ift_enqueued, "total mbufs enqueued"); |
| 6748 | #endif |
| 6749 | SYSCTL_ADD_QUAD(ctx_list, queue_list, OID_AUTO, "mbuf_defrag", |
| 6750 | CTLFLAG_RD, |
| 6751 | &txq->ift_mbuf_defrag, "# of times m_defrag was called"); |
| 6752 | SYSCTL_ADD_QUAD(ctx_list, queue_list, OID_AUTO, "m_pullups", |
| 6753 | CTLFLAG_RD, |
| 6754 | &txq->ift_pullups, "# of times m_pullup was called"); |
| 6755 | SYSCTL_ADD_QUAD(ctx_list, queue_list, OID_AUTO, "mbuf_defrag_failed", |
| 6756 | CTLFLAG_RD, |
| 6757 | &txq->ift_mbuf_defrag_failed, "# of times m_defrag failed"); |
| 6758 | SYSCTL_ADD_QUAD(ctx_list, queue_list, OID_AUTO, "no_desc_avail", |
| 6759 | CTLFLAG_RD, |
| 6760 | &txq->ift_no_desc_avail, "# of times no descriptors were available"); |
| 6761 | SYSCTL_ADD_QUAD(ctx_list, queue_list, OID_AUTO, "tx_map_failed", |
| 6762 | CTLFLAG_RD, |
| 6763 | &txq->ift_map_failed, "# of times DMA map failed"); |
| 6764 | SYSCTL_ADD_QUAD(ctx_list, queue_list, OID_AUTO, "txd_encap_efbig", |
| 6765 | CTLFLAG_RD, |
| 6766 | &txq->ift_txd_encap_efbig, "# of times txd_encap returned EFBIG"); |
no test coverage detected