From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by dpdk.space (Postfix) with ESMTP id C6C8CA0471 for ; Fri, 21 Jun 2019 18:49:04 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id BEA721D581; Fri, 21 Jun 2019 18:49:04 +0200 (CEST) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by dpdk.org (Postfix) with ESMTP id 6B4B91D556 for ; Fri, 21 Jun 2019 18:49:03 +0200 (CEST) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id DC6F781F1B; Fri, 21 Jun 2019 16:49:02 +0000 (UTC) Received: from rh.redhat.com (ovpn-117-77.ams2.redhat.com [10.36.117.77]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0245B60BE0; Fri, 21 Jun 2019 16:49:01 +0000 (UTC) From: Kevin Traynor To: Sriharsha Basavapatna Cc: Ajit Khaparde , dpdk stable Date: Fri, 21 Jun 2019 17:45:57 +0100 Message-Id: <20190621164626.31219-13-ktraynor@redhat.com> In-Reply-To: <20190621164626.31219-1-ktraynor@redhat.com> References: <20190621164626.31219-1-ktraynor@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Fri, 21 Jun 2019 16:49:02 +0000 (UTC) Subject: [dpdk-stable] patch 'net/bnxt: optimize Tx batching' has been queued to LTS release 18.11.3 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" Hi, FYI, your patch has been queued to LTS release 18.11.3 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 06/26/19. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Queued patches are on a temporary branch at: https://github.com/kevintraynor/dpdk-stable-queue This queued commit can be viewed at: https://github.com/kevintraynor/dpdk-stable-queue/commit/1227407bc832de51b3c43f34035e809ab090ed67 Thanks. Kevin Traynor --- >From 1227407bc832de51b3c43f34035e809ab090ed67 Mon Sep 17 00:00:00 2001 From: Sriharsha Basavapatna Date: Wed, 15 May 2019 11:08:16 -0700 Subject: [PATCH] net/bnxt: optimize Tx batching [ upstream commit 220de9869bc3877bb493f6cccd96aabe98adeb6b ] This patch adds a few optimizations to Tx batching. Instead of specifying 'cmpl_next' to bnxt_start_xmit() as a hint to enable completion for a given packet, request for completion on the last successfully enqueued TxBD. This takes care of both success and error cases. It eliminates 'cmpl_next' arg and related per-packet condition checks around it. Fixes: 5735eb241947 ("net/bnxt: support Tx batching") Signed-off-by: Sriharsha Basavapatna Signed-off-by: Ajit Khaparde --- drivers/net/bnxt/bnxt_txr.c | 32 +++++++++----------------------- 1 file changed, 9 insertions(+), 23 deletions(-) diff --git a/drivers/net/bnxt/bnxt_txr.c b/drivers/net/bnxt/bnxt_txr.c index 52a926c02..82ab46501 100644 --- a/drivers/net/bnxt/bnxt_txr.c +++ b/drivers/net/bnxt/bnxt_txr.c @@ -122,5 +122,4 @@ static uint16_t bnxt_start_xmit(struct rte_mbuf *tx_pkt, struct bnxt_tx_queue *txq, uint16_t *coal_pkts, - uint16_t *cmpl_next, struct tx_bd_long **last_txbd) { @@ -185,10 +184,5 @@ static uint16_t bnxt_start_xmit(struct rte_mbuf *tx_pkt, txbd->flags_type = nr_bds << TX_BD_LONG_FLAGS_BD_CNT_SFT; txbd->flags_type |= TX_BD_SHORT_FLAGS_COAL_NOW; - if (!*cmpl_next) { - txbd->flags_type |= TX_BD_LONG_FLAGS_NO_CMPL; - } else { - *coal_pkts = 0; - *cmpl_next = false; - } + txbd->flags_type |= TX_BD_LONG_FLAGS_NO_CMPL; txbd->len = tx_pkt->data_len; if (tx_pkt->pkt_len >= 2014) @@ -415,8 +409,8 @@ uint16_t bnxt_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts) { - struct bnxt_tx_queue *txq = tx_queue; + int rc; uint16_t nb_tx_pkts = 0; uint16_t coal_pkts = 0; - uint16_t cmpl_next = 0; + struct bnxt_tx_queue *txq = tx_queue; struct tx_bd_long *last_txbd = NULL; @@ -432,25 +426,17 @@ uint16_t bnxt_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, /* Handle TX burst request */ for (nb_tx_pkts = 0; nb_tx_pkts < nb_pkts; nb_tx_pkts++) { - int rc; - - /* Request a completion on the last packet */ - cmpl_next |= (nb_pkts == nb_tx_pkts + 1); coal_pkts++; rc = bnxt_start_xmit(tx_pkts[nb_tx_pkts], txq, - &coal_pkts, &cmpl_next, &last_txbd); + &coal_pkts, &last_txbd); - if (unlikely(rc)) { - /* Request a completion on the last successfully - * enqueued packet - */ - if (last_txbd) - last_txbd->flags_type &= - ~TX_BD_LONG_FLAGS_NO_CMPL; + if (unlikely(rc)) break; - } } - if (nb_tx_pkts) + if (likely(nb_tx_pkts)) { + /* Request a completion on the last packet */ + last_txbd->flags_type &= ~TX_BD_LONG_FLAGS_NO_CMPL; B_TX_DB(txq->tx_ring->tx_doorbell, txq->tx_ring->tx_prod); + } return nb_tx_pkts; -- 2.20.1 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2019-06-21 17:22:12.427357556 +0100 +++ 0013-net-bnxt-optimize-Tx-batching.patch 2019-06-21 17:22:11.721519171 +0100 @@ -1 +1 @@ -From 220de9869bc3877bb493f6cccd96aabe98adeb6b Mon Sep 17 00:00:00 2001 +From 1227407bc832de51b3c43f34035e809ab090ed67 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit 220de9869bc3877bb493f6cccd96aabe98adeb6b ] + @@ -14 +15,0 @@ -Cc: stable@dpdk.org @@ -23 +24 @@ -index 186934136..b15778b39 100644 +index 52a926c02..82ab46501 100644 @@ -44 +45 @@ -@@ -416,8 +410,8 @@ uint16_t bnxt_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, +@@ -415,8 +409,8 @@ uint16_t bnxt_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, @@ -55 +56 @@ -@@ -433,25 +427,17 @@ uint16_t bnxt_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, +@@ -432,25 +426,17 @@ uint16_t bnxt_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,