Author: np
Date: Mon Oct  5 22:18:04 2020
New Revision: 366467
URL: https://svnweb.freebsd.org/changeset/base/366467

Log:
  cxgbe(4) sysctls do not need Giant.
  
  Sponsored by: Chelsio Communications

Modified:
  head/sys/dev/cxgbe/t4_main.c
  head/sys/dev/cxgbe/t4_sge.c

Modified: head/sys/dev/cxgbe/t4_main.c
==============================================================================
--- head/sys/dev/cxgbe/t4_main.c        Mon Oct  5 20:57:44 2020        
(r366466)
+++ head/sys/dev/cxgbe/t4_main.c        Mon Oct  5 22:18:04 2020        
(r366467)
@@ -6327,7 +6327,7 @@ t4_sysctls(struct adapter *sc)
            sc->params.nports, "# of ports");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "doorbells",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, doorbells,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, doorbells,
            (uintptr_t)&sc->doorbells, sysctl_bitfield_8b, "A",
            "available doorbells");
 
@@ -6335,12 +6335,12 @@ t4_sysctls(struct adapter *sc)
            sc->params.vpd.cclk, "core clock frequency (in KHz)");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "holdoff_timers",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE,
            sc->params.sge.timer_val, sizeof(sc->params.sge.timer_val),
            sysctl_int_array, "A", "interrupt holdoff timer values (us)");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "holdoff_pkt_counts",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE,
            sc->params.sge.counter_val, sizeof(sc->params.sge.counter_val),
            sysctl_int_array, "A", "interrupt holdoff packet counter values");
 
@@ -6400,7 +6400,7 @@ t4_sysctls(struct adapter *sc)
 
 #define SYSCTL_CAP(name, n, text) \
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, #name, \
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, caps_decoder[n], \
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, caps_decoder[n], \
            (uintptr_t)&sc->name, sysctl_bitfield_16b, "A", \
            "available " text " capabilities")
 
@@ -6419,27 +6419,27 @@ t4_sysctls(struct adapter *sc)
            NULL, sc->tids.nftids, "number of filters");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "temperature",
-           CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0,
+           CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 0,
            sysctl_temperature, "I", "chip temperature (in Celsius)");
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "reset_sensor",
-           CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0,
+           CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, sc, 0,
            sysctl_reset_sensor, "I", "reset the chip's temperature sensor.");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "loadavg",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 0,
            sysctl_loadavg, "A",
            "microprocessor load averages (debug firmwares only)");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "core_vdd",
-           CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0, sysctl_vdd,
+           CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 0, sysctl_vdd,
            "I", "core Vdd (in mV)");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "local_cpus",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, LOCAL_CPUS,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, LOCAL_CPUS,
            sysctl_cpus, "A", "local CPUs");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "intr_cpus",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, INTR_CPUS,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, INTR_CPUS,
            sysctl_cpus, "A", "preferred CPUs for interrupts");
 
        SYSCTL_ADD_INT(ctx, children, OID_AUTO, "swintr", CTLFLAG_RW,
@@ -6454,175 +6454,175 @@ t4_sysctls(struct adapter *sc)
        children = SYSCTL_CHILDREN(oid);
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cctrl",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 0,
            sysctl_cctrl, "A", "congestion control");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cim_ibq_tp0",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 0,
            sysctl_cim_ibq_obq, "A", "CIM IBQ 0 (TP0)");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cim_ibq_tp1",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 1,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 1,
            sysctl_cim_ibq_obq, "A", "CIM IBQ 1 (TP1)");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cim_ibq_ulp",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 2,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 2,
            sysctl_cim_ibq_obq, "A", "CIM IBQ 2 (ULP)");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cim_ibq_sge0",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 3,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 3,
            sysctl_cim_ibq_obq, "A", "CIM IBQ 3 (SGE0)");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cim_ibq_sge1",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 4,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 4,
            sysctl_cim_ibq_obq, "A", "CIM IBQ 4 (SGE1)");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cim_ibq_ncsi",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 5,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 5,
            sysctl_cim_ibq_obq, "A", "CIM IBQ 5 (NCSI)");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cim_la",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 0,
            sysctl_cim_la, "A", "CIM logic analyzer");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cim_ma_la",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 0,
            sysctl_cim_ma_la, "A", "CIM MA logic analyzer");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cim_obq_ulp0",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc,
            0 + CIM_NUM_IBQ, sysctl_cim_ibq_obq, "A", "CIM OBQ 0 (ULP0)");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cim_obq_ulp1",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc,
            1 + CIM_NUM_IBQ, sysctl_cim_ibq_obq, "A", "CIM OBQ 1 (ULP1)");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cim_obq_ulp2",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc,
            2 + CIM_NUM_IBQ, sysctl_cim_ibq_obq, "A", "CIM OBQ 2 (ULP2)");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cim_obq_ulp3",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc,
            3 + CIM_NUM_IBQ, sysctl_cim_ibq_obq, "A", "CIM OBQ 3 (ULP3)");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cim_obq_sge",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc,
            4 + CIM_NUM_IBQ, sysctl_cim_ibq_obq, "A", "CIM OBQ 4 (SGE)");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cim_obq_ncsi",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc,
            5 + CIM_NUM_IBQ, sysctl_cim_ibq_obq, "A", "CIM OBQ 5 (NCSI)");
 
        if (chip_id(sc) > CHELSIO_T4) {
                SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cim_obq_sge0_rx",
-                   CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc,
+                   CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc,
                    6 + CIM_NUM_IBQ, sysctl_cim_ibq_obq, "A",
                    "CIM OBQ 6 (SGE0-RX)");
 
                SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cim_obq_sge1_rx",
