X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;ds=inline;f=drivers%2Fnet%2Fsfc%2Fsfc.c;h=03ecec282c825c28bacc86efe7a4dbb1b9dcadd9;hb=f74df2c57e7bad1eab47798af355f69c97dce18d;hp=648ad8c58892ef2b4e92d5df8583e8ed277b28db;hpb=fec33d5bb3ebc05b7b0c28bea7944a1e0c4d6f00;p=dpdk.git diff --git a/drivers/net/sfc/sfc.c b/drivers/net/sfc/sfc.c index 648ad8c588..03ecec282c 100644 --- a/drivers/net/sfc/sfc.c +++ b/drivers/net/sfc/sfc.c @@ -203,6 +203,13 @@ sfc_estimate_resource_limits(struct sfc_adapter *sa) limits.edl_max_txq_count = MIN(encp->enc_txq_limit, limits.edl_max_evq_count - 1 - limits.edl_max_rxq_count); + + if (sa->tso) + limits.edl_max_txq_count = + MIN(limits.edl_max_txq_count, + encp->enc_fw_assisted_tso_v2_n_contexts / + encp->enc_hw_pf_count); + SFC_ASSERT(limits.edl_max_txq_count >= limits.edl_min_rxq_count); /* Configure the minimum required resources needed for the @@ -601,12 +608,17 @@ sfc_attach(struct sfc_adapter *sa) if (rc != 0) goto fail_nic_reset; + encp = efx_nic_cfg_get(sa->nic); + + sa->tso = encp->enc_fw_assisted_tso_v2_enabled; + if (!sa->tso) + sfc_warn(sa, "TSO support isn't available on this adapter"); + sfc_log_init(sa, "estimate resource limits"); rc = sfc_estimate_resource_limits(sa); if (rc != 0) goto fail_estimate_rsrc_limits; - encp = efx_nic_cfg_get(sa->nic); sa->txq_max_entries = encp->enc_txq_max_ndescs; SFC_ASSERT(rte_is_power_of_2(sa->txq_max_entries)); @@ -621,14 +633,6 @@ sfc_attach(struct sfc_adapter *sa) if (rc != 0) goto fail_set_rss_defaults; -#ifdef RTE_LIBRTE_SFC_EFX_TSO - sa->tso = efx_nic_cfg_get(sa->nic)->enc_fw_assisted_tso_v2_enabled; - if (!sa->tso) - sfc_warn(sa, "TSO support isn't available on this adapter"); -#else /* !RTE_LIBRTE_SFC_EFX_TSO */ - sa->tso = B_FALSE; -#endif /* RTE_LIBRTE_SFC_EFX_TSO */ - sfc_log_init(sa, "fini nic"); efx_nic_fini(enp);