Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/vmware/vmxnet3/if_vmx.c
Show All 12 Lines | |||||
struct sysctl_oid *node, *txsnode; | struct sysctl_oid *node, *txsnode; | ||||
struct sysctl_oid_list *list, *txslist; | struct sysctl_oid_list *list, *txslist; | ||||
struct UPT1_TxStats *txstats; | struct UPT1_TxStats *txstats; | ||||
char namebuf[16]; | char namebuf[16]; | ||||
txstats = &txq->vxtxq_ts->stats; | txstats = &txq->vxtxq_ts->stats; | ||||
snprintf(namebuf, sizeof(namebuf), "txq%d", txq->vxtxq_id); | snprintf(namebuf, sizeof(namebuf), "txq%d", txq->vxtxq_id); | ||||
node = SYSCTL_ADD_NODE(ctx, child, OID_AUTO, namebuf, CTLFLAG_RD, | node = SYSCTL_ADD_NODE(ctx, child, OID_AUTO, namebuf, | ||||
NULL, "Transmit Queue"); | CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, "Transmit Queue"); | ||||
txq->vxtxq_sysctl = list = SYSCTL_CHILDREN(node); | txq->vxtxq_sysctl = list = SYSCTL_CHILDREN(node); | ||||
/* | /* | ||||
* Add statistics reported by the host. These are updated by the | * Add statistics reported by the host. These are updated by the | ||||
* iflib txq timer on txq 0. | * iflib txq timer on txq 0. | ||||
*/ | */ | ||||
txsnode = SYSCTL_ADD_NODE(ctx, list, OID_AUTO, "hstats", CTLFLAG_RD, | txsnode = SYSCTL_ADD_NODE(ctx, list, OID_AUTO, "hstats", | ||||
NULL, "Host Statistics"); | CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, "Host Statistics"); | ||||
txslist = SYSCTL_CHILDREN(txsnode); | txslist = SYSCTL_CHILDREN(txsnode); | ||||
SYSCTL_ADD_UQUAD(ctx, txslist, OID_AUTO, "tso_packets", CTLFLAG_RD, | SYSCTL_ADD_UQUAD(ctx, txslist, OID_AUTO, "tso_packets", CTLFLAG_RD, | ||||
&txstats->TSO_packets, "TSO packets"); | &txstats->TSO_packets, "TSO packets"); | ||||
SYSCTL_ADD_UQUAD(ctx, txslist, OID_AUTO, "tso_bytes", CTLFLAG_RD, | SYSCTL_ADD_UQUAD(ctx, txslist, OID_AUTO, "tso_bytes", CTLFLAG_RD, | ||||
&txstats->TSO_bytes, "TSO bytes"); | &txstats->TSO_bytes, "TSO bytes"); | ||||
SYSCTL_ADD_UQUAD(ctx, txslist, OID_AUTO, "ucast_packets", CTLFLAG_RD, | SYSCTL_ADD_UQUAD(ctx, txslist, OID_AUTO, "ucast_packets", CTLFLAG_RD, | ||||
&txstats->ucast_packets, "Unicast packets"); | &txstats->ucast_packets, "Unicast packets"); | ||||
SYSCTL_ADD_UQUAD(ctx, txslist, OID_AUTO, "unicast_bytes", CTLFLAG_RD, | SYSCTL_ADD_UQUAD(ctx, txslist, OID_AUTO, "unicast_bytes", CTLFLAG_RD, | ||||
Show All 15 Lines | |||||
struct sysctl_oid *node, *rxsnode; | struct sysctl_oid *node, *rxsnode; | ||||
struct sysctl_oid_list *list, *rxslist; | struct sysctl_oid_list *list, *rxslist; | ||||
struct UPT1_RxStats *rxstats; | struct UPT1_RxStats *rxstats; | ||||
char namebuf[16]; | char namebuf[16]; | ||||
rxstats = &rxq->vxrxq_rs->stats; | rxstats = &rxq->vxrxq_rs->stats; | ||||
snprintf(namebuf, sizeof(namebuf), "rxq%d", rxq->vxrxq_id); | snprintf(namebuf, sizeof(namebuf), "rxq%d", rxq->vxrxq_id); | ||||
node = SYSCTL_ADD_NODE(ctx, child, OID_AUTO, namebuf, CTLFLAG_RD, | node = SYSCTL_ADD_NODE(ctx, child, OID_AUTO, namebuf, | ||||
NULL, "Receive Queue"); | CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, "Receive Queue"); | ||||
rxq->vxrxq_sysctl = list = SYSCTL_CHILDREN(node); | rxq->vxrxq_sysctl = list = SYSCTL_CHILDREN(node); | ||||
/* | /* | ||||
* Add statistics reported by the host. These are updated by the | * Add statistics reported by the host. These are updated by the | ||||
* iflib txq timer on txq 0. | * iflib txq timer on txq 0. | ||||
*/ | */ | ||||
rxsnode = SYSCTL_ADD_NODE(ctx, list, OID_AUTO, "hstats", CTLFLAG_RD, | rxsnode = SYSCTL_ADD_NODE(ctx, list, OID_AUTO, "hstats", | ||||
NULL, "Host Statistics"); | CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, "Host Statistics"); | ||||
rxslist = SYSCTL_CHILDREN(rxsnode); | rxslist = SYSCTL_CHILDREN(rxsnode); | ||||
SYSCTL_ADD_UQUAD(ctx, rxslist, OID_AUTO, "lro_packets", CTLFLAG_RD, | SYSCTL_ADD_UQUAD(ctx, rxslist, OID_AUTO, "lro_packets", CTLFLAG_RD, | ||||
&rxstats->LRO_packets, "LRO packets"); | &rxstats->LRO_packets, "LRO packets"); | ||||
SYSCTL_ADD_UQUAD(ctx, rxslist, OID_AUTO, "lro_bytes", CTLFLAG_RD, | SYSCTL_ADD_UQUAD(ctx, rxslist, OID_AUTO, "lro_bytes", CTLFLAG_RD, | ||||
&rxstats->LRO_bytes, "LRO bytes"); | &rxstats->LRO_bytes, "LRO bytes"); | ||||
SYSCTL_ADD_UQUAD(ctx, rxslist, OID_AUTO, "ucast_packets", CTLFLAG_RD, | SYSCTL_ADD_UQUAD(ctx, rxslist, OID_AUTO, "ucast_packets", CTLFLAG_RD, | ||||
&rxstats->ucast_packets, "Unicast packets"); | &rxstats->ucast_packets, "Unicast packets"); | ||||
SYSCTL_ADD_UQUAD(ctx, rxslist, OID_AUTO, "unicast_bytes", CTLFLAG_RD, | SYSCTL_ADD_UQUAD(ctx, rxslist, OID_AUTO, "unicast_bytes", CTLFLAG_RD, | ||||
Show All 22 Lines | |||||
int i; | int i; | ||||
scctx = sc->vmx_scctx; | scctx = sc->vmx_scctx; | ||||
for (i = 0; i < scctx->isc_ntxqsets; i++) { | for (i = 0; i < scctx->isc_ntxqsets; i++) { | ||||
struct vmxnet3_txqueue *txq = &sc->vmx_txq[i]; | struct vmxnet3_txqueue *txq = &sc->vmx_txq[i]; | ||||
node = SYSCTL_ADD_NODE(ctx, txq->vxtxq_sysctl, OID_AUTO, | node = SYSCTL_ADD_NODE(ctx, txq->vxtxq_sysctl, OID_AUTO, | ||||
"debug", CTLFLAG_RD, NULL, ""); | "debug", CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, ""); | ||||
list = SYSCTL_CHILDREN(node); | list = SYSCTL_CHILDREN(node); | ||||
SYSCTL_ADD_UINT(ctx, list, OID_AUTO, "cmd_next", CTLFLAG_RD, | SYSCTL_ADD_UINT(ctx, list, OID_AUTO, "cmd_next", CTLFLAG_RD, | ||||
&txq->vxtxq_cmd_ring.vxtxr_next, 0, ""); | &txq->vxtxq_cmd_ring.vxtxr_next, 0, ""); | ||||
SYSCTL_ADD_UINT(ctx, list, OID_AUTO, "cmd_ndesc", CTLFLAG_RD, | SYSCTL_ADD_UINT(ctx, list, OID_AUTO, "cmd_ndesc", CTLFLAG_RD, | ||||
&txq->vxtxq_cmd_ring.vxtxr_ndesc, 0, ""); | &txq->vxtxq_cmd_ring.vxtxr_ndesc, 0, ""); | ||||
SYSCTL_ADD_INT(ctx, list, OID_AUTO, "cmd_gen", CTLFLAG_RD, | SYSCTL_ADD_INT(ctx, list, OID_AUTO, "cmd_gen", CTLFLAG_RD, | ||||
&txq->vxtxq_cmd_ring.vxtxr_gen, 0, ""); | &txq->vxtxq_cmd_ring.vxtxr_gen, 0, ""); | ||||
SYSCTL_ADD_UINT(ctx, list, OID_AUTO, "comp_next", CTLFLAG_RD, | SYSCTL_ADD_UINT(ctx, list, OID_AUTO, "comp_next", CTLFLAG_RD, | ||||
&txq->vxtxq_comp_ring.vxcr_next, 0, ""); | &txq->vxtxq_comp_ring.vxcr_next, 0, ""); | ||||
SYSCTL_ADD_UINT(ctx, list, OID_AUTO, "comp_ndesc", CTLFLAG_RD, | SYSCTL_ADD_UINT(ctx, list, OID_AUTO, "comp_ndesc", CTLFLAG_RD, | ||||
&txq->vxtxq_comp_ring.vxcr_ndesc, 0,""); | &txq->vxtxq_comp_ring.vxcr_ndesc, 0,""); | ||||
SYSCTL_ADD_INT(ctx, list, OID_AUTO, "comp_gen", CTLFLAG_RD, | SYSCTL_ADD_INT(ctx, list, OID_AUTO, "comp_gen", CTLFLAG_RD, | ||||
&txq->vxtxq_comp_ring.vxcr_gen, 0, ""); | &txq->vxtxq_comp_ring.vxcr_gen, 0, ""); | ||||
} | } | ||||
for (i = 0; i < scctx->isc_nrxqsets; i++) { | for (i = 0; i < scctx->isc_nrxqsets; i++) { | ||||
struct vmxnet3_rxqueue *rxq = &sc->vmx_rxq[i]; | struct vmxnet3_rxqueue *rxq = &sc->vmx_rxq[i]; | ||||
node = SYSCTL_ADD_NODE(ctx, rxq->vxrxq_sysctl, OID_AUTO, | node = SYSCTL_ADD_NODE(ctx, rxq->vxrxq_sysctl, OID_AUTO, | ||||
"debug", CTLFLAG_RD, NULL, ""); | "debug", CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, ""); | ||||
list = SYSCTL_CHILDREN(node); | list = SYSCTL_CHILDREN(node); | ||||
SYSCTL_ADD_UINT(ctx, list, OID_AUTO, "cmd0_ndesc", CTLFLAG_RD, | SYSCTL_ADD_UINT(ctx, list, OID_AUTO, "cmd0_ndesc", CTLFLAG_RD, | ||||
&rxq->vxrxq_cmd_ring[0].vxrxr_ndesc, 0, ""); | &rxq->vxrxq_cmd_ring[0].vxrxr_ndesc, 0, ""); | ||||
SYSCTL_ADD_INT(ctx, list, OID_AUTO, "cmd0_gen", CTLFLAG_RD, | SYSCTL_ADD_INT(ctx, list, OID_AUTO, "cmd0_gen", CTLFLAG_RD, | ||||
&rxq->vxrxq_cmd_ring[0].vxrxr_gen, 0, ""); | &rxq->vxrxq_cmd_ring[0].vxrxr_gen, 0, ""); | ||||
SYSCTL_ADD_UINT(ctx, list, OID_AUTO, "cmd1_ndesc", CTLFLAG_RD, | SYSCTL_ADD_UINT(ctx, list, OID_AUTO, "cmd1_ndesc", CTLFLAG_RD, | ||||
&rxq->vxrxq_cmd_ring[1].vxrxr_ndesc, 0, ""); | &rxq->vxrxq_cmd_ring[1].vxrxr_ndesc, 0, ""); | ||||
Show All 12 Lines |