-                   CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc,
+                   CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc,
                    7 + CIM_NUM_IBQ, sysctl_cim_ibq_obq, "A",
                    "CIM OBQ 7 (SGE1-RX)");
        }
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cim_pif_la",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 0,
            sysctl_cim_pif_la, "A", "CIM PIF logic analyzer");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cim_qcfg",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 0,
            sysctl_cim_qcfg, "A", "CIM queue configuration");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cpl_stats",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 0,
            sysctl_cpl_stats, "A", "CPL statistics");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "ddp_stats",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 0,
            sysctl_ddp_stats, "A", "non-TCP DDP statistics");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "devlog",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 0,
            sysctl_devlog, "A", "firmware's device log");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "fcoe_stats",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 0,
            sysctl_fcoe_stats, "A", "FCoE statistics");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "hw_sched",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 0,
            sysctl_hw_sched, "A", "hardware scheduler ");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "l2t",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 0,
            sysctl_l2t, "A", "hardware L2 table");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "smt",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 0,
            sysctl_smt, "A", "hardware source MAC table");
 
 #ifdef INET6
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "clip",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 0,
            sysctl_clip, "A", "active CLIP table entries");
 #endif
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "lb_stats",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 0,
            sysctl_lb_stats, "A", "loopback statistics");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "meminfo",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 0,
            sysctl_meminfo, "A", "memory regions");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "mps_tcam",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 0,
            chip_id(sc) <= CHELSIO_T5 ? sysctl_mps_tcam : sysctl_mps_tcam_t6,
            "A", "MPS TCAM entries");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "path_mtus",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 0,
            sysctl_path_mtus, "A", "path MTUs");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "pm_stats",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 0,
            sysctl_pm_stats, "A", "PM statistics");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "rdma_stats",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 0,
            sysctl_rdma_stats, "A", "RDMA statistics");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "tcp_stats",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 0,
            sysctl_tcp_stats, "A", "TCP statistics");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "tids",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 0,
            sysctl_tids, "A", "TID information");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "tp_err_stats",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 0,
            sysctl_tp_err_stats, "A", "TP error statistics");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "tp_la_mask",
-           CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0,
+           CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, sc, 0,
            sysctl_tp_la_mask, "I", "TP logic analyzer event capture mask");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "tp_la",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 0,
            sysctl_tp_la, "A", "TP logic analyzer");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "tx_rate",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 0,
            sysctl_tx_rate, "A", "Tx rate");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "ulprx_la",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 0,
            sysctl_ulprx_la, "A", "ULPRX logic analyzer");
 
        if (chip_id(sc) >= CHELSIO_T5) {
                SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "wcwr_stats",
-                   CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0,
+                   CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 0,
                    sysctl_wcwr_stats, "A", "write combined work requests");
        }
 
@@ -6679,11 +6679,11 @@ t4_sysctls(struct adapter *sc)
 
                sc->tt.tls = 0;
                SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "tls", CTLTYPE_INT |
-                   CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, sysctl_tls, "I",
+                   CTLFLAG_RW | CTLFLAG_MPSAFE, sc, 0, sysctl_tls, "I",
                    "Inline TLS allowed");
 
                SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "tls_rx_ports",
