From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pg0-f66.google.com (mail-pg0-f66.google.com [74.125.83.66]) by dpdk.org (Postfix) with ESMTP id 60C10276C for ; Sat, 15 Jul 2017 13:17:58 +0200 (CEST) Received: by mail-pg0-f66.google.com with SMTP id j186so13547762pge.1 for ; Sat, 15 Jul 2017 04:17:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fridaylinux-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=JHJqMDEFPmbEYPu0f9DtA/xZVrvDjZaG1A/4+P9p9/M=; b=ZDpo0DTej01ZwQsug1ZJxFNnXb7W31aP0GCuZdzKN5rV6I20fyXJAGtb0KBUejRR6t uoDTU5uyBT7XHq+TnUQE0PETiBHurNBTbsU0Hl9NkWuWJN0U07oNyUdwUS6aYn1jJogP 1Vp/OXk9IkKE5rTgxKkk/lebbsbutCeJOG8+ek54d5nnJ2doPijI6hcah+q+1o8u0pFJ ploG5BLUxjNk7vROwKphvoABq9K3cjtRgTZ9BFRAKhSj4ussKRJzZS27Iuz9+u1jq9uC DcMoY+Fo6mN0rmA6HhwRpya/UyDPq4nP+MjdN8TdXNIwkGY9c+ZSa7r8w52MP50fP9CE 8RNg== 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=JHJqMDEFPmbEYPu0f9DtA/xZVrvDjZaG1A/4+P9p9/M=; b=WFROuzXdw9IsigrQ5WXRP/GQ364cTSNO/U3dQV3ejTlK34ElQqXVpYvsEzieNYL7oP fFsKD7pXKBgk/EvnoSoVdYNMj0e3Kfw3cu8OHhU47MWvQnKZ/sL8/4f/7RsSKRblvkvJ o3+shVbhq4pgB+z4cKrVXTbGFFu+mR8qamO4F8L+3WI6GgcJLYVyVVtuk7lbeRHTaBX2 ndkVhoob+TDmnSi0+DkChVjULpCgO71sW0HSoH7wNMKUzw6tO8WWuxzeBx4gk4OkTRfM NU2BO5hyp435Z5L6znx7ZMg5DEKXcMSAkiY0hlS7veLYUASadCnm3l/gCu5ZyPbQf0jF BPtQ== X-Gm-Message-State: AIVw11197krFJ+6jYj9CYi6/mX8oPMBLjeUvowBb584tGJVf9HJCN9nN c8Xjp7voL5ZE6iPg4Y+SmA== X-Received: by 10.99.44.206 with SMTP id s197mr19439781pgs.116.1500117477665; Sat, 15 Jul 2017 04:17:57 -0700 (PDT) Received: from localhost.localdomain ([45.63.61.64]) by smtp.gmail.com with ESMTPSA id k194sm19000874pgc.31.2017.07.15.04.17.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sat, 15 Jul 2017 04:17:56 -0700 (PDT) From: Yuanhan Liu To: Michal Krawczyk Cc: dpdk stable Date: Sat, 15 Jul 2017 19:17:08 +0800 Message-Id: <1500117433-28932-2-git-send-email-yliu@fridaylinux.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1500117433-28932-1-git-send-email-yliu@fridaylinux.org> References: <1500117433-28932-1-git-send-email-yliu@fridaylinux.org> Subject: [dpdk-stable] patch 'net/ena: fix cleanup of the Tx bufs' has been queued to LTS release 16.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: , X-List-Received-Date: Sat, 15 Jul 2017 11:17:58 -0000 Hi, FYI, your patch has been queued to LTS release 16.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 07/19/17. So please shout if anyone has objections. Thanks. --yliu --- >>From 577a2e5599698a9d63721b5eacfbd73b83618155 Mon Sep 17 00:00:00 2001 From: Michal Krawczyk Date: Tue, 4 Jul 2017 15:51:52 +0200 Subject: [PATCH] net/ena: fix cleanup of the Tx bufs [ upstream commit 207a514ce516f8ab3c1ad2b0f930f045b90b773c ] After cleanup of the mbuf on Tx path, queue was still pointing to this mbuf and upon cleanup of the Tx buffers, it was being freed second time. Moreover, to make sure that upon interrupt all mbufs will be freed, whole ring is being cleaned up instead of part of it - originally only range between head and tail was being cleaned up. Fixes: 1173fca25af9 ("ena: add polling-mode driver") Signed-off-by: Michal Krawczyk --- drivers/net/ena/ena_ethdev.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c index 1fc3654..6efe0c3 100644 --- a/drivers/net/ena/ena_ethdev.c +++ b/drivers/net/ena/ena_ethdev.c @@ -677,11 +677,10 @@ static void ena_rx_queue_release_bufs(struct ena_ring *ring) static void ena_tx_queue_release_bufs(struct ena_ring *ring) { - unsigned int ring_mask = ring->ring_size - 1; + unsigned int i; - while (ring->next_to_clean != ring->next_to_use) { - struct ena_tx_buffer *tx_buf = - &ring->tx_buffer_info[ring->next_to_clean & ring_mask]; + for (i = 0; i < ring->ring_size; ++i) { + struct ena_tx_buffer *tx_buf = &ring->tx_buffer_info[i]; if (tx_buf->mbuf) rte_pktmbuf_free(tx_buf->mbuf); @@ -1683,6 +1682,7 @@ static uint16_t eth_ena_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, /* Free whole mbuf chain */ mbuf = tx_info->mbuf; rte_pktmbuf_free(mbuf); + tx_info->mbuf = NULL; /* Put back descriptor to the ring for reuse */ tx_ring->empty_tx_reqs[next_to_clean & ring_mask] = req_id; -- 2.7.4