X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fcommon%2Fsfc_efx%2Fbase%2Fefx_nic.c;h=465e2c7a36dfe8d79b3158f5ab95ce6c1dd9d93f;hb=e1fe2c33b27816674a29a9ba894d04a11e885e88;hp=267d010524562b70bd525f61ea6890f7e5c5a8dd;hpb=5e111ed87999b2df4084b4d9c95643c98df1ba48;p=dpdk.git diff --git a/drivers/common/sfc_efx/base/efx_nic.c b/drivers/common/sfc_efx/base/efx_nic.c index 267d010524..465e2c7a36 100644 --- a/drivers/common/sfc_efx/base/efx_nic.c +++ b/drivers/common/sfc_efx/base/efx_nic.c @@ -85,6 +85,20 @@ efx_family( } } + 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); } @@ -174,6 +188,27 @@ static const efx_nic_ops_t __efx_nic_medford2_ops = { #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( @@ -271,6 +306,19 @@ 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; @@ -304,6 +352,7 @@ efx_nic_probe( __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; @@ -337,6 +386,8 @@ efx_nic_probe( if ((rc = enop->eno_probe(enp)) != 0) goto fail1; + encp->enc_features = enp->en_features; + if ((rc = efx_phy_probe(enp)) != 0) goto fail2;