-                   CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0,
+                   CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, sc, 0,
                    sysctl_tls_rx_ports, "I",
                    "TCP ports that use inline TLS+TOE RX");
 
@@ -6708,72 +6708,72 @@ t4_sysctls(struct adapter *sc)
                    "autorcvbuf increment");
 
                SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "timer_tick",
-                   CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0,
+                   CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 0,
                    sysctl_tp_tick, "A", "TP timer tick (us)");
 
                SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "timestamp_tick",
-                   CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 1,
+                   CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 1,
                    sysctl_tp_tick, "A", "TCP timestamp tick (us)");
 
                SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "dack_tick",
-                   CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 2,
+                   CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 2,
                    sysctl_tp_tick, "A", "DACK tick (us)");
 
                SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "dack_timer",
-                   CTLTYPE_UINT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0,
+                   CTLTYPE_UINT | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 0,
                    sysctl_tp_dack_timer, "IU", "DACK timer (us)");
 
                SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "rexmt_min",
-                   CTLTYPE_ULONG | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc,
+                   CTLTYPE_ULONG | CTLFLAG_RD | CTLFLAG_MPSAFE, sc,
                    A_TP_RXT_MIN, sysctl_tp_timer, "LU",
                    "Minimum retransmit interval (us)");
 
                SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "rexmt_max",
-                   CTLTYPE_ULONG | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc,
+                   CTLTYPE_ULONG | CTLFLAG_RD | CTLFLAG_MPSAFE, sc,
                    A_TP_RXT_MAX, sysctl_tp_timer, "LU",
                    "Maximum retransmit interval (us)");
 
                SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "persist_min",
-                   CTLTYPE_ULONG | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc,
+                   CTLTYPE_ULONG | CTLFLAG_RD | CTLFLAG_MPSAFE, sc,
                    A_TP_PERS_MIN, sysctl_tp_timer, "LU",
                    "Persist timer min (us)");
 
                SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "persist_max",
-                   CTLTYPE_ULONG | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc,
+                   CTLTYPE_ULONG | CTLFLAG_RD | CTLFLAG_MPSAFE, sc,
                    A_TP_PERS_MAX, sysctl_tp_timer, "LU",
                    "Persist timer max (us)");
 
                SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "keepalive_idle",
-                   CTLTYPE_ULONG | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc,
+                   CTLTYPE_ULONG | CTLFLAG_RD | CTLFLAG_MPSAFE, sc,
                    A_TP_KEEP_IDLE, sysctl_tp_timer, "LU",
                    "Keepalive idle timer (us)");
 
                SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "keepalive_interval",
-                   CTLTYPE_ULONG | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc,
+                   CTLTYPE_ULONG | CTLFLAG_RD | CTLFLAG_MPSAFE, sc,
                    A_TP_KEEP_INTVL, sysctl_tp_timer, "LU",
                    "Keepalive interval timer (us)");
 
                SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "initial_srtt",
-                   CTLTYPE_ULONG | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc,
+                   CTLTYPE_ULONG | CTLFLAG_RD | CTLFLAG_MPSAFE, sc,
                    A_TP_INIT_SRTT, sysctl_tp_timer, "LU", "Initial SRTT (us)");
 
                SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "finwait2_timer",
-                   CTLTYPE_ULONG | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc,
+                   CTLTYPE_ULONG | CTLFLAG_RD | CTLFLAG_MPSAFE, sc,
                    A_TP_FINWAIT2_TIMER, sysctl_tp_timer, "LU",
                    "FINWAIT2 timer (us)");
 
                SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "syn_rexmt_count",
-                   CTLTYPE_UINT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc,
+                   CTLTYPE_UINT | CTLFLAG_RD | CTLFLAG_MPSAFE, sc,
                    S_SYNSHIFTMAX, sysctl_tp_shift_cnt, "IU",
                    "Number of SYN retransmissions before abort");
 
                SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "rexmt_count",
-                   CTLTYPE_UINT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc,
+                   CTLTYPE_UINT | CTLFLAG_RD | CTLFLAG_MPSAFE, sc,
                    S_RXTSHIFTMAXR2, sysctl_tp_shift_cnt, "IU",
                    "Number of retransmissions before abort");
 
                SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "keepalive_count",
