get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 74912,
    "url": "http://patches.dpdk.org/api/patches/74912/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20200728063439.23114-14-ajit.khaparde@broadcom.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": "<20200728063439.23114-14-ajit.khaparde@broadcom.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20200728063439.23114-14-ajit.khaparde@broadcom.com",
    "date": "2020-07-28T06:34:30",
    "name": "[v4,13/22] net/bnxt: modify ulp mapper to use tbl search",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "4a41ca75ac42a33c2c0e847407adac086d8e8cec",
    "submitter": {
        "id": 501,
        "url": "http://patches.dpdk.org/api/people/501/?format=api",
        "name": "Ajit Khaparde",
        "email": "ajit.khaparde@broadcom.com"
    },
    "delegate": {
        "id": 1766,
        "url": "http://patches.dpdk.org/api/users/1766/?format=api",
        "username": "ajitkhaparde",
        "first_name": "Ajit",
        "last_name": "Khaparde",
        "email": "ajit.khaparde@broadcom.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20200728063439.23114-14-ajit.khaparde@broadcom.com/mbox/",
    "series": [
        {
            "id": 11349,
            "url": "http://patches.dpdk.org/api/series/11349/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=11349",
            "date": "2020-07-28T06:34:17",
            "name": "bnxt patches",
            "version": 4,
            "mbox": "http://patches.dpdk.org/series/11349/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/74912/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/74912/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 dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 0B94EA0521;\n\tTue, 28 Jul 2020 08:37:38 +0200 (CEST)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 7FEC21C1B3;\n\tTue, 28 Jul 2020 08:35:43 +0200 (CEST)",
            "from mail-wr1-f98.google.com (mail-wr1-f98.google.com\n [209.85.221.98]) by dpdk.org (Postfix) with ESMTP id D293F1C122\n for <dev@dpdk.org>; Tue, 28 Jul 2020 08:35:17 +0200 (CEST)",
            "by mail-wr1-f98.google.com with SMTP id 88so17076590wrh.3\n for <dev@dpdk.org>; Mon, 27 Jul 2020 23:35:17 -0700 (PDT)",
            "from localhost.localdomain ([192.19.223.252])\n by smtp-relay.gmail.com with ESMTPS id r16sm30828wmh.29.2020.07.27.23.35.16\n (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);\n Mon, 27 Jul 2020 23:35:17 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com;\n s=google;\n h=from:to:cc:subject:date:message-id:in-reply-to:references\n :mime-version:content-transfer-encoding;\n bh=+8dpsFxwDYL4XhU+luIFm63o0JK5x98RGzdl1Cs2+1I=;\n b=d7KMszWgAGHcDTo/4Lg2FxrpgvrIk43wgbBzohKJI3LZgO46cYO6hEqJ6DDRLZorfr\n 90tXDZxKD+JeqMF4IkXuy7E3oWkJAKCbadNM/ZOM7nKalNl44VysbWnmJAFU5rMKDCq+\n LAIc9rENf+qao+gyoL6DY8mSuHS3VZpGM31ro=",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20161025;\n h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\n :references:mime-version:content-transfer-encoding;\n bh=+8dpsFxwDYL4XhU+luIFm63o0JK5x98RGzdl1Cs2+1I=;\n b=YxcTvvji1XAWQY7td1GixhsoVCYmi2SRoN+x7b2M+H/ViSihyM4ZcQlWM7NEwVy+Mh\n tE3sfmUBDmiA0h1V8R4AWZjvHb1ZpvnxcI+1df5TExSL8Zri7vOcZAfgWUYmbBMbRkRd\n Xzf2Lj5nA26dQGhjhDFIS5Sfg5pqHgnikbShyWaU//mFWYaDHiwcYk1MFf0OmVTjsOej\n SkXHRWxkKNOs1AHOPrKUJ3BqDLgAPbPE4DgYy0NZBpx4bsQaRArC2zFFZMMCLPIld/tU\n tqhlPhIKj+AQby+g4Nl0RQlMhwUr+qeaBxSTtEyYp/ew//8+vhVwgibjGzSNK0c1H4XE\n +piA==",
        "X-Gm-Message-State": "AOAM532sy622bwAk02ZL54yJ6gCIqp3mp8StS/cu/JSgTLBC7SNRWFP/\n WQeGMksJDUPAm8VRDLCmVUrh6RUNlYeGtT7BAgu1DEc1m3I+Y1GTZMopHELpObyCZgLvl3PGf9l\n sDT+ac1tJ6pSYmWEUcfhp2BlsiTMh0p70EHDpFbvWR4uGcX3erhXhrzdFojIjlWeANo0i25X9uC\n OWhQ==",
        "X-Google-Smtp-Source": "\n ABdhPJyr5wXDn0nywUMUTD83EdBKo7B1eCfCBXYG6smV/K9XalQsO6rYMCVvtjTRomLXTnNSIHi38SoAex3l",
        "X-Received": "by 2002:adf:c401:: with SMTP id v1mr22497232wrf.379.1595918117339;\n Mon, 27 Jul 2020 23:35:17 -0700 (PDT)",
        "X-Relaying-Domain": "broadcom.com",
        "From": "Ajit Khaparde <ajit.khaparde@broadcom.com>",
        "To": "dev@dpdk.org",
        "Cc": "ferruh.yigit@intel.com, Mike Baucom <michael.baucom@broadcom.com>,\n Kishore Padmanabha <kishore.padmanabha@broadcom.com>",
        "Date": "Mon, 27 Jul 2020 23:34:30 -0700",
        "Message-Id": "<20200728063439.23114-14-ajit.khaparde@broadcom.com>",
        "X-Mailer": "git-send-email 2.21.1 (Apple Git-122.3)",
        "In-Reply-To": "<20200728063439.23114-1-ajit.khaparde@broadcom.com>",
        "References": "\n <CACZ4nht+F+XvmJ0_TvYCQTfUEwan3dmCNer9wRuRQsOetFtodQ@mail.gmail.com>\n <20200728063439.23114-1-ajit.khaparde@broadcom.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dpdk-dev] [PATCH v4 13/22] net/bnxt: modify ulp mapper to use tbl\n\tsearch",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "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",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "From: Mike Baucom <michael.baucom@broadcom.com>\n\nmodified ulp mappper to use the new tf_search_tbl_entry API.\nWhen search before allocation is requested, mapper calls\ntc_search_tbl_entry with the alloc flag.\n\n- On HIT, the result and table index is returned.\n- On MISS, the table index is returned but the result is\ncreated and the table entry is set.\n- On REJECT, the flow request is rejected.\n\nSigned-off-by: Mike Baucom <michael.baucom@broadcom.com>\nReviewed-by: Kishore Padmanabha <kishore.padmanabha@broadcom.com>\nReviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>\n---\n drivers/net/bnxt/tf_ulp/ulp_mapper.c | 75 +++++++++++++++++++---------\n 1 file changed, 51 insertions(+), 24 deletions(-)",
    "diff": "diff --git a/drivers/net/bnxt/tf_ulp/ulp_mapper.c b/drivers/net/bnxt/tf_ulp/ulp_mapper.c\nindex a071c0750..4dee65971 100644\n--- a/drivers/net/bnxt/tf_ulp/ulp_mapper.c\n+++ b/drivers/net/bnxt/tf_ulp/ulp_mapper.c\n@@ -1764,9 +1764,10 @@ ulp_mapper_index_tbl_process(struct bnxt_ulp_mapper_parms *parms,\n \tstruct ulp_blob\tdata;\n \tuint64_t idx = 0;\n \tuint16_t tmplen;\n-\tuint32_t i, num_flds;\n+\tuint32_t i, num_flds, index, hit;\n \tint32_t rc = 0, trc = 0;\n \tstruct tf_alloc_tbl_entry_parms\taparms = { 0 };\n+\tstruct tf_search_tbl_entry_parms srchparms = { 0 };\n \tstruct tf_set_tbl_entry_parms\tsparms = { 0 };\n \tstruct tf_free_tbl_entry_parms\tfree_parms = { 0 };\n \tuint32_t tbl_scope_id;\n@@ -1868,33 +1869,59 @@ ulp_mapper_index_tbl_process(struct bnxt_ulp_mapper_parms *parms,\n \t\treturn 0; /* success */\n \t}\n \n+\tindex = 0;\n+\thit = 0;\n \t/* Perform the tf table allocation by filling the alloc params */\n-\taparms.dir\t\t= tbl->direction;\n-\taparms.type\t\t= tbl->resource_type;\n-\taparms.search_enable\t= tbl->srch_b4_alloc;\n-\taparms.result\t\t= ulp_blob_data_get(&data, &tmplen);\n-\taparms.result_sz_in_bytes = ULP_BITS_2_BYTE(tmplen);\n-\taparms.tbl_scope_id\t= tbl_scope_id;\n-\n-\t/* All failures after the alloc succeeds require a free */\n-\trc = tf_alloc_tbl_entry(tfp, &aparms);\n-\tif (rc) {\n-\t\tBNXT_TF_DBG(ERR, \"Alloc table[%d][%s] failed rc=%d\\n\",\n-\t\t\t    aparms.type,\n-\t\t\t    (aparms.dir == TF_DIR_RX) ? \"RX\" : \"TX\",\n-\t\t\t    rc);\n-\t\treturn rc;\n-\t}\n+\tif (tbl->srch_b4_alloc) {\n+\t\tmemset(&srchparms, 0, sizeof(srchparms));\n+\t\tsrchparms.dir = tbl->direction;\n+\t\tsrchparms.type = tbl->resource_type;\n+\t\tsrchparms.alloc\t= 1;\n+\t\tsrchparms.result = ulp_blob_data_get(&data, &tmplen);\n+\t\tsrchparms.result_sz_in_bytes = ULP_BITS_2_BYTE(tmplen);\n+\t\tsrchparms.tbl_scope_id = tbl_scope_id;\n+\t\trc = tf_search_tbl_entry(tfp, &srchparms);\n+\t\tif (rc) {\n+\t\t\tBNXT_TF_DBG(ERR, \"Alloc table[%s][%s] failed rc=%d\\n\",\n+\t\t\t\t    tf_tbl_type_2_str(tbl->resource_type),\n+\t\t\t\t    tf_dir_2_str(tbl->direction), rc);\n+\t\t\treturn rc;\n+\t\t}\n+\t\tif (srchparms.search_status == REJECT) {\n+\t\t\tBNXT_TF_DBG(ERR, \"Alloc table[%s][%s] rejected.\\n\",\n+\t\t\t\t    tf_tbl_type_2_str(tbl->resource_type),\n+\t\t\t\t    tf_dir_2_str(tbl->direction));\n+\t\t\treturn -ENOMEM;\n+\t\t}\n+\t\tindex = srchparms.idx;\n+\t\thit = srchparms.hit;\n+\t} else {\n+\t\taparms.dir\t\t= tbl->direction;\n+\t\taparms.type\t\t= tbl->resource_type;\n+\t\taparms.search_enable\t= tbl->srch_b4_alloc;\n+\t\taparms.result\t\t= ulp_blob_data_get(&data, &tmplen);\n+\t\taparms.result_sz_in_bytes = ULP_BITS_2_BYTE(tmplen);\n+\t\taparms.tbl_scope_id\t= tbl_scope_id;\n \n+\t\t/* All failures after the alloc succeeds require a free */\n+\t\trc = tf_alloc_tbl_entry(tfp, &aparms);\n+\t\tif (rc) {\n+\t\t\tBNXT_TF_DBG(ERR, \"Alloc table[%s][%s] failed rc=%d\\n\",\n+\t\t\t\t    tf_tbl_type_2_str(tbl->resource_type),\n+\t\t\t\t    tf_dir_2_str(tbl->direction), rc);\n+\t\t\treturn rc;\n+\t\t}\n+\t\tindex = aparms.idx;\n+\t}\n \t/*\n \t * calculate the idx for the result record, for external EM the offset\n \t * needs to be shifted accordingly. If external non-inline table types\n \t * are used then need to revisit this logic.\n \t */\n-\tif (aparms.type == TF_TBL_TYPE_EXT)\n-\t\tidx = TF_ACT_REC_OFFSET_2_PTR(aparms.idx);\n+\tif (tbl->resource_type == TF_TBL_TYPE_EXT)\n+\t\tidx = TF_ACT_REC_OFFSET_2_PTR(index);\n \telse\n-\t\tidx = aparms.idx;\n+\t\tidx = index;\n \n \t/* Always storing values in Regfile in BE */\n \tidx = tfp_cpu_to_be_64(idx);\n@@ -1908,12 +1935,12 @@ ulp_mapper_index_tbl_process(struct bnxt_ulp_mapper_parms *parms,\n \t}\n \n \t/* Perform the tf table set by filling the set params */\n-\tif (!tbl->srch_b4_alloc || !aparms.hit) {\n+\tif (!tbl->srch_b4_alloc || !hit) {\n \t\tsparms.dir\t\t= tbl->direction;\n \t\tsparms.type\t\t= tbl->resource_type;\n \t\tsparms.data\t\t= ulp_blob_data_get(&data, &tmplen);\n \t\tsparms.data_sz_in_bytes = ULP_BITS_2_BYTE(tmplen);\n-\t\tsparms.idx\t\t= aparms.idx;\n+\t\tsparms.idx\t\t= index;\n \t\tsparms.tbl_scope_id\t= tbl_scope_id;\n \n \t\trc = tf_set_tbl_entry(tfp, &sparms);\n@@ -1933,7 +1960,7 @@ ulp_mapper_index_tbl_process(struct bnxt_ulp_mapper_parms *parms,\n \tfid_parms.resource_func\t= tbl->resource_func;\n \tfid_parms.resource_type\t= tbl->resource_type;\n \tfid_parms.resource_sub_type = tbl->resource_sub_type;\n-\tfid_parms.resource_hndl\t= aparms.idx;\n+\tfid_parms.resource_hndl\t= index;\n \tfid_parms.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_NO;\n \n \trc = ulp_flow_db_resource_add(parms->ulp_ctx,\n@@ -1960,7 +1987,7 @@ ulp_mapper_index_tbl_process(struct bnxt_ulp_mapper_parms *parms,\n \t */\n \tfree_parms.dir\t= tbl->direction;\n \tfree_parms.type\t= tbl->resource_type;\n-\tfree_parms.idx\t= aparms.idx;\n+\tfree_parms.idx\t= index;\n \tfree_parms.tbl_scope_id = tbl_scope_id;\n \n \ttrc = tf_free_tbl_entry(tfp, &free_parms);\n",
    "prefixes": [
        "v4",
        "13/22"
    ]
}