The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/sfxge/common/efx_mon.c

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*-
    2  * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
    3  *
    4  * Copyright (c) 2007-2016 Solarflare Communications Inc.
    5  * All rights reserved.
    6  *
    7  * Redistribution and use in source and binary forms, with or without
    8  * modification, are permitted provided that the following conditions are met:
    9  *
   10  * 1. Redistributions of source code must retain the above copyright notice,
   11  *    this list of conditions and the following disclaimer.
   12  * 2. Redistributions in binary form must reproduce the above copyright notice,
   13  *    this list of conditions and the following disclaimer in the documentation
   14  *    and/or other materials provided with the distribution.
   15  *
   16  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
   17  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
   18  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
   19  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   20  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   21  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   22  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
   23  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
   24  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
   25  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
   26  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   27  *
   28  * The views and conclusions contained in the software and documentation are
   29  * those of the authors and should not be interpreted as representing official
   30  * policies, either expressed or implied, of the FreeBSD Project.
   31  */
   32 
   33 #include <sys/cdefs.h>
   34 __FBSDID("$FreeBSD$");
   35 
   36 #include "efx.h"
   37 #include "efx_impl.h"
   38 
   39 #if EFSYS_OPT_MON_MCDI
   40 #include "mcdi_mon.h"
   41 #endif
   42 
   43 #if EFSYS_OPT_NAMES
   44 
   45 static const char * const __efx_mon_name[] = {
   46         "",
   47         "sfx90x0",
   48         "sfx91x0",
   49         "sfx92x0"
   50 };
   51 
   52                 const char *
   53 efx_mon_name(
   54         __in    efx_nic_t *enp)
   55 {
   56         efx_nic_cfg_t *encp = &(enp->en_nic_cfg);
   57 
   58         EFSYS_ASSERT3U(enp->en_magic, ==, EFX_NIC_MAGIC);
   59 
   60         EFSYS_ASSERT(encp->enc_mon_type != EFX_MON_INVALID);
   61         EFSYS_ASSERT3U(encp->enc_mon_type, <, EFX_MON_NTYPES);
   62         return (__efx_mon_name[encp->enc_mon_type]);
   63 }
   64 
   65 #endif  /* EFSYS_OPT_NAMES */
   66 
   67 #if EFSYS_OPT_MON_MCDI
   68 static const efx_mon_ops_t      __efx_mon_mcdi_ops = {
   69 #if EFSYS_OPT_MON_STATS
   70         mcdi_mon_stats_update,          /* emo_stats_update */
   71         mcdi_mon_limits_update,         /* emo_limits_update */
   72 #endif  /* EFSYS_OPT_MON_STATS */
   73 };
   74 #endif
   75 
   76         __checkReturn   efx_rc_t
   77 efx_mon_init(
   78         __in            efx_nic_t *enp)
   79 {
   80         efx_nic_cfg_t *encp = &(enp->en_nic_cfg);
   81         efx_mon_t *emp = &(enp->en_mon);
   82         const efx_mon_ops_t *emop;
   83         efx_rc_t rc;
   84 
   85         EFSYS_ASSERT3U(enp->en_magic, ==, EFX_NIC_MAGIC);
   86         EFSYS_ASSERT3U(enp->en_mod_flags, &, EFX_MOD_PROBE);
   87 
   88         if (enp->en_mod_flags & EFX_MOD_MON) {
   89                 rc = EINVAL;
   90                 goto fail1;
   91         }
   92 
   93         enp->en_mod_flags |= EFX_MOD_MON;
   94 
   95         emp->em_type = encp->enc_mon_type;
   96 
   97         EFSYS_ASSERT(encp->enc_mon_type != EFX_MON_INVALID);
   98         switch (emp->em_type) {
   99 #if EFSYS_OPT_MON_MCDI
  100         case EFX_MON_SFC90X0:
  101         case EFX_MON_SFC91X0:
  102         case EFX_MON_SFC92X0:
  103                 emop = &__efx_mon_mcdi_ops;
  104                 break;
  105 #endif
  106         default:
  107                 rc = ENOTSUP;
  108                 goto fail2;
  109         }
  110 
  111         emp->em_emop = emop;
  112         return (0);
  113 
  114 fail2:
  115         EFSYS_PROBE(fail2);
  116 
  117         emp->em_type = EFX_MON_INVALID;
  118 
  119         enp->en_mod_flags &= ~EFX_MOD_MON;
  120 
  121 fail1:
  122         EFSYS_PROBE1(fail1, efx_rc_t, rc);
  123 
  124         return (rc);
  125 }
  126 
  127 #if EFSYS_OPT_MON_STATS
  128 
  129 #if EFSYS_OPT_NAMES
  130 
  131 /* START MKCONFIG GENERATED MonitorStatNamesBlock 277c17eda1a6d1a4 */
  132 static const char * const __mon_stat_name[] = {
  133         "controller_temp",
  134         "phy_common_temp",
  135         "controller_cooling",
  136         "phy0_temp",
  137         "phy0_cooling",
  138         "phy1_temp",
  139         "phy1_cooling",
  140         "in_1v0",
  141         "in_1v2",
  142         "in_1v8",
  143         "in_2v5",
  144         "in_3v3",
  145         "in_12v0",
  146         "in_1v2a",
  147         "in_vref",
  148         "out_vaoe",
  149         "aoe_temp",
  150         "psu_aoe_temp",
  151         "psu_temp",
  152         "fan_0",
  153         "fan_1",
  154         "fan_2",
  155         "fan_3",
  156         "fan_4",
  157         "in_vaoe",
  158         "out_iaoe",
  159         "in_iaoe",
  160         "nic_power",
  161         "in_0v9",
  162         "in_i0v9",
  163         "in_i1v2",
  164         "in_0v9_adc",
  165         "controller_2_temp",
  166         "vreg_internal_temp",
  167         "vreg_0v9_temp",
  168         "vreg_1v2_temp",
  169         "controller_vptat",
  170         "controller_internal_temp",
  171         "controller_vptat_extadc",
  172         "controller_internal_temp_extadc",
  173         "ambient_temp",
  174         "airflow",
  175         "vdd08d_vss08d_csr",
  176         "vdd08d_vss08d_csr_extadc",
  177         "hotpoint_temp",
  178         "phy_power_port0",
  179         "phy_power_port1",
  180         "mum_vcc",
  181         "in_0v9_a",
  182         "in_i0v9_a",
  183         "vreg_0v9_a_temp",
  184         "in_0v9_b",
  185         "in_i0v9_b",
  186         "vreg_0v9_b_temp",
  187         "ccom_avreg_1v2_supply",
  188         "ccom_avreg_1v2_supply_extadc",
  189         "ccom_avreg_1v8_supply",
  190         "ccom_avreg_1v8_supply_extadc",
  191         "controller_master_vptat",
  192         "controller_master_internal_temp",
  193         "controller_master_vptat_extadc",
  194         "controller_master_internal_temp_extadc",
  195         "controller_slave_vptat",
  196         "controller_slave_internal_temp",
  197         "controller_slave_vptat_extadc",
  198         "controller_slave_internal_temp_extadc",
  199         "sodimm_vout",
  200         "sodimm_0_temp",
  201         "sodimm_1_temp",
  202         "phy0_vcc",
  203         "phy1_vcc",
  204         "controller_tdiode_temp",
  205         "board_front_temp",
  206         "board_back_temp",
  207         "in_i1v8",
  208         "in_i2v5",
  209         "in_i3v3",
  210         "in_i12v0",
  211         "in_1v3",
  212         "in_i1v3",
  213 };
  214 
  215 /* END MKCONFIG GENERATED MonitorStatNamesBlock */
  216 
  217                                         const char *
  218 efx_mon_stat_name(
  219         __in                            efx_nic_t *enp,
  220         __in                            efx_mon_stat_t id)
  221 {
  222         _NOTE(ARGUNUSED(enp))
  223         EFSYS_ASSERT3U(enp->en_magic, ==, EFX_NIC_MAGIC);
  224 
  225         EFSYS_ASSERT3U(id, <, EFX_MON_NSTATS);
  226         return (__mon_stat_name[id]);
  227 }
  228 
  229 typedef struct _stat_description_t {
  230         efx_mon_stat_t  stat;
  231         const char      *desc;
  232 } stat_description_t;
  233 
  234 /* START MKCONFIG GENERATED MonitorStatDescriptionsBlock f072138f16d2e1f8 */
  235 static const char *__mon_stat_description[] = {
  236         MC_CMD_SENSOR_CONTROLLER_TEMP_ENUM_STR,
  237         MC_CMD_SENSOR_PHY_COMMON_TEMP_ENUM_STR,
  238         MC_CMD_SENSOR_CONTROLLER_COOLING_ENUM_STR,
  239         MC_CMD_SENSOR_PHY0_TEMP_ENUM_STR,
  240         MC_CMD_SENSOR_PHY0_COOLING_ENUM_STR,
  241         MC_CMD_SENSOR_PHY1_TEMP_ENUM_STR,
  242         MC_CMD_SENSOR_PHY1_COOLING_ENUM_STR,
  243         MC_CMD_SENSOR_IN_1V0_ENUM_STR,
  244         MC_CMD_SENSOR_IN_1V2_ENUM_STR,
  245         MC_CMD_SENSOR_IN_1V8_ENUM_STR,
  246         MC_CMD_SENSOR_IN_2V5_ENUM_STR,
  247         MC_CMD_SENSOR_IN_3V3_ENUM_STR,
  248         MC_CMD_SENSOR_IN_12V0_ENUM_STR,
  249         MC_CMD_SENSOR_IN_1V2A_ENUM_STR,
  250         MC_CMD_SENSOR_IN_VREF_ENUM_STR,
  251         MC_CMD_SENSOR_OUT_VAOE_ENUM_STR,
  252         MC_CMD_SENSOR_AOE_TEMP_ENUM_STR,
  253         MC_CMD_SENSOR_PSU_AOE_TEMP_ENUM_STR,
  254         MC_CMD_SENSOR_PSU_TEMP_ENUM_STR,
  255         MC_CMD_SENSOR_FAN_0_ENUM_STR,
  256         MC_CMD_SENSOR_FAN_1_ENUM_STR,
  257         MC_CMD_SENSOR_FAN_2_ENUM_STR,
  258         MC_CMD_SENSOR_FAN_3_ENUM_STR,
  259         MC_CMD_SENSOR_FAN_4_ENUM_STR,
  260         MC_CMD_SENSOR_IN_VAOE_ENUM_STR,
  261         MC_CMD_SENSOR_OUT_IAOE_ENUM_STR,
  262         MC_CMD_SENSOR_IN_IAOE_ENUM_STR,
  263         MC_CMD_SENSOR_NIC_POWER_ENUM_STR,
  264         MC_CMD_SENSOR_IN_0V9_ENUM_STR,
  265         MC_CMD_SENSOR_IN_I0V9_ENUM_STR,
  266         MC_CMD_SENSOR_IN_I1V2_ENUM_STR,
  267         MC_CMD_SENSOR_IN_0V9_ADC_ENUM_STR,
  268         MC_CMD_SENSOR_CONTROLLER_2_TEMP_ENUM_STR,
  269         MC_CMD_SENSOR_VREG_INTERNAL_TEMP_ENUM_STR,
  270         MC_CMD_SENSOR_VREG_0V9_TEMP_ENUM_STR,
  271         MC_CMD_SENSOR_VREG_1V2_TEMP_ENUM_STR,
  272         MC_CMD_SENSOR_CONTROLLER_VPTAT_ENUM_STR,
  273         MC_CMD_SENSOR_CONTROLLER_INTERNAL_TEMP_ENUM_STR,
  274         MC_CMD_SENSOR_CONTROLLER_VPTAT_EXTADC_ENUM_STR,
  275         MC_CMD_SENSOR_CONTROLLER_INTERNAL_TEMP_EXTADC_ENUM_STR,
  276         MC_CMD_SENSOR_AMBIENT_TEMP_ENUM_STR,
  277         MC_CMD_SENSOR_AIRFLOW_ENUM_STR,
  278         MC_CMD_SENSOR_VDD08D_VSS08D_CSR_ENUM_STR,
  279         MC_CMD_SENSOR_VDD08D_VSS08D_CSR_EXTADC_ENUM_STR,
  280         MC_CMD_SENSOR_HOTPOINT_TEMP_ENUM_STR,
  281         MC_CMD_SENSOR_PHY_POWER_PORT0_ENUM_STR,
  282         MC_CMD_SENSOR_PHY_POWER_PORT1_ENUM_STR,
  283         MC_CMD_SENSOR_MUM_VCC_ENUM_STR,
  284         MC_CMD_SENSOR_IN_0V9_A_ENUM_STR,
  285         MC_CMD_SENSOR_IN_I0V9_A_ENUM_STR,
  286         MC_CMD_SENSOR_VREG_0V9_A_TEMP_ENUM_STR,
  287         MC_CMD_SENSOR_IN_0V9_B_ENUM_STR,
  288         MC_CMD_SENSOR_IN_I0V9_B_ENUM_STR,
  289         MC_CMD_SENSOR_VREG_0V9_B_TEMP_ENUM_STR,
  290         MC_CMD_SENSOR_CCOM_AVREG_1V2_SUPPLY_ENUM_STR,
  291         MC_CMD_SENSOR_CCOM_AVREG_1V2_SUPPLY_EXTADC_ENUM_STR,
  292         MC_CMD_SENSOR_CCOM_AVREG_1V8_SUPPLY_ENUM_STR,
  293         MC_CMD_SENSOR_CCOM_AVREG_1V8_SUPPLY_EXTADC_ENUM_STR,
  294         MC_CMD_SENSOR_CONTROLLER_MASTER_VPTAT_ENUM_STR,
  295         MC_CMD_SENSOR_CONTROLLER_MASTER_INTERNAL_TEMP_ENUM_STR,
  296         MC_CMD_SENSOR_CONTROLLER_MASTER_VPTAT_EXTADC_ENUM_STR,
  297         MC_CMD_SENSOR_CONTROLLER_MASTER_INTERNAL_TEMP_EXTADC_ENUM_STR,
  298         MC_CMD_SENSOR_CONTROLLER_SLAVE_VPTAT_ENUM_STR,
  299         MC_CMD_SENSOR_CONTROLLER_SLAVE_INTERNAL_TEMP_ENUM_STR,
  300         MC_CMD_SENSOR_CONTROLLER_SLAVE_VPTAT_EXTADC_ENUM_STR,
  301         MC_CMD_SENSOR_CONTROLLER_SLAVE_INTERNAL_TEMP_EXTADC_ENUM_STR,
  302         MC_CMD_SENSOR_SODIMM_VOUT_ENUM_STR,
  303         MC_CMD_SENSOR_SODIMM_0_TEMP_ENUM_STR,
  304         MC_CMD_SENSOR_SODIMM_1_TEMP_ENUM_STR,
  305         MC_CMD_SENSOR_PHY0_VCC_ENUM_STR,
  306         MC_CMD_SENSOR_PHY1_VCC_ENUM_STR,
  307         MC_CMD_SENSOR_CONTROLLER_TDIODE_TEMP_ENUM_STR,
  308         MC_CMD_SENSOR_BOARD_FRONT_TEMP_ENUM_STR,
  309         MC_CMD_SENSOR_BOARD_BACK_TEMP_ENUM_STR,
  310         MC_CMD_SENSOR_IN_I1V8_ENUM_STR,
  311         MC_CMD_SENSOR_IN_I2V5_ENUM_STR,
  312         MC_CMD_SENSOR_IN_I3V3_ENUM_STR,
  313         MC_CMD_SENSOR_IN_I12V0_ENUM_STR,
  314         MC_CMD_SENSOR_IN_1V3_ENUM_STR,
  315         MC_CMD_SENSOR_IN_I1V3_ENUM_STR,
  316 };
  317 
  318 /* END MKCONFIG GENERATED MonitorStatDescriptionsBlock */
  319 
  320                                         const char *
  321 efx_mon_stat_description(
  322         __in                            efx_nic_t *enp,
  323         __in                            efx_mon_stat_t id)
  324 {
  325         _NOTE(ARGUNUSED(enp))
  326         EFSYS_ASSERT3U(enp->en_magic, ==, EFX_NIC_MAGIC);
  327 
  328         EFSYS_ASSERT3U(id, <, EFX_MON_NSTATS);
  329         return (__mon_stat_description[id]);
  330 }
  331 
  332 #endif  /* EFSYS_OPT_NAMES */
  333 
  334 /* START MKCONFIG GENERATED MonitorMcdiMappingBlock 173eee0a5599996a */
  335         __checkReturn                   boolean_t
  336 efx_mon_mcdi_to_efx_stat(
  337         __in                            int mcdi_index,
  338         __out                           efx_mon_stat_t *statp)
  339 {
  340 
  341         if ((mcdi_index % (MC_CMD_SENSOR_PAGE0_NEXT + 1)) ==
  342             MC_CMD_SENSOR_PAGE0_NEXT) {
  343                 *statp = EFX_MON_NSTATS;
  344                 return (B_FALSE);
  345         }
  346 
  347         switch (mcdi_index) {
  348         case MC_CMD_SENSOR_IN_I0V9:
  349                 *statp = EFX_MON_STAT_IN_I0V9;
  350                 break;
  351         case MC_CMD_SENSOR_CONTROLLER_SLAVE_VPTAT_EXTADC:
  352                 *statp = EFX_MON_STAT_CONTROLLER_SLAVE_VPTAT_EXTADC;
  353                 break;
  354         case MC_CMD_SENSOR_CONTROLLER_SLAVE_VPTAT:
  355                 *statp = EFX_MON_STAT_CONTROLLER_SLAVE_VPTAT;
  356                 break;
  357         case MC_CMD_SENSOR_PSU_TEMP:
  358                 *statp = EFX_MON_STAT_PSU_TEMP;
  359                 break;
  360         case MC_CMD_SENSOR_FAN_2:
  361                 *statp = EFX_MON_STAT_FAN_2;
  362                 break;
  363         case MC_CMD_SENSOR_CONTROLLER_INTERNAL_TEMP_EXTADC:
  364                 *statp = EFX_MON_STAT_CONTROLLER_INTERNAL_TEMP_EXTADC;
  365                 break;
  366         case MC_CMD_SENSOR_BOARD_BACK_TEMP:
  367                 *statp = EFX_MON_STAT_BOARD_BACK_TEMP;
  368                 break;
  369         case MC_CMD_SENSOR_IN_1V3:
  370                 *statp = EFX_MON_STAT_IN_1V3;
  371                 break;
  372         case MC_CMD_SENSOR_CONTROLLER_TDIODE_TEMP:
  373                 *statp = EFX_MON_STAT_CONTROLLER_TDIODE_TEMP;
  374                 break;
  375         case MC_CMD_SENSOR_IN_2V5:
  376                 *statp = EFX_MON_STAT_IN_2V5;
  377                 break;
  378         case MC_CMD_SENSOR_PHY_COMMON_TEMP:
  379                 *statp = EFX_MON_STAT_PHY_COMMON_TEMP;
  380                 break;
  381         case MC_CMD_SENSOR_PHY1_TEMP:
  382                 *statp = EFX_MON_STAT_PHY1_TEMP;
  383                 break;
  384         case MC_CMD_SENSOR_VREG_INTERNAL_TEMP:
  385                 *statp = EFX_MON_STAT_VREG_INTERNAL_TEMP;
  386                 break;
  387         case MC_CMD_SENSOR_IN_1V0:
  388                 *statp = EFX_MON_STAT_IN_1V0;
  389                 break;
  390         case MC_CMD_SENSOR_FAN_1:
  391                 *statp = EFX_MON_STAT_FAN_1;
  392                 break;
  393         case MC_CMD_SENSOR_IN_1V2:
  394                 *statp = EFX_MON_STAT_IN_1V2;
  395                 break;
  396         case MC_CMD_SENSOR_FAN_3:
  397                 *statp = EFX_MON_STAT_FAN_3;
  398                 break;
  399         case MC_CMD_SENSOR_IN_1V2A:
  400                 *statp = EFX_MON_STAT_IN_1V2A;
  401                 break;
  402         case MC_CMD_SENSOR_SODIMM_0_TEMP:
  403                 *statp = EFX_MON_STAT_SODIMM_0_TEMP;
  404                 break;
  405         case MC_CMD_SENSOR_IN_1V8:
  406                 *statp = EFX_MON_STAT_IN_1V8;
  407                 break;
  408         case MC_CMD_SENSOR_IN_VREF:
  409                 *statp = EFX_MON_STAT_IN_VREF;
  410                 break;
  411         case MC_CMD_SENSOR_SODIMM_VOUT:
  412                 *statp = EFX_MON_STAT_SODIMM_VOUT;
  413                 break;
  414         case MC_CMD_SENSOR_CCOM_AVREG_1V2_SUPPLY:
  415                 *statp = EFX_MON_STAT_CCOM_AVREG_1V2_SUPPLY;
  416                 break;
  417         case MC_CMD_SENSOR_IN_I1V2:
  418                 *statp = EFX_MON_STAT_IN_I1V2;
  419                 break;
  420         case MC_CMD_SENSOR_IN_I1V3:
  421                 *statp = EFX_MON_STAT_IN_I1V3;
  422                 break;
  423         case MC_CMD_SENSOR_AIRFLOW:
  424                 *statp = EFX_MON_STAT_AIRFLOW;
  425                 break;
  426         case MC_CMD_SENSOR_HOTPOINT_TEMP:
  427                 *statp = EFX_MON_STAT_HOTPOINT_TEMP;
  428                 break;
  429         case MC_CMD_SENSOR_VDD08D_VSS08D_CSR:
  430                 *statp = EFX_MON_STAT_VDD08D_VSS08D_CSR;
  431                 break;
  432         case MC_CMD_SENSOR_AOE_TEMP:
  433                 *statp = EFX_MON_STAT_AOE_TEMP;
  434                 break;
  435         case MC_CMD_SENSOR_IN_I1V8:
  436                 *statp = EFX_MON_STAT_IN_I1V8;
  437                 break;
  438         case MC_CMD_SENSOR_IN_I2V5:
  439                 *statp = EFX_MON_STAT_IN_I2V5;
  440                 break;
  441         case MC_CMD_SENSOR_PHY1_COOLING:
  442                 *statp = EFX_MON_STAT_PHY1_COOLING;
  443                 break;
  444         case MC_CMD_SENSOR_CCOM_AVREG_1V8_SUPPLY_EXTADC:
  445                 *statp = EFX_MON_STAT_CCOM_AVREG_1V8_SUPPLY_EXTADC;
  446                 break;
  447         case MC_CMD_SENSOR_IN_0V9_ADC:
  448                 *statp = EFX_MON_STAT_IN_0V9_ADC;
  449                 break;
  450         case MC_CMD_SENSOR_VREG_0V9_A_TEMP:
  451                 *statp = EFX_MON_STAT_VREG_0V9_A_TEMP;
  452                 break;
  453         case MC_CMD_SENSOR_CONTROLLER_MASTER_VPTAT:
  454                 *statp = EFX_MON_STAT_CONTROLLER_MASTER_VPTAT;
  455                 break;
  456         case MC_CMD_SENSOR_PHY0_VCC:
  457                 *statp = EFX_MON_STAT_PHY0_VCC;
  458                 break;
  459         case MC_CMD_SENSOR_PHY0_COOLING:
  460                 *statp = EFX_MON_STAT_PHY0_COOLING;
  461                 break;
  462         case MC_CMD_SENSOR_PSU_AOE_TEMP:
  463                 *statp = EFX_MON_STAT_PSU_AOE_TEMP;
  464                 break;
  465         case MC_CMD_SENSOR_VREG_0V9_TEMP:
  466                 *statp = EFX_MON_STAT_VREG_0V9_TEMP;
  467                 break;
  468         case MC_CMD_SENSOR_IN_I0V9_A:
  469                 *statp = EFX_MON_STAT_IN_I0V9_A;
  470                 break;
  471         case MC_CMD_SENSOR_IN_I3V3:
  472                 *statp = EFX_MON_STAT_IN_I3V3;
  473                 break;
  474         case MC_CMD_SENSOR_BOARD_FRONT_TEMP:
  475                 *statp = EFX_MON_STAT_BOARD_FRONT_TEMP;
  476                 break;
  477         case MC_CMD_SENSOR_OUT_VAOE:
  478                 *statp = EFX_MON_STAT_OUT_VAOE;
  479                 break;
  480         case MC_CMD_SENSOR_VDD08D_VSS08D_CSR_EXTADC:
  481                 *statp = EFX_MON_STAT_VDD08D_VSS08D_CSR_EXTADC;
  482                 break;
  483         case MC_CMD_SENSOR_IN_I12V0:
  484                 *statp = EFX_MON_STAT_IN_I12V0;
  485                 break;
  486         case MC_CMD_SENSOR_PHY_POWER_PORT1:
  487                 *statp = EFX_MON_STAT_PHY_POWER_PORT1;
  488                 break;
  489         case MC_CMD_SENSOR_PHY_POWER_PORT0:
  490                 *statp = EFX_MON_STAT_PHY_POWER_PORT0;
  491                 break;
  492         case MC_CMD_SENSOR_CONTROLLER_SLAVE_INTERNAL_TEMP_EXTADC:
  493                 *statp = EFX_MON_STAT_CONTROLLER_SLAVE_INTERNAL_TEMP_EXTADC;
  494                 break;
  495         case MC_CMD_SENSOR_CONTROLLER_MASTER_INTERNAL_TEMP:
  496                 *statp = EFX_MON_STAT_CONTROLLER_MASTER_INTERNAL_TEMP;
  497                 break;
  498         case MC_CMD_SENSOR_CONTROLLER_TEMP:
  499                 *statp = EFX_MON_STAT_CONTROLLER_TEMP;
  500                 break;
  501         case MC_CMD_SENSOR_IN_IAOE:
  502                 *statp = EFX_MON_STAT_IN_IAOE;
  503                 break;
  504         case MC_CMD_SENSOR_IN_VAOE:
  505                 *statp = EFX_MON_STAT_IN_VAOE;
  506                 break;
  507         case MC_CMD_SENSOR_CONTROLLER_MASTER_VPTAT_EXTADC:
  508                 *statp = EFX_MON_STAT_CONTROLLER_MASTER_VPTAT_EXTADC;
  509                 break;
  510         case MC_CMD_SENSOR_CCOM_AVREG_1V8_SUPPLY:
  511                 *statp = EFX_MON_STAT_CCOM_AVREG_1V8_SUPPLY;
  512                 break;
  513         case MC_CMD_SENSOR_PHY1_VCC:
  514                 *statp = EFX_MON_STAT_PHY1_VCC;
  515                 break;
  516         case MC_CMD_SENSOR_CONTROLLER_COOLING:
  517                 *statp = EFX_MON_STAT_CONTROLLER_COOLING;
  518                 break;
  519         case MC_CMD_SENSOR_AMBIENT_TEMP:
  520                 *statp = EFX_MON_STAT_AMBIENT_TEMP;
  521                 break;
  522         case MC_CMD_SENSOR_IN_3V3:
  523                 *statp = EFX_MON_STAT_IN_3V3;
  524                 break;
  525         case MC_CMD_SENSOR_PHY0_TEMP:
  526                 *statp = EFX_MON_STAT_PHY0_TEMP;
  527                 break;
  528         case MC_CMD_SENSOR_SODIMM_1_TEMP:
  529                 *statp = EFX_MON_STAT_SODIMM_1_TEMP;
  530                 break;
  531         case MC_CMD_SENSOR_MUM_VCC:
  532                 *statp = EFX_MON_STAT_MUM_VCC;
  533                 break;
  534         case MC_CMD_SENSOR_VREG_0V9_B_TEMP:
  535                 *statp = EFX_MON_STAT_VREG_0V9_B_TEMP;
  536                 break;
  537         case MC_CMD_SENSOR_CONTROLLER_SLAVE_INTERNAL_TEMP:
  538                 *statp = EFX_MON_STAT_CONTROLLER_SLAVE_INTERNAL_TEMP;
  539                 break;
  540         case MC_CMD_SENSOR_FAN_4:
  541                 *statp = EFX_MON_STAT_FAN_4;
  542                 break;
  543         case MC_CMD_SENSOR_CONTROLLER_2_TEMP:
  544                 *statp = EFX_MON_STAT_CONTROLLER_2_TEMP;
  545                 break;
  546         case MC_CMD_SENSOR_CCOM_AVREG_1V2_SUPPLY_EXTADC:
  547                 *statp = EFX_MON_STAT_CCOM_AVREG_1V2_SUPPLY_EXTADC;
  548                 break;
  549         case MC_CMD_SENSOR_IN_0V9_A:
  550                 *statp = EFX_MON_STAT_IN_0V9_A;
  551                 break;
  552         case MC_CMD_SENSOR_CONTROLLER_VPTAT_EXTADC:
  553                 *statp = EFX_MON_STAT_CONTROLLER_VPTAT_EXTADC;
  554                 break;
  555         case MC_CMD_SENSOR_IN_0V9:
  556                 *statp = EFX_MON_STAT_IN_0V9;
  557                 break;
  558         case MC_CMD_SENSOR_IN_I0V9_B:
  559                 *statp = EFX_MON_STAT_IN_I0V9_B;
  560                 break;
  561         case MC_CMD_SENSOR_NIC_POWER:
  562                 *statp = EFX_MON_STAT_NIC_POWER;
  563                 break;
  564         case MC_CMD_SENSOR_IN_12V0:
  565                 *statp = EFX_MON_STAT_IN_12V0;
  566                 break;
  567         case MC_CMD_SENSOR_OUT_IAOE:
  568                 *statp = EFX_MON_STAT_OUT_IAOE;
  569                 break;
  570         case MC_CMD_SENSOR_CONTROLLER_VPTAT:
  571                 *statp = EFX_MON_STAT_CONTROLLER_VPTAT;
  572                 break;
  573         case MC_CMD_SENSOR_CONTROLLER_MASTER_INTERNAL_TEMP_EXTADC:
  574                 *statp = EFX_MON_STAT_CONTROLLER_MASTER_INTERNAL_TEMP_EXTADC;
  575                 break;
  576         case MC_CMD_SENSOR_CONTROLLER_INTERNAL_TEMP:
  577                 *statp = EFX_MON_STAT_CONTROLLER_INTERNAL_TEMP;
  578                 break;
  579         case MC_CMD_SENSOR_FAN_0:
  580                 *statp = EFX_MON_STAT_FAN_0;
  581                 break;
  582         case MC_CMD_SENSOR_VREG_1V2_TEMP:
  583                 *statp = EFX_MON_STAT_VREG_1V2_TEMP;
  584                 break;
  585         case MC_CMD_SENSOR_IN_0V9_B:
  586                 *statp = EFX_MON_STAT_IN_0V9_B;
  587                 break;
  588         default:
  589                 *statp = EFX_MON_NSTATS;
  590                 break;
  591         };
  592 
  593         if (*statp == EFX_MON_NSTATS)
  594                 goto fail1;
  595 
  596         return (B_TRUE);
  597 
  598 fail1:
  599         EFSYS_PROBE1(fail1, boolean_t, B_TRUE);
  600         return (B_FALSE);
  601 };
  602 
  603 /* END MKCONFIG GENERATED MonitorMcdiMappingBlock */
  604 
  605 /* START MKCONFIG GENERATED MonitorStatisticUnitsBlock 2d447c656cc2d01d */
  606         __checkReturn                   boolean_t
  607 efx_mon_get_stat_unit(
  608         __in                            efx_mon_stat_t stat,
  609         __out                           efx_mon_stat_unit_t *unitp)
  610 {
  611         switch (stat) {
  612         case EFX_MON_STAT_IN_1V0:
  613         case EFX_MON_STAT_IN_1V2:
  614         case EFX_MON_STAT_IN_1V8:
  615         case EFX_MON_STAT_IN_2V5:
  616         case EFX_MON_STAT_IN_3V3:
  617         case EFX_MON_STAT_IN_12V0:
  618         case EFX_MON_STAT_IN_1V2A:
  619         case EFX_MON_STAT_IN_VREF:
  620         case EFX_MON_STAT_OUT_VAOE:
  621         case EFX_MON_STAT_IN_VAOE:
  622         case EFX_MON_STAT_IN_0V9:
  623         case EFX_MON_STAT_IN_0V9_ADC:
  624         case EFX_MON_STAT_CONTROLLER_VPTAT_EXTADC:
  625         case EFX_MON_STAT_VDD08D_VSS08D_CSR:
  626         case EFX_MON_STAT_VDD08D_VSS08D_CSR_EXTADC:
  627         case EFX_MON_STAT_MUM_VCC:
  628         case EFX_MON_STAT_IN_0V9_A:
  629         case EFX_MON_STAT_IN_0V9_B:
  630         case EFX_MON_STAT_CCOM_AVREG_1V2_SUPPLY:
  631         case EFX_MON_STAT_CCOM_AVREG_1V2_SUPPLY_EXTADC:
  632         case EFX_MON_STAT_CCOM_AVREG_1V8_SUPPLY:
  633         case EFX_MON_STAT_CCOM_AVREG_1V8_SUPPLY_EXTADC:
  634         case EFX_MON_STAT_CONTROLLER_MASTER_VPTAT:
  635         case EFX_MON_STAT_CONTROLLER_MASTER_VPTAT_EXTADC:
  636         case EFX_MON_STAT_CONTROLLER_SLAVE_VPTAT:
  637         case EFX_MON_STAT_CONTROLLER_SLAVE_VPTAT_EXTADC:
  638         case EFX_MON_STAT_SODIMM_VOUT:
  639         case EFX_MON_STAT_PHY0_VCC:
  640         case EFX_MON_STAT_PHY1_VCC:
  641         case EFX_MON_STAT_IN_1V3:
  642                 *unitp = EFX_MON_STAT_UNIT_VOLTAGE_MV;
  643                 break;
  644         case EFX_MON_STAT_CONTROLLER_TEMP:
  645         case EFX_MON_STAT_PHY_COMMON_TEMP:
  646         case EFX_MON_STAT_PHY0_TEMP:
  647         case EFX_MON_STAT_PHY1_TEMP:
  648         case EFX_MON_STAT_AOE_TEMP:
  649         case EFX_MON_STAT_PSU_AOE_TEMP:
  650         case EFX_MON_STAT_PSU_TEMP:
  651         case EFX_MON_STAT_CONTROLLER_2_TEMP:
  652         case EFX_MON_STAT_VREG_INTERNAL_TEMP:
  653         case EFX_MON_STAT_VREG_0V9_TEMP:
  654         case EFX_MON_STAT_VREG_1V2_TEMP:
  655         case EFX_MON_STAT_CONTROLLER_VPTAT:
  656         case EFX_MON_STAT_CONTROLLER_INTERNAL_TEMP:
  657         case EFX_MON_STAT_CONTROLLER_INTERNAL_TEMP_EXTADC:
  658         case EFX_MON_STAT_AMBIENT_TEMP:
  659         case EFX_MON_STAT_HOTPOINT_TEMP:
  660         case EFX_MON_STAT_VREG_0V9_A_TEMP:
  661         case EFX_MON_STAT_VREG_0V9_B_TEMP:
  662         case EFX_MON_STAT_CONTROLLER_MASTER_INTERNAL_TEMP:
  663         case EFX_MON_STAT_CONTROLLER_MASTER_INTERNAL_TEMP_EXTADC:
  664         case EFX_MON_STAT_CONTROLLER_SLAVE_INTERNAL_TEMP:
  665         case EFX_MON_STAT_CONTROLLER_SLAVE_INTERNAL_TEMP_EXTADC:
  666         case EFX_MON_STAT_SODIMM_0_TEMP:
  667         case EFX_MON_STAT_SODIMM_1_TEMP:
  668         case EFX_MON_STAT_CONTROLLER_TDIODE_TEMP:
  669         case EFX_MON_STAT_BOARD_FRONT_TEMP:
  670         case EFX_MON_STAT_BOARD_BACK_TEMP:
  671                 *unitp = EFX_MON_STAT_UNIT_TEMP_C;
  672                 break;
  673         case EFX_MON_STAT_CONTROLLER_COOLING:
  674         case EFX_MON_STAT_PHY0_COOLING:
  675         case EFX_MON_STAT_PHY1_COOLING:
  676         case EFX_MON_STAT_AIRFLOW:
  677         case EFX_MON_STAT_PHY_POWER_PORT0:
  678         case EFX_MON_STAT_PHY_POWER_PORT1:
  679                 *unitp = EFX_MON_STAT_UNIT_BOOL;
  680                 break;
  681         case EFX_MON_STAT_NIC_POWER:
  682                 *unitp = EFX_MON_STAT_UNIT_POWER_W;
  683                 break;
  684         case EFX_MON_STAT_OUT_IAOE:
  685         case EFX_MON_STAT_IN_IAOE:
  686         case EFX_MON_STAT_IN_I0V9:
  687         case EFX_MON_STAT_IN_I1V2:
  688         case EFX_MON_STAT_IN_I0V9_A:
  689         case EFX_MON_STAT_IN_I0V9_B:
  690         case EFX_MON_STAT_IN_I1V8:
  691         case EFX_MON_STAT_IN_I2V5:
  692         case EFX_MON_STAT_IN_I3V3:
  693         case EFX_MON_STAT_IN_I12V0:
  694         case EFX_MON_STAT_IN_I1V3:
  695                 *unitp = EFX_MON_STAT_UNIT_CURRENT_MA;
  696                 break;
  697         case EFX_MON_STAT_FAN_0:
  698         case EFX_MON_STAT_FAN_1:
  699         case EFX_MON_STAT_FAN_2:
  700         case EFX_MON_STAT_FAN_3:
  701         case EFX_MON_STAT_FAN_4:
  702                 *unitp = EFX_MON_STAT_UNIT_RPM;
  703                 break;
  704         default:
  705                 *unitp = EFX_MON_STAT_UNIT_UNKNOWN;
  706                 break;
  707         };
  708 
  709         if (*unitp == EFX_MON_STAT_UNIT_UNKNOWN)
  710                 goto fail1;
  711 
  712         return (B_TRUE);
  713 
  714 fail1:
  715         EFSYS_PROBE1(fail1, boolean_t, B_TRUE);
  716         return (B_FALSE);
  717 };
  718 
  719 /* END MKCONFIG GENERATED MonitorStatisticUnitsBlock */
  720 
  721 /* START MKCONFIG GENERATED MonitorStatisticPortsBlock 1719b751d842534f */
  722         __checkReturn                   boolean_t
  723 efx_mon_get_stat_portmap(
  724         __in                            efx_mon_stat_t stat,
  725         __out                           efx_mon_stat_portmask_t *maskp)
  726 {
  727 
  728         switch (stat) {
  729         case EFX_MON_STAT_PHY1_TEMP:
  730         case EFX_MON_STAT_PHY1_COOLING:
  731         case EFX_MON_STAT_PHY_POWER_PORT1:
  732                 *maskp = EFX_MON_STAT_PORTMAP_PORT1;
  733                 break;
  734         case EFX_MON_STAT_CONTROLLER_TEMP:
  735         case EFX_MON_STAT_PHY_COMMON_TEMP:
  736         case EFX_MON_STAT_CONTROLLER_COOLING:
  737         case EFX_MON_STAT_IN_1V0:
  738         case EFX_MON_STAT_IN_1V2:
  739         case EFX_MON_STAT_IN_1V8:
  740         case EFX_MON_STAT_IN_2V5:
  741         case EFX_MON_STAT_IN_3V3:
  742         case EFX_MON_STAT_IN_12V0:
  743         case EFX_MON_STAT_IN_1V2A:
  744         case EFX_MON_STAT_IN_VREF:
  745         case EFX_MON_STAT_OUT_VAOE:
  746         case EFX_MON_STAT_AOE_TEMP:
  747         case EFX_MON_STAT_PSU_AOE_TEMP:
  748         case EFX_MON_STAT_PSU_TEMP:
  749         case EFX_MON_STAT_FAN_0:
  750         case EFX_MON_STAT_FAN_1:
  751         case EFX_MON_STAT_FAN_2:
  752         case EFX_MON_STAT_FAN_3:
  753         case EFX_MON_STAT_FAN_4:
  754         case EFX_MON_STAT_IN_VAOE:
  755         case EFX_MON_STAT_OUT_IAOE:
  756         case EFX_MON_STAT_IN_IAOE:
  757         case EFX_MON_STAT_NIC_POWER:
  758         case EFX_MON_STAT_IN_0V9:
  759         case EFX_MON_STAT_IN_I0V9:
  760         case EFX_MON_STAT_IN_I1V2:
  761         case EFX_MON_STAT_IN_0V9_ADC:
  762         case EFX_MON_STAT_CONTROLLER_2_TEMP:
  763         case EFX_MON_STAT_VREG_INTERNAL_TEMP:
  764         case EFX_MON_STAT_VREG_0V9_TEMP:
  765         case EFX_MON_STAT_VREG_1V2_TEMP:
  766         case EFX_MON_STAT_CONTROLLER_VPTAT:
  767         case EFX_MON_STAT_CONTROLLER_INTERNAL_TEMP:
  768         case EFX_MON_STAT_CONTROLLER_VPTAT_EXTADC:
  769         case EFX_MON_STAT_CONTROLLER_INTERNAL_TEMP_EXTADC:
  770         case EFX_MON_STAT_AMBIENT_TEMP:
  771         case EFX_MON_STAT_AIRFLOW:
  772         case EFX_MON_STAT_VDD08D_VSS08D_CSR:
  773         case EFX_MON_STAT_VDD08D_VSS08D_CSR_EXTADC:
  774         case EFX_MON_STAT_HOTPOINT_TEMP:
  775         case EFX_MON_STAT_MUM_VCC:
  776         case EFX_MON_STAT_IN_0V9_A:
  777         case EFX_MON_STAT_IN_I0V9_A:
  778         case EFX_MON_STAT_VREG_0V9_A_TEMP:
  779         case EFX_MON_STAT_IN_0V9_B:
  780         case EFX_MON_STAT_IN_I0V9_B:
  781         case EFX_MON_STAT_VREG_0V9_B_TEMP:
  782         case EFX_MON_STAT_CCOM_AVREG_1V2_SUPPLY:
  783         case EFX_MON_STAT_CCOM_AVREG_1V2_SUPPLY_EXTADC:
  784         case EFX_MON_STAT_CCOM_AVREG_1V8_SUPPLY:
  785         case EFX_MON_STAT_CCOM_AVREG_1V8_SUPPLY_EXTADC:
  786         case EFX_MON_STAT_CONTROLLER_MASTER_VPTAT:
  787         case EFX_MON_STAT_CONTROLLER_MASTER_INTERNAL_TEMP:
  788         case EFX_MON_STAT_CONTROLLER_MASTER_VPTAT_EXTADC:
  789         case EFX_MON_STAT_CONTROLLER_MASTER_INTERNAL_TEMP_EXTADC:
  790         case EFX_MON_STAT_CONTROLLER_SLAVE_VPTAT:
  791         case EFX_MON_STAT_CONTROLLER_SLAVE_INTERNAL_TEMP:
  792         case EFX_MON_STAT_CONTROLLER_SLAVE_VPTAT_EXTADC:
  793         case EFX_MON_STAT_CONTROLLER_SLAVE_INTERNAL_TEMP_EXTADC:
  794         case EFX_MON_STAT_SODIMM_VOUT:
  795         case EFX_MON_STAT_SODIMM_0_TEMP:
  796         case EFX_MON_STAT_SODIMM_1_TEMP:
  797         case EFX_MON_STAT_PHY0_VCC:
  798         case EFX_MON_STAT_PHY1_VCC:
  799         case EFX_MON_STAT_CONTROLLER_TDIODE_TEMP:
  800         case EFX_MON_STAT_BOARD_FRONT_TEMP:
  801         case EFX_MON_STAT_BOARD_BACK_TEMP:
  802         case EFX_MON_STAT_IN_I1V8:
  803         case EFX_MON_STAT_IN_I2V5:
  804         case EFX_MON_STAT_IN_I3V3:
  805         case EFX_MON_STAT_IN_I12V0:
  806         case EFX_MON_STAT_IN_1V3:
  807         case EFX_MON_STAT_IN_I1V3:
  808                 *maskp = EFX_MON_STAT_PORTMAP_ALL;
  809                 break;
  810         case EFX_MON_STAT_PHY0_TEMP:
  811         case EFX_MON_STAT_PHY0_COOLING:
  812         case EFX_MON_STAT_PHY_POWER_PORT0:
  813                 *maskp = EFX_MON_STAT_PORTMAP_PORT0;
  814                 break;
  815         default:
  816                 *maskp = EFX_MON_STAT_PORTMAP_UNKNOWN;
  817                 break;
  818         };
  819 
  820         if (*maskp == EFX_MON_STAT_PORTMAP_UNKNOWN)
  821                 goto fail1;
  822 
  823         return (B_TRUE);
  824 
  825 fail1:
  826         EFSYS_PROBE1(fail1, boolean_t, B_TRUE);
  827         return (B_FALSE);
  828 };
  829 
  830 /* END MKCONFIG GENERATED MonitorStatisticPortsBlock */
  831 
  832         __checkReturn                   efx_rc_t
  833 efx_mon_stats_update(
  834         __in                            efx_nic_t *enp,
  835         __in                            efsys_mem_t *esmp,
  836         __inout_ecount(EFX_MON_NSTATS)  efx_mon_stat_value_t *values)
  837 {
  838         efx_mon_t *emp = &(enp->en_mon);
  839         const efx_mon_ops_t *emop = emp->em_emop;
  840 
  841         EFSYS_ASSERT3U(enp->en_magic, ==, EFX_NIC_MAGIC);
  842         EFSYS_ASSERT3U(enp->en_mod_flags, &, EFX_MOD_MON);
  843 
  844         return (emop->emo_stats_update(enp, esmp, values));
  845 }
  846 
  847         __checkReturn                   efx_rc_t
  848 efx_mon_limits_update(
  849         __in                            efx_nic_t *enp,
  850         __inout_ecount(EFX_MON_NSTATS)  efx_mon_stat_limits_t *values)
  851 {
  852         efx_mon_t *emp = &(enp->en_mon);
  853         const efx_mon_ops_t *emop = emp->em_emop;
  854 
  855         EFSYS_ASSERT3U(enp->en_magic, ==, EFX_NIC_MAGIC);
  856         EFSYS_ASSERT3U(enp->en_mod_flags, &, EFX_MOD_MON);
  857 
  858         return (emop->emo_limits_update(enp, values));
  859 }
  860 
  861 #endif  /* EFSYS_OPT_MON_STATS */
  862 
  863                 void
  864 efx_mon_fini(
  865         __in    efx_nic_t *enp)
  866 {
  867         efx_mon_t *emp = &(enp->en_mon);
  868 
  869         EFSYS_ASSERT3U(enp->en_magic, ==, EFX_NIC_MAGIC);
  870         EFSYS_ASSERT3U(enp->en_mod_flags, &, EFX_MOD_PROBE);
  871         EFSYS_ASSERT3U(enp->en_mod_flags, &, EFX_MOD_MON);
  872 
  873         emp->em_emop = NULL;
  874 
  875         emp->em_type = EFX_MON_INVALID;
  876 
  877         enp->en_mod_flags &= ~EFX_MOD_MON;
  878 }

Cache object: 9fd5397f4ad2040e7773b798495ca337


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.