| 128 | |
| 129 | |
| 130 | __checkReturn efx_rc_t |
| 131 | efx_ev_init( |
| 132 | __in efx_nic_t *enp) |
| 133 | { |
| 134 | const efx_ev_ops_t *eevop; |
| 135 | efx_rc_t rc; |
| 136 | |
| 137 | EFSYS_ASSERT3U(enp->en_magic, ==, EFX_NIC_MAGIC); |
| 138 | EFSYS_ASSERT3U(enp->en_mod_flags, &, EFX_MOD_INTR); |
| 139 | |
| 140 | if (enp->en_mod_flags & EFX_MOD_EV) { |
| 141 | rc = EINVAL; |
| 142 | goto fail1; |
| 143 | } |
| 144 | |
| 145 | switch (enp->en_family) { |
| 146 | #if EFSYS_OPT_SIENA |
| 147 | case EFX_FAMILY_SIENA: |
| 148 | eevop = &__efx_ev_siena_ops; |
| 149 | break; |
| 150 | #endif /* EFSYS_OPT_SIENA */ |
| 151 | |
| 152 | #if EFSYS_OPT_HUNTINGTON |
| 153 | case EFX_FAMILY_HUNTINGTON: |
| 154 | eevop = &__efx_ev_ef10_ops; |
| 155 | break; |
| 156 | #endif /* EFSYS_OPT_HUNTINGTON */ |
| 157 | |
| 158 | #if EFSYS_OPT_MEDFORD |
| 159 | case EFX_FAMILY_MEDFORD: |
| 160 | eevop = &__efx_ev_ef10_ops; |
| 161 | break; |
| 162 | #endif /* EFSYS_OPT_MEDFORD */ |
| 163 | |
| 164 | #if EFSYS_OPT_MEDFORD2 |
| 165 | case EFX_FAMILY_MEDFORD2: |
| 166 | eevop = &__efx_ev_ef10_ops; |
| 167 | break; |
| 168 | #endif /* EFSYS_OPT_MEDFORD2 */ |
| 169 | |
| 170 | #if EFSYS_OPT_RIVERHEAD |
| 171 | case EFX_FAMILY_RIVERHEAD: |
| 172 | eevop = &__efx_ev_rhead_ops; |
| 173 | break; |
| 174 | #endif /* EFSYS_OPT_RIVERHEAD */ |
| 175 | |
| 176 | default: |
| 177 | EFSYS_ASSERT(0); |
| 178 | rc = ENOTSUP; |
| 179 | goto fail1; |
| 180 | } |
| 181 | |
| 182 | EFSYS_ASSERT3U(enp->en_ev_qcount, ==, 0); |
| 183 | |
| 184 | if ((rc = eevop->eevo_init(enp)) != 0) |
| 185 | goto fail2; |
| 186 | |
| 187 | enp->en_eevop = eevop; |
no outgoing calls
no test coverage detected