Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/cxgb/cxgb_sge.c
Show All 12 Lines | |||||
struct sysctl_oid_list *children; | struct sysctl_oid_list *children; | ||||
int i, j; | int i, j; | ||||
ctx = device_get_sysctl_ctx(sc->dev); | ctx = device_get_sysctl_ctx(sc->dev); | ||||
children = SYSCTL_CHILDREN(device_get_sysctl_tree(sc->dev)); | children = SYSCTL_CHILDREN(device_get_sysctl_tree(sc->dev)); | ||||
SYSCTL_ADD_PROC(ctx, children, OID_AUTO, | SYSCTL_ADD_PROC(ctx, children, OID_AUTO, | ||||
"intr_coal", | "intr_coal", | ||||
CTLTYPE_INT|CTLFLAG_RW, sc, | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, | ||||
0, t3_set_coalesce_usecs, | 0, t3_set_coalesce_usecs, | ||||
"I", "interrupt coalescing timer (us)"); | "I", "interrupt coalescing timer (us)"); | ||||
SYSCTL_ADD_PROC(ctx, children, OID_AUTO, | SYSCTL_ADD_PROC(ctx, children, OID_AUTO, | ||||
"pkt_timestamp", | "pkt_timestamp", | ||||
CTLTYPE_INT | CTLFLAG_RW, sc, | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, | ||||
0, t3_pkt_timestamp, | 0, t3_pkt_timestamp, | ||||
"I", "provide packet timestamp instead of connection hash"); | "I", "provide packet timestamp instead of connection hash"); | ||||
for (i = 0; i < sc->params.nports; i++) { | for (i = 0; i < sc->params.nports; i++) { | ||||
struct port_info *pi = &sc->port[i]; | struct port_info *pi = &sc->port[i]; | ||||
struct sysctl_oid *poid; | struct sysctl_oid *poid; | ||||
struct sysctl_oid_list *poidlist; | struct sysctl_oid_list *poidlist; | ||||
struct mac_stats *mstats = &pi->mac.stats; | struct mac_stats *mstats = &pi->mac.stats; | ||||
Show All 24 Lines | |||||
"physical_address_of the queue"); | "physical_address_of the queue"); | ||||
SYSCTL_ADD_UINT(ctx, rspqpoidlist, OID_AUTO, "dump_start", | SYSCTL_ADD_UINT(ctx, rspqpoidlist, OID_AUTO, "dump_start", | ||||
CTLFLAG_RW, &qs->rspq.rspq_dump_start, | CTLFLAG_RW, &qs->rspq.rspq_dump_start, | ||||
0, "start rspq dump entry"); | 0, "start rspq dump entry"); | ||||
SYSCTL_ADD_UINT(ctx, rspqpoidlist, OID_AUTO, "dump_count", | SYSCTL_ADD_UINT(ctx, rspqpoidlist, OID_AUTO, "dump_count", | ||||
CTLFLAG_RW, &qs->rspq.rspq_dump_count, | CTLFLAG_RW, &qs->rspq.rspq_dump_count, | ||||
0, "#rspq entries to dump"); | 0, "#rspq entries to dump"); | ||||
SYSCTL_ADD_PROC(ctx, rspqpoidlist, OID_AUTO, "qdump", | SYSCTL_ADD_PROC(ctx, rspqpoidlist, OID_AUTO, "qdump", | ||||
CTLTYPE_STRING | CTLFLAG_RD, &qs->rspq, | CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, | ||||
&qs->rspq, | |||||
0, t3_dump_rspq, "A", "dump of the response queue"); | 0, t3_dump_rspq, "A", "dump of the response queue"); | ||||
SYSCTL_ADD_UQUAD(ctx, txqpoidlist, OID_AUTO, "dropped", | SYSCTL_ADD_UQUAD(ctx, txqpoidlist, OID_AUTO, "dropped", | ||||
CTLFLAG_RD, &qs->txq[TXQ_ETH].txq_mr->br_drops, | CTLFLAG_RD, &qs->txq[TXQ_ETH].txq_mr->br_drops, | ||||
"#tunneled packets dropped"); | "#tunneled packets dropped"); | ||||
SYSCTL_ADD_UINT(ctx, txqpoidlist, OID_AUTO, "sendqlen", | SYSCTL_ADD_UINT(ctx, txqpoidlist, OID_AUTO, "sendqlen", | ||||
CTLFLAG_RD, &qs->txq[TXQ_ETH].sendq.mq_len, | CTLFLAG_RD, &qs->txq[TXQ_ETH].sendq.mq_len, | ||||
0, "#tunneled packets waiting to be sent"); | 0, "#tunneled packets waiting to be sent"); | ||||
Show All 24 Lines | |||||
0, "hardware queue pidx"); | 0, "hardware queue pidx"); | ||||
SYSCTL_ADD_UINT(ctx, txqpoidlist, OID_AUTO, "dump_start", | SYSCTL_ADD_UINT(ctx, txqpoidlist, OID_AUTO, "dump_start", | ||||
CTLFLAG_RW, &qs->txq[TXQ_ETH].txq_dump_start, | CTLFLAG_RW, &qs->txq[TXQ_ETH].txq_dump_start, | ||||
0, "txq start idx for dump"); | 0, "txq start idx for dump"); | ||||
SYSCTL_ADD_UINT(ctx, txqpoidlist, OID_AUTO, "dump_count", | SYSCTL_ADD_UINT(ctx, txqpoidlist, OID_AUTO, "dump_count", | ||||
CTLFLAG_RW, &qs->txq[TXQ_ETH].txq_dump_count, | CTLFLAG_RW, &qs->txq[TXQ_ETH].txq_dump_count, | ||||
0, "txq #entries to dump"); | 0, "txq #entries to dump"); | ||||
SYSCTL_ADD_PROC(ctx, txqpoidlist, OID_AUTO, "qdump", | SYSCTL_ADD_PROC(ctx, txqpoidlist, OID_AUTO, "qdump", | ||||
CTLTYPE_STRING | CTLFLAG_RD, &qs->txq[TXQ_ETH], | CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, | ||||
&qs->txq[TXQ_ETH], | |||||
0, t3_dump_txq_eth, "A", "dump of the transmit queue"); | 0, t3_dump_txq_eth, "A", "dump of the transmit queue"); | ||||
SYSCTL_ADD_UINT(ctx, ctrlqpoidlist, OID_AUTO, "dump_start", | SYSCTL_ADD_UINT(ctx, ctrlqpoidlist, OID_AUTO, "dump_start", | ||||
CTLFLAG_RW, &qs->txq[TXQ_CTRL].txq_dump_start, | CTLFLAG_RW, &qs->txq[TXQ_CTRL].txq_dump_start, | ||||
0, "ctrlq start idx for dump"); | 0, "ctrlq start idx for dump"); | ||||
SYSCTL_ADD_UINT(ctx, ctrlqpoidlist, OID_AUTO, "dump_count", | SYSCTL_ADD_UINT(ctx, ctrlqpoidlist, OID_AUTO, "dump_count", | ||||
CTLFLAG_RW, &qs->txq[TXQ_CTRL].txq_dump_count, | CTLFLAG_RW, &qs->txq[TXQ_CTRL].txq_dump_count, | ||||
0, "ctrl #entries to dump"); | 0, "ctrl #entries to dump"); | ||||
SYSCTL_ADD_PROC(ctx, ctrlqpoidlist, OID_AUTO, "qdump", | SYSCTL_ADD_PROC(ctx, ctrlqpoidlist, OID_AUTO, "qdump", | ||||
CTLTYPE_STRING | CTLFLAG_RD, &qs->txq[TXQ_CTRL], | CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, | ||||
&qs->txq[TXQ_CTRL], | |||||
0, t3_dump_txq_ctrl, "A", "dump of the transmit queue"); | 0, t3_dump_txq_ctrl, "A", "dump of the transmit queue"); | ||||
SYSCTL_ADD_U64(ctx, lropoidlist, OID_AUTO, "lro_queued", | SYSCTL_ADD_U64(ctx, lropoidlist, OID_AUTO, "lro_queued", | ||||
CTLFLAG_RD, &qs->lro.ctrl.lro_queued, 0, NULL); | CTLFLAG_RD, &qs->lro.ctrl.lro_queued, 0, NULL); | ||||
SYSCTL_ADD_U64(ctx, lropoidlist, OID_AUTO, "lro_flushed", | SYSCTL_ADD_U64(ctx, lropoidlist, OID_AUTO, "lro_flushed", | ||||
CTLFLAG_RD, &qs->lro.ctrl.lro_flushed, 0, NULL); | CTLFLAG_RD, &qs->lro.ctrl.lro_flushed, 0, NULL); | ||||
SYSCTL_ADD_U64(ctx, lropoidlist, OID_AUTO, "lro_bad_csum", | SYSCTL_ADD_U64(ctx, lropoidlist, OID_AUTO, "lro_bad_csum", | ||||
CTLFLAG_RD, &qs->lro.ctrl.lro_bad_csum, 0, NULL); | CTLFLAG_RD, &qs->lro.ctrl.lro_bad_csum, 0, NULL); | ||||
Show All 14 Lines | |||||
* sysctl_handle_macstat first updates *all* the counters from | * sysctl_handle_macstat first updates *all* the counters from | ||||
* the hardware, and then returns the latest value of the | * the hardware, and then returns the latest value of the | ||||
* requested counter. Best would be to update only the | * requested counter. Best would be to update only the | ||||
* requested counter from hardware, but t3_mac_update_stats() | * requested counter from hardware, but t3_mac_update_stats() | ||||
* hides all the register details and we don't want to dive into | * hides all the register details and we don't want to dive into | ||||
* all that here. | * all that here. | ||||
*/ | */ | ||||
#define CXGB_SYSCTL_ADD_QUAD(a) SYSCTL_ADD_OID(ctx, poidlist, OID_AUTO, #a, \ | #define CXGB_SYSCTL_ADD_QUAD(a) SYSCTL_ADD_OID(ctx, poidlist, OID_AUTO, #a, \ | ||||
(CTLTYPE_U64 | CTLFLAG_RD), pi, offsetof(struct mac_stats, a), \ | CTLTYPE_U64 | CTLFLAG_RD | CTLFLAG_NEEDGIANT, \ | ||||
pi, offsetof(struct mac_stats, a), \ | |||||
sysctl_handle_macstat, "QU", 0) | sysctl_handle_macstat, "QU", 0) | ||||
CXGB_SYSCTL_ADD_QUAD(tx_octets); | CXGB_SYSCTL_ADD_QUAD(tx_octets); | ||||
CXGB_SYSCTL_ADD_QUAD(tx_octets_bad); | CXGB_SYSCTL_ADD_QUAD(tx_octets_bad); | ||||
CXGB_SYSCTL_ADD_QUAD(tx_frames); | CXGB_SYSCTL_ADD_QUAD(tx_frames); | ||||
CXGB_SYSCTL_ADD_QUAD(tx_mcast_frames); | CXGB_SYSCTL_ADD_QUAD(tx_mcast_frames); | ||||
CXGB_SYSCTL_ADD_QUAD(tx_bcast_frames); | CXGB_SYSCTL_ADD_QUAD(tx_bcast_frames); | ||||
CXGB_SYSCTL_ADD_QUAD(tx_pause); | CXGB_SYSCTL_ADD_QUAD(tx_pause); | ||||
CXGB_SYSCTL_ADD_QUAD(tx_deferred); | CXGB_SYSCTL_ADD_QUAD(tx_deferred); | ||||
Show All 12 Lines |