From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr0-f196.google.com (mail-wr0-f196.google.com [209.85.128.196]) by dpdk.org (Postfix) with ESMTP id 315A01B270 for ; Mon, 30 Oct 2017 16:38:19 +0100 (CET) Received: by mail-wr0-f196.google.com with SMTP id p96so13020370wrb.7 for ; Mon, 30 Oct 2017 08:38:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=N09ZYRfORpnjfuVY70AjqUnsIs3tELaspivJZUQ/5Eg=; b=Md//vjjSISVcVKZ9jaD0bCAyXpvX37lj1qrb6FAid8Cugw+z1Dtu5zCKGsqZG3Q9JG jthMIGsxjfIQNB/VNGFC/1rIXLEzcHCJNFhKJlvY1g8OTtMMNYWZ5QJ/e0YKC/Xuhci9 zOTyxj4Zvukl7cixKM8Wyp2QiC1n0V0ArF00VIBcRmZu6CMBd644UKmgVEb6RdI/wNp4 /FFh+LGh3tswh2IS63YYY+bC/6gGLnC4XHCX6rKn6cGsYWGd2PUQBmO9fXRAIkzXcx9X q5sSCFZeLpUrJ7J/VdW7Hc0rfYxZ/1o3fROd+aRtEEjYwSeq1hEtj44YFjIQEgzO5Ung 2eBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=N09ZYRfORpnjfuVY70AjqUnsIs3tELaspivJZUQ/5Eg=; b=OlxItDY2FcBwO41FzANtVERmbUMh9V2BhtNvxbjBeBvk47z5z0PixqPZuaityxJ20v wjStPtVOKOPNC6mn7sqAzJKkuxPaDwuwxFuH2yL4hqfLotU1sbo6Pa6n9CuuXAP1lRGS 7w3+Uo0s3u445e5krO//R1HR9rK4AAyV16d8YHLuOQtBeuZzO6SEMgRveim+h+AtBipV HBTqt/LNl5JtwHsj+pGbjBuHDkCXZUlXaZ7PQwlVBSGui2d0Wsk4cmF41VlQwjapoI/E VYaErDysYy0dCp6lsVzY57efYLPoFJ8O8nmHejs9YNVi7WhNfX8HjGAiA1xZo3ieqPt2 OZTA== X-Gm-Message-State: AMCzsaVlspKc5d2D8lVZZoUPJ+m2Pi8oZXnZai2OjKbr3XwPj+8WNeUL J0VSScSftugq9giZ/HC0VeQ= X-Google-Smtp-Source: ABhQp+S4EP4sOHgRBhZyw0BsIqUcwx/f4ZmPtR7NXd9EG4/eANyYpyV0hx7xjiDXpXfzEfIvmxwY/g== X-Received: by 10.223.190.141 with SMTP id i13mr7999654wrh.91.1509377898926; Mon, 30 Oct 2017 08:38:18 -0700 (PDT) Received: from localhost ([2a00:23c5:bef3:400:4a51:b7ff:fe0b:4749]) by smtp.gmail.com with ESMTPSA id v5sm10579295wrf.29.2017.10.30.08.38.18 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 30 Oct 2017 08:38:18 -0700 (PDT) From: luca.boccassi@gmail.com To: Qi Zhang Cc: Bruce Richardson , dpdk stable Date: Mon, 30 Oct 2017 15:35:02 +0000 Message-Id: <20171030153511.13322-59-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171030153511.13322-1-luca.boccassi@gmail.com> References: <20171030153511.13322-1-luca.boccassi@gmail.com> Subject: [dpdk-stable] patch 'net/i40e: fix mbuf free in vector Tx' has been queued to LTS release 16.11.4 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: Mon, 30 Oct 2017 15:38:19 -0000 Hi, FYI, your patch has been queued to LTS release 16.11.4 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/01/17. So please shout if anyone has objections. Thanks. Kind regards, Luca Boccassi --- >>From be8c2c6d405f78a33925eea52ce33c3c95eda4e1 Mon Sep 17 00:00:00 2001 From: Qi Zhang Date: Tue, 10 Oct 2017 09:22:05 -0400 Subject: [PATCH] net/i40e: fix mbuf free in vector Tx [ upstream commit 24853544c84c152dabcd013b9ee723a059e0d5dd ] vPMD tx does not set sw_ring's mbuf to NULL after free. Therefore, in cases where the vector transmit function is in use, we must use the appropriate index and threshold values for the queue to only free the unreleased mbufs Fixes: b4669bb95038 ("i40e: add vector Tx") Signed-off-by: Qi Zhang Acked-by: Bruce Richardson --- drivers/net/i40e/i40e_rxtx.c | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/drivers/net/i40e/i40e_rxtx.c b/drivers/net/i40e/i40e_rxtx.c index d1dd434ca..86546ca8e 100644 --- a/drivers/net/i40e/i40e_rxtx.c +++ b/drivers/net/i40e/i40e_rxtx.c @@ -2159,18 +2159,40 @@ i40e_reset_rx_queue(struct i40e_rx_queue *rxq) void i40e_tx_queue_release_mbufs(struct i40e_tx_queue *txq) { + struct rte_eth_dev *dev; uint16_t i; + dev = &rte_eth_devices[txq->port_id]; + if (!txq || !txq->sw_ring) { PMD_DRV_LOG(DEBUG, "Pointer to rxq or sw_ring is NULL"); return; } - for (i = 0; i < txq->nb_tx_desc; i++) { - if (txq->sw_ring[i].mbuf) { + /** + * vPMD tx will not set sw_ring's mbuf to NULL after free, + * so need to free remains more carefully. + */ + if (dev->tx_pkt_burst == i40e_xmit_pkts_vec) { + i = txq->tx_next_dd - txq->tx_rs_thresh + 1; + if (txq->tx_tail < i) { + for (; i < txq->nb_tx_desc; i++) { + rte_pktmbuf_free_seg(txq->sw_ring[i].mbuf); + txq->sw_ring[i].mbuf = NULL; + } + i = 0; + } + for (; i < txq->tx_tail; i++) { rte_pktmbuf_free_seg(txq->sw_ring[i].mbuf); txq->sw_ring[i].mbuf = NULL; } + } else { + for (i = 0; i < txq->nb_tx_desc; i++) { + if (txq->sw_ring[i].mbuf) { + rte_pktmbuf_free_seg(txq->sw_ring[i].mbuf); + txq->sw_ring[i].mbuf = NULL; + } + } } } -- 2.11.0