From patchwork Thu Jan 19 10:46:03 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 19776 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 7EA69100F; Thu, 19 Jan 2017 11:46:31 +0100 (CET) Received: from nbfkord-smmo01.seg.att.com (nbfkord-smmo01.seg.att.com [209.65.160.76]) by dpdk.org (Postfix) with ESMTP id 355E8DE5 for ; Thu, 19 Jan 2017 11:46:29 +0100 (CET) Received: from unknown [12.187.104.26] (EHLO webmail.solarflare.com) by nbfkord-smmo01.seg.att.com(mxl_mta-7.2.4-7) with ESMTP id 50990885.2b394c4b9940.131115.00-2476.291517.nbfkord-smmo01.seg.att.com (envelope-from ); Thu, 19 Jan 2017 10:46:29 +0000 (UTC) X-MXL-Hash: 5880990504d9981c-970c37a236a9c4584d151a9a65362e5681c4d3ed Received: from unknown [12.187.104.26] (EHLO webmail.solarflare.com) by nbfkord-smmo01.seg.att.com(mxl_mta-7.2.4-7) over TLS secured channel with ESMTP id ff890885.0.131112.00-2395.291513.nbfkord-smmo01.seg.att.com (envelope-from ); Thu, 19 Jan 2017 10:46:25 +0000 (UTC) X-MXL-Hash: 5880990178cd24be-87540b3b51e6a6b381e42dd9a366f6a72a1fb131 Received: from ocex03.SolarFlarecom.com (10.20.40.36) by ocex03.SolarFlarecom.com (10.20.40.36) with Microsoft SMTP Server (TLS) id 15.0.1044.25; Thu, 19 Jan 2017 02:46:21 -0800 Received: from opal.uk.solarflarecom.com (10.17.10.1) by ocex03.SolarFlarecom.com (10.20.40.36) with Microsoft SMTP Server (TLS) id 15.0.1044.25 via Frontend Transport; Thu, 19 Jan 2017 02:46:21 -0800 Received: from uklogin.uk.solarflarecom.com (uklogin.uk.solarflarecom.com [10.17.10.10]) by opal.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id v0JAkK4Z031824; Thu, 19 Jan 2017 10:46:20 GMT Received: from uklogin.uk.solarflarecom.com (localhost.localdomain [127.0.0.1]) by uklogin.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id v0JAkJZe013152; Thu, 19 Jan 2017 10:46:19 GMT From: Andrew Rybchenko To: CC: Ivan Malov Date: Thu, 19 Jan 2017 10:46:03 +0000 Message-ID: <1484822763-13107-1-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.2.3 MIME-Version: 1.0 X-AnalysisOut: [v=2.1 cv=BNm12QkG c=1 sm=1 tr=0 a=8BlWFWvVlq5taO8ncb8nKg==] X-AnalysisOut: [:17 a=IgFoBzBjUZAA:10 a=pK7X0mNQAAAA:8 a=zRKbQ67AAAAA:8 a=] X-AnalysisOut: [KKROzhe1W7-XgEkb0lMA:9 a=5HA-qpC1VU4iIGLgRoNS:22 a=PA03WX8] X-AnalysisOut: [tBzeizutn5_OT:22] X-Spam: [F=0.3909771294; CM=0.500; S=0.390(2015072901)] X-MAIL-FROM: X-SOURCE-IP: [12.187.104.26] Subject: [dpdk-dev] [PATCH] net/sfc: fix TSO limits imposed to the number of Tx queues X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Ivan Malov The number of Tx queues requested by the user must not be overridden; instead, the limits imposed by TSO must be applied to the advertised maximum Fixes: fec33d5bb3eb ("net/sfc: support firmware-assisted TSO") Signed-off-by: Ivan Malov Signed-off-by: Andrew Rybchenko Reviewed-by: Andrew Lee Reviewed-by: Andy Moreton --- drivers/net/sfc/sfc.c | 26 +++++++++++++++++--------- drivers/net/sfc/sfc_tx.c | 5 ----- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/drivers/net/sfc/sfc.c b/drivers/net/sfc/sfc.c index 648ad8c..d35754c 100644 --- a/drivers/net/sfc/sfc.c +++ b/drivers/net/sfc/sfc.c @@ -203,6 +203,13 @@ 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,21 @@ if (rc != 0) goto fail_nic_reset; + encp = efx_nic_cfg_get(sa->nic); + +#ifdef RTE_LIBRTE_SFC_EFX_TSO + sa->tso = encp->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, "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 +637,6 @@ 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); diff --git a/drivers/net/sfc/sfc_tx.c b/drivers/net/sfc/sfc_tx.c index 3e64c0f..1292af3 100644 --- a/drivers/net/sfc/sfc_tx.c +++ b/drivers/net/sfc/sfc_tx.c @@ -312,11 +312,6 @@ sa->txq_count = sa->eth_dev->data->nb_tx_queues; - if (sa->tso) - sa->txq_count = MIN(sa->txq_count, - efx_nic_cfg_get(sa->nic)->enc_fw_assisted_tso_v2_n_contexts / - efx_nic_cfg_get(sa->nic)->enc_hw_pf_count); - sa->txq_info = rte_calloc_socket("sfc-txqs", sa->txq_count, sizeof(sa->txq_info[0]), 0, sa->socket_id);