| 211 | |
| 212 | |
| 213 | __checkReturn efx_rc_t |
| 214 | efx_rx_init( |
| 215 | __inout efx_nic_t *enp) |
| 216 | { |
| 217 | const efx_rx_ops_t *erxop; |
| 218 | efx_rc_t rc; |
| 219 | |
| 220 | EFSYS_ASSERT3U(enp->en_magic, ==, EFX_NIC_MAGIC); |
| 221 | EFSYS_ASSERT3U(enp->en_mod_flags, &, EFX_MOD_NIC); |
| 222 | |
| 223 | if (!(enp->en_mod_flags & EFX_MOD_EV)) { |
| 224 | rc = EINVAL; |
| 225 | goto fail1; |
| 226 | } |
| 227 | |
| 228 | if (enp->en_mod_flags & EFX_MOD_RX) { |
| 229 | rc = EINVAL; |
| 230 | goto fail2; |
| 231 | } |
| 232 | |
| 233 | switch (enp->en_family) { |
| 234 | #if EFSYS_OPT_SIENA |
| 235 | case EFX_FAMILY_SIENA: |
| 236 | erxop = &__efx_rx_siena_ops; |
| 237 | break; |
| 238 | #endif /* EFSYS_OPT_SIENA */ |
| 239 | |
| 240 | #if EFSYS_OPT_HUNTINGTON |
| 241 | case EFX_FAMILY_HUNTINGTON: |
| 242 | erxop = &__efx_rx_ef10_ops; |
| 243 | break; |
| 244 | #endif /* EFSYS_OPT_HUNTINGTON */ |
| 245 | |
| 246 | #if EFSYS_OPT_MEDFORD |
| 247 | case EFX_FAMILY_MEDFORD: |
| 248 | erxop = &__efx_rx_ef10_ops; |
| 249 | break; |
| 250 | #endif /* EFSYS_OPT_MEDFORD */ |
| 251 | |
| 252 | #if EFSYS_OPT_MEDFORD2 |
| 253 | case EFX_FAMILY_MEDFORD2: |
| 254 | erxop = &__efx_rx_ef10_ops; |
| 255 | break; |
| 256 | #endif /* EFSYS_OPT_MEDFORD2 */ |
| 257 | |
| 258 | #if EFSYS_OPT_RIVERHEAD |
| 259 | case EFX_FAMILY_RIVERHEAD: |
| 260 | erxop = &__efx_rx_rhead_ops; |
| 261 | break; |
| 262 | #endif /* EFSYS_OPT_RIVERHEAD */ |
| 263 | |
| 264 | default: |
| 265 | EFSYS_ASSERT(0); |
| 266 | rc = ENOTSUP; |
| 267 | goto fail3; |
| 268 | } |
| 269 | |
| 270 | if ((rc = erxop->erxo_init(enp)) != 0) |
no outgoing calls
no test coverage detected