get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 124632,
    "url": "http://patches.dpdk.org/api/patches/124632/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1677718068-2412-13-git-send-email-roretzla@linux.microsoft.com/",
    "project": {
        "id": 1,
        "url": "http://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": "<1677718068-2412-13-git-send-email-roretzla@linux.microsoft.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1677718068-2412-13-git-send-email-roretzla@linux.microsoft.com",
    "date": "2023-03-02T00:47:43",
    "name": "[12/17] net/cxgbe: use previous value atomic fetch operations",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "65f4562314295608717b727f167c4f5765adb9cd",
    "submitter": {
        "id": 2077,
        "url": "http://patches.dpdk.org/api/people/2077/?format=api",
        "name": "Tyler Retzlaff",
        "email": "roretzla@linux.microsoft.com"
    },
    "delegate": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1677718068-2412-13-git-send-email-roretzla@linux.microsoft.com/mbox/",
    "series": [
        {
            "id": 27214,
            "url": "http://patches.dpdk.org/api/series/27214/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=27214",
            "date": "2023-03-02T00:47:32",
            "name": "use __atomic operations returning previous value",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/27214/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/124632/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/124632/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 3F06341DAF;\n\tThu,  2 Mar 2023 01:49:18 +0100 (CET)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id ABF3442D47;\n\tThu,  2 Mar 2023 01:48:17 +0100 (CET)",
            "from linux.microsoft.com (linux.microsoft.com [13.77.154.182])\n by mails.dpdk.org (Postfix) with ESMTP id 9AD3941611\n for <dev@dpdk.org>; Thu,  2 Mar 2023 01:48:03 +0100 (CET)",
            "by linux.microsoft.com (Postfix, from userid 1086)\n id 7D13520BC5E8; Wed,  1 Mar 2023 16:48:02 -0800 (PST)"
        ],
        "DKIM-Filter": "OpenDKIM Filter v2.11.0 linux.microsoft.com 7D13520BC5E8",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com;\n s=default; t=1677718082;\n bh=IhPtZx8nkaW8sXtaOz9D/aNblfi28Oe/GY8Fv6BqTkw=;\n h=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n b=VxIWs0V/5+w6EWHDsvEVq+buTMnQURjyF6VAIAXBQuO5VJmUzkjrWvDEU2BXUZkE5\n JlxBjJ8MP6QlWMbpivLH16TPDl7QVdoOFot8N/3ismdlHiBVD1Iq00GI2IY+IrDIkp\n D+wgvepLhoIKVbmLYl5b2ysqW2AWSckJNpsotsj0=",
        "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 12/17] net/cxgbe: use previous value atomic fetch operations",
        "Date": "Wed,  1 Mar 2023 16:47:43 -0800",
        "Message-Id": "<1677718068-2412-13-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/net/cxgbe/clip_tbl.c   |  2 +-\n drivers/net/cxgbe/cxgbe_main.c | 12 ++++++------\n drivers/net/cxgbe/l2t.c        |  4 ++--\n drivers/net/cxgbe/mps_tcam.c   |  2 +-\n drivers/net/cxgbe/smt.c        |  4 ++--\n 5 files changed, 12 insertions(+), 12 deletions(-)",
    "diff": "diff --git a/drivers/net/cxgbe/clip_tbl.c b/drivers/net/cxgbe/clip_tbl.c\nindex 072fc74..ce715f2 100644\n--- a/drivers/net/cxgbe/clip_tbl.c\n+++ b/drivers/net/cxgbe/clip_tbl.c\n@@ -129,7 +129,7 @@ static struct clip_entry *t4_clip_alloc(struct rte_eth_dev *dev,\n \t\t\t\tce->type = FILTER_TYPE_IPV4;\n \t\t\t}\n \t\t} else {\n-\t\t\t__atomic_add_fetch(&ce->refcnt, 1, __ATOMIC_RELAXED);\n+\t\t\t__atomic_fetch_add(&ce->refcnt, 1, __ATOMIC_RELAXED);\n \t\t}\n \t\tt4_os_unlock(&ce->lock);\n \t}\ndiff --git a/drivers/net/cxgbe/cxgbe_main.c b/drivers/net/cxgbe/cxgbe_main.c\nindex f8dd833..c479454 100644\n--- a/drivers/net/cxgbe/cxgbe_main.c\n+++ b/drivers/net/cxgbe/cxgbe_main.c\n@@ -418,14 +418,14 @@ void cxgbe_remove_tid(struct tid_info *t, unsigned int chan, unsigned int tid,\n \n \tif (t->tid_tab[tid]) {\n \t\tt->tid_tab[tid] = NULL;\n-\t\t__atomic_sub_fetch(&t->conns_in_use, 1, __ATOMIC_RELAXED);\n+\t\t__atomic_fetch_sub(&t->conns_in_use, 1, __ATOMIC_RELAXED);\n \t\tif (t->hash_base && tid >= t->hash_base) {\n \t\t\tif (family == FILTER_TYPE_IPV4)\n-\t\t\t\t__atomic_sub_fetch(&t->hash_tids_in_use, 1,\n+\t\t\t\t__atomic_fetch_sub(&t->hash_tids_in_use, 1,\n \t\t\t\t\t\t   __ATOMIC_RELAXED);\n \t\t} else {\n \t\t\tif (family == FILTER_TYPE_IPV4)\n-\t\t\t\t__atomic_sub_fetch(&t->tids_in_use, 1,\n+\t\t\t\t__atomic_fetch_sub(&t->tids_in_use, 1,\n \t\t\t\t\t\t   __ATOMIC_RELAXED);\n \t\t}\n \t}\n@@ -448,15 +448,15 @@ void cxgbe_insert_tid(struct tid_info *t, void *data, unsigned int tid,\n \tt->tid_tab[tid] = data;\n \tif (t->hash_base && tid >= t->hash_base) {\n \t\tif (family == FILTER_TYPE_IPV4)\n-\t\t\t__atomic_add_fetch(&t->hash_tids_in_use, 1,\n+\t\t\t__atomic_fetch_add(&t->hash_tids_in_use, 1,\n \t\t\t\t\t   __ATOMIC_RELAXED);\n \t} else {\n \t\tif (family == FILTER_TYPE_IPV4)\n-\t\t\t__atomic_add_fetch(&t->tids_in_use, 1,\n+\t\t\t__atomic_fetch_add(&t->tids_in_use, 1,\n \t\t\t\t\t   __ATOMIC_RELAXED);\n \t}\n \n-\t__atomic_add_fetch(&t->conns_in_use, 1, __ATOMIC_RELAXED);\n+\t__atomic_fetch_add(&t->conns_in_use, 1, __ATOMIC_RELAXED);\n }\n \n /**\ndiff --git a/drivers/net/cxgbe/l2t.c b/drivers/net/cxgbe/l2t.c\nindex 66f5789..21f4019 100644\n--- a/drivers/net/cxgbe/l2t.c\n+++ b/drivers/net/cxgbe/l2t.c\n@@ -15,7 +15,7 @@\n void cxgbe_l2t_release(struct l2t_entry *e)\n {\n \tif (__atomic_load_n(&e->refcnt, __ATOMIC_RELAXED) != 0)\n-\t\t__atomic_sub_fetch(&e->refcnt, 1, __ATOMIC_RELAXED);\n+\t\t__atomic_fetch_sub(&e->refcnt, 1, __ATOMIC_RELAXED);\n }\n \n /**\n@@ -162,7 +162,7 @@ static struct l2t_entry *t4_l2t_alloc_switching(struct rte_eth_dev *dev,\n \t\t\t\tdev_debug(adap, \"Failed to write L2T entry: %d\",\n \t\t\t\t\t  ret);\n \t\t} else {\n-\t\t\t__atomic_add_fetch(&e->refcnt, 1, __ATOMIC_RELAXED);\n+\t\t\t__atomic_fetch_add(&e->refcnt, 1, __ATOMIC_RELAXED);\n \t\t}\n \t\tt4_os_unlock(&e->lock);\n \t}\ndiff --git a/drivers/net/cxgbe/mps_tcam.c b/drivers/net/cxgbe/mps_tcam.c\nindex abbf06e..017741f 100644\n--- a/drivers/net/cxgbe/mps_tcam.c\n+++ b/drivers/net/cxgbe/mps_tcam.c\n@@ -76,7 +76,7 @@ int cxgbe_mpstcam_alloc(struct port_info *pi, const u8 *eth_addr,\n \tt4_os_write_lock(&mpstcam->lock);\n \tentry = cxgbe_mpstcam_lookup(adap->mpstcam, eth_addr, mask);\n \tif (entry) {\n-\t\t__atomic_add_fetch(&entry->refcnt, 1, __ATOMIC_RELAXED);\n+\t\t__atomic_fetch_add(&entry->refcnt, 1, __ATOMIC_RELAXED);\n \t\tt4_os_write_unlock(&mpstcam->lock);\n \t\treturn entry->idx;\n \t}\ndiff --git a/drivers/net/cxgbe/smt.c b/drivers/net/cxgbe/smt.c\nindex 810c757..4e14a73 100644\n--- a/drivers/net/cxgbe/smt.c\n+++ b/drivers/net/cxgbe/smt.c\n@@ -170,7 +170,7 @@ static struct smt_entry *t4_smt_alloc_switching(struct rte_eth_dev *dev,\n \t\t\te->state = SMT_STATE_SWITCHING;\n \t\t\t__atomic_store_n(&e->refcnt, 1, __ATOMIC_RELAXED);\n \t\t} else {\n-\t\t\t__atomic_add_fetch(&e->refcnt, 1, __ATOMIC_RELAXED);\n+\t\t\t__atomic_fetch_add(&e->refcnt, 1, __ATOMIC_RELAXED);\n \t\t}\n \t\tt4_os_unlock(&e->lock);\n \t}\n@@ -196,7 +196,7 @@ struct smt_entry *cxgbe_smt_alloc_switching(struct rte_eth_dev *dev, u8 *smac)\n void cxgbe_smt_release(struct smt_entry *e)\n {\n \tif (__atomic_load_n(&e->refcnt, __ATOMIC_RELAXED) != 0)\n-\t\t__atomic_sub_fetch(&e->refcnt, 1, __ATOMIC_RELAXED);\n+\t\t__atomic_fetch_sub(&e->refcnt, 1, __ATOMIC_RELAXED);\n }\n \n /**\n",
    "prefixes": [
        "12/17"
    ]
}