Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/cxgbe/t4_sge.c
Show All 12 Lines | |||||
void | void | ||||
t4_sge_sysctls(struct adapter *sc, struct sysctl_ctx_list *ctx, | t4_sge_sysctls(struct adapter *sc, struct sysctl_ctx_list *ctx, | ||||
struct sysctl_oid_list *children) | struct sysctl_oid_list *children) | ||||
{ | { | ||||
struct sge_params *sp = &sc->params.sge; | struct sge_params *sp = &sc->params.sge; | ||||
SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "buffer_sizes", | SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "buffer_sizes", | ||||
CTLTYPE_STRING | CTLFLAG_RD, &sc->sge, 0, sysctl_bufsizes, "A", | CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, &sc->sge, 0, | ||||
sysctl_bufsizes, "A", | |||||
"freelist buffer sizes"); | "freelist buffer sizes"); | ||||
SYSCTL_ADD_INT(ctx, children, OID_AUTO, "fl_pktshift", CTLFLAG_RD, | SYSCTL_ADD_INT(ctx, children, OID_AUTO, "fl_pktshift", CTLFLAG_RD, | ||||
NULL, sp->fl_pktshift, "payload DMA offset in rx buffer (bytes)"); | NULL, sp->fl_pktshift, "payload DMA offset in rx buffer (bytes)"); | ||||
SYSCTL_ADD_INT(ctx, children, OID_AUTO, "fl_pad", CTLFLAG_RD, | SYSCTL_ADD_INT(ctx, children, OID_AUTO, "fl_pad", CTLFLAG_RD, | ||||
NULL, sp->pad_boundary, "payload pad boundary (bytes)"); | NULL, sp->pad_boundary, "payload pad boundary (bytes)"); | ||||
Show All 24 Lines | |||||
{ | { | ||||
struct sysctl_oid_list *children = SYSCTL_CHILDREN(oid); | struct sysctl_oid_list *children = SYSCTL_CHILDREN(oid); | ||||
SYSCTL_ADD_UAUTO(ctx, children, OID_AUTO, "ba", CTLFLAG_RD, &iq->ba, | SYSCTL_ADD_UAUTO(ctx, children, OID_AUTO, "ba", CTLFLAG_RD, &iq->ba, | ||||
"bus address of descriptor ring"); | "bus address of descriptor ring"); | ||||
SYSCTL_ADD_INT(ctx, children, OID_AUTO, "dmalen", CTLFLAG_RD, NULL, | SYSCTL_ADD_INT(ctx, children, OID_AUTO, "dmalen", CTLFLAG_RD, NULL, | ||||
iq->qsize * IQ_ESIZE, "descriptor ring size in bytes"); | iq->qsize * IQ_ESIZE, "descriptor ring size in bytes"); | ||||
SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "abs_id", | SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "abs_id", | ||||
CTLTYPE_INT | CTLFLAG_RD, &iq->abs_id, 0, sysctl_uint16, "I", | CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, &iq->abs_id, 0, | ||||
sysctl_uint16, "I", | |||||
"absolute id of the queue"); | "absolute id of the queue"); | ||||
SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cntxt_id", | SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cntxt_id", | ||||
CTLTYPE_INT | CTLFLAG_RD, &iq->cntxt_id, 0, sysctl_uint16, "I", | CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, &iq->cntxt_id, 0, | ||||
sysctl_uint16, "I", | |||||
"SGE context id of the queue"); | "SGE context id of the queue"); | ||||
SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cidx", | SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cidx", | ||||
CTLTYPE_INT | CTLFLAG_RD, &iq->cidx, 0, sysctl_uint16, "I", | CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, &iq->cidx, 0, | ||||
sysctl_uint16, "I", | |||||
"consumer index"); | "consumer index"); | ||||
} | } | ||||
static void | static void | ||||
add_fl_sysctls(struct adapter *sc, struct sysctl_ctx_list *ctx, | add_fl_sysctls(struct adapter *sc, struct sysctl_ctx_list *ctx, | ||||
struct sysctl_oid *oid, struct sge_fl *fl) | struct sysctl_oid *oid, struct sge_fl *fl) | ||||
{ | { | ||||
struct sysctl_oid_list *children = SYSCTL_CHILDREN(oid); | struct sysctl_oid_list *children = SYSCTL_CHILDREN(oid); | ||||
oid = SYSCTL_ADD_NODE(ctx, children, OID_AUTO, "fl", CTLFLAG_RD, NULL, | oid = SYSCTL_ADD_NODE(ctx, children, OID_AUTO, "fl", CTLFLAG_RD, NULL, | ||||
"freelist"); | "freelist"); | ||||
children = SYSCTL_CHILDREN(oid); | children = SYSCTL_CHILDREN(oid); | ||||
SYSCTL_ADD_UAUTO(ctx, children, OID_AUTO, "ba", CTLFLAG_RD, | SYSCTL_ADD_UAUTO(ctx, children, OID_AUTO, "ba", CTLFLAG_RD, | ||||
&fl->ba, "bus address of descriptor ring"); | &fl->ba, "bus address of descriptor ring"); | ||||
SYSCTL_ADD_INT(ctx, children, OID_AUTO, "dmalen", CTLFLAG_RD, NULL, | SYSCTL_ADD_INT(ctx, children, OID_AUTO, "dmalen", CTLFLAG_RD, NULL, | ||||
fl->sidx * EQ_ESIZE + sc->params.sge.spg_len, | fl->sidx * EQ_ESIZE + sc->params.sge.spg_len, | ||||
"desc ring size in bytes"); | "desc ring size in bytes"); | ||||
SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cntxt_id", | SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cntxt_id", | ||||
CTLTYPE_INT | CTLFLAG_RD, &fl->cntxt_id, 0, sysctl_uint16, "I", | CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, &fl->cntxt_id, 0, | ||||
sysctl_uint16, "I", | |||||
"SGE context id of the freelist"); | "SGE context id of the freelist"); | ||||
SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "padding", CTLFLAG_RD, NULL, | SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "padding", CTLFLAG_RD, NULL, | ||||
fl_pad ? 1 : 0, "padding enabled"); | fl_pad ? 1 : 0, "padding enabled"); | ||||
SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "packing", CTLFLAG_RD, NULL, | SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "packing", CTLFLAG_RD, NULL, | ||||
fl->flags & FL_BUF_PACKING ? 1 : 0, "packing enabled"); | fl->flags & FL_BUF_PACKING ? 1 : 0, "packing enabled"); | ||||
SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "cidx", CTLFLAG_RD, &fl->cidx, | SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "cidx", CTLFLAG_RD, &fl->cidx, | ||||
0, "consumer index"); | 0, "consumer index"); | ||||
if (fl->flags & FL_BUF_PACKING) { | if (fl->flags & FL_BUF_PACKING) { | ||||
Show All 24 Lines | |||||
children = SYSCTL_CHILDREN(oid); | children = SYSCTL_CHILDREN(oid); | ||||
snprintf(name, sizeof(name), "%d", idx); | snprintf(name, sizeof(name), "%d", idx); | ||||
oid = SYSCTL_ADD_NODE(ctx, children, OID_AUTO, name, CTLFLAG_RD, NULL, | oid = SYSCTL_ADD_NODE(ctx, children, OID_AUTO, name, CTLFLAG_RD, NULL, | ||||
"rx queue"); | "rx queue"); | ||||
children = SYSCTL_CHILDREN(oid); | children = SYSCTL_CHILDREN(oid); | ||||
SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "abs_id", | SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "abs_id", | ||||
CTLTYPE_INT | CTLFLAG_RD, &nm_rxq->iq_abs_id, 0, sysctl_uint16, | CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, &nm_rxq->iq_abs_id, | ||||
0, sysctl_uint16, | |||||
"I", "absolute id of the queue"); | "I", "absolute id of the queue"); | ||||
SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cntxt_id", | SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cntxt_id", | ||||
CTLTYPE_INT | CTLFLAG_RD, &nm_rxq->iq_cntxt_id, 0, sysctl_uint16, | CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, | ||||
&nm_rxq->iq_cntxt_id, 0, sysctl_uint16, | |||||
"I", "SGE context id of the queue"); | "I", "SGE context id of the queue"); | ||||
SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cidx", | SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cidx", | ||||
CTLTYPE_INT | CTLFLAG_RD, &nm_rxq->iq_cidx, 0, sysctl_uint16, "I", | CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, &nm_rxq->iq_cidx, 0, | ||||
sysctl_uint16, "I", | |||||
"consumer index"); | "consumer index"); | ||||
children = SYSCTL_CHILDREN(oid); | children = SYSCTL_CHILDREN(oid); | ||||
oid = SYSCTL_ADD_NODE(ctx, children, OID_AUTO, "fl", CTLFLAG_RD, NULL, | oid = SYSCTL_ADD_NODE(ctx, children, OID_AUTO, "fl", CTLFLAG_RD, NULL, | ||||
"freelist"); | "freelist"); | ||||
children = SYSCTL_CHILDREN(oid); | children = SYSCTL_CHILDREN(oid); | ||||
SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cntxt_id", | SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cntxt_id", | ||||
CTLTYPE_INT | CTLFLAG_RD, &nm_rxq->fl_cntxt_id, 0, sysctl_uint16, | CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, | ||||
&nm_rxq->fl_cntxt_id, 0, sysctl_uint16, | |||||
"I", "SGE context id of the freelist"); | "I", "SGE context id of the freelist"); | ||||
SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "cidx", CTLFLAG_RD, | SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "cidx", CTLFLAG_RD, | ||||
&nm_rxq->fl_cidx, 0, "consumer index"); | &nm_rxq->fl_cidx, 0, "consumer index"); | ||||
SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "pidx", CTLFLAG_RD, | SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "pidx", CTLFLAG_RD, | ||||
&nm_rxq->fl_pidx, 0, "producer index"); | &nm_rxq->fl_pidx, 0, "producer index"); | ||||
return (rc); | return (rc); | ||||
} | } | ||||
Show All 24 Lines | |||||
snprintf(name, sizeof(name), "%d", idx); | snprintf(name, sizeof(name), "%d", idx); | ||||
oid = SYSCTL_ADD_NODE(&vi->ctx, children, OID_AUTO, name, CTLFLAG_RD, | oid = SYSCTL_ADD_NODE(&vi->ctx, children, OID_AUTO, name, CTLFLAG_RD, | ||||
NULL, "netmap tx queue"); | NULL, "netmap tx queue"); | ||||
children = SYSCTL_CHILDREN(oid); | children = SYSCTL_CHILDREN(oid); | ||||
SYSCTL_ADD_UINT(&vi->ctx, children, OID_AUTO, "cntxt_id", CTLFLAG_RD, | SYSCTL_ADD_UINT(&vi->ctx, children, OID_AUTO, "cntxt_id", CTLFLAG_RD, | ||||
&nm_txq->cntxt_id, 0, "SGE context id of the queue"); | &nm_txq->cntxt_id, 0, "SGE context id of the queue"); | ||||
SYSCTL_ADD_PROC(&vi->ctx, children, OID_AUTO, "cidx", | SYSCTL_ADD_PROC(&vi->ctx, children, OID_AUTO, "cidx", | ||||
CTLTYPE_INT | CTLFLAG_RD, &nm_txq->cidx, 0, sysctl_uint16, "I", | CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, &nm_txq->cidx, 0, | ||||
sysctl_uint16, "I", | |||||
"consumer index"); | "consumer index"); | ||||
SYSCTL_ADD_PROC(&vi->ctx, children, OID_AUTO, "pidx", | SYSCTL_ADD_PROC(&vi->ctx, children, OID_AUTO, "pidx", | ||||
CTLTYPE_INT | CTLFLAG_RD, &nm_txq->pidx, 0, sysctl_uint16, "I", | CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, &nm_txq->pidx, 0, | ||||
sysctl_uint16, "I", | |||||
"producer index"); | "producer index"); | ||||
return (rc); | return (rc); | ||||
} | } | ||||
static int | static int | ||||
free_nm_txq(struct vi_info *vi, struct sge_nm_txq *nm_txq) | free_nm_txq(struct vi_info *vi, struct sge_nm_txq *nm_txq) | ||||
{ | { | ||||
Show All 24 Lines | |||||
SYSCTL_ADD_UAUTO(ctx, children, OID_AUTO, "ba", CTLFLAG_RD, | SYSCTL_ADD_UAUTO(ctx, children, OID_AUTO, "ba", CTLFLAG_RD, | ||||
&wrq->eq.ba, "bus address of descriptor ring"); | &wrq->eq.ba, "bus address of descriptor ring"); | ||||
SYSCTL_ADD_INT(ctx, children, OID_AUTO, "dmalen", CTLFLAG_RD, NULL, | SYSCTL_ADD_INT(ctx, children, OID_AUTO, "dmalen", CTLFLAG_RD, NULL, | ||||
wrq->eq.sidx * EQ_ESIZE + sc->params.sge.spg_len, | wrq->eq.sidx * EQ_ESIZE + sc->params.sge.spg_len, | ||||
"desc ring size in bytes"); | "desc ring size in bytes"); | ||||
SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "cntxt_id", CTLFLAG_RD, | SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "cntxt_id", CTLFLAG_RD, | ||||
&wrq->eq.cntxt_id, 0, "SGE context id of the queue"); | &wrq->eq.cntxt_id, 0, "SGE context id of the queue"); | ||||
SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cidx", | SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cidx", | ||||
CTLTYPE_INT | CTLFLAG_RD, &wrq->eq.cidx, 0, sysctl_uint16, "I", | CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, &wrq->eq.cidx, 0, | ||||
sysctl_uint16, "I", | |||||
"consumer index"); | "consumer index"); | ||||
SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "pidx", | SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "pidx", | ||||
CTLTYPE_INT | CTLFLAG_RD, &wrq->eq.pidx, 0, sysctl_uint16, "I", | CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, &wrq->eq.pidx, 0, | ||||
sysctl_uint16, "I", | |||||
"producer index"); | "producer index"); | ||||
SYSCTL_ADD_INT(ctx, children, OID_AUTO, "sidx", CTLFLAG_RD, NULL, | SYSCTL_ADD_INT(ctx, children, OID_AUTO, "sidx", CTLFLAG_RD, NULL, | ||||
wrq->eq.sidx, "status page index"); | wrq->eq.sidx, "status page index"); | ||||
SYSCTL_ADD_UQUAD(ctx, children, OID_AUTO, "tx_wrs_direct", CTLFLAG_RD, | SYSCTL_ADD_UQUAD(ctx, children, OID_AUTO, "tx_wrs_direct", CTLFLAG_RD, | ||||
&wrq->tx_wrs_direct, "# of work requests (direct)"); | &wrq->tx_wrs_direct, "# of work requests (direct)"); | ||||
SYSCTL_ADD_UQUAD(ctx, children, OID_AUTO, "tx_wrs_copied", CTLFLAG_RD, | SYSCTL_ADD_UQUAD(ctx, children, OID_AUTO, "tx_wrs_copied", CTLFLAG_RD, | ||||
&wrq->tx_wrs_copied, "# of work requests (copied)"); | &wrq->tx_wrs_copied, "# of work requests (copied)"); | ||||
SYSCTL_ADD_UQUAD(ctx, children, OID_AUTO, "tx_wrs_sspace", CTLFLAG_RD, | SYSCTL_ADD_UQUAD(ctx, children, OID_AUTO, "tx_wrs_sspace", CTLFLAG_RD, | ||||
Show All 24 Lines | |||||
SYSCTL_ADD_INT(&vi->ctx, children, OID_AUTO, "dmalen", CTLFLAG_RD, NULL, | SYSCTL_ADD_INT(&vi->ctx, children, OID_AUTO, "dmalen", CTLFLAG_RD, NULL, | ||||
eq->sidx * EQ_ESIZE + sc->params.sge.spg_len, | eq->sidx * EQ_ESIZE + sc->params.sge.spg_len, | ||||
"desc ring size in bytes"); | "desc ring size in bytes"); | ||||
SYSCTL_ADD_UINT(&vi->ctx, children, OID_AUTO, "abs_id", CTLFLAG_RD, | SYSCTL_ADD_UINT(&vi->ctx, children, OID_AUTO, "abs_id", CTLFLAG_RD, | ||||
&eq->abs_id, 0, "absolute id of the queue"); | &eq->abs_id, 0, "absolute id of the queue"); | ||||
SYSCTL_ADD_UINT(&vi->ctx, children, OID_AUTO, "cntxt_id", CTLFLAG_RD, | SYSCTL_ADD_UINT(&vi->ctx, children, OID_AUTO, "cntxt_id", CTLFLAG_RD, | ||||
&eq->cntxt_id, 0, "SGE context id of the queue"); | &eq->cntxt_id, 0, "SGE context id of the queue"); | ||||
SYSCTL_ADD_PROC(&vi->ctx, children, OID_AUTO, "cidx", | SYSCTL_ADD_PROC(&vi->ctx, children, OID_AUTO, "cidx", | ||||
CTLTYPE_INT | CTLFLAG_RD, &eq->cidx, 0, sysctl_uint16, "I", | CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, &eq->cidx, 0, | ||||
sysctl_uint16, "I", | |||||
"consumer index"); | "consumer index"); | ||||
SYSCTL_ADD_PROC(&vi->ctx, children, OID_AUTO, "pidx", | SYSCTL_ADD_PROC(&vi->ctx, children, OID_AUTO, "pidx", | ||||
CTLTYPE_INT | CTLFLAG_RD, &eq->pidx, 0, sysctl_uint16, "I", | CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, &eq->pidx, 0, | ||||
sysctl_uint16, "I", | |||||
"producer index"); | "producer index"); | ||||
SYSCTL_ADD_INT(&vi->ctx, children, OID_AUTO, "sidx", CTLFLAG_RD, NULL, | SYSCTL_ADD_INT(&vi->ctx, children, OID_AUTO, "sidx", CTLFLAG_RD, NULL, | ||||
eq->sidx, "status page index"); | eq->sidx, "status page index"); | ||||
SYSCTL_ADD_PROC(&vi->ctx, children, OID_AUTO, "tc", | SYSCTL_ADD_PROC(&vi->ctx, children, OID_AUTO, "tc", | ||||
CTLTYPE_INT | CTLFLAG_RW, vi, idx, sysctl_tc, "I", | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, vi, idx, | ||||
sysctl_tc, "I", | |||||
"traffic class (-1 means none)"); | "traffic class (-1 means none)"); | ||||
SYSCTL_ADD_UQUAD(&vi->ctx, children, OID_AUTO, "txcsum", CTLFLAG_RD, | SYSCTL_ADD_UQUAD(&vi->ctx, children, OID_AUTO, "txcsum", CTLFLAG_RD, | ||||
&txq->txcsum, "# of times hardware assisted with checksum"); | &txq->txcsum, "# of times hardware assisted with checksum"); | ||||
SYSCTL_ADD_UQUAD(&vi->ctx, children, OID_AUTO, "vlan_insertion", | SYSCTL_ADD_UQUAD(&vi->ctx, children, OID_AUTO, "vlan_insertion", | ||||
CTLFLAG_RD, &txq->vlan_insertion, | CTLFLAG_RD, &txq->vlan_insertion, | ||||
"# of times hardware inserted 802.1Q tag"); | "# of times hardware inserted 802.1Q tag"); | ||||
SYSCTL_ADD_UQUAD(&vi->ctx, children, OID_AUTO, "tso_wrs", CTLFLAG_RD, | SYSCTL_ADD_UQUAD(&vi->ctx, children, OID_AUTO, "tso_wrs", CTLFLAG_RD, | ||||
Show All 12 Lines |