X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fsfc%2Fsfc.c;h=03ecec282c825c28bacc86efe7a4dbb1b9dcadd9;hb=f8687bd0b2fc62eb9f6397bbdc75dd03ad4e0048;hp=457a53eebcef550b9d00be27af61b9e7cf2684e6;hpb=2a5a433ba5f40534c6e05eca3957ac85c79ef758;p=dpdk.git diff --git a/drivers/net/sfc/sfc.c b/drivers/net/sfc/sfc.c index 457a53eebc..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,10 +633,6 @@ sfc_attach(struct sfc_adapter *sa) if (rc != 0) goto fail_set_rss_defaults; - 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"); - sfc_log_init(sa, "fini nic"); efx_nic_fini(enp);