get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 124633,
    "url": "http://patchwork.dpdk.org/api/patches/124633/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/1677718068-2412-16-git-send-email-roretzla@linux.microsoft.com/",
    "project": {
        "id": 1,
        "url": "http://patchwork.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": "<1677718068-2412-16-git-send-email-roretzla@linux.microsoft.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1677718068-2412-16-git-send-email-roretzla@linux.microsoft.com",
    "date": "2023-03-02T00:47:46",
    "name": "[15/17] drivers/common: use previous value atomic fetch operations",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "76959132c99612fba5690a03128e995acce8cc45",
    "submitter": {
        "id": 2077,
        "url": "http://patchwork.dpdk.org/api/people/2077/?format=api",
        "name": "Tyler Retzlaff",
        "email": "roretzla@linux.microsoft.com"
    },
    "delegate": {
        "id": 1,
        "url": "http://patchwork.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/1677718068-2412-16-git-send-email-roretzla@linux.microsoft.com/mbox/",
    "series": [
        {
            "id": 27214,
            "url": "http://patchwork.dpdk.org/api/series/27214/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=27214",
            "date": "2023-03-02T00:47:32",
            "name": "use __atomic operations returning previous value",
            "version": 1,
            "mbox": "http://patchwork.dpdk.org/series/27214/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/124633/comments/",
    "check": "success",
    "checks": "http://patchwork.dpdk.org/api/patches/124633/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 43A8C41DAF;\n\tThu,  2 Mar 2023 01:49:23 +0100 (CET)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id B80C942D4F;\n\tThu,  2 Mar 2023 01:48:18 +0100 (CET)",
            "from linux.microsoft.com (linux.microsoft.com [13.77.154.182])\n by mails.dpdk.org (Postfix) with ESMTP id E6B2A427EE\n for <dev@dpdk.org>; Thu,  2 Mar 2023 01:48:03 +0100 (CET)",
            "by linux.microsoft.com (Postfix, from userid 1086)\n id A15BA20BC5F0; Wed,  1 Mar 2023 16:48:02 -0800 (PST)"
        ],
        "DKIM-Filter": "OpenDKIM Filter v2.11.0 linux.microsoft.com A15BA20BC5F0",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com;\n s=default; t=1677718082;\n bh=MzKmYk5JmvrwSyVoDIHINoxiTSLeg2r7NfOum45qy/k=;\n h=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n b=Knnu6sPvQ+8R4jOUQpt0xsG2Pc3Qr+mk2g4mADi2bUjNJBfUY7l+WhRMynPAfe2Nw\n IvFsO+NFHIjjdHNYt6ICD+apN3dQ5PyDqTufvQ88WRYFVT4GioKZPX04OAEZr2W8H6\n lrRVB/J8HjHlDq5JDJs6lb0hPTOiCP+XavBfTBRo=",
        "From": "Tyler Retzlaff <roretzla@linux.microsoft.com>",
        "To": "dev@dpdk.org",
        "Cc": "Honnappa.Nagarahalli@arm.com, thomas@monjalon.net,\n Tyler Retzlaff <roretzla@linux.microsoft.com>",
        "Subject": "[PATCH 15/17] drivers/common: use previous value atomic fetch\n operations",
        "Date": "Wed,  1 Mar 2023 16:47:46 -0800",
        "Message-Id": "<1677718068-2412-16-git-send-email-roretzla@linux.microsoft.com>",
        "X-Mailer": "git-send-email 1.8.3.1",
        "In-Reply-To": "<1677718068-2412-1-git-send-email-roretzla@linux.microsoft.com>",
        "References": "<1677718068-2412-1-git-send-email-roretzla@linux.microsoft.com>",
        "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": "Use __atomic_fetch_{add,and,or,sub,xor} instead of\n__atomic_{add,and,or,sub,xor}_fetch when we have no interest in the\nresult of the operation.\n\nReduces unnecessary codegen that provided the result of the atomic\noperation that was not used.\n\nChange brings closer alignment with atomics available in C11 standard\nand will reduce review effort when they are integrated.\n\nSigned-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com>\n---\n drivers/common/cnxk/roc_nix_inl_dev.c   |  2 +-\n drivers/common/mlx5/mlx5_common_mr.c    |  2 +-\n drivers/common/mlx5/mlx5_common_utils.c | 10 +++++-----\n drivers/common/mlx5/mlx5_malloc.c       | 16 ++++++++--------\n 4 files changed, 15 insertions(+), 15 deletions(-)",
    "diff": "diff --git a/drivers/common/cnxk/roc_nix_inl_dev.c b/drivers/common/cnxk/roc_nix_inl_dev.c\nindex 6f60961..45d6f62 100644\n--- a/drivers/common/cnxk/roc_nix_inl_dev.c\n+++ b/drivers/common/cnxk/roc_nix_inl_dev.c\n@@ -741,7 +741,7 @@\n \t\t\tinl_dev->work_cb(&tmp, sa, (port_id << 8) | 0x1);\n \t\t\t__atomic_store_n(ring_base + tail_l + 1, 0ULL,\n \t\t\t\t\t __ATOMIC_RELAXED);\n-\t\t\t__atomic_add_fetch((uint32_t *)ring_base, 1,\n+\t\t\t__atomic_fetch_add((uint32_t *)ring_base, 1,\n \t\t\t\t\t   __ATOMIC_ACQ_REL);\n \t\t} else\n \t\t\tplt_err(\"Invalid SA\");\ndiff --git a/drivers/common/mlx5/mlx5_common_mr.c b/drivers/common/mlx5/mlx5_common_mr.c\nindex 0e1d243..9ebe398 100644\n--- a/drivers/common/mlx5/mlx5_common_mr.c\n+++ b/drivers/common/mlx5/mlx5_common_mr.c\n@@ -1650,7 +1650,7 @@ struct mlx5_mempool_get_extmem_data {\n \tunsigned int i;\n \n \tfor (i = 0; i < mpr->mrs_n; i++)\n-\t\t__atomic_add_fetch(&mpr->mrs[i].refcnt, 1, __ATOMIC_RELAXED);\n+\t\t__atomic_fetch_add(&mpr->mrs[i].refcnt, 1, __ATOMIC_RELAXED);\n }\n \n /**\ndiff --git a/drivers/common/mlx5/mlx5_common_utils.c b/drivers/common/mlx5/mlx5_common_utils.c\nindex 58d744b..915a317 100644\n--- a/drivers/common/mlx5/mlx5_common_utils.c\n+++ b/drivers/common/mlx5/mlx5_common_utils.c\n@@ -217,7 +217,7 @@ struct mlx5_list_entry *\n \t\tentry->lcore_idx = (uint32_t)lcore_index;\n \t\tLIST_INSERT_HEAD(&l_inconst->cache[lcore_index]->h,\n \t\t\t\t entry, next);\n-\t\t__atomic_add_fetch(&l_inconst->count, 1, __ATOMIC_RELAXED);\n+\t\t__atomic_fetch_add(&l_inconst->count, 1, __ATOMIC_RELAXED);\n \t\tDRV_LOG(DEBUG, \"MLX5 list %s c%d entry %p new: %u.\",\n \t\t\tl_const->name, lcore_index,\n \t\t\t(void *)entry, entry->ref_cnt);\n@@ -254,7 +254,7 @@ struct mlx5_list_entry *\n \tl_inconst->gen_cnt++;\n \trte_rwlock_write_unlock(&l_inconst->lock);\n \tLIST_INSERT_HEAD(&l_inconst->cache[lcore_index]->h, local_entry, next);\n-\t__atomic_add_fetch(&l_inconst->count, 1, __ATOMIC_RELAXED);\n+\t__atomic_fetch_add(&l_inconst->count, 1, __ATOMIC_RELAXED);\n \tDRV_LOG(DEBUG, \"mlx5 list %s entry %p new: %u.\", l_const->name,\n \t\t(void *)entry, entry->ref_cnt);\n \treturn local_entry;\n@@ -294,11 +294,11 @@ struct mlx5_list_entry *\n \t\telse\n \t\t\tl_const->cb_remove(l_const->ctx, entry);\n \t} else {\n-\t\t__atomic_add_fetch(&l_inconst->cache[entry->lcore_idx]->inv_cnt,\n+\t\t__atomic_fetch_add(&l_inconst->cache[entry->lcore_idx]->inv_cnt,\n \t\t\t\t   1, __ATOMIC_RELAXED);\n \t}\n \tif (!l_const->lcores_share) {\n-\t\t__atomic_sub_fetch(&l_inconst->count, 1, __ATOMIC_RELAXED);\n+\t\t__atomic_fetch_sub(&l_inconst->count, 1, __ATOMIC_RELAXED);\n \t\tDRV_LOG(DEBUG, \"mlx5 list %s entry %p removed.\",\n \t\t\tl_const->name, (void *)entry);\n \t\treturn 0;\n@@ -310,7 +310,7 @@ struct mlx5_list_entry *\n \t\tLIST_REMOVE(gentry, next);\n \t\trte_rwlock_write_unlock(&l_inconst->lock);\n \t\tl_const->cb_remove(l_const->ctx, gentry);\n-\t\t__atomic_sub_fetch(&l_inconst->count, 1, __ATOMIC_RELAXED);\n+\t\t__atomic_fetch_sub(&l_inconst->count, 1, __ATOMIC_RELAXED);\n \t\tDRV_LOG(DEBUG, \"mlx5 list %s entry %p removed.\",\n \t\t\tl_const->name, (void *)gentry);\n \t\treturn 0;\ndiff --git a/drivers/common/mlx5/mlx5_malloc.c b/drivers/common/mlx5/mlx5_malloc.c\nindex cef3b88..c58c41d 100644\n--- a/drivers/common/mlx5/mlx5_malloc.c\n+++ b/drivers/common/mlx5/mlx5_malloc.c\n@@ -99,7 +99,7 @@ struct mlx5_sys_mem {\n \t\t\trte_mem_virt2memseg_list(addr),\n \t\t\t__ATOMIC_RELAXED);\n #ifdef RTE_LIBRTE_MLX5_DEBUG\n-\t\t__atomic_add_fetch(&mlx5_sys_mem.msl_update, 1,\n+\t\t__atomic_fetch_add(&mlx5_sys_mem.msl_update, 1,\n \t\t\t\t   __ATOMIC_RELAXED);\n #endif\n \t}\n@@ -126,7 +126,7 @@ struct mlx5_sys_mem {\n \t\tif (!rte_mem_virt2memseg_list(addr))\n \t\t\treturn false;\n #ifdef RTE_LIBRTE_MLX5_DEBUG\n-\t\t__atomic_add_fetch(&mlx5_sys_mem.msl_miss, 1, __ATOMIC_RELAXED);\n+\t\t__atomic_fetch_add(&mlx5_sys_mem.msl_miss, 1, __ATOMIC_RELAXED);\n #endif\n \t}\n \treturn true;\n@@ -185,7 +185,7 @@ struct mlx5_sys_mem {\n \t\tmlx5_mem_update_msl(addr);\n #ifdef RTE_LIBRTE_MLX5_DEBUG\n \t\tif (addr)\n-\t\t\t__atomic_add_fetch(&mlx5_sys_mem.malloc_rte, 1,\n+\t\t\t__atomic_fetch_add(&mlx5_sys_mem.malloc_rte, 1,\n \t\t\t\t\t   __ATOMIC_RELAXED);\n #endif\n \t\treturn addr;\n@@ -199,7 +199,7 @@ struct mlx5_sys_mem {\n \t\taddr = malloc(size);\n #ifdef RTE_LIBRTE_MLX5_DEBUG\n \tif (addr)\n-\t\t__atomic_add_fetch(&mlx5_sys_mem.malloc_sys, 1,\n+\t\t__atomic_fetch_add(&mlx5_sys_mem.malloc_sys, 1,\n \t\t\t\t   __ATOMIC_RELAXED);\n #endif\n \treturn addr;\n@@ -233,7 +233,7 @@ struct mlx5_sys_mem {\n \t\tmlx5_mem_update_msl(new_addr);\n #ifdef RTE_LIBRTE_MLX5_DEBUG\n \t\tif (new_addr)\n-\t\t\t__atomic_add_fetch(&mlx5_sys_mem.realloc_rte, 1,\n+\t\t\t__atomic_fetch_add(&mlx5_sys_mem.realloc_rte, 1,\n \t\t\t\t\t   __ATOMIC_RELAXED);\n #endif\n \t\treturn new_addr;\n@@ -246,7 +246,7 @@ struct mlx5_sys_mem {\n \tnew_addr = realloc(addr, size);\n #ifdef RTE_LIBRTE_MLX5_DEBUG\n \tif (new_addr)\n-\t\t__atomic_add_fetch(&mlx5_sys_mem.realloc_sys, 1,\n+\t\t__atomic_fetch_add(&mlx5_sys_mem.realloc_sys, 1,\n \t\t\t\t   __ATOMIC_RELAXED);\n #endif\n \treturn new_addr;\n@@ -259,13 +259,13 @@ struct mlx5_sys_mem {\n \t\treturn;\n \tif (!mlx5_mem_is_rte(addr)) {\n #ifdef RTE_LIBRTE_MLX5_DEBUG\n-\t\t__atomic_add_fetch(&mlx5_sys_mem.free_sys, 1,\n+\t\t__atomic_fetch_add(&mlx5_sys_mem.free_sys, 1,\n \t\t\t\t   __ATOMIC_RELAXED);\n #endif\n \t\tmlx5_os_free(addr);\n \t} else {\n #ifdef RTE_LIBRTE_MLX5_DEBUG\n-\t\t__atomic_add_fetch(&mlx5_sys_mem.free_rte, 1,\n+\t\t__atomic_fetch_add(&mlx5_sys_mem.free_rte, 1,\n \t\t\t\t   __ATOMIC_RELAXED);\n #endif\n \t\trte_free(addr);\n",
    "prefixes": [
        "15/17"
    ]
}