-                   CTLTYPE_UINT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc,
+                   CTLTYPE_UINT | CTLFLAG_RD | CTLFLAG_MPSAFE, sc,
                    S_KEEPALIVEMAXR2, sysctl_tp_shift_cnt, "IU",
                    "Number of keepalive probes before abort");
 
@@ -6784,7 +6784,7 @@ t4_sysctls(struct adapter *sc)
                for (i = 0; i < 16; i++) {
                        snprintf(s, sizeof(s), "%u", i);
                        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, s,
-                           CTLTYPE_UINT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc,
+                           CTLTYPE_UINT | CTLFLAG_RD | CTLFLAG_MPSAFE, sc,
                            i, sysctl_tp_backoff, "IU",
                            "TOE retransmit backoff");
                }
@@ -6824,7 +6824,7 @@ vi_sysctls(struct vi_info *vi)
 
        if (IS_MAIN_VI(vi)) {
                SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "rsrv_noflowq",
-                   CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, vi, 0,
+                   CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, vi, 0,
                    sysctl_noflowq, "IU",
                    "Reserve queue 0 for non-flowid packets");
        }
@@ -6835,7 +6835,7 @@ vi_sysctls(struct vi_info *vi)
                    NULL, 1, "use VM work requests for transmit");
        } else {
                SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "tx_vm_wr",
-                   CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, vi, 0,
+                   CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, vi, 0,
                    sysctl_tx_vm_wr, "I", "use VM work requestes for transmit");
        }
 
@@ -6848,11 +6848,11 @@ vi_sysctls(struct vi_info *vi)
                    CTLFLAG_RD, &vi->first_ofld_rxq, 0,
                    "index of first TOE rx queue");
                SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "holdoff_tmr_idx_ofld",
-                   CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, vi, 0,
+                   CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, vi, 0,
                    sysctl_holdoff_tmr_idx_ofld, "I",
                    "holdoff timer index for TOE queues");
                SYSCTL_ADD_PROC(ctx, children, OID_AUTO, 
"holdoff_pktc_idx_ofld",
-                   CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, vi, 0,
+                   CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, vi, 0,
                    sysctl_holdoff_pktc_idx_ofld, "I",
                    "holdoff packet counter index for TOE queues");
        }
@@ -6883,17 +6883,17 @@ vi_sysctls(struct vi_info *vi)
 #endif
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "holdoff_tmr_idx",
-           CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, vi, 0,
+           CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, vi, 0,
            sysctl_holdoff_tmr_idx, "I", "holdoff timer index");
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "holdoff_pktc_idx",
-           CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, vi, 0,
+           CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, vi, 0,
            sysctl_holdoff_pktc_idx, "I", "holdoff packet counter index");
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "qsize_rxq",
-           CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, vi, 0,
+           CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, vi, 0,
            sysctl_qsize_rxq, "I", "rx queue size");
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "qsize_txq",
-           CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, vi, 0,
+           CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, vi, 0,
            sysctl_qsize_txq, "I", "tx queue size");
 }
 
@@ -6917,30 +6917,30 @@ cxgbe_sysctls(struct port_info *pi)
        children = SYSCTL_CHILDREN(oid);
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "linkdnrc",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, pi, 0,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, pi, 0,
            sysctl_linkdnrc, "A", "reason why link is down");
        if (pi->port_type == FW_PORT_TYPE_BT_XAUI) {
                SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "temperature",
-                   CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, pi, 0,
+                   CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_MPSAFE, pi, 0,
                    sysctl_btphy, "I", "PHY temperature (in Celsius)");
                SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "fw_version",
-                   CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, pi, 1,
+                   CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_MPSAFE, pi, 1,
                    sysctl_btphy, "I", "PHY firmware version");
        }
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "pause_settings",
-           CTLTYPE_STRING | CTLFLAG_RW | CTLFLAG_NEEDGIANT, pi, 0,
+           CTLTYPE_STRING | CTLFLAG_RW | CTLFLAG_MPSAFE, pi, 0,
            sysctl_pause_settings, "A",
            "PAUSE settings (bit 0 = rx_pause, 1 = tx_pause, 2 = 
