From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 15586A0350 for ; Mon, 28 Feb 2022 22:22:46 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0F38240140; Mon, 28 Feb 2022 22:22:46 +0100 (CET) Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) by mails.dpdk.org (Postfix) with ESMTP id B269E41181 for ; Mon, 28 Feb 2022 22:22:44 +0100 (CET) Received: by mail-wm1-f43.google.com with SMTP id p184-20020a1c29c1000000b0037f76d8b484so234226wmp.5 for ; Mon, 28 Feb 2022 13:22:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=OBAMQ/OjciqozhRpWGmykI5oe75oA+0mSLTA5YnXtBc=; b=jF1xEXnJzHUnTzsQln1Nh8GBMpZdD2FRJJXzrsAAxy/6n2PMzCORF8mncSRPcHPNI9 2WgesYvJ4X1VhBD3sXIFdO7UiqcB9oXzJe6lmq0E3OVeatfsxE8CU7u95IyIuiABbh1v 0kt5ZDTWoUOoK4whpAurXYugyHmmgAaCvl0N3iwteqd/i42QpxBzrwv3GBjKtRbQwBWd 2Oe1SJTeXMmQPDAcEtz6ANBcGeBZ8xjet+a4oN9dos3vSi4MnBxd9+1ZB1UDEj7beLj0 HNpliL4zQDYv38py/KIM978RKIwR2D6GpUYgPH9oS3zBDKDGITR+/AK1ABwXIXLCFJhm qSvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=OBAMQ/OjciqozhRpWGmykI5oe75oA+0mSLTA5YnXtBc=; b=yOCnv0StfaURnxP5ocrLYFru9wRG9g0jim9KcrmW4RONX9voGWOzXBy+ZCzJkMI823 A6iPa4iVwXtVMAPM2aMPYiZQhGFRN0b/y3C5TjEEpNJvGkiwq2kR5lugE1zf8AVDF9kf rWDzyH6om52GxffI7uaXObJVt1EqSx79CY/fAejL3PpxoMqOz92a/o1q3e3oA1E9exZu twdTbvFrN1U/bW+OJ3Ec+46QlaWzaAfiDo54d480E+de+024PlCHUj+mq5L+Rw5aMCbZ eQNBU9C3Xe3p88BP3O5AM4AGFqSV47CCUjqfTlgzxo75Y8TXz5odMvKjrW2uJCf28Bwp 8qRw== X-Gm-Message-State: AOAM531hhDNlC//Ufu47iDj7x8AcW2QmJP8FuIOrDXyY7bZz+X7VnmHG OuJ4AUxMkAkL3T1NRHYnvQU= X-Google-Smtp-Source: ABdhPJxRmeQ61shSvbq7ZH3EsmdZDy3/O6I6j9+DaFC4MEB+V/mE5hA6Sg9Ng9H/MhZE5TbAn81T6g== X-Received: by 2002:a05:600c:2201:b0:381:ee:419e with SMTP id z1-20020a05600c220100b0038100ee419emr14925255wml.55.1646083364439; Mon, 28 Feb 2022 13:22:44 -0800 (PST) Received: from localhost ([2a01:4b00:f41a:3600:360b:9754:2e3a:c344]) by smtp.gmail.com with ESMTPSA id 11-20020a05600c26cb00b0037ff53511f2sm488763wmv.31.2022.02.28.13.22.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Feb 2022 13:22:43 -0800 (PST) From: luca.boccassi@gmail.com To: Dawid Gorecki Cc: Michal Krawczyk , Shai Brandes , dpdk stable Subject: patch 'net/ena: fix reset reason being overwritten' has been queued to stable release 20.11.5 Date: Mon, 28 Feb 2022 21:20:33 +0000 Message-Id: <20220228212047.3341966-37-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220228212047.3341966-1-luca.boccassi@gmail.com> References: <20220218123931.1749595-122-luca.boccassi@gmail.com> <20220228212047.3341966-1-luca.boccassi@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 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 Hi, FYI, your patch has been queued to stable release 20.11.5 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 03/02/22. 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/bluca/dpdk-stable This queued commit can be viewed at: https://github.com/bluca/dpdk-stable/commit/5bb3ff7b47d357e9248e01f61bafba62d24a4661 Thanks. Luca Boccassi --- >From 5bb3ff7b47d357e9248e01f61bafba62d24a4661 Mon Sep 17 00:00:00 2001 From: Dawid Gorecki Date: Wed, 23 Feb 2022 13:19:38 +0100 Subject: [PATCH] net/ena: fix reset reason being overwritten [ upstream commit 2bae75eaa2e036020b726f61bc607a8f4142c3a8 ] When triggering the reset, no check was performed to see if the reset was already triggered. This could result in original reset reason being overwritten. Add ena_trigger_reset helper function, which checks if the reset was triggered and only sets the reset reason if the reset wasn't triggered yet. Replace all occurrences of manually setting the reset with ena_trigger_reset call. Fixes: 2081d5e2e92d ("net/ena: add reset routine") Signed-off-by: Dawid Gorecki Reviewed-by: Michal Krawczyk Reviewed-by: Shai Brandes --- drivers/net/ena/ena_ethdev.c | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c index 98efea960a..13154602a2 100644 --- a/drivers/net/ena/ena_ethdev.c +++ b/drivers/net/ena/ena_ethdev.c @@ -303,6 +303,15 @@ void ena_rss_key_fill(void *key, size_t size) rte_memcpy(key, default_key, size); } +static inline void ena_trigger_reset(struct ena_adapter *adapter, + enum ena_regs_reset_reason_types reason) +{ + if (likely(!adapter->trigger_reset)) { + adapter->reset_reason = reason; + adapter->trigger_reset = true; + } +} + static inline void ena_rx_mbuf_prepare(struct rte_mbuf *mbuf, struct ena_com_rx_ctx *ena_rx_ctx) { @@ -420,8 +429,7 @@ static int validate_tx_req_id(struct ena_ring *tx_ring, u16 req_id) /* Trigger device reset */ ++tx_ring->tx_stats.bad_req_id; - tx_ring->adapter->reset_reason = ENA_REGS_RESET_INV_TX_REQ_ID; - tx_ring->adapter->trigger_reset = true; + ena_trigger_reset(tx_ring->adapter, ENA_REGS_RESET_INV_TX_REQ_ID); return -EFAULT; } @@ -1630,8 +1638,7 @@ static void check_for_missing_keep_alive(struct ena_adapter *adapter) if (unlikely((rte_get_timer_cycles() - adapter->timestamp_wd) >= adapter->keep_alive_timeout)) { PMD_DRV_LOG(ERR, "Keep alive timeout\n"); - adapter->reset_reason = ENA_REGS_RESET_KEEP_ALIVE_TO; - adapter->trigger_reset = true; + ena_trigger_reset(adapter, ENA_REGS_RESET_KEEP_ALIVE_TO); ++adapter->dev_stats.wd_expired; } } @@ -1641,8 +1648,7 @@ static void check_for_admin_com_state(struct ena_adapter *adapter) { if (unlikely(!ena_com_get_admin_running_state(&adapter->ena_dev))) { PMD_DRV_LOG(ERR, "ENA admin queue is not in running state!\n"); - adapter->reset_reason = ENA_REGS_RESET_ADMIN_TO; - adapter->trigger_reset = true; + ena_trigger_reset(adapter, ENA_REGS_RESET_ADMIN_TO); } } @@ -2311,14 +2317,13 @@ static uint16_t eth_ena_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, PMD_DRV_LOG(ERR, "ena_com_rx_pkt error %d\n", rc); if (rc == ENA_COM_NO_SPACE) { ++rx_ring->rx_stats.bad_desc_num; - rx_ring->adapter->reset_reason = - ENA_REGS_RESET_TOO_MANY_RX_DESCS; + ena_trigger_reset(rx_ring->adapter, + ENA_REGS_RESET_TOO_MANY_RX_DESCS); } else { ++rx_ring->rx_stats.bad_req_id; - rx_ring->adapter->reset_reason = - ENA_REGS_RESET_INV_RX_REQ_ID; + ena_trigger_reset(rx_ring->adapter, + ENA_REGS_RESET_INV_RX_REQ_ID); } - rx_ring->adapter->trigger_reset = true; return 0; } @@ -2707,9 +2712,8 @@ static int ena_xmit_mbuf(struct ena_ring *tx_ring, struct rte_mbuf *mbuf) if (unlikely(rc)) { PMD_DRV_LOG(ERR, "Failed to prepare Tx buffers, rc: %d\n", rc); ++tx_ring->tx_stats.prepare_ctx_err; - tx_ring->adapter->reset_reason = - ENA_REGS_RESET_DRIVER_INVALID_STATE; - tx_ring->adapter->trigger_reset = true; + ena_trigger_reset(tx_ring->adapter, + ENA_REGS_RESET_DRIVER_INVALID_STATE); return rc; } -- 2.30.2 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2022-02-28 21:17:56.925000555 +0000 +++ 0037-net-ena-fix-reset-reason-being-overwritten.patch 2022-02-28 21:17:53.992932562 +0000 @@ -1 +1 @@ -From 2bae75eaa2e036020b726f61bc607a8f4142c3a8 Mon Sep 17 00:00:00 2001 +From 5bb3ff7b47d357e9248e01f61bafba62d24a4661 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit 2bae75eaa2e036020b726f61bc607a8f4142c3a8 ] + @@ -14 +15,0 @@ -Cc: stable@dpdk.org @@ -24 +25 @@ -index 11c9bb05e6..3cdeba9fad 100644 +index 98efea960a..13154602a2 100644 @@ -27,3 +28,3 @@ -@@ -539,6 +539,15 @@ ENA_PROXY_DESC(ena_com_indirect_table_get, ENA_MP_IND_TBL_GET, - }), - struct ena_com_dev *ena_dev, u32 *ind_tbl); +@@ -303,6 +303,15 @@ void ena_rss_key_fill(void *key, size_t size) + rte_memcpy(key, default_key, size); + } @@ -40,4 +41,4 @@ - static inline void ena_rx_mbuf_prepare(struct ena_ring *rx_ring, - struct rte_mbuf *mbuf, - struct ena_com_rx_ctx *ena_rx_ctx, -@@ -666,8 +675,7 @@ static int validate_tx_req_id(struct ena_ring *tx_ring, u16 req_id) + static inline void ena_rx_mbuf_prepare(struct rte_mbuf *mbuf, + struct ena_com_rx_ctx *ena_rx_ctx) + { +@@ -420,8 +429,7 @@ static int validate_tx_req_id(struct ena_ring *tx_ring, u16 req_id) @@ -53 +54 @@ -@@ -1783,8 +1791,7 @@ static void check_for_missing_keep_alive(struct ena_adapter *adapter) +@@ -1630,8 +1638,7 @@ static void check_for_missing_keep_alive(struct ena_adapter *adapter) @@ -63 +64 @@ -@@ -1794,8 +1801,7 @@ static void check_for_admin_com_state(struct ena_adapter *adapter) +@@ -1641,8 +1648,7 @@ static void check_for_admin_com_state(struct ena_adapter *adapter) @@ -66 +67 @@ - PMD_DRV_LOG(ERR, "ENA admin queue is not in running state\n"); + PMD_DRV_LOG(ERR, "ENA admin queue is not in running state!\n"); @@ -73,2 +74,2 @@ -@@ -2606,14 +2612,13 @@ static uint16_t eth_ena_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, - rc); +@@ -2311,14 +2317,13 @@ static uint16_t eth_ena_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, + PMD_DRV_LOG(ERR, "ena_com_rx_pkt error %d\n", rc); @@ -92 +93 @@ -@@ -2978,9 +2983,8 @@ static int ena_xmit_mbuf(struct ena_ring *tx_ring, struct rte_mbuf *mbuf) +@@ -2707,9 +2712,8 @@ static int ena_xmit_mbuf(struct ena_ring *tx_ring, struct rte_mbuf *mbuf)