xref: /dpdk/drivers/common/sfc_efx/base/efx_mon.c (revision 672386c1e9e1f64f7aa3b1360ad22dc737ea8d72)
15e111ed8SAndrew Rybchenko /* SPDX-License-Identifier: BSD-3-Clause
25e111ed8SAndrew Rybchenko  *
3*672386c1SAndrew Rybchenko  * Copyright(c) 2019-2021 Xilinx, Inc.
45e111ed8SAndrew Rybchenko  * Copyright(c) 2007-2019 Solarflare Communications Inc.
55e111ed8SAndrew Rybchenko  */
65e111ed8SAndrew Rybchenko 
75e111ed8SAndrew Rybchenko #include "efx.h"
85e111ed8SAndrew Rybchenko #include "efx_impl.h"
95e111ed8SAndrew Rybchenko 
105e111ed8SAndrew Rybchenko #if EFSYS_OPT_MON_MCDI
115e111ed8SAndrew Rybchenko #include "mcdi_mon.h"
125e111ed8SAndrew Rybchenko #endif
135e111ed8SAndrew Rybchenko 
145e111ed8SAndrew Rybchenko #if EFSYS_OPT_NAMES
155e111ed8SAndrew Rybchenko 
165e111ed8SAndrew Rybchenko static const char * const __efx_mon_name[] = {
175e111ed8SAndrew Rybchenko 	"",
185e111ed8SAndrew Rybchenko 	"sfx90x0",
195e111ed8SAndrew Rybchenko 	"sfx91x0",
205e111ed8SAndrew Rybchenko 	"sfx92x0"
215e111ed8SAndrew Rybchenko };
225e111ed8SAndrew Rybchenko 
235e111ed8SAndrew Rybchenko 		const char *
efx_mon_name(__in efx_nic_t * enp)245e111ed8SAndrew Rybchenko efx_mon_name(
255e111ed8SAndrew Rybchenko 	__in	efx_nic_t *enp)
265e111ed8SAndrew Rybchenko {
275e111ed8SAndrew Rybchenko 	efx_nic_cfg_t *encp = &(enp->en_nic_cfg);
285e111ed8SAndrew Rybchenko 
295e111ed8SAndrew Rybchenko 	EFSYS_ASSERT3U(enp->en_magic, ==, EFX_NIC_MAGIC);
305e111ed8SAndrew Rybchenko 
315e111ed8SAndrew Rybchenko 	EFSYS_ASSERT(encp->enc_mon_type != EFX_MON_INVALID);
325e111ed8SAndrew Rybchenko 	EFSYS_ASSERT3U(encp->enc_mon_type, <, EFX_MON_NTYPES);
335e111ed8SAndrew Rybchenko 	return (__efx_mon_name[encp->enc_mon_type]);
345e111ed8SAndrew Rybchenko }
355e111ed8SAndrew Rybchenko 
365e111ed8SAndrew Rybchenko #endif	/* EFSYS_OPT_NAMES */
375e111ed8SAndrew Rybchenko 
385e111ed8SAndrew Rybchenko #if EFSYS_OPT_MON_MCDI
395e111ed8SAndrew Rybchenko static const efx_mon_ops_t	__efx_mon_mcdi_ops = {
405e111ed8SAndrew Rybchenko #if EFSYS_OPT_MON_STATS
415e111ed8SAndrew Rybchenko 	mcdi_mon_stats_update,		/* emo_stats_update */
425e111ed8SAndrew Rybchenko 	mcdi_mon_limits_update,		/* emo_limits_update */
435e111ed8SAndrew Rybchenko #endif	/* EFSYS_OPT_MON_STATS */
445e111ed8SAndrew Rybchenko };
455e111ed8SAndrew Rybchenko #endif
465e111ed8SAndrew Rybchenko 
475e111ed8SAndrew Rybchenko 
485e111ed8SAndrew Rybchenko 	__checkReturn	efx_rc_t
efx_mon_init(__in efx_nic_t * enp)495e111ed8SAndrew Rybchenko efx_mon_init(
505e111ed8SAndrew Rybchenko 	__in		efx_nic_t *enp)
515e111ed8SAndrew Rybchenko {
525e111ed8SAndrew Rybchenko 	efx_nic_cfg_t *encp = &(enp->en_nic_cfg);
535e111ed8SAndrew Rybchenko 	efx_mon_t *emp = &(enp->en_mon);
545e111ed8SAndrew Rybchenko 	const efx_mon_ops_t *emop;
555e111ed8SAndrew Rybchenko 	efx_rc_t rc;
565e111ed8SAndrew Rybchenko 
575e111ed8SAndrew Rybchenko 	EFSYS_ASSERT3U(enp->en_magic, ==, EFX_NIC_MAGIC);
585e111ed8SAndrew Rybchenko 	EFSYS_ASSERT3U(enp->en_mod_flags, &, EFX_MOD_PROBE);
595e111ed8SAndrew Rybchenko 
605e111ed8SAndrew Rybchenko 	if (enp->en_mod_flags & EFX_MOD_MON) {
615e111ed8SAndrew Rybchenko 		rc = EINVAL;
625e111ed8SAndrew Rybchenko 		goto fail1;
635e111ed8SAndrew Rybchenko 	}
645e111ed8SAndrew Rybchenko 
655e111ed8SAndrew Rybchenko 	enp->en_mod_flags |= EFX_MOD_MON;
665e111ed8SAndrew Rybchenko 
675e111ed8SAndrew Rybchenko 	emp->em_type = encp->enc_mon_type;
685e111ed8SAndrew Rybchenko 
695e111ed8SAndrew Rybchenko 	EFSYS_ASSERT(encp->enc_mon_type != EFX_MON_INVALID);
705e111ed8SAndrew Rybchenko 	switch (emp->em_type) {
715e111ed8SAndrew Rybchenko #if EFSYS_OPT_MON_MCDI
725e111ed8SAndrew Rybchenko 	case EFX_MON_SFC90X0:
735e111ed8SAndrew Rybchenko 	case EFX_MON_SFC91X0:
745e111ed8SAndrew Rybchenko 	case EFX_MON_SFC92X0:
755e111ed8SAndrew Rybchenko 		emop = &__efx_mon_mcdi_ops;
765e111ed8SAndrew Rybchenko 		break;
775e111ed8SAndrew Rybchenko #endif
785e111ed8SAndrew Rybchenko 	default:
795e111ed8SAndrew Rybchenko 		rc = ENOTSUP;
805e111ed8SAndrew Rybchenko 		goto fail2;
815e111ed8SAndrew Rybchenko 	}
825e111ed8SAndrew Rybchenko 
835e111ed8SAndrew Rybchenko 	emp->em_emop = emop;
845e111ed8SAndrew Rybchenko 	return (0);
855e111ed8SAndrew Rybchenko 
865e111ed8SAndrew Rybchenko fail2:
875e111ed8SAndrew Rybchenko 	EFSYS_PROBE(fail2);
885e111ed8SAndrew Rybchenko 
895e111ed8SAndrew Rybchenko 	emp->em_type = EFX_MON_INVALID;
905e111ed8SAndrew Rybchenko 
915e111ed8SAndrew Rybchenko 	enp->en_mod_flags &= ~EFX_MOD_MON;
925e111ed8SAndrew Rybchenko 
935e111ed8SAndrew Rybchenko fail1:
945e111ed8SAndrew Rybchenko 	EFSYS_PROBE1(fail1, efx_rc_t, rc);
955e111ed8SAndrew Rybchenko 
965e111ed8SAndrew Rybchenko 	return (rc);
975e111ed8SAndrew Rybchenko }
985e111ed8SAndrew Rybchenko 
995e111ed8SAndrew Rybchenko #if EFSYS_OPT_MON_STATS
1005e111ed8SAndrew Rybchenko 
1015e111ed8SAndrew Rybchenko #if EFSYS_OPT_NAMES
1025e111ed8SAndrew Rybchenko 
1035e111ed8SAndrew Rybchenko /* START MKCONFIG GENERATED MonitorStatNamesBlock 277c17eda1a6d1a4 */
1045e111ed8SAndrew Rybchenko static const char * const __mon_stat_name[] = {
1055e111ed8SAndrew Rybchenko 	"controller_temp",
1065e111ed8SAndrew Rybchenko 	"phy_common_temp",
1075e111ed8SAndrew Rybchenko 	"controller_cooling",
1085e111ed8SAndrew Rybchenko 	"phy0_temp",
1095e111ed8SAndrew Rybchenko 	"phy0_cooling",
1105e111ed8SAndrew Rybchenko 	"phy1_temp",
1115e111ed8SAndrew Rybchenko 	"phy1_cooling",
1125e111ed8SAndrew Rybchenko 	"in_1v0",
1135e111ed8SAndrew Rybchenko 	"in_1v2",
1145e111ed8SAndrew Rybchenko 	"in_1v8",
1155e111ed8SAndrew Rybchenko 	"in_2v5",
1165e111ed8SAndrew Rybchenko 	"in_3v3",
1175e111ed8SAndrew Rybchenko 	"in_12v0",
1185e111ed8SAndrew Rybchenko 	"in_1v2a",
1195e111ed8SAndrew Rybchenko 	"in_vref",
1205e111ed8SAndrew Rybchenko 	"out_vaoe",
1215e111ed8SAndrew Rybchenko 	"aoe_temp",
1225e111ed8SAndrew Rybchenko 	"psu_aoe_temp",
1235e111ed8SAndrew Rybchenko 	"psu_temp",
1245e111ed8SAndrew Rybchenko 	"fan_0",
1255e111ed8SAndrew Rybchenko 	"fan_1",
1265e111ed8SAndrew Rybchenko 	"fan_2",
1275e111ed8SAndrew Rybchenko 	"fan_3",
1285e111ed8SAndrew Rybchenko 	"fan_4",
1295e111ed8SAndrew Rybchenko 	"in_vaoe",
1305e111ed8SAndrew Rybchenko 	"out_iaoe",
1315e111ed8SAndrew Rybchenko 	"in_iaoe",
1325e111ed8SAndrew Rybchenko 	"nic_power",
1335e111ed8SAndrew Rybchenko 	"in_0v9",
1345e111ed8SAndrew Rybchenko 	"in_i0v9",
1355e111ed8SAndrew Rybchenko 	"in_i1v2",
1365e111ed8SAndrew Rybchenko 	"in_0v9_adc",
1375e111ed8SAndrew Rybchenko 	"controller_2_temp",
1385e111ed8SAndrew Rybchenko 	"vreg_internal_temp",
1395e111ed8SAndrew Rybchenko 	"vreg_0v9_temp",
1405e111ed8SAndrew Rybchenko 	"vreg_1v2_temp",
1415e111ed8SAndrew Rybchenko 	"controller_vptat",
1425e111ed8SAndrew Rybchenko 	"controller_internal_temp",
1435e111ed8SAndrew Rybchenko 	"controller_vptat_extadc",
1445e111ed8SAndrew Rybchenko 	"controller_internal_temp_extadc",
1455e111ed8SAndrew Rybchenko 	"ambient_temp",
1465e111ed8SAndrew Rybchenko 	"airflow",
1475e111ed8SAndrew Rybchenko 	"vdd08d_vss08d_csr",
1485e111ed8SAndrew Rybchenko 	"vdd08d_vss08d_csr_extadc",
1495e111ed8SAndrew Rybchenko 	"hotpoint_temp",
1505e111ed8SAndrew Rybchenko 	"phy_power_port0",
1515e111ed8SAndrew Rybchenko 	"phy_power_port1",
1525e111ed8SAndrew Rybchenko 	"mum_vcc",
1535e111ed8SAndrew Rybchenko 	"in_0v9_a",
1545e111ed8SAndrew Rybchenko 	"in_i0v9_a",
1555e111ed8SAndrew Rybchenko 	"vreg_0v9_a_temp",
1565e111ed8SAndrew Rybchenko 	"in_0v9_b",
1575e111ed8SAndrew Rybchenko 	"in_i0v9_b",
1585e111ed8SAndrew Rybchenko 	"vreg_0v9_b_temp",
1595e111ed8SAndrew Rybchenko 	"ccom_avreg_1v2_supply",
1605e111ed8SAndrew Rybchenko 	"ccom_avreg_1v2_supply_extadc",
1615e111ed8SAndrew Rybchenko 	"ccom_avreg_1v8_supply",
1625e111ed8SAndrew Rybchenko 	"ccom_avreg_1v8_supply_extadc",
1635e111ed8SAndrew Rybchenko 	"controller_master_vptat",
1645e111ed8SAndrew Rybchenko 	"controller_master_internal_temp",
1655e111ed8SAndrew Rybchenko 	"controller_master_vptat_extadc",
1665e111ed8SAndrew Rybchenko 	"controller_master_internal_temp_extadc",
1675e111ed8SAndrew Rybchenko 	"controller_slave_vptat",
1685e111ed8SAndrew Rybchenko 	"controller_slave_internal_temp",
1695e111ed8SAndrew Rybchenko 	"controller_slave_vptat_extadc",
1705e111ed8SAndrew Rybchenko 	"controller_slave_internal_temp_extadc",
1715e111ed8SAndrew Rybchenko 	"sodimm_vout",
1725e111ed8SAndrew Rybchenko 	"sodimm_0_temp",
1735e111ed8SAndrew Rybchenko 	"sodimm_1_temp",
1745e111ed8SAndrew Rybchenko 	"phy0_vcc",
1755e111ed8SAndrew Rybchenko 	"phy1_vcc",
1765e111ed8SAndrew Rybchenko 	"controller_tdiode_temp",
1775e111ed8SAndrew Rybchenko 	"board_front_temp",
1785e111ed8SAndrew Rybchenko 	"board_back_temp",
1795e111ed8SAndrew Rybchenko 	"in_i1v8",
1805e111ed8SAndrew Rybchenko 	"in_i2v5",
1815e111ed8SAndrew Rybchenko 	"in_i3v3",
1825e111ed8SAndrew Rybchenko 	"in_i12v0",
1835e111ed8SAndrew Rybchenko 	"in_1v3",
1845e111ed8SAndrew Rybchenko 	"in_i1v3",
1855e111ed8SAndrew Rybchenko };
1865e111ed8SAndrew Rybchenko 
1875e111ed8SAndrew Rybchenko /* END MKCONFIG GENERATED MonitorStatNamesBlock */
1885e111ed8SAndrew Rybchenko 
1895e111ed8SAndrew Rybchenko 					const char *
efx_mon_stat_name(__in efx_nic_t * enp,__in efx_mon_stat_t id)1905e111ed8SAndrew Rybchenko efx_mon_stat_name(
1915e111ed8SAndrew Rybchenko 	__in				efx_nic_t *enp,
1925e111ed8SAndrew Rybchenko 	__in				efx_mon_stat_t id)
1935e111ed8SAndrew Rybchenko {
1945e111ed8SAndrew Rybchenko 	_NOTE(ARGUNUSED(enp))
1955e111ed8SAndrew Rybchenko 	EFSYS_ASSERT3U(enp->en_magic, ==, EFX_NIC_MAGIC);
1965e111ed8SAndrew Rybchenko 
1975e111ed8SAndrew Rybchenko 	EFSYS_ASSERT3U(id, <, EFX_MON_NSTATS);
1985e111ed8SAndrew Rybchenko 	return (__mon_stat_name[id]);
1995e111ed8SAndrew Rybchenko }
2005e111ed8SAndrew Rybchenko 
2015e111ed8SAndrew Rybchenko typedef struct _stat_description_t {
2025e111ed8SAndrew Rybchenko 	efx_mon_stat_t	stat;
2035e111ed8SAndrew Rybchenko 	const char	*desc;
2045e111ed8SAndrew Rybchenko } stat_description_t;
2055e111ed8SAndrew Rybchenko 
2065e111ed8SAndrew Rybchenko /* START MKCONFIG GENERATED MonitorStatDescriptionsBlock f072138f16d2e1f8 */
2075e111ed8SAndrew Rybchenko static const char *__mon_stat_description[] = {
2085e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_CONTROLLER_TEMP_ENUM_STR,
2095e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_PHY_COMMON_TEMP_ENUM_STR,
2105e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_CONTROLLER_COOLING_ENUM_STR,
2115e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_PHY0_TEMP_ENUM_STR,
2125e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_PHY0_COOLING_ENUM_STR,
2135e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_PHY1_TEMP_ENUM_STR,
2145e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_PHY1_COOLING_ENUM_STR,
2155e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_IN_1V0_ENUM_STR,
2165e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_IN_1V2_ENUM_STR,
2175e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_IN_1V8_ENUM_STR,
2185e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_IN_2V5_ENUM_STR,
2195e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_IN_3V3_ENUM_STR,
2205e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_IN_12V0_ENUM_STR,
2215e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_IN_1V2A_ENUM_STR,
2225e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_IN_VREF_ENUM_STR,
2235e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_OUT_VAOE_ENUM_STR,
2245e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_AOE_TEMP_ENUM_STR,
2255e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_PSU_AOE_TEMP_ENUM_STR,
2265e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_PSU_TEMP_ENUM_STR,
2275e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_FAN_0_ENUM_STR,
2285e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_FAN_1_ENUM_STR,
2295e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_FAN_2_ENUM_STR,
2305e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_FAN_3_ENUM_STR,
2315e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_FAN_4_ENUM_STR,
2325e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_IN_VAOE_ENUM_STR,
2335e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_OUT_IAOE_ENUM_STR,
2345e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_IN_IAOE_ENUM_STR,
2355e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_NIC_POWER_ENUM_STR,
2365e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_IN_0V9_ENUM_STR,
2375e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_IN_I0V9_ENUM_STR,
2385e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_IN_I1V2_ENUM_STR,
2395e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_IN_0V9_ADC_ENUM_STR,
2405e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_CONTROLLER_2_TEMP_ENUM_STR,
2415e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_VREG_INTERNAL_TEMP_ENUM_STR,
2425e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_VREG_0V9_TEMP_ENUM_STR,
2435e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_VREG_1V2_TEMP_ENUM_STR,
2445e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_CONTROLLER_VPTAT_ENUM_STR,
2455e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_CONTROLLER_INTERNAL_TEMP_ENUM_STR,
2465e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_CONTROLLER_VPTAT_EXTADC_ENUM_STR,
2475e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_CONTROLLER_INTERNAL_TEMP_EXTADC_ENUM_STR,
2485e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_AMBIENT_TEMP_ENUM_STR,
2495e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_AIRFLOW_ENUM_STR,
2505e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_VDD08D_VSS08D_CSR_ENUM_STR,
2515e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_VDD08D_VSS08D_CSR_EXTADC_ENUM_STR,
2525e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_HOTPOINT_TEMP_ENUM_STR,
2535e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_PHY_POWER_PORT0_ENUM_STR,
2545e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_PHY_POWER_PORT1_ENUM_STR,
2555e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_MUM_VCC_ENUM_STR,
2565e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_IN_0V9_A_ENUM_STR,
2575e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_IN_I0V9_A_ENUM_STR,
2585e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_VREG_0V9_A_TEMP_ENUM_STR,
2595e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_IN_0V9_B_ENUM_STR,
2605e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_IN_I0V9_B_ENUM_STR,
2615e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_VREG_0V9_B_TEMP_ENUM_STR,
2625e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_CCOM_AVREG_1V2_SUPPLY_ENUM_STR,
2635e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_CCOM_AVREG_1V2_SUPPLY_EXTADC_ENUM_STR,
2645e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_CCOM_AVREG_1V8_SUPPLY_ENUM_STR,
2655e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_CCOM_AVREG_1V8_SUPPLY_EXTADC_ENUM_STR,
2665e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_CONTROLLER_MASTER_VPTAT_ENUM_STR,
2675e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_CONTROLLER_MASTER_INTERNAL_TEMP_ENUM_STR,
2685e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_CONTROLLER_MASTER_VPTAT_EXTADC_ENUM_STR,
2695e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_CONTROLLER_MASTER_INTERNAL_TEMP_EXTADC_ENUM_STR,
2705e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_CONTROLLER_SLAVE_VPTAT_ENUM_STR,
2715e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_CONTROLLER_SLAVE_INTERNAL_TEMP_ENUM_STR,
2725e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_CONTROLLER_SLAVE_VPTAT_EXTADC_ENUM_STR,
2735e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_CONTROLLER_SLAVE_INTERNAL_TEMP_EXTADC_ENUM_STR,
2745e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_SODIMM_VOUT_ENUM_STR,
2755e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_SODIMM_0_TEMP_ENUM_STR,
2765e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_SODIMM_1_TEMP_ENUM_STR,
2775e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_PHY0_VCC_ENUM_STR,
2785e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_PHY1_VCC_ENUM_STR,
2795e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_CONTROLLER_TDIODE_TEMP_ENUM_STR,
2805e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_BOARD_FRONT_TEMP_ENUM_STR,
2815e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_BOARD_BACK_TEMP_ENUM_STR,
2825e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_IN_I1V8_ENUM_STR,
2835e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_IN_I2V5_ENUM_STR,
2845e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_IN_I3V3_ENUM_STR,
2855e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_IN_I12V0_ENUM_STR,
2865e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_IN_1V3_ENUM_STR,
2875e111ed8SAndrew Rybchenko 	MC_CMD_SENSOR_IN_I1V3_ENUM_STR,
2885e111ed8SAndrew Rybchenko };
2895e111ed8SAndrew Rybchenko 
2905e111ed8SAndrew Rybchenko /* END MKCONFIG GENERATED MonitorStatDescriptionsBlock */
2915e111ed8SAndrew Rybchenko 
2925e111ed8SAndrew Rybchenko 					const char *
efx_mon_stat_description(__in efx_nic_t * enp,__in efx_mon_stat_t id)2935e111ed8SAndrew Rybchenko efx_mon_stat_description(
2945e111ed8SAndrew Rybchenko 	__in				efx_nic_t *enp,
2955e111ed8SAndrew Rybchenko 	__in				efx_mon_stat_t id)
2965e111ed8SAndrew Rybchenko {
2975e111ed8SAndrew Rybchenko 	_NOTE(ARGUNUSED(enp))
2985e111ed8SAndrew Rybchenko 	EFSYS_ASSERT3U(enp->en_magic, ==, EFX_NIC_MAGIC);
2995e111ed8SAndrew Rybchenko 
3005e111ed8SAndrew Rybchenko 	EFSYS_ASSERT3U(id, <, EFX_MON_NSTATS);
3015e111ed8SAndrew Rybchenko 	return (__mon_stat_description[id]);
3025e111ed8SAndrew Rybchenko }
3035e111ed8SAndrew Rybchenko 
3045e111ed8SAndrew Rybchenko #endif	/* EFSYS_OPT_NAMES */
3055e111ed8SAndrew Rybchenko 
3065e111ed8SAndrew Rybchenko /* START MKCONFIG GENERATED MonitorMcdiMappingBlock 173eee0a5599996a */
3075e111ed8SAndrew Rybchenko 	__checkReturn			boolean_t
efx_mon_mcdi_to_efx_stat(__in int mcdi_index,__out efx_mon_stat_t * statp)3085e111ed8SAndrew Rybchenko efx_mon_mcdi_to_efx_stat(
3095e111ed8SAndrew Rybchenko 	__in				int mcdi_index,
3105e111ed8SAndrew Rybchenko 	__out				efx_mon_stat_t *statp)
3115e111ed8SAndrew Rybchenko {
3125e111ed8SAndrew Rybchenko 
3135e111ed8SAndrew Rybchenko 	if ((mcdi_index % (MC_CMD_SENSOR_PAGE0_NEXT + 1)) ==
3145e111ed8SAndrew Rybchenko 	    MC_CMD_SENSOR_PAGE0_NEXT) {
3155e111ed8SAndrew Rybchenko 		*statp = EFX_MON_NSTATS;
3165e111ed8SAndrew Rybchenko 		return (B_FALSE);
3175e111ed8SAndrew Rybchenko 	}
3185e111ed8SAndrew Rybchenko 
3195e111ed8SAndrew Rybchenko 	switch (mcdi_index) {
3205e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_IN_I0V9:
3215e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_IN_I0V9;
3225e111ed8SAndrew Rybchenko 		break;
3235e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_CONTROLLER_SLAVE_VPTAT_EXTADC:
3245e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_CONTROLLER_SLAVE_VPTAT_EXTADC;
3255e111ed8SAndrew Rybchenko 		break;
3265e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_CONTROLLER_SLAVE_VPTAT:
3275e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_CONTROLLER_SLAVE_VPTAT;
3285e111ed8SAndrew Rybchenko 		break;
3295e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_PSU_TEMP:
3305e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_PSU_TEMP;
3315e111ed8SAndrew Rybchenko 		break;
3325e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_FAN_2:
3335e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_FAN_2;
3345e111ed8SAndrew Rybchenko 		break;
3355e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_CONTROLLER_INTERNAL_TEMP_EXTADC:
3365e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_CONTROLLER_INTERNAL_TEMP_EXTADC;
3375e111ed8SAndrew Rybchenko 		break;
3385e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_BOARD_BACK_TEMP:
3395e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_BOARD_BACK_TEMP;
3405e111ed8SAndrew Rybchenko 		break;
3415e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_IN_1V3:
3425e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_IN_1V3;
3435e111ed8SAndrew Rybchenko 		break;
3445e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_CONTROLLER_TDIODE_TEMP:
3455e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_CONTROLLER_TDIODE_TEMP;
3465e111ed8SAndrew Rybchenko 		break;
3475e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_IN_2V5:
3485e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_IN_2V5;
3495e111ed8SAndrew Rybchenko 		break;
3505e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_PHY_COMMON_TEMP:
3515e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_PHY_COMMON_TEMP;
3525e111ed8SAndrew Rybchenko 		break;
3535e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_PHY1_TEMP:
3545e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_PHY1_TEMP;
3555e111ed8SAndrew Rybchenko 		break;
3565e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_VREG_INTERNAL_TEMP:
3575e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_VREG_INTERNAL_TEMP;
3585e111ed8SAndrew Rybchenko 		break;
3595e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_IN_1V0:
3605e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_IN_1V0;
3615e111ed8SAndrew Rybchenko 		break;
3625e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_FAN_1:
3635e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_FAN_1;
3645e111ed8SAndrew Rybchenko 		break;
3655e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_IN_1V2:
3665e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_IN_1V2;
3675e111ed8SAndrew Rybchenko 		break;
3685e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_FAN_3:
3695e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_FAN_3;
3705e111ed8SAndrew Rybchenko 		break;
3715e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_IN_1V2A:
3725e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_IN_1V2A;
3735e111ed8SAndrew Rybchenko 		break;
3745e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_SODIMM_0_TEMP:
3755e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_SODIMM_0_TEMP;
3765e111ed8SAndrew Rybchenko 		break;
3775e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_IN_1V8:
3785e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_IN_1V8;
3795e111ed8SAndrew Rybchenko 		break;
3805e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_IN_VREF:
3815e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_IN_VREF;
3825e111ed8SAndrew Rybchenko 		break;
3835e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_SODIMM_VOUT:
3845e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_SODIMM_VOUT;
3855e111ed8SAndrew Rybchenko 		break;
3865e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_CCOM_AVREG_1V2_SUPPLY:
3875e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_CCOM_AVREG_1V2_SUPPLY;
3885e111ed8SAndrew Rybchenko 		break;
3895e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_IN_I1V2:
3905e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_IN_I1V2;
3915e111ed8SAndrew Rybchenko 		break;
3925e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_IN_I1V3:
3935e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_IN_I1V3;
3945e111ed8SAndrew Rybchenko 		break;
3955e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_AIRFLOW:
3965e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_AIRFLOW;
3975e111ed8SAndrew Rybchenko 		break;
3985e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_HOTPOINT_TEMP:
3995e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_HOTPOINT_TEMP;
4005e111ed8SAndrew Rybchenko 		break;
4015e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_VDD08D_VSS08D_CSR:
4025e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_VDD08D_VSS08D_CSR;
4035e111ed8SAndrew Rybchenko 		break;
4045e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_AOE_TEMP:
4055e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_AOE_TEMP;
4065e111ed8SAndrew Rybchenko 		break;
4075e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_IN_I1V8:
4085e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_IN_I1V8;
4095e111ed8SAndrew Rybchenko 		break;
4105e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_IN_I2V5:
4115e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_IN_I2V5;
4125e111ed8SAndrew Rybchenko 		break;
4135e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_PHY1_COOLING:
4145e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_PHY1_COOLING;
4155e111ed8SAndrew Rybchenko 		break;
4165e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_CCOM_AVREG_1V8_SUPPLY_EXTADC:
4175e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_CCOM_AVREG_1V8_SUPPLY_EXTADC;
4185e111ed8SAndrew Rybchenko 		break;
4195e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_IN_0V9_ADC:
4205e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_IN_0V9_ADC;
4215e111ed8SAndrew Rybchenko 		break;
4225e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_VREG_0V9_A_TEMP:
4235e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_VREG_0V9_A_TEMP;
4245e111ed8SAndrew Rybchenko 		break;
4255e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_CONTROLLER_MASTER_VPTAT:
4265e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_CONTROLLER_MASTER_VPTAT;
4275e111ed8SAndrew Rybchenko 		break;
4285e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_PHY0_VCC:
4295e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_PHY0_VCC;
4305e111ed8SAndrew Rybchenko 		break;
4315e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_PHY0_COOLING:
4325e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_PHY0_COOLING;
4335e111ed8SAndrew Rybchenko 		break;
4345e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_PSU_AOE_TEMP:
4355e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_PSU_AOE_TEMP;
4365e111ed8SAndrew Rybchenko 		break;
4375e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_VREG_0V9_TEMP:
4385e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_VREG_0V9_TEMP;
4395e111ed8SAndrew Rybchenko 		break;
4405e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_IN_I0V9_A:
4415e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_IN_I0V9_A;
4425e111ed8SAndrew Rybchenko 		break;
4435e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_IN_I3V3:
4445e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_IN_I3V3;
4455e111ed8SAndrew Rybchenko 		break;
4465e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_BOARD_FRONT_TEMP:
4475e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_BOARD_FRONT_TEMP;
4485e111ed8SAndrew Rybchenko 		break;
4495e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_OUT_VAOE:
4505e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_OUT_VAOE;
4515e111ed8SAndrew Rybchenko 		break;
4525e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_VDD08D_VSS08D_CSR_EXTADC:
4535e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_VDD08D_VSS08D_CSR_EXTADC;
4545e111ed8SAndrew Rybchenko 		break;
4555e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_IN_I12V0:
4565e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_IN_I12V0;
4575e111ed8SAndrew Rybchenko 		break;
4585e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_PHY_POWER_PORT1:
4595e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_PHY_POWER_PORT1;
4605e111ed8SAndrew Rybchenko 		break;
4615e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_PHY_POWER_PORT0:
4625e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_PHY_POWER_PORT0;
4635e111ed8SAndrew Rybchenko 		break;
4645e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_CONTROLLER_SLAVE_INTERNAL_TEMP_EXTADC:
4655e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_CONTROLLER_SLAVE_INTERNAL_TEMP_EXTADC;
4665e111ed8SAndrew Rybchenko 		break;
4675e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_CONTROLLER_MASTER_INTERNAL_TEMP:
4685e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_CONTROLLER_MASTER_INTERNAL_TEMP;
4695e111ed8SAndrew Rybchenko 		break;
4705e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_CONTROLLER_TEMP:
4715e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_CONTROLLER_TEMP;
4725e111ed8SAndrew Rybchenko 		break;
4735e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_IN_IAOE:
4745e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_IN_IAOE;
4755e111ed8SAndrew Rybchenko 		break;
4765e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_IN_VAOE:
4775e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_IN_VAOE;
4785e111ed8SAndrew Rybchenko 		break;
4795e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_CONTROLLER_MASTER_VPTAT_EXTADC:
4805e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_CONTROLLER_MASTER_VPTAT_EXTADC;
4815e111ed8SAndrew Rybchenko 		break;
4825e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_CCOM_AVREG_1V8_SUPPLY:
4835e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_CCOM_AVREG_1V8_SUPPLY;
4845e111ed8SAndrew Rybchenko 		break;
4855e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_PHY1_VCC:
4865e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_PHY1_VCC;
4875e111ed8SAndrew Rybchenko 		break;
4885e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_CONTROLLER_COOLING:
4895e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_CONTROLLER_COOLING;
4905e111ed8SAndrew Rybchenko 		break;
4915e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_AMBIENT_TEMP:
4925e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_AMBIENT_TEMP;
4935e111ed8SAndrew Rybchenko 		break;
4945e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_IN_3V3:
4955e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_IN_3V3;
4965e111ed8SAndrew Rybchenko 		break;
4975e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_PHY0_TEMP:
4985e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_PHY0_TEMP;
4995e111ed8SAndrew Rybchenko 		break;
5005e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_SODIMM_1_TEMP:
5015e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_SODIMM_1_TEMP;
5025e111ed8SAndrew Rybchenko 		break;
5035e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_MUM_VCC:
5045e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_MUM_VCC;
5055e111ed8SAndrew Rybchenko 		break;
5065e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_VREG_0V9_B_TEMP:
5075e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_VREG_0V9_B_TEMP;
5085e111ed8SAndrew Rybchenko 		break;
5095e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_CONTROLLER_SLAVE_INTERNAL_TEMP:
5105e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_CONTROLLER_SLAVE_INTERNAL_TEMP;
5115e111ed8SAndrew Rybchenko 		break;
5125e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_FAN_4:
5135e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_FAN_4;
5145e111ed8SAndrew Rybchenko 		break;
5155e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_CONTROLLER_2_TEMP:
5165e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_CONTROLLER_2_TEMP;
5175e111ed8SAndrew Rybchenko 		break;
5185e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_CCOM_AVREG_1V2_SUPPLY_EXTADC:
5195e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_CCOM_AVREG_1V2_SUPPLY_EXTADC;
5205e111ed8SAndrew Rybchenko 		break;
5215e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_IN_0V9_A:
5225e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_IN_0V9_A;
5235e111ed8SAndrew Rybchenko 		break;
5245e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_CONTROLLER_VPTAT_EXTADC:
5255e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_CONTROLLER_VPTAT_EXTADC;
5265e111ed8SAndrew Rybchenko 		break;
5275e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_IN_0V9:
5285e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_IN_0V9;
5295e111ed8SAndrew Rybchenko 		break;
5305e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_IN_I0V9_B:
5315e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_IN_I0V9_B;
5325e111ed8SAndrew Rybchenko 		break;
5335e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_NIC_POWER:
5345e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_NIC_POWER;
5355e111ed8SAndrew Rybchenko 		break;
5365e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_IN_12V0:
5375e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_IN_12V0;
5385e111ed8SAndrew Rybchenko 		break;
5395e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_OUT_IAOE:
5405e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_OUT_IAOE;
5415e111ed8SAndrew Rybchenko 		break;
5425e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_CONTROLLER_VPTAT:
5435e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_CONTROLLER_VPTAT;
5445e111ed8SAndrew Rybchenko 		break;
5455e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_CONTROLLER_MASTER_INTERNAL_TEMP_EXTADC:
5465e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_CONTROLLER_MASTER_INTERNAL_TEMP_EXTADC;
5475e111ed8SAndrew Rybchenko 		break;
5485e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_CONTROLLER_INTERNAL_TEMP:
5495e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_CONTROLLER_INTERNAL_TEMP;
5505e111ed8SAndrew Rybchenko 		break;
5515e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_FAN_0:
5525e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_FAN_0;
5535e111ed8SAndrew Rybchenko 		break;
5545e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_VREG_1V2_TEMP:
5555e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_VREG_1V2_TEMP;
5565e111ed8SAndrew Rybchenko 		break;
5575e111ed8SAndrew Rybchenko 	case MC_CMD_SENSOR_IN_0V9_B:
5585e111ed8SAndrew Rybchenko 		*statp = EFX_MON_STAT_IN_0V9_B;
5595e111ed8SAndrew Rybchenko 		break;
5605e111ed8SAndrew Rybchenko 	default:
5615e111ed8SAndrew Rybchenko 		*statp = EFX_MON_NSTATS;
5625e111ed8SAndrew Rybchenko 		break;
5635e111ed8SAndrew Rybchenko 	};
5645e111ed8SAndrew Rybchenko 
5655e111ed8SAndrew Rybchenko 	if (*statp == EFX_MON_NSTATS)
5665e111ed8SAndrew Rybchenko 		goto fail1;
5675e111ed8SAndrew Rybchenko 
5685e111ed8SAndrew Rybchenko 	return (B_TRUE);
5695e111ed8SAndrew Rybchenko 
5705e111ed8SAndrew Rybchenko fail1:
5715e111ed8SAndrew Rybchenko 	EFSYS_PROBE1(fail1, boolean_t, B_TRUE);
5725e111ed8SAndrew Rybchenko 	return (B_FALSE);
5735e111ed8SAndrew Rybchenko };
5745e111ed8SAndrew Rybchenko 
5755e111ed8SAndrew Rybchenko /* END MKCONFIG GENERATED MonitorMcdiMappingBlock */
5765e111ed8SAndrew Rybchenko 
5775e111ed8SAndrew Rybchenko /* START MKCONFIG GENERATED MonitorStatisticUnitsBlock 2d447c656cc2d01d */
5785e111ed8SAndrew Rybchenko 	__checkReturn			boolean_t
efx_mon_get_stat_unit(__in efx_mon_stat_t stat,__out efx_mon_stat_unit_t * unitp)5795e111ed8SAndrew Rybchenko efx_mon_get_stat_unit(
5805e111ed8SAndrew Rybchenko 	__in				efx_mon_stat_t stat,
5815e111ed8SAndrew Rybchenko 	__out				efx_mon_stat_unit_t *unitp)
5825e111ed8SAndrew Rybchenko {
5835e111ed8SAndrew Rybchenko 	switch (stat) {
5845e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_1V0:
5855e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_1V2:
5865e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_1V8:
5875e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_2V5:
5885e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_3V3:
5895e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_12V0:
5905e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_1V2A:
5915e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_VREF:
5925e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_OUT_VAOE:
5935e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_VAOE:
5945e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_0V9:
5955e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_0V9_ADC:
5965e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CONTROLLER_VPTAT_EXTADC:
5975e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_VDD08D_VSS08D_CSR:
5985e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_VDD08D_VSS08D_CSR_EXTADC:
5995e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_MUM_VCC:
6005e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_0V9_A:
6015e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_0V9_B:
6025e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CCOM_AVREG_1V2_SUPPLY:
6035e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CCOM_AVREG_1V2_SUPPLY_EXTADC:
6045e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CCOM_AVREG_1V8_SUPPLY:
6055e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CCOM_AVREG_1V8_SUPPLY_EXTADC:
6065e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CONTROLLER_MASTER_VPTAT:
6075e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CONTROLLER_MASTER_VPTAT_EXTADC:
6085e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CONTROLLER_SLAVE_VPTAT:
6095e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CONTROLLER_SLAVE_VPTAT_EXTADC:
6105e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_SODIMM_VOUT:
6115e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_PHY0_VCC:
6125e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_PHY1_VCC:
6135e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_1V3:
6145e111ed8SAndrew Rybchenko 		*unitp = EFX_MON_STAT_UNIT_VOLTAGE_MV;
6155e111ed8SAndrew Rybchenko 		break;
6165e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CONTROLLER_TEMP:
6175e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_PHY_COMMON_TEMP:
6185e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_PHY0_TEMP:
6195e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_PHY1_TEMP:
6205e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_AOE_TEMP:
6215e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_PSU_AOE_TEMP:
6225e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_PSU_TEMP:
6235e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CONTROLLER_2_TEMP:
6245e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_VREG_INTERNAL_TEMP:
6255e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_VREG_0V9_TEMP:
6265e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_VREG_1V2_TEMP:
6275e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CONTROLLER_VPTAT:
6285e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CONTROLLER_INTERNAL_TEMP:
6295e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CONTROLLER_INTERNAL_TEMP_EXTADC:
6305e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_AMBIENT_TEMP:
6315e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_HOTPOINT_TEMP:
6325e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_VREG_0V9_A_TEMP:
6335e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_VREG_0V9_B_TEMP:
6345e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CONTROLLER_MASTER_INTERNAL_TEMP:
6355e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CONTROLLER_MASTER_INTERNAL_TEMP_EXTADC:
6365e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CONTROLLER_SLAVE_INTERNAL_TEMP:
6375e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CONTROLLER_SLAVE_INTERNAL_TEMP_EXTADC:
6385e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_SODIMM_0_TEMP:
6395e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_SODIMM_1_TEMP:
6405e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CONTROLLER_TDIODE_TEMP:
6415e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_BOARD_FRONT_TEMP:
6425e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_BOARD_BACK_TEMP:
6435e111ed8SAndrew Rybchenko 		*unitp = EFX_MON_STAT_UNIT_TEMP_C;
6445e111ed8SAndrew Rybchenko 		break;
6455e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CONTROLLER_COOLING:
6465e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_PHY0_COOLING:
6475e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_PHY1_COOLING:
6485e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_AIRFLOW:
6495e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_PHY_POWER_PORT0:
6505e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_PHY_POWER_PORT1:
6515e111ed8SAndrew Rybchenko 		*unitp = EFX_MON_STAT_UNIT_BOOL;
6525e111ed8SAndrew Rybchenko 		break;
6535e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_NIC_POWER:
6545e111ed8SAndrew Rybchenko 		*unitp = EFX_MON_STAT_UNIT_POWER_W;
6555e111ed8SAndrew Rybchenko 		break;
6565e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_OUT_IAOE:
6575e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_IAOE:
6585e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_I0V9:
6595e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_I1V2:
6605e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_I0V9_A:
6615e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_I0V9_B:
6625e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_I1V8:
6635e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_I2V5:
6645e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_I3V3:
6655e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_I12V0:
6665e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_I1V3:
6675e111ed8SAndrew Rybchenko 		*unitp = EFX_MON_STAT_UNIT_CURRENT_MA;
6685e111ed8SAndrew Rybchenko 		break;
6695e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_FAN_0:
6705e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_FAN_1:
6715e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_FAN_2:
6725e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_FAN_3:
6735e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_FAN_4:
6745e111ed8SAndrew Rybchenko 		*unitp = EFX_MON_STAT_UNIT_RPM;
6755e111ed8SAndrew Rybchenko 		break;
6765e111ed8SAndrew Rybchenko 	default:
6775e111ed8SAndrew Rybchenko 		*unitp = EFX_MON_STAT_UNIT_UNKNOWN;
6785e111ed8SAndrew Rybchenko 		break;
6795e111ed8SAndrew Rybchenko 	};
6805e111ed8SAndrew Rybchenko 
6815e111ed8SAndrew Rybchenko 	if (*unitp == EFX_MON_STAT_UNIT_UNKNOWN)
6825e111ed8SAndrew Rybchenko 		goto fail1;
6835e111ed8SAndrew Rybchenko 
6845e111ed8SAndrew Rybchenko 	return (B_TRUE);
6855e111ed8SAndrew Rybchenko 
6865e111ed8SAndrew Rybchenko fail1:
6875e111ed8SAndrew Rybchenko 	EFSYS_PROBE1(fail1, boolean_t, B_TRUE);
6885e111ed8SAndrew Rybchenko 	return (B_FALSE);
6895e111ed8SAndrew Rybchenko };
6905e111ed8SAndrew Rybchenko 
6915e111ed8SAndrew Rybchenko /* END MKCONFIG GENERATED MonitorStatisticUnitsBlock */
6925e111ed8SAndrew Rybchenko 
6935e111ed8SAndrew Rybchenko /* START MKCONFIG GENERATED MonitorStatisticPortsBlock 1719b751d842534f */
6945e111ed8SAndrew Rybchenko 	__checkReturn			boolean_t
efx_mon_get_stat_portmap(__in efx_mon_stat_t stat,__out efx_mon_stat_portmask_t * maskp)6955e111ed8SAndrew Rybchenko efx_mon_get_stat_portmap(
6965e111ed8SAndrew Rybchenko 	__in				efx_mon_stat_t stat,
6975e111ed8SAndrew Rybchenko 	__out				efx_mon_stat_portmask_t *maskp)
6985e111ed8SAndrew Rybchenko {
6995e111ed8SAndrew Rybchenko 
7005e111ed8SAndrew Rybchenko 	switch (stat) {
7015e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_PHY1_TEMP:
7025e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_PHY1_COOLING:
7035e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_PHY_POWER_PORT1:
7045e111ed8SAndrew Rybchenko 		*maskp = EFX_MON_STAT_PORTMAP_PORT1;
7055e111ed8SAndrew Rybchenko 		break;
7065e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CONTROLLER_TEMP:
7075e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_PHY_COMMON_TEMP:
7085e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CONTROLLER_COOLING:
7095e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_1V0:
7105e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_1V2:
7115e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_1V8:
7125e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_2V5:
7135e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_3V3:
7145e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_12V0:
7155e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_1V2A:
7165e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_VREF:
7175e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_OUT_VAOE:
7185e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_AOE_TEMP:
7195e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_PSU_AOE_TEMP:
7205e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_PSU_TEMP:
7215e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_FAN_0:
7225e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_FAN_1:
7235e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_FAN_2:
7245e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_FAN_3:
7255e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_FAN_4:
7265e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_VAOE:
7275e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_OUT_IAOE:
7285e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_IAOE:
7295e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_NIC_POWER:
7305e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_0V9:
7315e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_I0V9:
7325e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_I1V2:
7335e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_0V9_ADC:
7345e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CONTROLLER_2_TEMP:
7355e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_VREG_INTERNAL_TEMP:
7365e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_VREG_0V9_TEMP:
7375e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_VREG_1V2_TEMP:
7385e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CONTROLLER_VPTAT:
7395e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CONTROLLER_INTERNAL_TEMP:
7405e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CONTROLLER_VPTAT_EXTADC:
7415e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CONTROLLER_INTERNAL_TEMP_EXTADC:
7425e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_AMBIENT_TEMP:
7435e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_AIRFLOW:
7445e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_VDD08D_VSS08D_CSR:
7455e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_VDD08D_VSS08D_CSR_EXTADC:
7465e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_HOTPOINT_TEMP:
7475e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_MUM_VCC:
7485e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_0V9_A:
7495e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_I0V9_A:
7505e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_VREG_0V9_A_TEMP:
7515e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_0V9_B:
7525e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_I0V9_B:
7535e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_VREG_0V9_B_TEMP:
7545e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CCOM_AVREG_1V2_SUPPLY:
7555e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CCOM_AVREG_1V2_SUPPLY_EXTADC:
7565e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CCOM_AVREG_1V8_SUPPLY:
7575e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CCOM_AVREG_1V8_SUPPLY_EXTADC:
7585e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CONTROLLER_MASTER_VPTAT:
7595e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CONTROLLER_MASTER_INTERNAL_TEMP:
7605e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CONTROLLER_MASTER_VPTAT_EXTADC:
7615e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CONTROLLER_MASTER_INTERNAL_TEMP_EXTADC:
7625e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CONTROLLER_SLAVE_VPTAT:
7635e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CONTROLLER_SLAVE_INTERNAL_TEMP:
7645e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CONTROLLER_SLAVE_VPTAT_EXTADC:
7655e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CONTROLLER_SLAVE_INTERNAL_TEMP_EXTADC:
7665e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_SODIMM_VOUT:
7675e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_SODIMM_0_TEMP:
7685e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_SODIMM_1_TEMP:
7695e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_PHY0_VCC:
7705e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_PHY1_VCC:
7715e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_CONTROLLER_TDIODE_TEMP:
7725e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_BOARD_FRONT_TEMP:
7735e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_BOARD_BACK_TEMP:
7745e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_I1V8:
7755e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_I2V5:
7765e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_I3V3:
7775e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_I12V0:
7785e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_1V3:
7795e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_IN_I1V3:
7805e111ed8SAndrew Rybchenko 		*maskp = EFX_MON_STAT_PORTMAP_ALL;
7815e111ed8SAndrew Rybchenko 		break;
7825e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_PHY0_TEMP:
7835e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_PHY0_COOLING:
7845e111ed8SAndrew Rybchenko 	case EFX_MON_STAT_PHY_POWER_PORT0:
7855e111ed8SAndrew Rybchenko 		*maskp = EFX_MON_STAT_PORTMAP_PORT0;
7865e111ed8SAndrew Rybchenko 		break;
7875e111ed8SAndrew Rybchenko 	default:
7885e111ed8SAndrew Rybchenko 		*maskp = EFX_MON_STAT_PORTMAP_UNKNOWN;
7895e111ed8SAndrew Rybchenko 		break;
7905e111ed8SAndrew Rybchenko 	};
7915e111ed8SAndrew Rybchenko 
7925e111ed8SAndrew Rybchenko 	if (*maskp == EFX_MON_STAT_PORTMAP_UNKNOWN)
7935e111ed8SAndrew Rybchenko 		goto fail1;
7945e111ed8SAndrew Rybchenko 
7955e111ed8SAndrew Rybchenko 	return (B_TRUE);
7965e111ed8SAndrew Rybchenko 
7975e111ed8SAndrew Rybchenko fail1:
7985e111ed8SAndrew Rybchenko 	EFSYS_PROBE1(fail1, boolean_t, B_TRUE);
7995e111ed8SAndrew Rybchenko 	return (B_FALSE);
8005e111ed8SAndrew Rybchenko };
8015e111ed8SAndrew Rybchenko 
8025e111ed8SAndrew Rybchenko /* END MKCONFIG GENERATED MonitorStatisticPortsBlock */
8035e111ed8SAndrew Rybchenko 
8045e111ed8SAndrew Rybchenko 	__checkReturn			efx_rc_t
efx_mon_stats_update(__in efx_nic_t * enp,__in efsys_mem_t * esmp,__inout_ecount (EFX_MON_NSTATS)efx_mon_stat_value_t * values)8055e111ed8SAndrew Rybchenko efx_mon_stats_update(
8065e111ed8SAndrew Rybchenko 	__in				efx_nic_t *enp,
8075e111ed8SAndrew Rybchenko 	__in				efsys_mem_t *esmp,
8085e111ed8SAndrew Rybchenko 	__inout_ecount(EFX_MON_NSTATS)	efx_mon_stat_value_t *values)
8095e111ed8SAndrew Rybchenko {
8105e111ed8SAndrew Rybchenko 	efx_mon_t *emp = &(enp->en_mon);
8115e111ed8SAndrew Rybchenko 	const efx_mon_ops_t *emop = emp->em_emop;
8125e111ed8SAndrew Rybchenko 
8135e111ed8SAndrew Rybchenko 	EFSYS_ASSERT3U(enp->en_magic, ==, EFX_NIC_MAGIC);
8145e111ed8SAndrew Rybchenko 	EFSYS_ASSERT3U(enp->en_mod_flags, &, EFX_MOD_MON);
8155e111ed8SAndrew Rybchenko 
8165e111ed8SAndrew Rybchenko 	return (emop->emo_stats_update(enp, esmp, values));
8175e111ed8SAndrew Rybchenko }
8185e111ed8SAndrew Rybchenko 
8195e111ed8SAndrew Rybchenko 	__checkReturn			efx_rc_t
efx_mon_limits_update(__in efx_nic_t * enp,__inout_ecount (EFX_MON_NSTATS)efx_mon_stat_limits_t * values)8205e111ed8SAndrew Rybchenko efx_mon_limits_update(
8215e111ed8SAndrew Rybchenko 	__in				efx_nic_t *enp,
8225e111ed8SAndrew Rybchenko 	__inout_ecount(EFX_MON_NSTATS)	efx_mon_stat_limits_t *values)
8235e111ed8SAndrew Rybchenko {
8245e111ed8SAndrew Rybchenko 	efx_mon_t *emp = &(enp->en_mon);
8255e111ed8SAndrew Rybchenko 	const efx_mon_ops_t *emop = emp->em_emop;
8265e111ed8SAndrew Rybchenko 
8275e111ed8SAndrew Rybchenko 	EFSYS_ASSERT3U(enp->en_magic, ==, EFX_NIC_MAGIC);
8285e111ed8SAndrew Rybchenko 	EFSYS_ASSERT3U(enp->en_mod_flags, &, EFX_MOD_MON);
8295e111ed8SAndrew Rybchenko 
8305e111ed8SAndrew Rybchenko 	return (emop->emo_limits_update(enp, values));
8315e111ed8SAndrew Rybchenko }
8325e111ed8SAndrew Rybchenko 
8335e111ed8SAndrew Rybchenko #endif	/* EFSYS_OPT_MON_STATS */
8345e111ed8SAndrew Rybchenko 
8355e111ed8SAndrew Rybchenko 		void
efx_mon_fini(__in efx_nic_t * enp)8365e111ed8SAndrew Rybchenko efx_mon_fini(
8375e111ed8SAndrew Rybchenko 	__in	efx_nic_t *enp)
8385e111ed8SAndrew Rybchenko {
8395e111ed8SAndrew Rybchenko 	efx_mon_t *emp = &(enp->en_mon);
8405e111ed8SAndrew Rybchenko 
8415e111ed8SAndrew Rybchenko 	EFSYS_ASSERT3U(enp->en_magic, ==, EFX_NIC_MAGIC);
8425e111ed8SAndrew Rybchenko 	EFSYS_ASSERT3U(enp->en_mod_flags, &, EFX_MOD_PROBE);
8435e111ed8SAndrew Rybchenko 	EFSYS_ASSERT3U(enp->en_mod_flags, &, EFX_MOD_MON);
8445e111ed8SAndrew Rybchenko 
8455e111ed8SAndrew Rybchenko 	emp->em_emop = NULL;
8465e111ed8SAndrew Rybchenko 
8475e111ed8SAndrew Rybchenko 	emp->em_type = EFX_MON_INVALID;
8485e111ed8SAndrew Rybchenko 
8495e111ed8SAndrew Rybchenko 	enp->en_mod_flags &= ~EFX_MOD_MON;
8505e111ed8SAndrew Rybchenko }
851