pause_autoneg)");
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "fec",
-           CTLTYPE_STRING | CTLFLAG_RW | CTLFLAG_NEEDGIANT, pi, 0,
+           CTLTYPE_STRING | CTLFLAG_RW | CTLFLAG_MPSAFE, pi, 0,
            sysctl_fec, "A",
            "FECs to use (bit 0 = RS, 1 = FC, 2 = none, 5 = auto, 6 = module)");
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "module_fec",
-           CTLTYPE_STRING | CTLFLAG_NEEDGIANT, pi, 0, sysctl_module_fec, "A",
+           CTLTYPE_STRING | CTLFLAG_MPSAFE, pi, 0, sysctl_module_fec, "A",
            "FEC recommended by the cable/transceiver");
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "autoneg",
-           CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, pi, 0,
+           CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, pi, 0,
            sysctl_autoneg, "I",
            "autonegotiation (-1 = not supported)");
 
@@ -6982,12 +6982,12 @@ cxgbe_sysctls(struct port_info *pi)
                    SYSCTL_CHILDREN(oid), OID_AUTO, name,
                    CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, "traffic class"));
                SYSCTL_ADD_PROC(ctx, children2, OID_AUTO, "flags",
-                   CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, tc_flags,
+                   CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, tc_flags,
                    (uintptr_t)&tc->flags, sysctl_bitfield_8b, "A", "flags");
                SYSCTL_ADD_UINT(ctx, children2, OID_AUTO, "refcount",
                    CTLFLAG_RD, &tc->refcount, 0, "references to this class");
                SYSCTL_ADD_PROC(ctx, children2, OID_AUTO, "params",
-                   CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc,
+                   CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc,
                    (pi->port_id << 16) | i, sysctl_tc_params, "A",
                    "traffic class parameters");
        }
@@ -7004,7 +7004,7 @@ cxgbe_sysctls(struct port_info *pi)
 
 #define SYSCTL_ADD_T4_REG64(pi, name, desc, reg) \
     SYSCTL_ADD_OID(ctx, children, OID_AUTO, name, \
-        CTLTYPE_U64 | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, reg, \
+        CTLTYPE_U64 | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, reg, \
         sysctl_handle_t4_reg64, "QU", desc)
 
        SYSCTL_ADD_T4_REG64(pi, "tx_octets", "# of octets in good frames",

Modified: head/sys/dev/cxgbe/t4_sge.c
==============================================================================
--- head/sys/dev/cxgbe/t4_sge.c Mon Oct  5 20:57:44 2020        (r366466)
+++ head/sys/dev/cxgbe/t4_sge.c Mon Oct  5 22:18:04 2020        (r366467)
@@ -963,7 +963,7 @@ t4_sge_sysctls(struct adapter *sc, struct sysctl_ctx_l
        struct sge_params *sp = &sc->params.sge;
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "buffer_sizes",
-           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0,
+           CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 0,
            sysctl_bufsizes, "A", "freelist buffer sizes");
 
        SYSCTL_ADD_INT(ctx, children, OID_AUTO, "fl_pktshift", CTLFLAG_RD,
@@ -3698,13 +3698,13 @@ add_iq_sysctls(struct sysctl_ctx_list *ctx, struct sys
        SYSCTL_ADD_INT(ctx, children, OID_AUTO, "dmalen", CTLFLAG_RD, NULL,
            iq->qsize * IQ_ESIZE, "descriptor ring size in bytes");
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "abs_id",
-           CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, &iq->abs_id, 0,
+           CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_MPSAFE, &iq->abs_id, 0,
            sysctl_uint16, "I", "absolute id of the queue");
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cntxt_id",
-           CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, &iq->cntxt_id, 0,
+           CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_MPSAFE, &iq->cntxt_id, 0,
            sysctl_uint16, "I", "SGE context id of the queue");
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cidx",
-           CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, &iq->cidx, 0,
+           CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_MPSAFE, &iq->cidx, 0,
            sysctl_uint16, "I", "consumer index");
 }
 
@@ -3724,7 +3724,7 @@ add_fl_sysctls(struct adapter *sc, struct sysctl_ctx_l
            fl->sidx * EQ_ESIZE + sc->params.sge.spg_len,
            "desc ring size in bytes");
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cntxt_id",
-           CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, &fl->cntxt_id, 0,
+           CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_MPSAFE, &fl->cntxt_id, 0,
            sysctl_uint16, "I", "SGE context id of the freelist");
        SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "padding", CTLFLAG_RD, NULL,
            fl_pad ? 1 : 0, "padding enabled");
