From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from out4-smtp.messagingengine.com (out4-smtp.messagingengine.com [66.111.4.28]) by dpdk.org (Postfix) with ESMTP id 1585623B for ; Tue, 21 Nov 2017 14:24:21 +0100 (CET) Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id BF36A20A41; Tue, 21 Nov 2017 08:24:20 -0500 (EST) Received: from frontend2 ([10.202.2.161]) by compute1.internal (MEProxy); Tue, 21 Nov 2017 08:24:20 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fridaylinux.org; h=cc:date:from:in-reply-to:message-id:references:subject:to :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; bh=NnbmF2BawY6hRHUAO /O4EkU4fivA9d+staOT/MDLEGs=; b=cmPdILLEzCOjdSyxN7/DPlh8eOHd2y3u2 SY/kURO3TX/6OLtWssPw8gkIfLuaTALjlVlctvy61xnm3PfNFPvahX11t6cG1mxa Wv0e8T1gkvS0l1oC/n2h4x4/4ddTSbD1ihtjU8fwqui8Bg0oTv1Wy6yiHCF+6PLI pWfUkqInkbAizqPWVlaVP8JjAAa0QX/aw1wbC5yUCBL9Dj5KRzF/LEKYbScXMFim ZCS2UsuWJPM8GtMYLeMvMzlelj6IR5XO4071NXYIYnxllH1bmHfsABwUTLLLlM5a B2IgSoKz3HLUWKcj+9MEC8k2FEO9lclvTH5CC/6GVKbx1ERHQr0Tw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:date:from:in-reply-to:message-id :references:subject:to:x-me-sender:x-me-sender:x-sasl-enc; s= fm1; bh=NnbmF2BawY6hRHUAO/O4EkU4fivA9d+staOT/MDLEGs=; b=T7GWP6Xe Eu0JX+dPG/eFutauHH7gJTZBsG7ZIla2157ETGloPX9p73xFS27hPYszTq7FxA9v OrGgoeWwJ74z209W0KL8ZeqiyEyZTbKi6Y1gDWDNDAgwityQVw7mBFX3C/vfZiRx ziFmuao47WqZdqgfq+lAuKOxQi+Zp3AUNSOLfW0bg9HltZyw2wN63qnDdqncQD5S 7nk9bzED1haD/KGRUpuTRjm7mZtLWtfx7mE3STEwEJRn6pfPo38IrxwY144Cr2zJ QyDy5tzQQ2d0RwYEeYDq5BoQ+HOjg1rNPSiZZHU3kPvKfXt8LnyKrX2vGeu3BHYj hxosSmYkRaoKow== X-ME-Sender: Received: from localhost.localdomain (unknown [180.158.62.0]) by mail.messagingengine.com (Postfix) with ESMTPA id CEF3824810; Tue, 21 Nov 2017 08:24:18 -0500 (EST) From: Yuanhan Liu To: Hemant Agrawal Cc: dpdk stable Date: Tue, 21 Nov 2017 21:16:59 +0800 Message-Id: <1511270333-31002-77-git-send-email-yliu@fridaylinux.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1511270333-31002-1-git-send-email-yliu@fridaylinux.org> References: <1511270333-31002-1-git-send-email-yliu@fridaylinux.org> Subject: [dpdk-stable] patch 'net/dpaa2: fix the Tx handling of non HW pool bufs' has been queued to stable release 17.08.1 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: , X-List-Received-Date: Tue, 21 Nov 2017 13:24:21 -0000 Hi, FYI, your patch has been queued to stable release 17.08.1 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 11/24/17. So please shout if anyone has objections. Thanks. --yliu --- >>From 3c9a34563dbbc5b1fb908bbe453c06a1605f56cc Mon Sep 17 00:00:00 2001 From: Hemant Agrawal Date: Sat, 16 Sep 2017 16:22:36 +0530 Subject: [PATCH] net/dpaa2: fix the Tx handling of non HW pool bufs [ upstream commit 790ec226e9378c38b955c7cf1d2a57ef32568efd ] The current code is sending 8 packet in each internal loop. In some of the conditions, mbuf is being allocated or freed. In case of error, the code is returning without taking care of such buffer. It is better to send already prepared buffer and err for the current failure only. Fixes: 9e5f3e6d3658 ("net/dpaa2: handle non-hardware backed buffer pool") Signed-off-by: Hemant Agrawal --- drivers/net/dpaa2/dpaa2_rxtx.c | 41 ++++++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/drivers/net/dpaa2/dpaa2_rxtx.c b/drivers/net/dpaa2/dpaa2_rxtx.c index 3c057a3..b4cde2c 100644 --- a/drivers/net/dpaa2/dpaa2_rxtx.c +++ b/drivers/net/dpaa2/dpaa2_rxtx.c @@ -350,7 +350,6 @@ eth_copy_mbuf_to_fd(struct rte_mbuf *mbuf, if (rte_dpaa2_mbuf_alloc_bulk( rte_dpaa2_bpid_info[bpid].bp_list->mp, &mb, 1)) { PMD_TX_LOG(WARNING, "Unable to allocated DPAA2 buffer"); - rte_pktmbuf_free(mbuf); return -1; } m = (struct rte_mbuf *)mb; @@ -382,8 +381,6 @@ eth_copy_mbuf_to_fd(struct rte_mbuf *mbuf, rte_dpaa2_bpid_info[DPAA2_GET_FD_BPID(fd)].meta_data_size, DPAA2_GET_FD_OFFSET(fd), DPAA2_GET_FD_LEN(fd)); - /*free the original packet */ - rte_pktmbuf_free(mbuf); return 0; } @@ -580,39 +577,35 @@ dpaa2_dev_tx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts) mp = mi->pool; } /* Not a hw_pkt pool allocated frame */ - if (!mp) { + if (unlikely(!mp || !priv->bp_list)) { PMD_TX_LOG(ERR, "err: no bpool attached"); - goto skip_tx; + goto send_n_return; } + if (mp->ops_index != priv->bp_list->dpaa2_ops_index) { PMD_TX_LOG(ERR, "non hw offload bufffer "); /* alloc should be from the default buffer pool * attached to this interface */ - if (priv->bp_list) { - bpid = priv->bp_list->buf_pool.bpid; - } else { - PMD_TX_LOG(ERR, - "err: no bpool attached"); - num_tx = 0; - goto skip_tx; - } + bpid = priv->bp_list->buf_pool.bpid; + if (unlikely((*bufs)->nb_segs > 1)) { PMD_TX_LOG(ERR, "S/G support not added" " for non hw offload buffer"); - goto skip_tx; + goto send_n_return; } if (eth_copy_mbuf_to_fd(*bufs, &fd_arr[loop], bpid)) { - bufs++; - continue; + goto send_n_return; } + /* free the original packet */ + rte_pktmbuf_free(*bufs); } else { bpid = mempool_to_bpid(mp); if (unlikely((*bufs)->nb_segs > 1)) { if (eth_mbuf_to_sg_fd(*bufs, &fd_arr[loop], bpid)) - goto skip_tx; + goto send_n_return; } else { eth_mbuf_to_fd(*bufs, &fd_arr[loop], bpid); @@ -630,6 +623,20 @@ dpaa2_dev_tx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts) dpaa2_q->tx_pkts += frames_to_send; nb_pkts -= frames_to_send; } + return num_tx; + +send_n_return: + /* send any already prepared fd */ + if (loop) { + unsigned int i = 0; + + while (i < loop) { + i += qbman_swp_enqueue_multiple(swp, &eqdesc, + &fd_arr[i], loop - i); + } + num_tx += loop; + dpaa2_q->tx_pkts += loop; + } skip_tx: return num_tx; } -- 2.7.4