From patchwork Tue Nov 10 14:09:35 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Leroy X-Patchwork-Id: 83888 X-Patchwork-Delegate: rasland@nvidia.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 7D9E0A04B1; Tue, 10 Nov 2020 15:10:17 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 52D005937; Tue, 10 Nov 2020 15:09:56 +0100 (CET) Received: from mail-wm1-f68.google.com (mail-wm1-f68.google.com [209.85.128.68]) by dpdk.org (Postfix) with ESMTP id CACC2592C for ; Tue, 10 Nov 2020 15:09:54 +0100 (CET) Received: by mail-wm1-f68.google.com with SMTP id p19so2095225wmg.0 for ; Tue, 10 Nov 2020 06:09:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=hqmTb0Y+tpX4y+uu4PNRau4umDuu9/oMZ99XkWohBzc=; b=RRIR2m+qzDsnYCvLxsLFlAAmY30y2lMPC+kjOgtdZdZSHEMrfDWdKWdPKNFRGzkU83 tA//k0G4sCE+k2De7vbxc8sAPuhSI71++RT4p/3Ocf6UWjxnnKO7coctOJZMg/C5QLsy X3LRwaaFLQ3OaAoYFOYjhxXBHLotSIHcgWal7mDLOmG4x+XhxcaIMEs5LElNdTZETOKE RP9mrge9FNJ4i8BmHThb4kMM054nxilytuUXGkA1wl1+6zZDx/b0frzGyauMgNaxZDUG YJp+KcOW6H/WqagMKP8BTShba67L8tAJPelkuzwqO+czwAwXxJJbFePXqqn0UEPJ3ofc Fviw== 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=hqmTb0Y+tpX4y+uu4PNRau4umDuu9/oMZ99XkWohBzc=; b=L0g4ju6uLEAXj1oqmDHNyJNsnVJARbB3h5k9sZYIxZQSQ5sIXYXj3YfFuThVrvVUS8 TA4Mq05A0Bfg2byKQ988qxBwJ6su8jjseN88qp0PZ8dwRgxGAoRwJN6BDN+qsR8mM6QY hRQEhPc6g4CF9cNF5nCnfNpFuDRe+vKsUWqXHiNL92b2bVK/+bFTiuLaHwW6sORO8lDZ meCNEWSVFyEgvhVxS9fuh5PwkPtqNagvkdgcJfkvfSmvOUbFL/N/G7QND4XymXR5RKSt YD63JHj07TmTEFsHCAe8vAQJaZ1QGVmtI0D9hA5UmlzmlYQooW4iWwQNmD9hnmwSjbuK ddvQ== X-Gm-Message-State: AOAM532EDP8UO+xTZQXQln2DsEYthHGUCF5VFLKS8hjypHvQ91uFAz3S Xr5IpEqcISjWblOLlxO5RswaZFmEYwKpPA== X-Google-Smtp-Source: ABdhPJwCv9viCF4WmuhGpAM332zEKxjmmZVv1xoO+h/JK9RRQaLqYYvZV0NoabSfubF3pBJjdePNbw== X-Received: by 2002:a05:600c:2285:: with SMTP id 5mr4359738wmf.149.1605017393592; Tue, 10 Nov 2020 06:09:53 -0800 (PST) Received: from bolet.dev.6wind.com. (host.78.145.23.62.rev.coltfrance.com. [62.23.145.78]) by smtp.gmail.com with ESMTPSA id y187sm3112158wmg.33.2020.11.10.06.09.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Nov 2020 06:09:52 -0800 (PST) From: Maxime Leroy To: Matan Azrad , Shahaf Shuler , Viacheslav Ovsiienko Cc: dev@dpdk.org, Nelio Laranjeiro Date: Tue, 10 Nov 2020 15:09:35 +0100 Message-Id: <20201110140938.15046-2-maxime.leroy@6wind.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20201110140938.15046-1-maxime.leroy@6wind.com> References: <20201110140938.15046-1-maxime.leroy@6wind.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH 1/4] Revert "net/mlx5: fix Rx queue count calculation" 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" This reverts commit d2d57605522d4a43be17e22e649e54033f6d8835. This fix is uncorrect for at least two reasons. First issue, when there are more than 8 CQEs to uncompress, the computation done in this commit cannot work. Because the zip-ai variable describes the current index inside the CQE8 array and thus is limited from 0 to 7 included. So if we are decompressed the 9 packets, ai is 0. So in this case, n is equals to cqe_cnt - 0. Example with 11 packets we will have: C | a | e0 | e1 | e2 | e3 | e4 | e5 | C | a | e0 c <-- CQE compressed a <-- Array of minicqe ex <-- emptry entry to store uncompressed CQE. If the 9th packet is decompressed by the soft, n is equals to 9. But with this commit, n is equals to 11 (i.e. 11 - 0). Second issue is to count the next packet. Example: packet 1 | packet 2 C | a | e0 | e1 | e2 | e3 | e4 | e5 | C | a | e0 There are 2 packets compressed in the first queue. For the first packet, n is computed correctly. But for the second, n is not computed properly. Because the zip context is for the first packet. The second packet is not yet decompressed, so there are no context. Signed-off-by: Maxime Leroy Signed-off-by: Nelio Laranjeiro --- drivers/net/mlx5/mlx5_rxtx.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c index 844a1c63..4c566486 100644 --- a/drivers/net/mlx5/mlx5_rxtx.c +++ b/drivers/net/mlx5/mlx5_rxtx.c @@ -462,11 +462,19 @@ rx_queue_count(struct mlx5_rxq_data *rxq) { struct rxq_zip *zip = &rxq->zip; volatile struct mlx5_cqe *cqe; - unsigned int cq_ci = rxq->cq_ci; const unsigned int cqe_n = (1 << rxq->cqe_n); const unsigned int cqe_cnt = cqe_n - 1; - unsigned int used = 0; + unsigned int cq_ci; + unsigned int used; + /* if we are processing a compressed cqe */ + if (zip->ai) { + used = zip->cqe_cnt - zip->ca; + cq_ci = zip->cq_ci; + } else { + used = 0; + cq_ci = rxq->cq_ci; + } cqe = &(*rxq->cqes)[cq_ci & cqe_cnt]; while (check_cqe(cqe, cqe_n, cq_ci) != MLX5_CQE_STATUS_HW_OWN) { int8_t op_own; @@ -474,17 +482,14 @@ rx_queue_count(struct mlx5_rxq_data *rxq) op_own = cqe->op_own; if (MLX5_CQE_FORMAT(op_own) == MLX5_COMPRESSED) - if (unlikely(zip->ai)) - n = zip->cqe_cnt - zip->ai; - else - n = rte_be_to_cpu_32(cqe->byte_cnt); + n = rte_be_to_cpu_32(cqe->byte_cnt); else n = 1; cq_ci += n; used += n; cqe = &(*rxq->cqes)[cq_ci & cqe_cnt]; } - used = RTE_MIN(used, cqe_n); + used = RTE_MIN(used, (1U << rxq->elts_n) - 1); return used; } @@ -507,12 +512,11 @@ mlx5_rx_descriptor_status(void *rx_queue, uint16_t offset) container_of(rxq, struct mlx5_rxq_ctrl, rxq); struct rte_eth_dev *dev = ETH_DEV(rxq_ctrl->priv); - if (dev->rx_pkt_burst == NULL || - dev->rx_pkt_burst == removed_rx_burst) { + if (dev->rx_pkt_burst != mlx5_rx_burst) { rte_errno = ENOTSUP; return -rte_errno; } - if (offset >= (1 << rxq->cqe_n)) { + if (offset >= (1 << rxq->elts_n)) { rte_errno = EINVAL; return -rte_errno; } @@ -642,8 +646,7 @@ mlx5_rx_queue_count(struct rte_eth_dev *dev, uint16_t rx_queue_id) struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_rxq_data *rxq; - if (dev->rx_pkt_burst == NULL || - dev->rx_pkt_burst == removed_rx_burst) { + if (dev->rx_pkt_burst != mlx5_rx_burst) { rte_errno = ENOTSUP; return -rte_errno; } From patchwork Tue Nov 10 14:09:36 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Leroy X-Patchwork-Id: 83889 X-Patchwork-Delegate: rasland@nvidia.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 6751AA04B1; Tue, 10 Nov 2020 15:10:39 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 27EBC5947; Tue, 10 Nov 2020 15:09:59 +0100 (CET) Received: from mail-wm1-f68.google.com (mail-wm1-f68.google.com [209.85.128.68]) by dpdk.org (Postfix) with ESMTP id 561E75947 for ; Tue, 10 Nov 2020 15:09:57 +0100 (CET) Received: by mail-wm1-f68.google.com with SMTP id 19so1591153wmf.1 for ; Tue, 10 Nov 2020 06:09:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=khhITRCsAnotN8ZNWDrIsRDBeDKcSEpVbDbBPR7bEy0=; b=BiueMvY25vgFTKasskHUwEc+LiFnyrvH9Jga6Q8F1XwWJjaet/F0nK2J5UmTvqHoed ++sOrC1AmXqpN9Uah6Z1j9M4SVL9wDzXLeXxNN2Ijojj93HImaKtYvKr/jzFtRMYecJI RXxpJceQyEm4CqX8XL7DeiApVmt0ejdaVG8+I4yuNRvBLEHzQSN9VWupeeVntDcmP2kA qIbePxQO4eejqCYWTbNB/4YpkstvpJ/AS3xgVOFPz7axXdjWfaIbvpldsF5tPXZLI0X0 m15rpwHogdQ8S/qGyktrGACzIU0SwnEBFfo+y4PFWH01eEkp+xiBdfji1WzZsH3pnFYK Z0yQ== 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=khhITRCsAnotN8ZNWDrIsRDBeDKcSEpVbDbBPR7bEy0=; b=YIIXiW6Ig4zB67GHm7QbCznjPnqf8b7ZCHlPXKE5Y7NwoGamAnZ8lXgR+2GQSfRpkh hubwBnXBWLMOf7F10pV9Eff2HGFxPGbAC8vFepmvUOn06HXCqxsls6cQ/lC9OrGZ82vb N4OQ5YrOVzgNiRqehW7sM2Ly1HhJHiWrpmoP+uqhPjcNTxULHa2J7nPygFTEIcH+G8w+ JYFKiFfhoX8qLz18znhr3hP0sQZGF3TAbGkCj1UzSN3NhTRbIluugtyYx8+2ZwgwfNUD jAK28AGeCDNxeXL6WAN+57IS77mZy7R//uQtaONFVivSFQsO6oM7wyJfskeyQxBiK4iP V21g== X-Gm-Message-State: AOAM530mA3K9p2x8wNZEspiqBqMiL7VXp9Ef1A9kycnfmbm6FrAiPXeu epvvdZ3kLCfUwdnAlN/sOaXQfw== X-Google-Smtp-Source: ABdhPJxqr3zNlRpO3bE76tGqtWBJQStpXHl0GdV/Fx7G5DYLjbpYaY5O8GyeoswPsjhqmIaLTH8TFQ== X-Received: by 2002:a1c:35c7:: with SMTP id c190mr5020022wma.146.1605017396048; Tue, 10 Nov 2020 06:09:56 -0800 (PST) Received: from bolet.dev.6wind.com. (host.78.145.23.62.rev.coltfrance.com. [62.23.145.78]) by smtp.gmail.com with ESMTPSA id y187sm3112158wmg.33.2020.11.10.06.09.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Nov 2020 06:09:55 -0800 (PST) From: Maxime Leroy To: Matan Azrad , Shahaf Shuler , Viacheslav Ovsiienko , Olivier Matz Cc: dev@dpdk.org, Nelio Laranjeiro Date: Tue, 10 Nov 2020 15:09:36 +0100 Message-Id: <20201110140938.15046-3-maxime.leroy@6wind.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20201110140938.15046-1-maxime.leroy@6wind.com> References: <20201110140938.15046-1-maxime.leroy@6wind.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH 2/4] net/mlx5: fixed used initialization in rx_queue_count 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Mini (compressed) completion queue entries (CQEs) are returned by the NIC when PCI back pressure is detected, in which case the first CQE64 contains common packet information followed by a number of CQE8 providing the rest, followed by a matching number of empty CQE64 entries to be used by software for decompression. CQE already decompressed in software are not used/holded anymore by the nic. In the rx_queue_count function, if rx poll function has already started to decompress some CQes. We need to count the number of CQEs not yet decompressed, this CQEs are still holded by the hardware. The context of the CQEs decompression is stored in the zip structure. To get the number of cpe not decompressed yet (i.e. still holded by the hadware), the following formula is used: zip->cqe_cnt - zip->ca in rx_queue_count function. The zip->cqe_cnt is the number of CQes compressed and zip->ca is the current index of the cqe to decompress. Thus, we can easily have cqe_cnt < ca. So this method to compute the number of cqes still holded by the hardware is wrong. The proper way to get the number of cqes not yet decrompressed is: - First, we need to know the current packet index to decompress: zip->ca + zip->ai. In the example below, the current packet index is 2. - Then the index of the last packet index to decompress: zip->ci + zip->cqe_cnt. In the example below, the last packet index is 3. - Thus the number of packets used by the hardware (i.e. not decompress yet) is: (zip->ci + zip->cqe_cnt) - (zip->ca + zip->ai). In the example below, the number of packets used by the hardware for the current cqe in decompression is 1. :: zip->cq_ci = 0 /* Current CQE */ zip->ca = 1 /* Current array index for decompression */ zip->ai = 1 /* array index in the mini cqe table in CQE1 below */ zip->cqe_cnt = 3 /* number of CQEs set in the first CQE */ 0 1 2 6 7 +---------+ +---------+ +-------+ +---------+ +-------+ | CQE64 | | CQE64 | | CQE64 | | CQE64 | | CQE64 | |---------| |---------| |-------| |------- | |-------| |cqe_cnt=3| | cqe8[0] | | | . |cqe_cnt=X| |cqe8[0]| | ..... | | cqe8[1] | | | . | | | ... | ... | ..... | | cqe8[2] | | | . | | | | | ..... | | | | | | | | | +---------+ +---------+ +-------+ +-------+++ +-------+ Fixes: 8788fec1f269 ("net/mlx5: implement descriptor status API") Signed-off-by: Maxime Leroy Signed-off-by: Nelio Laranjeiro --- drivers/net/mlx5/mlx5_rxtx.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c index 4c566486..511003d1 100644 --- a/drivers/net/mlx5/mlx5_rxtx.c +++ b/drivers/net/mlx5/mlx5_rxtx.c @@ -464,13 +464,15 @@ rx_queue_count(struct mlx5_rxq_data *rxq) volatile struct mlx5_cqe *cqe; const unsigned int cqe_n = (1 << rxq->cqe_n); const unsigned int cqe_cnt = cqe_n - 1; - unsigned int cq_ci; + unsigned int cq_ci, cq_end, cq_cur; unsigned int used; /* if we are processing a compressed cqe */ if (zip->ai) { - used = zip->cqe_cnt - zip->ca; cq_ci = zip->cq_ci; + cq_end = cq_ci + zip->cqe_cnt; + cq_cur = zip->ca + zip->ai; + used = cq_end - cq_cur; } else { used = 0; cq_ci = rxq->cq_ci; From patchwork Tue Nov 10 14:09:37 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Leroy X-Patchwork-Id: 83890 X-Patchwork-Delegate: rasland@nvidia.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8479CA04B1; Tue, 10 Nov 2020 15:10:59 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 4C52B5A8C; Tue, 10 Nov 2020 15:10:03 +0100 (CET) Received: from mail-wm1-f66.google.com (mail-wm1-f66.google.com [209.85.128.66]) by dpdk.org (Postfix) with ESMTP id 238895A8C for ; Tue, 10 Nov 2020 15:10:00 +0100 (CET) Received: by mail-wm1-f66.google.com with SMTP id a65so3133975wme.1 for ; Tue, 10 Nov 2020 06:10:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=TlKWmetg7poIuCtYNC1Yhq8ev+fT2UaNBDjwBbwkMlk=; b=KeE8nixOa4VOh15YYWvw2rValPpDD4yY52UdDzRhnRHTHLR0VSgqZ7FDL/6ByxlCa8 41EPF79bW2NKzNrHKS3IM0NQx9R7PLcl6/C2haO2PLTrAfsvfg6PuD2SW0F3k1WZz30l CcEIe715GDaxPX4JrVq0aSGvIQOYG7M73jLmSgy9Ikghl4u5j3gcJ3cMhwMxCrNr7WSq wTeTJ8ywsdDu4WCDSlhDyPWccuuAKPgBbJPGdlexLrEUUhVw0FeRbWy9nkAiSu6Yj+ke EjB1dYPuHvPEyNtvH37mCShAO8dKbQK81amS3vTQMLTjkbDlUQfasV/9ak8g/hT4jnGI UQvw== 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=TlKWmetg7poIuCtYNC1Yhq8ev+fT2UaNBDjwBbwkMlk=; b=VPJCJovXqAUe5cs7HusgffUreBu5kdcIy4Yz5eOHXXEkLSFfh40r/kSymfXYJNkNF/ 2PppYwZgHg4lWh1/FqeWWEBeqdvdUmVlKiw00DRVEEl4MXQ5tA9pgj8gce7TZslJukij JSGBmPLKM0HhF6gHAsA0+kLs194xH3hVm7aX7SMondVmoWEa0d3Qo56vygRim6p63OgN hkAK0dsHSNc9rXpO1KkT/++Phj2wMRiT0vMHSNESzysZpqBWvQJwjzjZqImirech38Mb pMzrgH0F8t8UelFKy66ldR8QIZwkPSA5VQpXkJKs/zTyeYLtZ50SlXVrKIl5qpbAXSSx layg== X-Gm-Message-State: AOAM530MsT8GhDhu5FbIu+l1pkJch4s2gf6C2mgamiLKpGkUGIdQzpcP sQHt76SfvvzOrANjrR06S9GXRA== X-Google-Smtp-Source: ABdhPJyXwnU/1gAVD87HpjqYB8EOk97PTBChgVY7vLMng81Jg/LVVltRykGKkH9WgeDuDtqllWyZww== X-Received: by 2002:a1c:c30a:: with SMTP id t10mr4828676wmf.183.1605017398937; Tue, 10 Nov 2020 06:09:58 -0800 (PST) Received: from bolet.dev.6wind.com. (host.78.145.23.62.rev.coltfrance.com. [62.23.145.78]) by smtp.gmail.com with ESMTPSA id y187sm3112158wmg.33.2020.11.10.06.09.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Nov 2020 06:09:58 -0800 (PST) From: Maxime Leroy To: Matan Azrad , Shahaf Shuler , Viacheslav Ovsiienko , Olivier Matz Cc: dev@dpdk.org, Didier Pallard Date: Tue, 10 Nov 2020 15:09:37 +0100 Message-Id: <20201110140938.15046-4-maxime.leroy@6wind.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20201110140938.15046-1-maxime.leroy@6wind.com> References: <20201110140938.15046-1-maxime.leroy@6wind.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH 3/4] net/mlx5: fix Rx descriptor status returned value 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Didier Pallard Two bugs in rx_queue_count function: - One entry may contain several segments, so 'used' must be multiplied by number of segments per entry to properly reflect the queue usage. - rx_queue_count returns the number of entries used in queue, so it ranges from 0 to max number of entries in queue, not this number minus one. Fixes: 8788fec1f269 ("net/mlx5: implement descriptor status API") Signed-off-by: Didier Pallard --- drivers/net/mlx5/mlx5_rxtx.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c index 511003d1..2cabd650 100644 --- a/drivers/net/mlx5/mlx5_rxtx.c +++ b/drivers/net/mlx5/mlx5_rxtx.c @@ -463,6 +463,7 @@ rx_queue_count(struct mlx5_rxq_data *rxq) struct rxq_zip *zip = &rxq->zip; volatile struct mlx5_cqe *cqe; const unsigned int cqe_n = (1 << rxq->cqe_n); + const unsigned int sges_n = (1 << rxq->sges_n); const unsigned int cqe_cnt = cqe_n - 1; unsigned int cq_ci, cq_end, cq_cur; unsigned int used; @@ -491,7 +492,7 @@ rx_queue_count(struct mlx5_rxq_data *rxq) used += n; cqe = &(*rxq->cqes)[cq_ci & cqe_cnt]; } - used = RTE_MIN(used, (1U << rxq->elts_n) - 1); + used = RTE_MIN(used * sges_n, 1U << rxq->elts_n); return used; } From patchwork Tue Nov 10 14:09:38 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Leroy X-Patchwork-Id: 83891 X-Patchwork-Delegate: rasland@nvidia.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 435CEA04B1; Tue, 10 Nov 2020 15:11:20 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id A7BDD592B; Tue, 10 Nov 2020 15:10:07 +0100 (CET) Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) by dpdk.org (Postfix) with ESMTP id 5E53E5AB2 for ; Tue, 10 Nov 2020 15:10:05 +0100 (CET) Received: by mail-wr1-f65.google.com with SMTP id 23so12798441wrc.8 for ; Tue, 10 Nov 2020 06:10:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=HTXbh7Ub/iHi3FEJwT30SL5Hx75g1i2v+GfXB88JyUA=; b=ChkEJMd5hXHIpLSvhuCM3WzurAep9aLJACajQDdHtB0lUdx6mJWPXiEGBTxu2nctgR kQD7/fyTqlQ0cEQubNhYGVTrPITfE1L8QK9fuo98gkrdJ06PwSmA3mcIwue5RC1DH/Qp ALcsGk1mK8svWvAR1waLcqBgO9Egwy2cWzIWN26Bt8FEE9grmqvP5IdEjYXGx8iodE4t nvo/gL1iwwraTI0zsLtAF8PQNjovl1ZMrdqwVZd/u6oadpQADOBrJcKpAUBP65YgbSZY ViX+Atpd32kqupvib0fb3X83E7sbV+MvFT9tI+j9CbaCiKzVVWGv2CDH2IwlcaW2K4Px ELUg== 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=HTXbh7Ub/iHi3FEJwT30SL5Hx75g1i2v+GfXB88JyUA=; b=ORmjVrN0UwaKH+nLUfw5Pj4j5/8anJE9Z4HeS7ofPckW3pKTIDZcLlRGDyvWty0cpe sdqivMZkvmgA8wLd3lCt9r5iZfObgWigWuO04E8g5hnFYieWe+PW+Cn+cAKPedxxBp45 iykBZXnrpEr7KIBEdd4jekKZwLapTS7lgfhVol21E/VJfZ0HU5BX1oorG51mTDdFXx5A ydpe8FU316+t2SC/3/5KwPRN7U6R06P+z3qIe5bIrdD+or0iuRu3m5RNSpQ6yZ5Rsc3M vpmOvoP4H4y8/QEhqSRXIPtbxOPc7ftqn+5gyo0vy8wNbGX7ZLgrhL75PqzUO1TTX+Sz HT1w== X-Gm-Message-State: AOAM531hg/s95tDfoD75cdgCftTohYQeZjMsZ1yDZ6kWTiWiai6rbijW q25i1s927aLiU7dJkzB+8FnEOQ== X-Google-Smtp-Source: ABdhPJxnAAMEJpXtdN67/EmY8wPg1Io4Te+/z8ZnsLuPS7i7WzI8uXWSmrjXhKguyphHmaAmhNOp8g== X-Received: by 2002:a5d:42c9:: with SMTP id t9mr10559780wrr.13.1605017404169; Tue, 10 Nov 2020 06:10:04 -0800 (PST) Received: from bolet.dev.6wind.com. (host.78.145.23.62.rev.coltfrance.com. [62.23.145.78]) by smtp.gmail.com with ESMTPSA id y187sm3112158wmg.33.2020.11.10.06.10.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Nov 2020 06:10:03 -0800 (PST) From: Maxime Leroy To: Matan Azrad , Shahaf Shuler , Viacheslav Ovsiienko Cc: dev@dpdk.org Date: Tue, 10 Nov 2020 15:09:38 +0100 Message-Id: <20201110140938.15046-5-maxime.leroy@6wind.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20201110140938.15046-1-maxime.leroy@6wind.com> References: <20201110140938.15046-1-maxime.leroy@6wind.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH 4/4] mlx5: re-add support of rx_queue_count for mlx5_rx_burst_mprq 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" The commit 014a6936008b ("Revert "net/mlx5: fix Rx queue count calculation"")' has removed the support of rx_queue_count for mlx5_rx_burst_mprq. This commit has been revert because the fixes done on rx_queue_count computation was wrong. Anyway, it's still true that the Rx queue count calculation is same for any rx burts method since CQ handling is the same for regular, vectorized, and multi-packet Rx queues. Signed-off-by: Maxime Leroy --- drivers/net/mlx5/mlx5_rxtx.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c index 2cabd650..db3c6100 100644 --- a/drivers/net/mlx5/mlx5_rxtx.c +++ b/drivers/net/mlx5/mlx5_rxtx.c @@ -492,7 +492,7 @@ rx_queue_count(struct mlx5_rxq_data *rxq) used += n; cqe = &(*rxq->cqes)[cq_ci & cqe_cnt]; } - used = RTE_MIN(used * sges_n, 1U << rxq->elts_n); + used = RTE_MIN(used * sges_n, cqe_cnt); return used; } @@ -515,7 +515,8 @@ mlx5_rx_descriptor_status(void *rx_queue, uint16_t offset) container_of(rxq, struct mlx5_rxq_ctrl, rxq); struct rte_eth_dev *dev = ETH_DEV(rxq_ctrl->priv); - if (dev->rx_pkt_burst != mlx5_rx_burst) { + if (dev->rx_pkt_burst == NULL || + dev->rx_pkt_burst == removed_rx_burst) { rte_errno = ENOTSUP; return -rte_errno; }