get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 30532,
    "url": "https://patches.dpdk.org/api/patches/30532/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/1508339034-171115-5-git-send-email-cristian.dumitrescu@intel.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": "<1508339034-171115-5-git-send-email-cristian.dumitrescu@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1508339034-171115-5-git-send-email-cristian.dumitrescu@intel.com",
    "date": "2017-10-18T15:03:21",
    "name": "[dpdk-dev,v3,04/18] librte_table: remove deprecated variable size key ext hash tables",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "1c046d52a7089dd64ec0b45c3fb9f0a5cdaae07d",
    "submitter": {
        "id": 19,
        "url": "https://patches.dpdk.org/api/people/19/?format=api",
        "name": "Cristian Dumitrescu",
        "email": "cristian.dumitrescu@intel.com"
    },
    "delegate": null,
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/1508339034-171115-5-git-send-email-cristian.dumitrescu@intel.com/mbox/",
    "series": [],
    "comments": "https://patches.dpdk.org/api/patches/30532/comments/",
    "check": "warning",
    "checks": "https://patches.dpdk.org/api/patches/30532/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id A100E1B1B2;\n\tWed, 18 Oct 2017 17:04:08 +0200 (CEST)",
            "from mga11.intel.com (mga11.intel.com [192.55.52.93])\n\tby dpdk.org (Postfix) with ESMTP id 2069B1B194\n\tfor <dev@dpdk.org>; Wed, 18 Oct 2017 17:04:00 +0200 (CEST)",
            "from orsmga004.jf.intel.com ([10.7.209.38])\n\tby fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t18 Oct 2017 08:04:00 -0700",
            "from silpixa00382658.ir.intel.com ([10.237.223.29])\n\tby orsmga004.jf.intel.com with ESMTP; 18 Oct 2017 08:03:59 -0700"
        ],
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos;i=\"5.43,397,1503385200\"; d=\"scan'208\";a=\"139672961\"",
        "From": "Cristian Dumitrescu <cristian.dumitrescu@intel.com>",
        "To": "dev@dpdk.org",
        "Cc": "thomas@monjalon.net",
        "Date": "Wed, 18 Oct 2017 16:03:21 +0100",
        "Message-Id": "<1508339034-171115-5-git-send-email-cristian.dumitrescu@intel.com>",
        "X-Mailer": "git-send-email 2.7.4",
        "In-Reply-To": "<1508339034-171115-1-git-send-email-cristian.dumitrescu@intel.com>",
        "References": "<1507634341-72277-2-git-send-email-cristian.dumitrescu@intel.com>\n\t<1508339034-171115-1-git-send-email-cristian.dumitrescu@intel.com>",
        "Subject": "[dpdk-dev] [PATCH v3 04/18] librte_table: remove deprecated\n\tvariable size key ext hash tables",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<http://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<http://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "The non-dosig version of the variable size key extendible bucket\nhash tables are removed. The remaining hash tables are renamed to\neliminate the dosig particle from their name.\n\nSigned-off-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>\n---\n .../pipeline/pipeline_flow_classification_be.c     |   2 +-\n lib/librte_table/rte_table_hash.h                  |   5 -\n lib/librte_table/rte_table_hash_ext.c              | 196 +--------------------\n test/test-pipeline/pipeline_hash.c                 |   2 +-\n 4 files changed, 8 insertions(+), 197 deletions(-)\n mode change 100644 => 100755 lib/librte_table/rte_table_hash.h\n mode change 100644 => 100755 lib/librte_table/rte_table_hash_ext.c",
    "diff": "diff --git a/examples/ip_pipeline/pipeline/pipeline_flow_classification_be.c b/examples/ip_pipeline/pipeline/pipeline_flow_classification_be.c\nindex 0f667e6..191cb15 100755\n--- a/examples/ip_pipeline/pipeline/pipeline_flow_classification_be.c\n+++ b/examples/ip_pipeline/pipeline/pipeline_flow_classification_be.c\n@@ -552,7 +552,7 @@ static void *pipeline_fc_init(struct pipeline_params *params,\n \t\t\tbreak;\n \n \t\tdefault:\n-\t\t\ttable_params.ops = &rte_table_hash_ext_dosig_ops;\n+\t\t\ttable_params.ops = &rte_table_hash_ext_ops;\n \t\t\ttable_params.arg_create = &table_hash_params;\n \t\t}\n \ndiff --git a/lib/librte_table/rte_table_hash.h b/lib/librte_table/rte_table_hash.h\nold mode 100644\nnew mode 100755\nindex 57c6073..0eb23a7\n--- a/lib/librte_table/rte_table_hash.h\n+++ b/lib/librte_table/rte_table_hash.h\n@@ -135,13 +135,8 @@ struct rte_table_hash_ext_params {\n \tuint32_t key_offset;\n };\n \n-/** Extendible bucket hash table operations for pre-computed key signature */\n extern struct rte_table_ops rte_table_hash_ext_ops;\n \n-/** Extendible bucket hash table operations for key signature computed on\n-\tlookup (\"do-sig\") */\n-extern struct rte_table_ops rte_table_hash_ext_dosig_ops;\n-\n /** LRU hash table parameters */\n struct rte_table_hash_lru_params {\n \t/** Key size (number of bytes) */\ndiff --git a/lib/librte_table/rte_table_hash_ext.c b/lib/librte_table/rte_table_hash_ext.c\nold mode 100644\nnew mode 100755\nindex e718102..c4824c3\n--- a/lib/librte_table/rte_table_hash_ext.c\n+++ b/lib/librte_table/rte_table_hash_ext.c\n@@ -437,8 +437,7 @@ static int rte_table_hash_ext_lookup_unoptimized(\n \tstruct rte_mbuf **pkts,\n \tuint64_t pkts_mask,\n \tuint64_t *lookup_hit_mask,\n-\tvoid **entries,\n-\tint dosig)\n+\tvoid **entries)\n {\n \tstruct rte_table_hash *t = (struct rte_table_hash *) table;\n \tuint64_t pkts_mask_out = 0;\n@@ -458,11 +457,7 @@ static int rte_table_hash_ext_lookup_unoptimized(\n \n \t\tpkt = pkts[pkt_index];\n \t\tkey = RTE_MBUF_METADATA_UINT8_PTR(pkt, t->key_offset);\n-\t\tif (dosig)\n-\t\t\tsig = (uint64_t) t->f_hash(key, t->key_size, t->seed);\n-\t\telse\n-\t\t\tsig = RTE_MBUF_METADATA_UINT32(pkt,\n-\t\t\t\tt->signature_offset);\n+\t\tsig = (uint64_t) t->f_hash(key, t->key_size, t->seed);\n \n \t\tbkt_index = sig & t->bucket_mask;\n \t\tbkt0 = &t->buckets[bkt_index];\n@@ -685,38 +680,7 @@ static int rte_table_hash_ext_lookup_unoptimized(\n \trte_prefetch0(RTE_MBUF_METADATA_UINT8_PTR(mbuf01, key_offset));\\\n }\n \n-#define lookup2_stage1(t, g, pkts, pkt10_index, pkt11_index)\t\t\\\n-{\t\t\t\t\t\t\t\t\t\\\n-\tstruct grinder *g10, *g11;\t\t\t\t\t\\\n-\tuint64_t sig10, sig11, bkt10_index, bkt11_index;\t\t\\\n-\tstruct rte_mbuf *mbuf10, *mbuf11;\t\t\t\t\\\n-\tstruct bucket *bkt10, *bkt11, *buckets = t->buckets;\t\t\\\n-\tuint64_t bucket_mask = t->bucket_mask;\t\t\t\t\\\n-\tuint32_t signature_offset = t->signature_offset;\t\t\\\n-\t\t\t\t\t\t\t\t\t\\\n-\tmbuf10 = pkts[pkt10_index];\t\t\t\t\t\\\n-\tsig10 = (uint64_t) RTE_MBUF_METADATA_UINT32(mbuf10, signature_offset);\\\n-\tbkt10_index = sig10 & bucket_mask;\t\t\t\t\\\n-\tbkt10 = &buckets[bkt10_index];\t\t\t\t\t\\\n-\t\t\t\t\t\t\t\t\t\\\n-\tmbuf11 = pkts[pkt11_index];\t\t\t\t\t\\\n-\tsig11 = (uint64_t) RTE_MBUF_METADATA_UINT32(mbuf11, signature_offset);\\\n-\tbkt11_index = sig11 & bucket_mask;\t\t\t\t\\\n-\tbkt11 = &buckets[bkt11_index];\t\t\t\t\t\\\n-\t\t\t\t\t\t\t\t\t\\\n-\trte_prefetch0(bkt10);\t\t\t\t\t\t\\\n-\trte_prefetch0(bkt11);\t\t\t\t\t\t\\\n-\t\t\t\t\t\t\t\t\t\\\n-\tg10 = &g[pkt10_index];\t\t\t\t\t\t\\\n-\tg10->sig = sig10;\t\t\t\t\t\t\\\n-\tg10->bkt = bkt10;\t\t\t\t\t\t\\\n-\t\t\t\t\t\t\t\t\t\\\n-\tg11 = &g[pkt11_index];\t\t\t\t\t\t\\\n-\tg11->sig = sig11;\t\t\t\t\t\t\\\n-\tg11->bkt = bkt11;\t\t\t\t\t\t\\\n-}\n-\n-#define lookup2_stage1_dosig(t, g, pkts, pkt10_index, pkt11_index)\t\\\n+#define lookup2_stage1(t, g, pkts, pkt10_index, pkt11_index)\t\\\n {\t\t\t\t\t\t\t\t\t\\\n \tstruct grinder *g10, *g11;\t\t\t\t\t\\\n \tuint64_t sig10, sig11, bkt10_index, bkt11_index;\t\t\\\n@@ -874,7 +838,7 @@ static int rte_table_hash_ext_lookup(\n \t/* Cannot run the pipeline with less than 7 packets */\n \tif (__builtin_popcountll(pkts_mask) < 7) {\n \t\tstatus = rte_table_hash_ext_lookup_unoptimized(table, pkts,\n-\t\t\tpkts_mask, lookup_hit_mask, entries, 0);\n+\t\t\tpkts_mask, lookup_hit_mask, entries);\n \t\tRTE_TABLE_HASH_EXT_STATS_PKTS_LOOKUP_MISS(t, n_pkts_in -\n \t\t\t\t__builtin_popcountll(*lookup_hit_mask));\n \t\treturn status;\n@@ -982,144 +946,7 @@ static int rte_table_hash_ext_lookup(\n \t\tuint64_t pkts_mask_out_slow = 0;\n \n \t\tstatus = rte_table_hash_ext_lookup_unoptimized(table, pkts,\n-\t\t\tpkts_mask_match_many, &pkts_mask_out_slow, entries, 0);\n-\t\tpkts_mask_out |= pkts_mask_out_slow;\n-\t}\n-\n-\t*lookup_hit_mask = pkts_mask_out;\n-\tRTE_TABLE_HASH_EXT_STATS_PKTS_LOOKUP_MISS(t, n_pkts_in - __builtin_popcountll(pkts_mask_out));\n-\treturn status;\n-}\n-\n-static int rte_table_hash_ext_lookup_dosig(\n-\tvoid *table,\n-\tstruct rte_mbuf **pkts,\n-\tuint64_t pkts_mask,\n-\tuint64_t *lookup_hit_mask,\n-\tvoid **entries)\n-{\n-\tstruct rte_table_hash *t = (struct rte_table_hash *) table;\n-\tstruct grinder *g = t->grinders;\n-\tuint64_t pkt00_index, pkt01_index, pkt10_index, pkt11_index;\n-\tuint64_t pkt20_index, pkt21_index, pkt30_index, pkt31_index;\n-\tuint64_t pkts_mask_out = 0, pkts_mask_match_many = 0;\n-\tint status = 0;\n-\n-\t__rte_unused uint32_t n_pkts_in = __builtin_popcountll(pkts_mask);\n-\tRTE_TABLE_HASH_EXT_STATS_PKTS_IN_ADD(t, n_pkts_in);\n-\n-\t/* Cannot run the pipeline with less than 7 packets */\n-\tif (__builtin_popcountll(pkts_mask) < 7) {\n-\t\tstatus = rte_table_hash_ext_lookup_unoptimized(table, pkts,\n-\t\t\tpkts_mask, lookup_hit_mask, entries, 1);\n-\t\tRTE_TABLE_HASH_EXT_STATS_PKTS_LOOKUP_MISS(t, n_pkts_in -\n-\t\t\t\t__builtin_popcountll(*lookup_hit_mask));\n-\t\treturn status;\n-\t}\n-\n-\t/* Pipeline stage 0 */\n-\tlookup2_stage0(t, g, pkts, pkts_mask, pkt00_index, pkt01_index);\n-\n-\t/* Pipeline feed */\n-\tpkt10_index = pkt00_index;\n-\tpkt11_index = pkt01_index;\n-\n-\t/* Pipeline stage 0 */\n-\tlookup2_stage0(t, g, pkts, pkts_mask, pkt00_index, pkt01_index);\n-\n-\t/* Pipeline stage 1 */\n-\tlookup2_stage1_dosig(t, g, pkts, pkt10_index, pkt11_index);\n-\n-\t/* Pipeline feed */\n-\tpkt20_index = pkt10_index;\n-\tpkt21_index = pkt11_index;\n-\tpkt10_index = pkt00_index;\n-\tpkt11_index = pkt01_index;\n-\n-\t/* Pipeline stage 0 */\n-\tlookup2_stage0(t, g, pkts, pkts_mask, pkt00_index, pkt01_index);\n-\n-\t/* Pipeline stage 1 */\n-\tlookup2_stage1_dosig(t, g, pkts, pkt10_index, pkt11_index);\n-\n-\t/* Pipeline stage 2 */\n-\tlookup2_stage2(t, g, pkt20_index, pkt21_index, pkts_mask_match_many);\n-\n-\t/*\n-\t* Pipeline run\n-\t*\n-\t*/\n-\tfor ( ; pkts_mask; ) {\n-\t\t/* Pipeline feed */\n-\t\tpkt30_index = pkt20_index;\n-\t\tpkt31_index = pkt21_index;\n-\t\tpkt20_index = pkt10_index;\n-\t\tpkt21_index = pkt11_index;\n-\t\tpkt10_index = pkt00_index;\n-\t\tpkt11_index = pkt01_index;\n-\n-\t\t/* Pipeline stage 0 */\n-\t\tlookup2_stage0_with_odd_support(t, g, pkts, pkts_mask,\n-\t\t\tpkt00_index, pkt01_index);\n-\n-\t\t/* Pipeline stage 1 */\n-\t\tlookup2_stage1_dosig(t, g, pkts, pkt10_index, pkt11_index);\n-\n-\t\t/* Pipeline stage 2 */\n-\t\tlookup2_stage2(t, g, pkt20_index, pkt21_index,\n-\t\t\tpkts_mask_match_many);\n-\n-\t\t/* Pipeline stage 3 */\n-\t\tlookup2_stage3(t, g, pkts, pkt30_index, pkt31_index,\n-\t\t\tpkts_mask_out, entries);\n-\t}\n-\n-\t/* Pipeline feed */\n-\tpkt30_index = pkt20_index;\n-\tpkt31_index = pkt21_index;\n-\tpkt20_index = pkt10_index;\n-\tpkt21_index = pkt11_index;\n-\tpkt10_index = pkt00_index;\n-\tpkt11_index = pkt01_index;\n-\n-\t/* Pipeline stage 1 */\n-\tlookup2_stage1_dosig(t, g, pkts, pkt10_index, pkt11_index);\n-\n-\t/* Pipeline stage 2 */\n-\tlookup2_stage2(t, g, pkt20_index, pkt21_index, pkts_mask_match_many);\n-\n-\t/* Pipeline stage 3 */\n-\tlookup2_stage3(t, g, pkts, pkt30_index, pkt31_index, pkts_mask_out,\n-\t\tentries);\n-\n-\t/* Pipeline feed */\n-\tpkt30_index = pkt20_index;\n-\tpkt31_index = pkt21_index;\n-\tpkt20_index = pkt10_index;\n-\tpkt21_index = pkt11_index;\n-\n-\t/* Pipeline stage 2 */\n-\tlookup2_stage2(t, g, pkt20_index, pkt21_index, pkts_mask_match_many);\n-\n-\t/* Pipeline stage 3 */\n-\tlookup2_stage3(t, g, pkts, pkt30_index, pkt31_index, pkts_mask_out,\n-\t\tentries);\n-\n-\t/* Pipeline feed */\n-\tpkt30_index = pkt20_index;\n-\tpkt31_index = pkt21_index;\n-\n-\t/* Pipeline stage 3 */\n-\tlookup2_stage3(t, g, pkts, pkt30_index, pkt31_index, pkts_mask_out,\n-\t\tentries);\n-\n-\t/* Slow path */\n-\tpkts_mask_match_many &= ~pkts_mask_out;\n-\tif (pkts_mask_match_many) {\n-\t\tuint64_t pkts_mask_out_slow = 0;\n-\n-\t\tstatus = rte_table_hash_ext_lookup_unoptimized(table, pkts,\n-\t\t\tpkts_mask_match_many, &pkts_mask_out_slow, entries, 1);\n+\t\t\tpkts_mask_match_many, &pkts_mask_out_slow, entries);\n \t\tpkts_mask_out |= pkts_mask_out_slow;\n \t}\n \n@@ -1142,7 +969,7 @@ rte_table_hash_ext_stats_read(void *table, struct rte_table_stats *stats, int cl\n \treturn 0;\n }\n \n-struct rte_table_ops rte_table_hash_ext_ops\t = {\n+struct rte_table_ops rte_table_hash_ext_ops  = {\n \t.f_create = rte_table_hash_ext_create,\n \t.f_free = rte_table_hash_ext_free,\n \t.f_add = rte_table_hash_ext_entry_add,\n@@ -1152,14 +979,3 @@ struct rte_table_ops rte_table_hash_ext_ops\t = {\n \t.f_lookup = rte_table_hash_ext_lookup,\n \t.f_stats = rte_table_hash_ext_stats_read,\n };\n-\n-struct rte_table_ops rte_table_hash_ext_dosig_ops  = {\n-\t.f_create = rte_table_hash_ext_create,\n-\t.f_free = rte_table_hash_ext_free,\n-\t.f_add = rte_table_hash_ext_entry_add,\n-\t.f_delete = rte_table_hash_ext_entry_delete,\n-\t.f_add_bulk = NULL,\n-\t.f_delete_bulk = NULL,\n-\t.f_lookup = rte_table_hash_ext_lookup_dosig,\n-\t.f_stats = rte_table_hash_ext_stats_read,\n-};\ndiff --git a/test/test-pipeline/pipeline_hash.c b/test/test-pipeline/pipeline_hash.c\nindex b4e4e08..e473c42 100644\n--- a/test/test-pipeline/pipeline_hash.c\n+++ b/test/test-pipeline/pipeline_hash.c\n@@ -187,7 +187,7 @@ app_main_loop_worker_pipeline_hash(void) {\n \t\t};\n \n \t\tstruct rte_pipeline_table_params table_params = {\n-\t\t\t.ops = &rte_table_hash_ext_dosig_ops,\n+\t\t\t.ops = &rte_table_hash_ext_ops,\n \t\t\t.arg_create = &table_hash_params,\n \t\t\t.f_action_hit = NULL,\n \t\t\t.f_action_miss = NULL,\n",
    "prefixes": [
        "dpdk-dev",
        "v3",
        "04/18"
    ]
}