}
}
+ if (venid == EFX_PCI_VENID_XILINX) {
+ switch (devid) {
+#if EFSYS_OPT_RIVERHEAD
+ case EFX_PCI_DEVID_RIVERHEAD:
+ case EFX_PCI_DEVID_RIVERHEAD_VF:
+ *efp = EFX_FAMILY_RIVERHEAD;
+ *membarp = EFX_MEM_BAR_RIVERHEAD;
+ return (0);
+#endif /* EFSYS_OPT_RIVERHEAD */
+ default:
+ break;
+ }
+ }
+
*efp = EFX_FAMILY_INVALID;
return (ENOTSUP);
}
#endif /* EFSYS_OPT_MEDFORD2 */
+#if EFSYS_OPT_RIVERHEAD
+
+static const efx_nic_ops_t __efx_nic_riverhead_ops = {
+ rhead_nic_probe, /* eno_probe */
+ rhead_board_cfg, /* eno_board_cfg */
+ rhead_nic_set_drv_limits, /* eno_set_drv_limits */
+ rhead_nic_reset, /* eno_reset */
+ rhead_nic_init, /* eno_init */
+ rhead_nic_get_vi_pool, /* eno_get_vi_pool */
+ rhead_nic_get_bar_region, /* eno_get_bar_region */
+ rhead_nic_hw_unavailable, /* eno_hw_unavailable */
+ rhead_nic_set_hw_unavailable, /* eno_set_hw_unavailable */
+#if EFSYS_OPT_DIAG
+ rhead_nic_register_test, /* eno_register_test */
+#endif /* EFSYS_OPT_DIAG */
+ rhead_nic_fini, /* eno_fini */
+ rhead_nic_unprobe, /* eno_unprobe */
+};
+
+#endif /* EFSYS_OPT_RIVERHEAD */
+
__checkReturn efx_rc_t
efx_nic_create(
break;
#endif /* EFSYS_OPT_MEDFORD2 */
+#if EFSYS_OPT_RIVERHEAD
+ case EFX_FAMILY_RIVERHEAD:
+ enp->en_enop = &__efx_nic_riverhead_ops;
+ enp->en_features =
+ EFX_FEATURE_IPV6 |
+ EFX_FEATURE_LINK_EVENTS |
+ EFX_FEATURE_PERIODIC_MAC_STATS |
+ EFX_FEATURE_MCDI |
+ EFX_FEATURE_MAC_HEADER_FILTERS |
+ EFX_FEATURE_MCDI_DMA;
+ break;
+#endif /* EFSYS_OPT_RIVERHEAD */
+
default:
rc = ENOTSUP;
goto fail2;
__in efx_nic_t *enp,
__in efx_fw_variant_t efv)
{
+ efx_nic_cfg_t *encp = &(enp->en_nic_cfg);
const efx_nic_ops_t *enop;
efx_rc_t rc;
if ((rc = enop->eno_probe(enp)) != 0)
goto fail1;
+ encp->enc_features = enp->en_features;
+
if ((rc = efx_phy_probe(enp)) != 0)
goto fail2;