get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/119371/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 119371,
    "url": "https://patches.dpdk.org/api/patches/119371/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20221031160824.330200-6-michaelba@nvidia.com/",
    "project": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20221031160824.330200-6-michaelba@nvidia.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20221031160824.330200-6-michaelba@nvidia.com",
    "date": "2022-10-31T16:08:24",
    "name": "[5/5] net/mlx5: assert for enough space in counter rings",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "980d6199b833e7564226b9d1a8e6554325eab6b5",
    "submitter": {
        "id": 1949,
        "url": "https://patches.dpdk.org/api/people/1949/?format=api",
        "name": "Michael Baum",
        "email": "michaelba@nvidia.com"
    },
    "delegate": {
        "id": 3268,
        "url": "https://patches.dpdk.org/api/users/3268/?format=api",
        "username": "rasland",
        "first_name": "Raslan",
        "last_name": "Darawsheh",
        "email": "rasland@nvidia.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20221031160824.330200-6-michaelba@nvidia.com/mbox/",
    "series": [
        {
            "id": 25498,
            "url": "https://patches.dpdk.org/api/series/25498/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=25498",
            "date": "2022-10-31T16:08:19",
            "name": "net/mlx5: some counter fixes",
            "version": 1,
            "mbox": "https://patches.dpdk.org/series/25498/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/119371/comments/",
    "check": "fail",
    "checks": "https://patches.dpdk.org/api/patches/119371/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 495B0A0540;\n\tMon, 31 Oct 2022 17:09:19 +0100 (CET)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 120904281C;\n\tMon, 31 Oct 2022 17:08:55 +0100 (CET)",
            "from NAM12-DM6-obe.outbound.protection.outlook.com\n (mail-dm6nam12on2085.outbound.protection.outlook.com [40.107.243.85])\n by mails.dpdk.org (Postfix) with ESMTP id 58BB0427F3\n for <dev@dpdk.org>; Mon, 31 Oct 2022 17:08:53 +0100 (CET)",
            "from BN9PR03CA0075.namprd03.prod.outlook.com (2603:10b6:408:fc::20)\n by SA1PR12MB7223.namprd12.prod.outlook.com (2603:10b6:806:2bc::14)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5746.28; Mon, 31 Oct\n 2022 16:08:51 +0000",
            "from BN8NAM11FT004.eop-nam11.prod.protection.outlook.com\n (2603:10b6:408:fc:cafe::f5) by BN9PR03CA0075.outlook.office365.com\n (2603:10b6:408:fc::20) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5769.19 via Frontend\n Transport; Mon, 31 Oct 2022 16:08:51 +0000",
            "from mail.nvidia.com (216.228.118.233) by\n BN8NAM11FT004.mail.protection.outlook.com (10.13.176.164) with Microsoft SMTP\n Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.5769.14 via Frontend Transport; Mon, 31 Oct 2022 16:08:51 +0000",
            "from drhqmail202.nvidia.com (10.126.190.181) by mail.nvidia.com\n (10.127.129.6) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.26; Mon, 31 Oct\n 2022 09:08:39 -0700",
            "from drhqmail203.nvidia.com (10.126.190.182) by\n drhqmail202.nvidia.com (10.126.190.181) with Microsoft SMTP Server\n (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.2.986.29; Mon, 31 Oct 2022 09:08:38 -0700",
            "from nvidia.com (10.127.8.13) by mail.nvidia.com (10.126.190.182)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.29 via Frontend\n Transport; Mon, 31 Oct 2022 09:08:37 -0700"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=Uw+ufOm1t9W1ZymjOzFPtr0h1uIproa82G0B8z4Spwp77soLtyCQp8Lhd3kTyHvwiAt3z8uWgRflyFzE5lQ65EZ/y7MRcx8k4UEjKT0CaoaahLHlmkf9W8pdP8abHNN5Zq26nKunVk/v+ZEz3r9e8iXSIHmJ6PIt1EIL+jwEdvjtFTbEQdK+aBx1yzOSDXjZQ7t5wuIailFtc088dt/iIgiH/usRZ+2x86LPFdvQLEKUqBExIzWGqsyvrTHdicJL3hjy2ElJy0y8SKjuaqAzStX0wc1PvSGFkUAd+4zwJBMCzB9OBK4fF7RE9NSqpxiy4nh1bJEOFzpFiyKiUylvYw==",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector9901;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=LNO9/5ja7ILi+ymsQhgBxCMbfWC/te54y+GXqj0pecA=;\n b=hG7VIBO6LWDUJ9MgJbkWUluFKSZBpq4MshQdnDlcRwEQuAYzCicy/eNYcXhBmZnFaT33F1syfC9qzADP6GOyNFMjrJHV4d2Fbdl267iLMNKQhO4n1hS320sJxmBsv4uPgVSsZNCcNOYLh9fbouOyadZ0rHZ4OeUbfbZeYSn8CkjKwHHaZ++ALiJmHgQ5S1I83UG2OWBKSBsZyJ9JbkpAQhBVYJrSNgbQLJwZ6GoVM0CaH5rfTtY/WeGgHo9a8yFM17kaRFdol+tKYU1/9RJe+CYFWYCRyhhhcL7VNKhGf9hu/1wxnhXW8lowWUHLyIf/cTRLjd02l2xdaeHAqPN9yQ==",
        "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 216.228.118.233) smtp.rcpttodomain=dpdk.org smtp.mailfrom=nvidia.com;\n dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com;\n dkim=none (message not signed); arc=none",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com;\n s=selector2;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=LNO9/5ja7ILi+ymsQhgBxCMbfWC/te54y+GXqj0pecA=;\n b=jG7jdn+MeNZq6pzS3LZzUH0Fsyx2EiFQIxkh+O94mzZxmQnemsCWENdyhF9honPS1AVqRtc8IPEQyG0ncDFRIt36ZPNtze39YlFitQV8dcGxSD0K8G8wsY81/gz72c8EkUZm+Qa9YIJAL5Wr3udN6a7Jly3DuEDwb8EMZ8TXYuJmoaEHRKf1rD3jGwQrCAl+yHIYSDcZT/2MEgBtRV92RMfoyJ/5WuFoloZV36zLfIJdd8HmAWeFnyRUNIM/N9l+6Sw9WLOWF0ZVkaBCI6iX7FpDNzFDjgahnG2Wu/8kyVjscbds2fpqyLKFX2jbEPqawah+BsXld2M1krTJ57xHzA==",
        "X-MS-Exchange-Authentication-Results": "spf=pass (sender IP is 216.228.118.233)\n smtp.mailfrom=nvidia.com;\n dkim=none (message not signed)\n header.d=none;dmarc=pass action=none header.from=nvidia.com;",
        "Received-SPF": "Pass (protection.outlook.com: domain of nvidia.com designates\n 216.228.118.233 as permitted sender) receiver=protection.outlook.com;\n client-ip=216.228.118.233; helo=mail.nvidia.com; pr=C",
        "From": "Michael Baum <michaelba@nvidia.com>",
        "To": "<dev@dpdk.org>",
        "CC": "Matan Azrad <matan@nvidia.com>, Raslan Darawsheh <rasland@nvidia.com>,\n Viacheslav Ovsiienko <viacheslavo@nvidia.com>, Xiaoyu Min\n <jackmin@nvidia.com>",
        "Subject": "[PATCH 5/5] net/mlx5: assert for enough space in counter rings",
        "Date": "Mon, 31 Oct 2022 18:08:24 +0200",
        "Message-ID": "<20221031160824.330200-6-michaelba@nvidia.com>",
        "X-Mailer": "git-send-email 2.25.1",
        "In-Reply-To": "<20221031160824.330200-1-michaelba@nvidia.com>",
        "References": "<20221031160824.330200-1-michaelba@nvidia.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-EOPAttributedMessage": "0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-TrafficTypeDiagnostic": "BN8NAM11FT004:EE_|SA1PR12MB7223:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "33bf08db-4a27-4b26-b9d0-08dabb5a3396",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "BCL:0;",
        "X-Microsoft-Antispam-Message-Info": "\n 5NbTVyDdYorBb5B1lnbfL51ap3wkxNDC9YFHboYqG+BuJQZosyeuGrMm9ouC5wBU8AQiIM6NgxQB+2JL7kM4R96fWaRWLPRaU+RcQxbr1DnaujL03o/1VnMX84YiUVEuKOsFnYGRAlZLBCj7cfGOtcCbhwqfczDZ20Vd8pMAoMOmJCTOXX2z8N4iKMbzFPTsKCy+oVkv2yjrEmzkiifl2mqrZRIyYKBITwHO0yl4VV6ymQ2ftmA5JYUcZEFdbSyNyzIF/RnY4W7LhOYttog2j8zvP7VQvnojjdZCS0l5D37ulUUkbTKoBxBl8OkLRS4l5xk6ruJl4RpEgHkRsNSHnKOsjvosB8lExTCX4P/qOj+P/IG4Yc6i6lIbIKmm/i7070uiEL2UCFMxALekm9bOqYpOsQwNvUsdItTuktwEBquCh4InHjTFp2kHuP7bAbof9HjCl9DzfmQ2U8IQMTf0MfutMR+Z3Ars8OHOmp928fNbRV2wgxj8vZtDAtIM1aPP7w9FR5EGfiIaGXefX4fqgJGsNyrzrn+9PUzDONCw3FHohMyR8BVBfghtUhdmmYHtm1uLHWTk9eywKo1DhABxdR0SlBZnFhCuI709Ki3O4L7F8KkIAjAuWNvRt/pHfEU/SC3ukj4TMIb8WCgKgx5QkEkYfEzkMvAWVVSsTmvYXLTckuTDIFw+rNSsKQ6lgr72RDEhYgUvxRNXUtOG+Luq8g9AfdZFhcFeRRj38XL6cMf5eYz+thEh3IZ7EhKFWO9y9vK0phZHb+qD363E8GmgZg==",
        "X-Forefront-Antispam-Report": "CIP:216.228.118.233; CTRY:US; LANG:en; SCL:1;\n SRV:;\n IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc7edge2.nvidia.com; CAT:NONE;\n SFS:(13230022)(4636009)(136003)(346002)(376002)(396003)(39860400002)(451199015)(36840700001)(40470700004)(46966006)(40460700003)(2616005)(82310400005)(5660300002)(478600001)(47076005)(426003)(8936002)(7696005)(36860700001)(40480700001)(82740400003)(1076003)(6916009)(186003)(41300700001)(356005)(36756003)(7636003)(54906003)(4326008)(30864003)(2906002)(83380400001)(70586007)(6286002)(336012)(316002)(86362001)(70206006)(26005)(6666004)(107886003)(55016003)(8676002);\n DIR:OUT; SFP:1101;",
        "X-OriginatorOrg": "Nvidia.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "31 Oct 2022 16:08:51.1438 (UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 33bf08db-4a27-4b26-b9d0-08dabb5a3396",
        "X-MS-Exchange-CrossTenant-Id": "43083d15-7273-40c1-b7db-39efd9ccc17a",
        "X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp": "\n TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.118.233];\n Helo=[mail.nvidia.com]",
        "X-MS-Exchange-CrossTenant-AuthSource": "\n BN8NAM11FT004.eop-nam11.prod.protection.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "SA1PR12MB7223",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org"
    },
    "content": "There is a by-design assumption in the code that the global counter\nrings can contain all the port counters.\nSo, enqueuing to these global rings should always succeed.\n\nAdd assertions to help for debugging this assumption.\n\nIn addition, change mlx5_hws_cnt_pool_put() function to return void due\nto those assumptions.\n\nSigned-off-by: Michael Baum <michaelba@nvidia.com>\nAcked-by: Matan Azrad <matan@nvidia.com>\nAcked-by: Xiaoyu Min <jackmin@nvidia.com>\n---\n drivers/net/mlx5/mlx5_flow_hw.c |   2 +-\n drivers/net/mlx5/mlx5_hws_cnt.c |  25 ++++----\n drivers/net/mlx5/mlx5_hws_cnt.h | 106 +++++++++++++++++---------------\n 3 files changed, 72 insertions(+), 61 deletions(-)",
    "diff": "diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c\nindex 2d275ad111..54a0afe45f 100644\n--- a/drivers/net/mlx5/mlx5_flow_hw.c\n+++ b/drivers/net/mlx5/mlx5_flow_hw.c\n@@ -7874,7 +7874,7 @@ flow_hw_action_handle_destroy(struct rte_eth_dev *dev, uint32_t queue,\n \t\t\t * time to update the AGE.\n \t\t\t */\n \t\t\tmlx5_hws_age_nb_cnt_decrease(priv, age_idx);\n-\t\tret = mlx5_hws_cnt_shared_put(priv->hws_cpool, &act_idx);\n+\t\tmlx5_hws_cnt_shared_put(priv->hws_cpool, &act_idx);\n \t\tbreak;\n \tcase MLX5_INDIRECT_ACTION_TYPE_CT:\n \t\tret = flow_hw_conntrack_destroy(dev, act_idx, error);\ndiff --git a/drivers/net/mlx5/mlx5_hws_cnt.c b/drivers/net/mlx5/mlx5_hws_cnt.c\nindex b8ce69af57..24c01eace0 100644\n--- a/drivers/net/mlx5/mlx5_hws_cnt.c\n+++ b/drivers/net/mlx5/mlx5_hws_cnt.c\n@@ -58,13 +58,14 @@ __hws_cnt_id_load(struct mlx5_hws_cnt_pool *cpool)\n \n static void\n __mlx5_hws_cnt_svc(struct mlx5_dev_ctx_shared *sh,\n-\t\tstruct mlx5_hws_cnt_pool *cpool)\n+\t\t   struct mlx5_hws_cnt_pool *cpool)\n {\n \tstruct rte_ring *reset_list = cpool->wait_reset_list;\n \tstruct rte_ring *reuse_list = cpool->reuse_list;\n \tuint32_t reset_cnt_num;\n \tstruct rte_ring_zc_data zcdr = {0};\n \tstruct rte_ring_zc_data zcdu = {0};\n+\tuint32_t ret __rte_unused;\n \n \treset_cnt_num = rte_ring_count(reset_list);\n \tdo {\n@@ -72,17 +73,19 @@ __mlx5_hws_cnt_svc(struct mlx5_dev_ctx_shared *sh,\n \t\tmlx5_aso_cnt_query(sh, cpool);\n \t\tzcdr.n1 = 0;\n \t\tzcdu.n1 = 0;\n-\t\trte_ring_enqueue_zc_burst_elem_start(reuse_list,\n-\t\t\t\tsizeof(cnt_id_t), reset_cnt_num, &zcdu,\n-\t\t\t\tNULL);\n-\t\trte_ring_dequeue_zc_burst_elem_start(reset_list,\n-\t\t\t\tsizeof(cnt_id_t), reset_cnt_num, &zcdr,\n-\t\t\t\tNULL);\n+\t\tret = rte_ring_enqueue_zc_burst_elem_start(reuse_list,\n+\t\t\t\t\t\t\t   sizeof(cnt_id_t),\n+\t\t\t\t\t\t\t   reset_cnt_num, &zcdu,\n+\t\t\t\t\t\t\t   NULL);\n+\t\tMLX5_ASSERT(ret == reset_cnt_num);\n+\t\tret = rte_ring_dequeue_zc_burst_elem_start(reset_list,\n+\t\t\t\t\t\t\t   sizeof(cnt_id_t),\n+\t\t\t\t\t\t\t   reset_cnt_num, &zcdr,\n+\t\t\t\t\t\t\t   NULL);\n+\t\tMLX5_ASSERT(ret == reset_cnt_num);\n \t\t__hws_cnt_r2rcpy(&zcdu, &zcdr, reset_cnt_num);\n-\t\trte_ring_dequeue_zc_elem_finish(reset_list,\n-\t\t\t\treset_cnt_num);\n-\t\trte_ring_enqueue_zc_elem_finish(reuse_list,\n-\t\t\t\treset_cnt_num);\n+\t\trte_ring_dequeue_zc_elem_finish(reset_list, reset_cnt_num);\n+\t\trte_ring_enqueue_zc_elem_finish(reuse_list, reset_cnt_num);\n \t\treset_cnt_num = rte_ring_count(reset_list);\n \t} while (reset_cnt_num > 0);\n }\ndiff --git a/drivers/net/mlx5/mlx5_hws_cnt.h b/drivers/net/mlx5/mlx5_hws_cnt.h\nindex 338ee4d688..030dcead86 100644\n--- a/drivers/net/mlx5/mlx5_hws_cnt.h\n+++ b/drivers/net/mlx5/mlx5_hws_cnt.h\n@@ -116,7 +116,7 @@ enum {\n \tHWS_AGE_CANDIDATE_INSIDE_RING,\n \t/*\n \t * AGE assigned to flows but it still in ring. It was aged-out but the\n-\t * timeout was changed, so it in ring but stiil candidate.\n+\t * timeout was changed, so it in ring but still candidate.\n \t */\n \tHWS_AGE_AGED_OUT_REPORTED,\n \t/*\n@@ -182,7 +182,7 @@ mlx5_hws_cnt_id_valid(cnt_id_t cnt_id)\n  *\n  * @param cpool\n  *   The pointer to counter pool\n- * @param index\n+ * @param iidx\n  *   The internal counter index.\n  *\n  * @return\n@@ -231,32 +231,32 @@ __hws_cnt_query_raw(struct mlx5_hws_cnt_pool *cpool, cnt_id_t cnt_id,\n }\n \n /**\n- * Copy elems from one zero-copy ring to zero-copy ring in place.\n+ * Copy elements from one zero-copy ring to zero-copy ring in place.\n  *\n  * The input is a rte ring zero-copy data struct, which has two pointer.\n  * in case of the wrapper happened, the ptr2 will be meaningful.\n  *\n- * So this rountin needs to consider the situation that the address given by\n+ * So this routine needs to consider the situation that the address given by\n  * source and destination could be both wrapped.\n  * First, calculate the first number of element needs to be copied until wrapped\n  * address, which could be in source or destination.\n  * Second, copy left number of element until second wrapped address. If in first\n  * step the wrapped address is source, then this time it must be in destination.\n- * and vice-vers.\n- * Third, copy all left numbe of element.\n+ * and vice-versa.\n+ * Third, copy all left number of element.\n  *\n  * In worst case, we need copy three pieces of continuous memory.\n  *\n  * @param zcdd\n- *   A pointer to zero-copy data of dest ring.\n+ *   A pointer to zero-copy data of destination ring.\n  * @param zcds\n  *   A pointer to zero-copy data of source ring.\n  * @param n\n- *   Number of elems to copy.\n+ *   Number of elements to copy.\n  */\n static __rte_always_inline void\n __hws_cnt_r2rcpy(struct rte_ring_zc_data *zcdd, struct rte_ring_zc_data *zcds,\n-\t\tunsigned int n)\n+\t\t unsigned int n)\n {\n \tunsigned int n1, n2, n3;\n \tvoid *s1, *s2, *s3;\n@@ -291,22 +291,23 @@ static __rte_always_inline int\n mlx5_hws_cnt_pool_cache_flush(struct mlx5_hws_cnt_pool *cpool,\n \t\t\t      uint32_t queue_id)\n {\n-\tunsigned int ret;\n+\tunsigned int ret __rte_unused;\n \tstruct rte_ring_zc_data zcdr = {0};\n \tstruct rte_ring_zc_data zcdc = {0};\n \tstruct rte_ring *reset_list = NULL;\n \tstruct rte_ring *qcache = cpool->cache->qcache[queue_id];\n+\tuint32_t ring_size = rte_ring_count(qcache);\n \n-\tret = rte_ring_dequeue_zc_burst_elem_start(qcache,\n-\t\t\tsizeof(cnt_id_t), rte_ring_count(qcache), &zcdc,\n-\t\t\tNULL);\n-\tMLX5_ASSERT(ret);\n+\tret = rte_ring_dequeue_zc_burst_elem_start(qcache, sizeof(cnt_id_t),\n+\t\t\t\t\t\t   ring_size, &zcdc, NULL);\n+\tMLX5_ASSERT(ret == ring_size);\n \treset_list = cpool->wait_reset_list;\n-\trte_ring_enqueue_zc_burst_elem_start(reset_list,\n-\t\t\tsizeof(cnt_id_t), ret, &zcdr, NULL);\n-\t__hws_cnt_r2rcpy(&zcdr, &zcdc, ret);\n-\trte_ring_enqueue_zc_elem_finish(reset_list, ret);\n-\trte_ring_dequeue_zc_elem_finish(qcache, ret);\n+\tret = rte_ring_enqueue_zc_burst_elem_start(reset_list, sizeof(cnt_id_t),\n+\t\t\t\t\t\t   ring_size, &zcdr, NULL);\n+\tMLX5_ASSERT(ret == ring_size);\n+\t__hws_cnt_r2rcpy(&zcdr, &zcdc, ring_size);\n+\trte_ring_enqueue_zc_elem_finish(reset_list, ring_size);\n+\trte_ring_dequeue_zc_elem_finish(qcache, ring_size);\n \treturn 0;\n }\n \n@@ -323,7 +324,7 @@ mlx5_hws_cnt_pool_cache_fetch(struct mlx5_hws_cnt_pool *cpool,\n \tstruct rte_ring_zc_data zcdu = {0};\n \tstruct rte_ring_zc_data zcds = {0};\n \tstruct mlx5_hws_cnt_pool_caches *cache = cpool->cache;\n-\tunsigned int ret;\n+\tunsigned int ret, actual_fetch_size __rte_unused;\n \n \treuse_list = cpool->reuse_list;\n \tret = rte_ring_dequeue_zc_burst_elem_start(reuse_list,\n@@ -334,7 +335,9 @@ mlx5_hws_cnt_pool_cache_fetch(struct mlx5_hws_cnt_pool *cpool,\n \t\trte_ring_dequeue_zc_elem_finish(reuse_list, 0);\n \t\tfree_list = cpool->free_list;\n \t\tret = rte_ring_dequeue_zc_burst_elem_start(free_list,\n-\t\t\t\tsizeof(cnt_id_t), cache->fetch_sz, &zcdf, NULL);\n+\t\t\t\t\t\t\t   sizeof(cnt_id_t),\n+\t\t\t\t\t\t\t   cache->fetch_sz,\n+\t\t\t\t\t\t\t   &zcdf, NULL);\n \t\tzcds = zcdf;\n \t\tlist = free_list;\n \t\tif (unlikely(ret == 0)) { /* no free counter. */\n@@ -344,8 +347,10 @@ mlx5_hws_cnt_pool_cache_fetch(struct mlx5_hws_cnt_pool *cpool,\n \t\t\treturn -ENOENT;\n \t\t}\n \t}\n-\trte_ring_enqueue_zc_burst_elem_start(qcache, sizeof(cnt_id_t),\n-\t\t\tret, &zcdc, NULL);\n+\tactual_fetch_size = ret;\n+\tret = rte_ring_enqueue_zc_burst_elem_start(qcache, sizeof(cnt_id_t),\n+\t\t\t\t\t\t   ret, &zcdc, NULL);\n+\tMLX5_ASSERT(ret == actual_fetch_size);\n \t__hws_cnt_r2rcpy(&zcdc, &zcds, ret);\n \trte_ring_dequeue_zc_elem_finish(list, ret);\n \trte_ring_enqueue_zc_elem_finish(qcache, ret);\n@@ -378,15 +383,14 @@ __mlx5_hws_cnt_pool_enqueue_revert(struct rte_ring *r, unsigned int n,\n  *\n  * @param cpool\n  *   A pointer to the counter pool structure.\n+ * @param queue\n+ *   A pointer to HWS queue. If null, it means put into common pool.\n  * @param cnt_id\n  *   A counter id to be added.\n- * @return\n- *   - 0: Success; object taken\n- *   - -ENOENT: not enough entry in pool\n  */\n-static __rte_always_inline int\n-mlx5_hws_cnt_pool_put(struct mlx5_hws_cnt_pool *cpool,\n-\t\tuint32_t *queue, cnt_id_t *cnt_id)\n+static __rte_always_inline void\n+mlx5_hws_cnt_pool_put(struct mlx5_hws_cnt_pool *cpool, uint32_t *queue,\n+\t\t      cnt_id_t *cnt_id)\n {\n \tunsigned int ret = 0;\n \tstruct rte_ring_zc_data zcdc = {0};\n@@ -404,25 +408,29 @@ mlx5_hws_cnt_pool_put(struct mlx5_hws_cnt_pool *cpool,\n \t\tqcache = cpool->cache->qcache[*queue];\n \tif (unlikely(qcache == NULL)) {\n \t\tret = rte_ring_enqueue_elem(cpool->wait_reset_list, cnt_id,\n-\t\t\t\tsizeof(cnt_id_t));\n+\t\t\t\t\t    sizeof(cnt_id_t));\n \t\tMLX5_ASSERT(ret == 0);\n-\t\treturn ret;\n+\t\treturn;\n \t}\n \tret = rte_ring_enqueue_burst_elem(qcache, cnt_id, sizeof(cnt_id_t), 1,\n \t\t\t\t\t  NULL);\n \tif (unlikely(ret == 0)) { /* cache is full. */\n+\t\tstruct rte_ring *reset_list = cpool->wait_reset_list;\n+\n \t\twb_num = rte_ring_count(qcache) - cpool->cache->threshold;\n \t\tMLX5_ASSERT(wb_num < rte_ring_count(qcache));\n \t\t__mlx5_hws_cnt_pool_enqueue_revert(qcache, wb_num, &zcdc);\n-\t\trte_ring_enqueue_zc_burst_elem_start(cpool->wait_reset_list,\n-\t\t\t\tsizeof(cnt_id_t), wb_num, &zcdr, NULL);\n-\t\t__hws_cnt_r2rcpy(&zcdr, &zcdc, wb_num);\n-\t\trte_ring_enqueue_zc_elem_finish(cpool->wait_reset_list, wb_num);\n+\t\tret = rte_ring_enqueue_zc_burst_elem_start(reset_list,\n+\t\t\t\t\t\t\t   sizeof(cnt_id_t),\n+\t\t\t\t\t\t\t   wb_num, &zcdr, NULL);\n+\t\tMLX5_ASSERT(ret == wb_num);\n+\t\t__hws_cnt_r2rcpy(&zcdr, &zcdc, ret);\n+\t\trte_ring_enqueue_zc_elem_finish(reset_list, ret);\n \t\t/* write-back THIS counter too */\n-\t\tret = rte_ring_enqueue_burst_elem(cpool->wait_reset_list,\n-\t\t\t\tcnt_id, sizeof(cnt_id_t), 1, NULL);\n+\t\tret = rte_ring_enqueue_burst_elem(reset_list, cnt_id,\n+\t\t\t\t\t\t  sizeof(cnt_id_t), 1, NULL);\n \t}\n-\treturn ret == 1 ? 0 : -ENOENT;\n+\tMLX5_ASSERT(ret == 1);\n }\n \n /**\n@@ -482,15 +490,17 @@ mlx5_hws_cnt_pool_get(struct mlx5_hws_cnt_pool *cpool, uint32_t *queue,\n \t\treturn 0;\n \t}\n \tret = rte_ring_dequeue_zc_burst_elem_start(qcache, sizeof(cnt_id_t), 1,\n-\t\t\t&zcdc, NULL);\n+\t\t\t\t\t\t   &zcdc, NULL);\n \tif (unlikely(ret == 0)) { /* local cache is empty. */\n \t\trte_ring_dequeue_zc_elem_finish(qcache, 0);\n \t\t/* let's fetch from global free list. */\n \t\tret = mlx5_hws_cnt_pool_cache_fetch(cpool, *queue);\n \t\tif (unlikely(ret != 0))\n \t\t\treturn ret;\n-\t\trte_ring_dequeue_zc_burst_elem_start(qcache, sizeof(cnt_id_t),\n-\t\t\t\t1, &zcdc, NULL);\n+\t\tret = rte_ring_dequeue_zc_burst_elem_start(qcache,\n+\t\t\t\t\t\t\t   sizeof(cnt_id_t), 1,\n+\t\t\t\t\t\t\t   &zcdc, NULL);\n+\t\tMLX5_ASSERT(ret == 1);\n \t}\n \t/* get one from local cache. */\n \t*cnt_id = (*(cnt_id_t *)zcdc.ptr1);\n@@ -504,8 +514,10 @@ mlx5_hws_cnt_pool_get(struct mlx5_hws_cnt_pool *cpool, uint32_t *queue,\n \t\tret = mlx5_hws_cnt_pool_cache_fetch(cpool, *queue);\n \t\tif (unlikely(ret != 0))\n \t\t\treturn ret;\n-\t\trte_ring_dequeue_zc_burst_elem_start(qcache, sizeof(cnt_id_t),\n-\t\t\t\t1, &zcdc, NULL);\n+\t\tret = rte_ring_dequeue_zc_burst_elem_start(qcache,\n+\t\t\t\t\t\t\t   sizeof(cnt_id_t), 1,\n+\t\t\t\t\t\t\t   &zcdc, NULL);\n+\t\tMLX5_ASSERT(ret == 1);\n \t\t*cnt_id = *(cnt_id_t *)zcdc.ptr1;\n \t\tiidx = mlx5_hws_cnt_iidx(cpool, *cnt_id);\n \t}\n@@ -553,17 +565,13 @@ mlx5_hws_cnt_shared_get(struct mlx5_hws_cnt_pool *cpool, cnt_id_t *cnt_id,\n \treturn 0;\n }\n \n-static __rte_always_inline int\n+static __rte_always_inline void\n mlx5_hws_cnt_shared_put(struct mlx5_hws_cnt_pool *cpool, cnt_id_t *cnt_id)\n {\n-\tint ret;\n \tuint32_t iidx = mlx5_hws_cnt_iidx(cpool, *cnt_id);\n \n \tcpool->pool[iidx].share = 0;\n-\tret = mlx5_hws_cnt_pool_put(cpool, NULL, cnt_id);\n-\tif (unlikely(ret != 0))\n-\t\tcpool->pool[iidx].share = 1; /* fail to release, restore. */\n-\treturn ret;\n+\tmlx5_hws_cnt_pool_put(cpool, NULL, cnt_id);\n }\n \n static __rte_always_inline bool\n",
    "prefixes": [
        "5/5"
    ]
}