From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 069D9A0518 for ; Fri, 24 Jul 2020 14:02:39 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id ED8F01C025; Fri, 24 Jul 2020 14:02:38 +0200 (CEST) Received: from mail-wr1-f66.google.com (mail-wr1-f66.google.com [209.85.221.66]) by dpdk.org (Postfix) with ESMTP id D2A7A1C01E for ; Fri, 24 Jul 2020 14:02:37 +0200 (CEST) Received: by mail-wr1-f66.google.com with SMTP id f18so8096628wrs.0 for ; Fri, 24 Jul 2020 05:02:37 -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 :mime-version:content-transfer-encoding; bh=3CfL3Tasnz5njBYFvW5qnJCRNPosH9XuRU+A6j3vY4w=; b=jCGZkQGhsUrBdYIro+FZjuubTtg1zBudy9IVile5tZXP4h/Xskxz5FNdRB0zb6/ZtI 3/82TmUY9RupbhFLPaaGZeChBPe6bn1l/e68cddRHY6CdBCnhrXdirpMZKFE3yJrx+Yj bWqdfoHKho2A4hTu5xqUmwRVQ/cYv0eW2K5jXd4WglySpmxhM7flUuKqwkhyPpD68Qlo 58HiylZ5GiVqAtNwOWjXwqD6JhOkfkG9tVFDRTUpAD234CBggAuyGOmsaCDQvYv2awTK IXTe+zzGWTD6R2ROUAIb8snFOPT1/CQhu5z6Px1IUjGWHNVEYJesEJhaXIUaD0mdFkF3 ikjw== 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:mime-version:content-transfer-encoding; bh=3CfL3Tasnz5njBYFvW5qnJCRNPosH9XuRU+A6j3vY4w=; b=UtPmpl0vTIpeORwt+n9GWkAx2tvTbkU9mzRBhb2ZE3oKvyJVv+4LjNpJY+L+XTM6KV 5nsbRRLyAYxhbXotOiG/Ipl7KUw250Yi1YGTHe+CFlX2T8DpgBIkS2Qkx+d6NOHWBq4G /XmMThs7j06oICYIN9FjaJrP9+4kd7fy0u3weemM/nHtabOki4+LgZi7xwMYs6bUmGYZ 93l0fofdjdkvtv39mxz/+ulhnGyzo7Lho+VicSlYhnWTNQmEVVcDchuhSxAvjAtpwQNj XD/VeBId3erdHzKHYbRJZ6DKVKGgwokBkIfGT8GczVJPOMYTaudzxs02lHLOnfBzWR8M AJ4Q== X-Gm-Message-State: AOAM533y4eGxA3OoTvL0FTD06r6UPbR8spRcwMjhu8lq2boeGp3D2byW waOgTpOZUBYcmcP/JUCRi2E= X-Google-Smtp-Source: ABdhPJw7dEHd6pgMV7XjhuSOUoD0Gsc/4YAYacLdNCI2eQbqfdXUWqaTzqe7Xi8exyU/+C0/ZJbQuQ== X-Received: by 2002:adf:9ec1:: with SMTP id b1mr8178836wrf.171.1595592157574; Fri, 24 Jul 2020 05:02:37 -0700 (PDT) Received: from localhost ([88.98.246.218]) by smtp.gmail.com with ESMTPSA id n18sm1213351wrw.45.2020.07.24.05.02.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jul 2020 05:02:36 -0700 (PDT) From: luca.boccassi@gmail.com To: Alexander Kozyrev Cc: Matan Azrad , dpdk stable Date: Fri, 24 Jul 2020 12:57:51 +0100 Message-Id: <20200724120030.1863487-33-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200724120030.1863487-1-luca.boccassi@gmail.com> References: <20200724120030.1863487-1-luca.boccassi@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-stable] patch 'net/mlx5: fix descriptors number adjustment' has been queued to stable release 19.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: , Errors-To: stable-bounces@dpdk.org Sender: "stable" Hi, FYI, your patch has been queued to stable release 19.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 07/26/20. 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. Thanks. Luca Boccassi --- >From 999f56858138a9766168e75b0f72f27f4925cb49 Mon Sep 17 00:00:00 2001 From: Alexander Kozyrev Date: Thu, 11 Jun 2020 17:43:27 +0000 Subject: [PATCH] net/mlx5: fix descriptors number adjustment [ upstream commit e891b54a9ea4e52631def99314e9ea0f47cb7352 ] The number of descriptors to configure in a Rx/Tx queue is passed to the mlx5_tx/rx_queue_pre_setup() function by value. That means any adjustments of this variable are local and cannot affect the actual value that is used to allocate mbufs in the mlx5_txq/rxq_new() functions. Pass the number as a reference to actually update it. Fixes: 6218063b39a6 ("net/mlx5: refactor Rx data path") Fixes: 1d88ba171942 ("net/mlx5: refactor Tx data path") Signed-off-by: Alexander Kozyrev Acked-by: Matan Azrad --- drivers/net/mlx5/mlx5_rxq.c | 14 +++++++------- drivers/net/mlx5/mlx5_txq.c | 22 +++++++++++----------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c index 2b6ab21b9..baa868360 100644 --- a/drivers/net/mlx5/mlx5_rxq.c +++ b/drivers/net/mlx5/mlx5_rxq.c @@ -446,19 +446,19 @@ mlx5_rxq_releasable(struct rte_eth_dev *dev, uint16_t idx) * 0 on success, a negative errno value otherwise and rte_errno is set. */ static int -mlx5_rx_queue_pre_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc) +mlx5_rx_queue_pre_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t *desc) { struct mlx5_priv *priv = dev->data->dev_private; - if (!rte_is_power_of_2(desc)) { - desc = 1 << log2above(desc); + if (!rte_is_power_of_2(*desc)) { + *desc = 1 << log2above(*desc); DRV_LOG(WARNING, "port %u increased number of descriptors in Rx queue %u" " to the next power of two (%d)", - dev->data->port_id, idx, desc); + dev->data->port_id, idx, *desc); } DRV_LOG(DEBUG, "port %u configuring Rx queue %u for %u descriptors", - dev->data->port_id, idx, desc); + dev->data->port_id, idx, *desc); if (idx >= priv->rxqs_n) { DRV_LOG(ERR, "port %u Rx queue index out of range (%u >= %u)", dev->data->port_id, idx, priv->rxqs_n); @@ -504,7 +504,7 @@ mlx5_rx_queue_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc, container_of(rxq, struct mlx5_rxq_ctrl, rxq); int res; - res = mlx5_rx_queue_pre_setup(dev, idx, desc); + res = mlx5_rx_queue_pre_setup(dev, idx, &desc); if (res) return res; rxq_ctrl = mlx5_rxq_new(dev, idx, desc, socket, conf, mp); @@ -545,7 +545,7 @@ mlx5_rx_hairpin_queue_setup(struct rte_eth_dev *dev, uint16_t idx, container_of(rxq, struct mlx5_rxq_ctrl, rxq); int res; - res = mlx5_rx_queue_pre_setup(dev, idx, desc); + res = mlx5_rx_queue_pre_setup(dev, idx, &desc); if (res) return res; if (hairpin_conf->peer_count != 1 || diff --git a/drivers/net/mlx5/mlx5_txq.c b/drivers/net/mlx5/mlx5_txq.c index 1947e15f6..ff1e4fc85 100644 --- a/drivers/net/mlx5/mlx5_txq.c +++ b/drivers/net/mlx5/mlx5_txq.c @@ -147,27 +147,27 @@ mlx5_get_tx_port_offloads(struct rte_eth_dev *dev) * 0 on success, a negative errno value otherwise and rte_errno is set. */ static int -mlx5_tx_queue_pre_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc) +mlx5_tx_queue_pre_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t *desc) { struct mlx5_priv *priv = dev->data->dev_private; - if (desc <= MLX5_TX_COMP_THRESH) { + if (*desc <= MLX5_TX_COMP_THRESH) { DRV_LOG(WARNING, "port %u number of descriptors requested for Tx queue" " %u must be higher than MLX5_TX_COMP_THRESH, using %u" - " instead of %u", - dev->data->port_id, idx, MLX5_TX_COMP_THRESH + 1, desc); - desc = MLX5_TX_COMP_THRESH + 1; + " instead of %u", dev->data->port_id, idx, + MLX5_TX_COMP_THRESH + 1, *desc); + *desc = MLX5_TX_COMP_THRESH + 1; } - if (!rte_is_power_of_2(desc)) { - desc = 1 << log2above(desc); + if (!rte_is_power_of_2(*desc)) { + *desc = 1 << log2above(*desc); DRV_LOG(WARNING, "port %u increased number of descriptors in Tx queue" " %u to the next power of two (%d)", - dev->data->port_id, idx, desc); + dev->data->port_id, idx, *desc); } DRV_LOG(DEBUG, "port %u configuring queue %u for %u descriptors", - dev->data->port_id, idx, desc); + dev->data->port_id, idx, *desc); if (idx >= priv->txqs_n) { DRV_LOG(ERR, "port %u Tx queue index out of range (%u >= %u)", dev->data->port_id, idx, priv->txqs_n); @@ -210,7 +210,7 @@ mlx5_tx_queue_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc, container_of(txq, struct mlx5_txq_ctrl, txq); int res; - res = mlx5_tx_queue_pre_setup(dev, idx, desc); + res = mlx5_tx_queue_pre_setup(dev, idx, &desc); if (res) return res; txq_ctrl = mlx5_txq_new(dev, idx, desc, socket, conf); @@ -251,7 +251,7 @@ mlx5_tx_hairpin_queue_setup(struct rte_eth_dev *dev, uint16_t idx, container_of(txq, struct mlx5_txq_ctrl, txq); int res; - res = mlx5_tx_queue_pre_setup(dev, idx, desc); + res = mlx5_tx_queue_pre_setup(dev, idx, &desc); if (res) return res; if (hairpin_conf->peer_count != 1 || -- 2.20.1 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2020-07-24 12:53:49.871247065 +0100 +++ 0033-net-mlx5-fix-descriptors-number-adjustment.patch 2020-07-24 12:53:48.227005342 +0100 @@ -1,8 +1,10 @@ -From e891b54a9ea4e52631def99314e9ea0f47cb7352 Mon Sep 17 00:00:00 2001 +From 999f56858138a9766168e75b0f72f27f4925cb49 Mon Sep 17 00:00:00 2001 From: Alexander Kozyrev Date: Thu, 11 Jun 2020 17:43:27 +0000 Subject: [PATCH] net/mlx5: fix descriptors number adjustment +[ upstream commit e891b54a9ea4e52631def99314e9ea0f47cb7352 ] + The number of descriptors to configure in a Rx/Tx queue is passed to the mlx5_tx/rx_queue_pre_setup() function by value. That means any adjustments of this variable are local and cannot affect the actual @@ -11,7 +13,6 @@ Fixes: 6218063b39a6 ("net/mlx5: refactor Rx data path") Fixes: 1d88ba171942 ("net/mlx5: refactor Tx data path") -Cc: stable@dpdk.org Signed-off-by: Alexander Kozyrev Acked-by: Matan Azrad @@ -21,10 +22,10 @@ 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c -index 78046fd86..dda0073c8 100644 +index 2b6ab21b9..baa868360 100644 --- a/drivers/net/mlx5/mlx5_rxq.c +++ b/drivers/net/mlx5/mlx5_rxq.c -@@ -453,19 +453,19 @@ mlx5_rxq_releasable(struct rte_eth_dev *dev, uint16_t idx) +@@ -446,19 +446,19 @@ mlx5_rxq_releasable(struct rte_eth_dev *dev, uint16_t idx) * 0 on success, a negative errno value otherwise and rte_errno is set. */ static int @@ -49,7 +50,7 @@ if (idx >= priv->rxqs_n) { DRV_LOG(ERR, "port %u Rx queue index out of range (%u >= %u)", dev->data->port_id, idx, priv->rxqs_n); -@@ -511,7 +511,7 @@ mlx5_rx_queue_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc, +@@ -504,7 +504,7 @@ mlx5_rx_queue_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc, container_of(rxq, struct mlx5_rxq_ctrl, rxq); int res; @@ -58,7 +59,7 @@ if (res) return res; rxq_ctrl = mlx5_rxq_new(dev, idx, desc, socket, conf, mp); -@@ -552,7 +552,7 @@ mlx5_rx_hairpin_queue_setup(struct rte_eth_dev *dev, uint16_t idx, +@@ -545,7 +545,7 @@ mlx5_rx_hairpin_queue_setup(struct rte_eth_dev *dev, uint16_t idx, container_of(rxq, struct mlx5_rxq_ctrl, rxq); int res; @@ -68,10 +69,10 @@ return res; if (hairpin_conf->peer_count != 1 || diff --git a/drivers/net/mlx5/mlx5_txq.c b/drivers/net/mlx5/mlx5_txq.c -index 507febffc..35b3ade86 100644 +index 1947e15f6..ff1e4fc85 100644 --- a/drivers/net/mlx5/mlx5_txq.c +++ b/drivers/net/mlx5/mlx5_txq.c -@@ -150,27 +150,27 @@ mlx5_get_tx_port_offloads(struct rte_eth_dev *dev) +@@ -147,27 +147,27 @@ mlx5_get_tx_port_offloads(struct rte_eth_dev *dev) * 0 on success, a negative errno value otherwise and rte_errno is set. */ static int @@ -108,7 +109,7 @@ if (idx >= priv->txqs_n) { DRV_LOG(ERR, "port %u Tx queue index out of range (%u >= %u)", dev->data->port_id, idx, priv->txqs_n); -@@ -213,7 +213,7 @@ mlx5_tx_queue_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc, +@@ -210,7 +210,7 @@ mlx5_tx_queue_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc, container_of(txq, struct mlx5_txq_ctrl, txq); int res; @@ -117,7 +118,7 @@ if (res) return res; txq_ctrl = mlx5_txq_new(dev, idx, desc, socket, conf); -@@ -254,7 +254,7 @@ mlx5_tx_hairpin_queue_setup(struct rte_eth_dev *dev, uint16_t idx, +@@ -251,7 +251,7 @@ mlx5_tx_hairpin_queue_setup(struct rte_eth_dev *dev, uint16_t idx, container_of(txq, struct mlx5_txq_ctrl, txq); int res;