aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/cxgb
diff options
context:
space:
mode:
authorPawel Biernacki <kaktus@FreeBSD.org>2020-02-26 14:26:36 +0000
committerPawel Biernacki <kaktus@FreeBSD.org>2020-02-26 14:26:36 +0000
commit7029da5c36f2d3cf6bb6c81bf551229f416399e8 (patch)
tree53cae9da1371117a3ac21d0d0f3f030a692807ae /sys/dev/cxgb
parentd7313dc6f5fcab29946951936597772dfff6a4be (diff)
Notes
Diffstat (limited to 'sys/dev/cxgb')
-rw-r--r--sys/dev/cxgb/cxgb_main.c3
-rw-r--r--sys/dev/cxgb/cxgb_sge.c43
2 files changed, 28 insertions, 18 deletions
diff --git a/sys/dev/cxgb/cxgb_main.c b/sys/dev/cxgb/cxgb_main.c
index ffe2b680e12f9..229c88089a51a 100644
--- a/sys/dev/cxgb/cxgb_main.c
+++ b/sys/dev/cxgb/cxgb_main.c
@@ -238,7 +238,8 @@ static SLIST_HEAD(, uld_info) t3_uld_list;
*/
static int msi_allowed = 2;
-SYSCTL_NODE(_hw, OID_AUTO, cxgb, CTLFLAG_RD, 0, "CXGB driver parameters");
+SYSCTL_NODE(_hw, OID_AUTO, cxgb, CTLFLAG_RD | CTLFLAG_MPSAFE, 0,
+ "CXGB driver parameters");
SYSCTL_INT(_hw_cxgb, OID_AUTO, msi_allowed, CTLFLAG_RDTUN, &msi_allowed, 0,
"MSI-X, MSI, INTx selector");
diff --git a/sys/dev/cxgb/cxgb_sge.c b/sys/dev/cxgb/cxgb_sge.c
index 60876543bf7bd..33900b67906c2 100644
--- a/sys/dev/cxgb/cxgb_sge.c
+++ b/sys/dev/cxgb/cxgb_sge.c
@@ -3451,13 +3451,13 @@ t3_add_configured_sysctls(adapter_t *sc)
SYSCTL_ADD_PROC(ctx, children, OID_AUTO,
"intr_coal",
- CTLTYPE_INT|CTLFLAG_RW, sc,
+ CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc,
0, t3_set_coalesce_usecs,
"I", "interrupt coalescing timer (us)");
SYSCTL_ADD_PROC(ctx, children, OID_AUTO,
"pkt_timestamp",
- CTLTYPE_INT | CTLFLAG_RW, sc,
+ CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc,
0, t3_pkt_timestamp,
"I", "provide packet timestamp instead of connection hash");
@@ -3469,7 +3469,8 @@ t3_add_configured_sysctls(adapter_t *sc)
snprintf(pi->namebuf, PORT_NAME_LEN, "port%d", i);
poid = SYSCTL_ADD_NODE(ctx, children, OID_AUTO,
- pi->namebuf, CTLFLAG_RD, NULL, "port statistics");
+ pi->namebuf, CTLFLAG_RD | CTLFLAG_MPSAFE, NULL,
+ "port statistics");
poidlist = SYSCTL_CHILDREN(poid);
SYSCTL_ADD_UINT(ctx, poidlist, OID_AUTO,
"nqsets", CTLFLAG_RD, &pi->nqsets,
@@ -3487,7 +3488,8 @@ t3_add_configured_sysctls(adapter_t *sc)
snprintf(qs->namebuf, QS_NAME_LEN, "qs%d", j);
qspoid = SYSCTL_ADD_NODE(ctx, poidlist, OID_AUTO,
- qs->namebuf, CTLFLAG_RD, NULL, "qset statistics");
+ qs->namebuf, CTLFLAG_RD | CTLFLAG_MPSAFE, NULL,
+ "qset statistics");
qspoidlist = SYSCTL_CHILDREN(qspoid);
SYSCTL_ADD_UINT(ctx, qspoidlist, OID_AUTO, "fl0_empty",
@@ -3498,19 +3500,23 @@ t3_add_configured_sysctls(adapter_t *sc)
"freelist #1 empty");
rspqpoid = SYSCTL_ADD_NODE(ctx, qspoidlist, OID_AUTO,
- rspq_name, CTLFLAG_RD, NULL, "rspq statistics");
+ rspq_name, CTLFLAG_RD | CTLFLAG_MPSAFE, NULL,
+ "rspq statistics");
rspqpoidlist = SYSCTL_CHILDREN(rspqpoid);
txqpoid = SYSCTL_ADD_NODE(ctx, qspoidlist, OID_AUTO,
- txq_names[0], CTLFLAG_RD, NULL, "txq statistics");
+ txq_names[0], CTLFLAG_RD | CTLFLAG_MPSAFE, NULL,
+ "txq statistics");
txqpoidlist = SYSCTL_CHILDREN(txqpoid);
ctrlqpoid = SYSCTL_ADD_NODE(ctx, qspoidlist, OID_AUTO,
- txq_names[2], CTLFLAG_RD, NULL, "ctrlq statistics");
+ txq_names[2], CTLFLAG_RD | CTLFLAG_MPSAFE, NULL,
+ "ctrlq statistics");
ctrlqpoidlist = SYSCTL_CHILDREN(ctrlqpoid);
lropoid = SYSCTL_ADD_NODE(ctx, qspoidlist, OID_AUTO,
- "lro_stats", CTLFLAG_RD, NULL, "LRO statistics");
+ "lro_stats", CTLFLAG_RD | CTLFLAG_MPSAFE, NULL,
+ "LRO statistics");
lropoidlist = SYSCTL_CHILDREN(lropoid);
SYSCTL_ADD_UINT(ctx, rspqpoidlist, OID_AUTO, "size",
@@ -3535,8 +3541,9 @@ t3_add_configured_sysctls(adapter_t *sc)
CTLFLAG_RW, &qs->rspq.rspq_dump_count,
0, "#rspq entries to dump");
SYSCTL_ADD_PROC(ctx, rspqpoidlist, OID_AUTO, "qdump",
- CTLTYPE_STRING | CTLFLAG_RD, &qs->rspq,
- 0, t3_dump_rspq, "A", "dump of the response queue");
+ CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT,
+ &qs->rspq, 0, t3_dump_rspq, "A",
+ "dump of the response queue");
SYSCTL_ADD_UQUAD(ctx, txqpoidlist, OID_AUTO, "dropped",
CTLFLAG_RD, &qs->txq[TXQ_ETH].txq_mr->br_drops,
@@ -3595,8 +3602,9 @@ t3_add_configured_sysctls(adapter_t *sc)
CTLFLAG_RW, &qs->txq[TXQ_ETH].txq_dump_count,
0, "txq #entries to dump");
SYSCTL_ADD_PROC(ctx, txqpoidlist, OID_AUTO, "qdump",
- CTLTYPE_STRING | CTLFLAG_RD, &qs->txq[TXQ_ETH],
- 0, t3_dump_txq_eth, "A", "dump of the transmit queue");
+ CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT,
+ &qs->txq[TXQ_ETH], 0, t3_dump_txq_eth, "A",
+ "dump of the transmit queue");
SYSCTL_ADD_UINT(ctx, ctrlqpoidlist, OID_AUTO, "dump_start",
CTLFLAG_RW, &qs->txq[TXQ_CTRL].txq_dump_start,
@@ -3605,8 +3613,9 @@ t3_add_configured_sysctls(adapter_t *sc)
CTLFLAG_RW, &qs->txq[TXQ_CTRL].txq_dump_count,
0, "ctrl #entries to dump");
SYSCTL_ADD_PROC(ctx, ctrlqpoidlist, OID_AUTO, "qdump",
- CTLTYPE_STRING | CTLFLAG_RD, &qs->txq[TXQ_CTRL],
- 0, t3_dump_txq_ctrl, "A", "dump of the transmit queue");
+ CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT,
+ &qs->txq[TXQ_CTRL], 0, t3_dump_txq_ctrl, "A",
+ "dump of the transmit queue");
SYSCTL_ADD_U64(ctx, lropoidlist, OID_AUTO, "lro_queued",
CTLFLAG_RD, &qs->lro.ctrl.lro_queued, 0, NULL);
@@ -3620,7 +3629,7 @@ t3_add_configured_sysctls(adapter_t *sc)
/* Now add a node for mac stats. */
poid = SYSCTL_ADD_NODE(ctx, poidlist, OID_AUTO, "mac_stats",
- CTLFLAG_RD, NULL, "MAC statistics");
+ CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, "MAC statistics");
poidlist = SYSCTL_CHILDREN(poid);
/*
@@ -3636,8 +3645,8 @@ t3_add_configured_sysctls(adapter_t *sc)
* all that here.
*/
#define CXGB_SYSCTL_ADD_QUAD(a) SYSCTL_ADD_OID(ctx, poidlist, OID_AUTO, #a, \
- (CTLTYPE_U64 | CTLFLAG_RD), pi, offsetof(struct mac_stats, a), \
- sysctl_handle_macstat, "QU", 0)
+ CTLTYPE_U64 | CTLFLAG_RD | CTLFLAG_NEEDGIANT, pi, \
+ offsetof(struct mac_stats, a), sysctl_handle_macstat, "QU", 0)
CXGB_SYSCTL_ADD_QUAD(tx_octets);
CXGB_SYSCTL_ADD_QUAD(tx_octets_bad);
CXGB_SYSCTL_ADD_QUAD(tx_frames);