Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/cxgbe/t4_main.c
- This file is larger than 256 KB, so syntax highlighting is disabled by default.
Show First 20 Lines • Show All 806 Lines • ▼ Show 20 Lines | |||||||||
static int load_bootcfg(struct adapter *, struct t4_data *); | static int load_bootcfg(struct adapter *, struct t4_data *); | ||||||||
static int cudbg_dump(struct adapter *, struct t4_cudbg_dump *); | static int cudbg_dump(struct adapter *, struct t4_cudbg_dump *); | ||||||||
static void free_offload_policy(struct t4_offload_policy *); | static void free_offload_policy(struct t4_offload_policy *); | ||||||||
static int set_offload_policy(struct adapter *, struct t4_offload_policy *); | static int set_offload_policy(struct adapter *, struct t4_offload_policy *); | ||||||||
static int read_card_mem(struct adapter *, int, struct t4_mem_range *); | static int read_card_mem(struct adapter *, int, struct t4_mem_range *); | ||||||||
static int read_i2c(struct adapter *, struct t4_i2c_data *); | static int read_i2c(struct adapter *, struct t4_i2c_data *); | ||||||||
static int clear_stats(struct adapter *, u_int); | static int clear_stats(struct adapter *, u_int); | ||||||||
#ifdef TCP_OFFLOAD | #ifdef TCP_OFFLOAD | ||||||||
static int toe_capability(struct vi_info *, int); | static int toe_capability(struct vi_info *, bool); | ||||||||
static void t4_async_event(void *, int); | static void t4_async_event(void *, int); | ||||||||
#endif | #endif | ||||||||
#ifdef KERN_TLS | |||||||||
static int ktls_capability(struct adapter *, bool); | |||||||||
#endif | |||||||||
static int mod_event(module_t, int, void *); | static int mod_event(module_t, int, void *); | ||||||||
static int notify_siblings(device_t, int); | static int notify_siblings(device_t, int); | ||||||||
struct { | struct { | ||||||||
uint16_t device; | uint16_t device; | ||||||||
char *desc; | char *desc; | ||||||||
} t4_pciids[] = { | } t4_pciids[] = { | ||||||||
{0xa000, "Chelsio Terminator 4 FPGA"}, | {0xa000, "Chelsio Terminator 4 FPGA"}, | ||||||||
▲ Show 20 Lines • Show All 1,007 Lines • ▼ Show 20 Lines | if (chip_id(sc) >= CHELSIO_T6) { | ||||||||
ifp->if_capabilities |= IFCAP_VXLAN_HWCSUM | IFCAP_VXLAN_HWTSO; | ifp->if_capabilities |= IFCAP_VXLAN_HWCSUM | IFCAP_VXLAN_HWTSO; | ||||||||
ifp->if_capenable |= IFCAP_VXLAN_HWCSUM | IFCAP_VXLAN_HWTSO; | ifp->if_capenable |= IFCAP_VXLAN_HWCSUM | IFCAP_VXLAN_HWTSO; | ||||||||
ifp->if_hwassist |= CSUM_INNER_IP6_UDP | CSUM_INNER_IP6_TCP | | ifp->if_hwassist |= CSUM_INNER_IP6_UDP | CSUM_INNER_IP6_TCP | | ||||||||
CSUM_INNER_IP6_TSO | CSUM_INNER_IP | CSUM_INNER_IP_UDP | | CSUM_INNER_IP6_TSO | CSUM_INNER_IP | CSUM_INNER_IP_UDP | | ||||||||
CSUM_INNER_IP_TCP | CSUM_INNER_IP_TSO | CSUM_ENCAP_VXLAN; | CSUM_INNER_IP_TCP | CSUM_INNER_IP_TSO | CSUM_ENCAP_VXLAN; | ||||||||
} | } | ||||||||
#ifdef TCP_OFFLOAD | #ifdef TCP_OFFLOAD | ||||||||
if (vi->nofldrxq != 0 && (sc->flags & KERN_TLS_OK) == 0) | if (vi->nofldrxq != 0) | ||||||||
ifp->if_capabilities |= IFCAP_TOE; | ifp->if_capabilities |= IFCAP_TOE; | ||||||||
#endif | #endif | ||||||||
#ifdef RATELIMIT | #ifdef RATELIMIT | ||||||||
if (is_ethoffload(sc) && vi->nofldtxq != 0) { | if (is_ethoffload(sc) && vi->nofldtxq != 0) { | ||||||||
ifp->if_capabilities |= IFCAP_TXRTLMT; | ifp->if_capabilities |= IFCAP_TXRTLMT; | ||||||||
ifp->if_capenable |= IFCAP_TXRTLMT; | ifp->if_capenable |= IFCAP_TXRTLMT; | ||||||||
} | } | ||||||||
#endif | #endif | ||||||||
ifp->if_hw_tsomax = IP_MAXPACKET; | ifp->if_hw_tsomax = IP_MAXPACKET; | ||||||||
if (vi->flags & TX_USES_VM_WR) | if (vi->flags & TX_USES_VM_WR) | ||||||||
ifp->if_hw_tsomaxsegcount = TX_SGL_SEGS_VM_TSO; | ifp->if_hw_tsomaxsegcount = TX_SGL_SEGS_VM_TSO; | ||||||||
else | else | ||||||||
ifp->if_hw_tsomaxsegcount = TX_SGL_SEGS_TSO; | ifp->if_hw_tsomaxsegcount = TX_SGL_SEGS_TSO; | ||||||||
#ifdef RATELIMIT | #ifdef RATELIMIT | ||||||||
if (is_ethoffload(sc) && vi->nofldtxq != 0) | if (is_ethoffload(sc) && vi->nofldtxq != 0) | ||||||||
ifp->if_hw_tsomaxsegcount = TX_SGL_SEGS_EO_TSO; | ifp->if_hw_tsomaxsegcount = TX_SGL_SEGS_EO_TSO; | ||||||||
#endif | #endif | ||||||||
ifp->if_hw_tsomaxsegsize = 65536; | ifp->if_hw_tsomaxsegsize = 65536; | ||||||||
#ifdef KERN_TLS | #ifdef KERN_TLS | ||||||||
if (sc->flags & KERN_TLS_OK) { | if (is_ktls(sc)) { | ||||||||
ifp->if_capabilities |= IFCAP_TXTLS; | ifp->if_capabilities |= IFCAP_TXTLS; | ||||||||
if (sc->flags & KERN_TLS_ON) | |||||||||
ifp->if_capenable |= IFCAP_TXTLS; | ifp->if_capenable |= IFCAP_TXTLS; | ||||||||
} | } | ||||||||
#endif | #endif | ||||||||
ether_ifattach(ifp, vi->hw_addr); | ether_ifattach(ifp, vi->hw_addr); | ||||||||
#ifdef DEV_NETMAP | #ifdef DEV_NETMAP | ||||||||
if (vi->nnmrxq != 0) | if (vi->nnmrxq != 0) | ||||||||
cxgbe_nm_attach(vi); | cxgbe_nm_attach(vi); | ||||||||
#endif | #endif | ||||||||
▲ Show 20 Lines • Show All 308 Lines • ▼ Show 20 Lines | if (mask & IFCAP_HWRXTSTMP) { | ||||||||
else | else | ||||||||
rxq->iq.flags &= ~IQ_RX_TIMESTAMP; | rxq->iq.flags &= ~IQ_RX_TIMESTAMP; | ||||||||
} | } | ||||||||
} | } | ||||||||
if (mask & IFCAP_MEXTPG) | if (mask & IFCAP_MEXTPG) | ||||||||
ifp->if_capenable ^= IFCAP_MEXTPG; | ifp->if_capenable ^= IFCAP_MEXTPG; | ||||||||
#ifdef KERN_TLS | #ifdef KERN_TLS | ||||||||
if (mask & IFCAP_TXTLS) | if (mask & IFCAP_TXTLS) { | ||||||||
int enable = (ifp->if_capenable ^ mask) & IFCAP_TXTLS; | |||||||||
rc = ktls_capability(sc, enable); | |||||||||
if (rc != 0) | |||||||||
goto fail; | |||||||||
ifp->if_capenable ^= (mask & IFCAP_TXTLS); | ifp->if_capenable ^= (mask & IFCAP_TXTLS); | ||||||||
} | |||||||||
#endif | #endif | ||||||||
if (mask & IFCAP_VXLAN_HWCSUM) { | if (mask & IFCAP_VXLAN_HWCSUM) { | ||||||||
ifp->if_capenable ^= IFCAP_VXLAN_HWCSUM; | ifp->if_capenable ^= IFCAP_VXLAN_HWCSUM; | ||||||||
ifp->if_hwassist ^= CSUM_INNER_IP6_UDP | | ifp->if_hwassist ^= CSUM_INNER_IP6_UDP | | ||||||||
CSUM_INNER_IP6_TCP | CSUM_INNER_IP | | CSUM_INNER_IP6_TCP | CSUM_INNER_IP | | ||||||||
CSUM_INNER_IP_UDP | CSUM_INNER_IP_TCP; | CSUM_INNER_IP_UDP | CSUM_INNER_IP_TCP; | ||||||||
} | } | ||||||||
if (mask & IFCAP_VXLAN_HWTSO) { | if (mask & IFCAP_VXLAN_HWTSO) { | ||||||||
▲ Show 20 Lines • Show All 2,576 Lines • ▼ Show 20 Lines | |||||||||
#ifdef KERN_TLS | #ifdef KERN_TLS | ||||||||
static void | static void | ||||||||
ktls_tick(void *arg) | ktls_tick(void *arg) | ||||||||
{ | { | ||||||||
struct adapter *sc; | struct adapter *sc; | ||||||||
uint32_t tstamp; | uint32_t tstamp; | ||||||||
sc = arg; | sc = arg; | ||||||||
if (sc->flags & KERN_TLS_ON) { | |||||||||
tstamp = tcp_ts_getticks(); | tstamp = tcp_ts_getticks(); | ||||||||
t4_write_reg(sc, A_TP_SYNC_TIME_HI, tstamp >> 1); | t4_write_reg(sc, A_TP_SYNC_TIME_HI, tstamp >> 1); | ||||||||
t4_write_reg(sc, A_TP_SYNC_TIME_LO, tstamp << 31); | t4_write_reg(sc, A_TP_SYNC_TIME_LO, tstamp << 31); | ||||||||
} | |||||||||
callout_schedule_sbt(&sc->ktls_tick, SBT_1MS, 0, C_HARDCLOCK); | callout_schedule_sbt(&sc->ktls_tick, SBT_1MS, 0, C_HARDCLOCK); | ||||||||
} | } | ||||||||
static void | static int | ||||||||
t4_enable_kern_tls(struct adapter *sc) | t4_config_kern_tls(struct adapter *sc, bool enable) | ||||||||
{ | { | ||||||||
uint32_t m, v; | int rc; | ||||||||
uint32_t param = V_FW_PARAMS_MNEM(FW_PARAMS_MNEM_DEV) | | |||||||||
V_FW_PARAMS_PARAM_X(FW_PARAMS_PARAM_DEV_KTLS_HW) | | |||||||||
V_FW_PARAMS_PARAM_Y(enable ? 1 : 0) | | |||||||||
V_FW_PARAMS_PARAM_Z(FW_PARAMS_PARAM_DEV_KTLS_HW_USER_ENABLE); | |||||||||
m = F_ENABLECBYP; | rc = -t4_set_params(sc, sc->mbox, sc->pf, 0, 1, ¶m, ¶m); | ||||||||
v = F_ENABLECBYP; | if (rc != 0) { | ||||||||
t4_set_reg_field(sc, A_TP_PARA_REG6, m, v); | CH_ERR(sc, "failed to %s KERN_TLS: %d\n", | ||||||||
jhbUnsubmitted Done Inline Actions
jhb: | |||||||||
enable ? "enable" : "disable", rc); | |||||||||
return (rc); | |||||||||
} | |||||||||
m = F_CPL_FLAGS_UPDATE_EN | F_SEQ_UPDATE_EN; | if (enable) | ||||||||
v = F_CPL_FLAGS_UPDATE_EN | F_SEQ_UPDATE_EN; | sc->flags |= KERN_TLS_ON; | ||||||||
t4_set_reg_field(sc, A_ULP_TX_CONFIG, m, v); | else | ||||||||
sc->flags &= ~KERN_TLS_ON; | |||||||||
m = F_NICMODE; | return (rc); | ||||||||
v = F_NICMODE; | |||||||||
t4_set_reg_field(sc, A_TP_IN_CONFIG, m, v); | |||||||||
m = F_LOOKUPEVERYPKT; | |||||||||
v = 0; | |||||||||
t4_set_reg_field(sc, A_TP_INGRESS_CONFIG, m, v); | |||||||||
m = F_TXDEFERENABLE | F_DISABLEWINDOWPSH | F_DISABLESEPPSHFLAG; | |||||||||
v = F_DISABLEWINDOWPSH; | |||||||||
t4_set_reg_field(sc, A_TP_PC_CONFIG, m, v); | |||||||||
m = V_TIMESTAMPRESOLUTION(M_TIMESTAMPRESOLUTION); | |||||||||
v = V_TIMESTAMPRESOLUTION(0x1f); | |||||||||
t4_set_reg_field(sc, A_TP_TIMER_RESOLUTION, m, v); | |||||||||
sc->flags |= KERN_TLS_OK; | |||||||||
sc->tlst.inline_keys = t4_tls_inline_keys; | |||||||||
sc->tlst.combo_wrs = t4_tls_combo_wrs; | |||||||||
} | } | ||||||||
#endif | #endif | ||||||||
static int | static int | ||||||||
set_params__post_init(struct adapter *sc) | set_params__post_init(struct adapter *sc) | ||||||||
{ | { | ||||||||
uint32_t mask, param, val; | uint32_t mask, param, val; | ||||||||
#ifdef TCP_OFFLOAD | #ifdef TCP_OFFLOAD | ||||||||
▲ Show 20 Lines • Show All 97 Lines • ▼ Show 20 Lines | if (t4_toe_rexmt_backoff[i] != -1) { | ||||||||
M_TIMERBACKOFFINDEX0 << shift, v << shift); | M_TIMERBACKOFFINDEX0 << shift, v << shift); | ||||||||
} | } | ||||||||
} | } | ||||||||
#endif | #endif | ||||||||
#ifdef KERN_TLS | #ifdef KERN_TLS | ||||||||
if (sc->cryptocaps & FW_CAPS_CONFIG_TLSKEYS && | if (sc->cryptocaps & FW_CAPS_CONFIG_TLSKEYS && | ||||||||
sc->toecaps & FW_CAPS_CONFIG_TOE) { | sc->toecaps & FW_CAPS_CONFIG_TOE) { | ||||||||
if (t4_kern_tls != 0) | |||||||||
t4_enable_kern_tls(sc); | |||||||||
else { | |||||||||
/* | /* | ||||||||
* Limit TOE connections to 2 reassembly | * Limit TOE connections to 2 reassembly "islands". This is | ||||||||
* "islands". This is required for TOE TLS | * required for TOE TLS connections to downgrade to plain TOE | ||||||||
* connections to downgrade to plain TOE | * connections if an unsupported TLS version or ciphersuite is | ||||||||
* connections if an unsupported TLS version | * used. | ||||||||
* or ciphersuite is used. | |||||||||
*/ | */ | ||||||||
t4_tp_wr_bits_indirect(sc, A_TP_FRAG_CONFIG, | t4_tp_wr_bits_indirect(sc, A_TP_FRAG_CONFIG, | ||||||||
V_PASSMODE(M_PASSMODE), V_PASSMODE(2)); | V_PASSMODE(M_PASSMODE), V_PASSMODE(2)); | ||||||||
if (is_ktls(sc)) { | |||||||||
sc->tlst.inline_keys = t4_tls_inline_keys; | |||||||||
sc->tlst.combo_wrs = t4_tls_combo_wrs; | |||||||||
if (t4_kern_tls != 0) | |||||||||
t4_config_kern_tls(sc, true); | |||||||||
} | } | ||||||||
} | } | ||||||||
#endif | #endif | ||||||||
return (0); | return (0); | ||||||||
} | } | ||||||||
#undef FW_PARAM_PFVF | #undef FW_PARAM_PFVF | ||||||||
#undef FW_PARAM_DEV | #undef FW_PARAM_DEV | ||||||||
▲ Show 20 Lines • Show All 891 Lines • ▼ Show 20 Lines | for (i = 0; i < nitems(rss_key); i++) { | ||||||||
rss_key[i] = htobe32(raw_rss_key[nitems(rss_key) - 1 - i]); | rss_key[i] = htobe32(raw_rss_key[nitems(rss_key) - 1 - i]); | ||||||||
} | } | ||||||||
t4_write_rss_key(sc, &rss_key[0], -1, 1); | t4_write_rss_key(sc, &rss_key[0], -1, 1); | ||||||||
#endif | #endif | ||||||||
if (!(sc->flags & IS_VF)) | if (!(sc->flags & IS_VF)) | ||||||||
t4_intr_enable(sc); | t4_intr_enable(sc); | ||||||||
#ifdef KERN_TLS | #ifdef KERN_TLS | ||||||||
if (sc->flags & KERN_TLS_OK) | if (is_ktls(sc)) | ||||||||
callout_reset_sbt(&sc->ktls_tick, SBT_1MS, 0, ktls_tick, sc, | callout_reset_sbt(&sc->ktls_tick, SBT_1MS, 0, ktls_tick, sc, | ||||||||
C_HARDCLOCK); | C_HARDCLOCK); | ||||||||
#endif | #endif | ||||||||
sc->flags |= FULL_INIT_DONE; | sc->flags |= FULL_INIT_DONE; | ||||||||
done: | done: | ||||||||
if (rc != 0) | if (rc != 0) | ||||||||
adapter_full_uninit(sc); | adapter_full_uninit(sc); | ||||||||
▲ Show 20 Lines • Show All 873 Lines • ▼ Show 20 Lines | #endif | ||||||||
if (chip_id(sc) >= CHELSIO_T5) { | if (chip_id(sc) >= CHELSIO_T5) { | ||||||||
SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "wcwr_stats", | SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "wcwr_stats", | ||||||||
CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 0, | CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 0, | ||||||||
sysctl_wcwr_stats, "A", "write combined work requests"); | sysctl_wcwr_stats, "A", "write combined work requests"); | ||||||||
} | } | ||||||||
#ifdef KERN_TLS | #ifdef KERN_TLS | ||||||||
if (sc->flags & KERN_TLS_OK) { | if (is_ktls(sc)) { | ||||||||
/* | /* | ||||||||
* dev.t4nex.0.tls. | * dev.t4nex.0.tls. | ||||||||
*/ | */ | ||||||||
oid = SYSCTL_ADD_NODE(ctx, c0, OID_AUTO, "tls", | oid = SYSCTL_ADD_NODE(ctx, c0, OID_AUTO, "tls", | ||||||||
CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, "KERN_TLS parameters"); | CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, "KERN_TLS parameters"); | ||||||||
children = SYSCTL_CHILDREN(oid); | children = SYSCTL_CHILDREN(oid); | ||||||||
SYSCTL_ADD_INT(ctx, children, OID_AUTO, "inline_keys", | SYSCTL_ADD_INT(ctx, children, OID_AUTO, "inline_keys", | ||||||||
▲ Show 20 Lines • Show All 4,277 Lines • ▼ Show 20 Lines | default: | ||||||||
rc = ENOTTY; | rc = ENOTTY; | ||||||||
} | } | ||||||||
return (rc); | return (rc); | ||||||||
} | } | ||||||||
#ifdef TCP_OFFLOAD | #ifdef TCP_OFFLOAD | ||||||||
static int | static int | ||||||||
toe_capability(struct vi_info *vi, int enable) | toe_capability(struct vi_info *vi, bool enable) | ||||||||
{ | { | ||||||||
int rc; | int rc; | ||||||||
struct port_info *pi = vi->pi; | struct port_info *pi = vi->pi; | ||||||||
struct adapter *sc = pi->adapter; | struct adapter *sc = pi->adapter; | ||||||||
ASSERT_SYNCHRONIZED_OP(sc); | ASSERT_SYNCHRONIZED_OP(sc); | ||||||||
if (!is_offload(sc)) | if (!is_offload(sc)) | ||||||||
return (ENODEV); | return (ENODEV); | ||||||||
if (enable) { | if (enable) { | ||||||||
#ifdef KERN_TLS | |||||||||
if (sc->flags & KERN_TLS_ON) { | |||||||||
int i, j, n; | |||||||||
struct port_info *p; | |||||||||
struct vi_info *v; | |||||||||
/* | |||||||||
* Switch off KTLS and reconfig for TOE if KTLS is not | |||||||||
* enabled on any ifnet. | |||||||||
*/ | |||||||||
n = 0; | |||||||||
for_each_port(sc, i) { | |||||||||
p = sc->port[i]; | |||||||||
for_each_vi(p, j, v) { | |||||||||
if (v->ifp->if_capenable & IFCAP_TXTLS) { | |||||||||
CH_WARN(sc, | |||||||||
"%s has KTLS enabled.\n", | |||||||||
jhbUnsubmitted Done Inline Actions
jhb: | |||||||||
device_get_nameunit(v->dev)); | |||||||||
n++; | |||||||||
} | |||||||||
} | |||||||||
} | |||||||||
if (n > 0) { | |||||||||
CH_WARN(sc, "Disable KTLS on all interfaces " | |||||||||
jhbUnsubmitted Done Inline Actions
jhb: | |||||||||
"associated with this adapter before " | |||||||||
"trying to enable TOE.\n"); | |||||||||
return (EAGAIN); | |||||||||
} | |||||||||
rc = t4_config_kern_tls(sc, false); | |||||||||
if (rc) | |||||||||
return (rc); | |||||||||
} | |||||||||
#endif | |||||||||
if ((vi->ifp->if_capenable & IFCAP_TOE) != 0) { | if ((vi->ifp->if_capenable & IFCAP_TOE) != 0) { | ||||||||
/* TOE is already enabled. */ | /* TOE is already enabled. */ | ||||||||
return (0); | return (0); | ||||||||
} | } | ||||||||
/* | /* | ||||||||
* We need the port's queues around so that we're able to send | * We need the port's queues around so that we're able to send | ||||||||
* and receive CPLs to/from the TOE even if the ifnet for this | * and receive CPLs to/from the TOE even if the ifnet for this | ||||||||
▲ Show 20 Lines • Show All 189 Lines • ▼ Show 20 Lines | |||||||||
int | int | ||||||||
uld_active(struct adapter *sc, int uld_id) | uld_active(struct adapter *sc, int uld_id) | ||||||||
{ | { | ||||||||
MPASS(uld_id >= 0 && uld_id <= ULD_MAX); | MPASS(uld_id >= 0 && uld_id <= ULD_MAX); | ||||||||
return (isset(&sc->active_ulds, uld_id)); | return (isset(&sc->active_ulds, uld_id)); | ||||||||
} | |||||||||
#endif | |||||||||
#ifdef KERN_TLS | |||||||||
static int | |||||||||
ktls_capability(struct adapter *sc, bool enable) | |||||||||
{ | |||||||||
ASSERT_SYNCHRONIZED_OP(sc); | |||||||||
if (!is_ktls(sc)) | |||||||||
return (ENODEV); | |||||||||
if (enable) { | |||||||||
if (sc->flags & KERN_TLS_ON) | |||||||||
return (0); /* already on */ | |||||||||
if (sc->offload_map != 0) { | |||||||||
CH_WARN(sc, | |||||||||
"Disable TOE on all interfaces associated with " | |||||||||
"this adapter before trying to enable NIC TLS.\n"); | |||||||||
Done Inline ActionsMaybe call it "NIC TLS" rather than KTLS since TOE TLS is also KTLS? jhb: Maybe call it "NIC TLS" rather than KTLS since TOE TLS is also KTLS? | |||||||||
return (EAGAIN); | |||||||||
} | |||||||||
return (t4_config_kern_tls(sc, true)); | |||||||||
} else { | |||||||||
/* | |||||||||
* Nothing to do for disable. If TOE is enabled sometime later | |||||||||
* then toe_capability will reconfigure the hardware. | |||||||||
*/ | |||||||||
return (0); | |||||||||
} | |||||||||
} | } | ||||||||
#endif | #endif | ||||||||
/* | /* | ||||||||
* t = ptr to tunable. | * t = ptr to tunable. | ||||||||
* nc = number of CPUs. | * nc = number of CPUs. | ||||||||
* c = compiled in default for that tunable. | * c = compiled in default for that tunable. | ||||||||
*/ | */ | ||||||||
▲ Show 20 Lines • Show All 575 Lines • Show Last 20 Lines |