@@ -3988,13 +3988,13 @@ alloc_nm_rxq(struct vi_info *vi, struct sge_nm_rxq *nm
        children = SYSCTL_CHILDREN(oid);
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "abs_id",
-           CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, &nm_rxq->iq_abs_id,
+           CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_MPSAFE, &nm_rxq->iq_abs_id,
            0, sysctl_uint16, "I", "absolute id of the queue");
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cntxt_id",
-           CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, &nm_rxq->iq_cntxt_id,
+           CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_MPSAFE, &nm_rxq->iq_cntxt_id,
            0, sysctl_uint16, "I", "SGE context id of the queue");
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cidx",
-           CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, &nm_rxq->iq_cidx, 0,
+           CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_MPSAFE, &nm_rxq->iq_cidx, 0,
            sysctl_uint16, "I", "consumer index");
 
        children = SYSCTL_CHILDREN(oid);
@@ -4003,7 +4003,7 @@ alloc_nm_rxq(struct vi_info *vi, struct sge_nm_rxq *nm
        children = SYSCTL_CHILDREN(oid);
 
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cntxt_id",
-           CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, &nm_rxq->fl_cntxt_id,
+           CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_MPSAFE, &nm_rxq->fl_cntxt_id,
            0, sysctl_uint16, "I", "SGE context id of the freelist");
        SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "cidx", CTLFLAG_RD,
            &nm_rxq->fl_cidx, 0, "consumer index");
@@ -4071,10 +4071,10 @@ alloc_nm_txq(struct vi_info *vi, struct sge_nm_txq *nm
        SYSCTL_ADD_UINT(&vi->ctx, children, OID_AUTO, "cntxt_id", CTLFLAG_RD,
            &nm_txq->cntxt_id, 0, "SGE context id of the queue");
        SYSCTL_ADD_PROC(&vi->ctx, children, OID_AUTO, "cidx",
-           CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, &nm_txq->cidx, 0,
+           CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_MPSAFE, &nm_txq->cidx, 0,
            sysctl_uint16, "I", "consumer index");
        SYSCTL_ADD_PROC(&vi->ctx, children, OID_AUTO, "pidx",
-           CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, &nm_txq->pidx, 0,
+           CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_MPSAFE, &nm_txq->pidx, 0,
            sysctl_uint16, "I", "producer index");
 
        return (rc);
@@ -4392,10 +4392,10 @@ alloc_wrq(struct adapter *sc, struct vi_info *vi, stru
        SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "cntxt_id", CTLFLAG_RD,
            &wrq->eq.cntxt_id, 0, "SGE context id of the queue");
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cidx",
-           CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, &wrq->eq.cidx, 0,
+           CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_MPSAFE, &wrq->eq.cidx, 0,
            sysctl_uint16, "I", "consumer index");
        SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "pidx",
-           CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, &wrq->eq.pidx, 0,
+           CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_MPSAFE, &wrq->eq.pidx, 0,
            sysctl_uint16, "I", "producer index");
        SYSCTL_ADD_INT(ctx, children, OID_AUTO, "sidx", CTLFLAG_RD, NULL,
            wrq->eq.sidx, "status page index");
@@ -4495,16 +4495,16 @@ alloc_txq(struct vi_info *vi, struct sge_txq *txq, int
        SYSCTL_ADD_UINT(&vi->ctx, children, OID_AUTO, "cntxt_id", CTLFLAG_RD,
            &eq->cntxt_id, 0, "SGE context id of the queue");
        SYSCTL_ADD_PROC(&vi->ctx, children, OID_AUTO, "cidx",
-           CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, &eq->cidx, 0,
+           CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_MPSAFE, &eq->cidx, 0,
            sysctl_uint16, "I", "consumer index");
        SYSCTL_ADD_PROC(&vi->ctx, children, OID_AUTO, "pidx",
-           CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, &eq->pidx, 0,
+           CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_MPSAFE, &eq->pidx, 0,
            sysctl_uint16, "I", "producer index");
        SYSCTL_ADD_INT(&vi->ctx, children, OID_AUTO, "sidx", CTLFLAG_RD, NULL,
            eq->sidx, "status page index");
 
        SYSCTL_ADD_PROC(&vi->ctx, children, OID_AUTO, "tc",
-           CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, vi, idx, sysctl_tc,
+           CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, vi, idx, sysctl_tc,
            "I", "traffic class (-1 means none)");
 
        SYSCTL_ADD_UQUAD(&vi->ctx, children, OID_AUTO, "txcsum", CTLFLAG_RD,
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to