From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lf0-f49.google.com (mail-lf0-f49.google.com [209.85.215.49]) by dpdk.org (Postfix) with ESMTP id 6184A1094 for ; Tue, 4 Jul 2017 15:53:28 +0200 (CEST) Received: by mail-lf0-f49.google.com with SMTP id h22so119279063lfk.3 for ; Tue, 04 Jul 2017 06:53:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=semihalf-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=R3KwmmX3k1F3PbK8a6ODx6YobzzWOCnsfelgL1nvbA8=; b=oxFDe9cPKDxfvB/wq4QZ1SzDVi3T8yODKlAT0nWEjlLO2OHbcFbXw+R39C+CH9eAOY 9D043I7ckhdvfAEVbVQHZvT8L4tQBFhMyo3h7Y0haLb/PlMgWRWT8Z2whpKMOG7xK95v aDztlXg5O5zEjqaV5Mto1iF1W+3W+1FU67FDkBreC0hwJ956sMvA1sGdESoHiucX1oU5 E1uPRo4CE1lv5cp/2/w5/PtzASW9klqpH+bC1bBCOJuc9g7IR82YfirJkR/ATpC3K6F0 l/4l1jzd6hpTLOrHpITrDEQeawBSc4bvYg15jE13mNQzp9d+dnOsMv8gvlGIQ/QPhFNr R9EQ== 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=R3KwmmX3k1F3PbK8a6ODx6YobzzWOCnsfelgL1nvbA8=; b=KR2GjKvj7v+wAhY8Ps/Ak9sj5g6ylZMcSmSENyn/7IZk1B1Y28lqf2o02uWBIlRge8 ziOou19VHPzuXnQfHtG9l6Jh6V7Drxt/s74NoobHZim+VQGlizWS6UUqap5DjP0IjLU0 cvAcjGDMymC1CmsSdvo1MjamsqoEIUws1X0QJ1BWQGzs8440xxoJAhC/xDWOaiOYzLzA StK82+QLn/0Rsca/YvKIAakL1s3BoQTHoRkXTnXbgtpLGXUDMwRdneOYKJE4Aj2NL4Mw 3mKrYvFZx7Gb9PsC8S1hytsFZ5RdSpdRgCVjhG1d4pIgIHG1S1dX+e0at46JBt9fQK0F Y2Tg== X-Gm-Message-State: AKS2vOy3Yj1c5/hl6FaQ/akRuK9W3Q61hEy4Aq8VTHqLyWgrLVJveRzO qaTHQFoMfKrNztl0 X-Received: by 10.25.225.153 with SMTP id l25mr13409186lfk.103.1499176408029; Tue, 04 Jul 2017 06:53:28 -0700 (PDT) Received: from localhost.localdomain (31-172-191-173.noc.fibertech.net.pl. [31.172.191.173]) by smtp.gmail.com with ESMTPSA id a78sm3967833ljb.66.2017.07.04.06.53.27 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 04 Jul 2017 06:53:27 -0700 (PDT) From: Michal Krawczyk To: mw@semihalf.com, gtzalik@amazon.com, matua@amazon.com, evgenys@amazon.com Cc: dev@dpdk.org, Michal Krawczyk Date: Tue, 4 Jul 2017 15:51:52 +0200 Message-Id: <20170704135153.24140-2-mk@semihalf.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170704135153.24140-1-mk@semihalf.com> References: <20170704135153.24140-1-mk@semihalf.com> Subject: [dpdk-dev] [PATCH 1/2] net/ena: fix cleanup of the Tx bufs 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: , X-List-Received-Date: Tue, 04 Jul 2017 13:53:29 -0000 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 6c2ee9e..80ce1f3 100644 --- a/drivers/net/ena/ena_ethdev.c +++ b/drivers/net/ena/ena_ethdev.c @@ -689,11 +689,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); @@ -1772,6 +1771,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