get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 98693,
    "url": "http://patches.dpdk.org/api/patches/98693/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20210911153041.28510-3-venkatkumar.duvvuru@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": "<20210911153041.28510-3-venkatkumar.duvvuru@broadcom.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20210911153041.28510-3-venkatkumar.duvvuru@broadcom.com",
    "date": "2021-09-11T15:30:30",
    "name": "[v3,02/13] net/bnxt: enable dpool allocator",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "70e4f3b5e3150687707a1e6a49026f2e568b621f",
    "submitter": {
        "id": 1635,
        "url": "http://patches.dpdk.org/api/people/1635/?format=api",
        "name": "Venkat Duvvuru",
        "email": "venkatkumar.duvvuru@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/20210911153041.28510-3-venkatkumar.duvvuru@broadcom.com/mbox/",
    "series": [
        {
            "id": 18856,
            "url": "http://patches.dpdk.org/api/series/18856/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=18856",
            "date": "2021-09-11T15:30:28",
            "name": "enhancements to host based flow table management",
            "version": 3,
            "mbox": "http://patches.dpdk.org/series/18856/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/98693/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/98693/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 D840CA034F;\n\tSat, 11 Sep 2021 17:31:01 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id E3971410E8;\n\tSat, 11 Sep 2021 17:30:54 +0200 (CEST)",
            "from relay.smtp-ext.broadcom.com (relay.smtp-ext.broadcom.com\n [192.19.166.228])\n by mails.dpdk.org (Postfix) with ESMTP id A194840A4B\n for <dev@dpdk.org>; Sat, 11 Sep 2021 17:30:48 +0200 (CEST)",
            "from S60.dhcp.broadcom.net (unknown [10.123.66.170])\n (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))\n (No client certificate requested)\n by relay.smtp-ext.broadcom.com (Postfix) with ESMTPS id 2587180FA;\n Sat, 11 Sep 2021 08:30:46 -0700 (PDT)"
        ],
        "DKIM-Filter": "OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com 2587180FA",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com;\n s=dkimrelay; t=1631374248;\n bh=FCGX1wuFUTHlyGTb4aqFpRXqLcq3w9e6W36qGIZ+WZI=;\n h=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n b=vm+MncU40dhL3EFrclkeYeyQb+aNTj0V/iROy76a0lOZVlqlOJ+JU+krGiXpa+1q0\n iMO/o4VLLdOJwFitSSCDFzVEJPa9HtoStRkyJ+9S1Lo3Se+8N8vFU0CDoZ691lCHO8\n Mn9YYsAzr6PgQ/Ue85Dcr4pZ7/qHD1W43T/ww5HU=",
        "From": "Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>",
        "To": "dev@dpdk.org",
        "Cc": "Peter Spreadborough <peter.spreadborough@broadcom.com>",
        "Date": "Sat, 11 Sep 2021 21:00:30 +0530",
        "Message-Id": "<20210911153041.28510-3-venkatkumar.duvvuru@broadcom.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "In-Reply-To": "<20210911153041.28510-1-venkatkumar.duvvuru@broadcom.com>",
        "References": "<20210908050643.9989-1-venkatkumar.duvvuru@broadcom.com>\n <20210911153041.28510-1-venkatkumar.duvvuru@broadcom.com>",
        "Subject": "[dpdk-dev] [PATCH v3 02/13] net/bnxt: enable dpool allocator",
        "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",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "From: Peter Spreadborough <peter.spreadborough@broadcom.com>\n\nEnable dynamic entry allocator for EM SRAM entries.\nDeprecate static entry allocator code.\n\nSigned-off-by: Peter Spreadborough <peter.spreadborough@broadcom.com>\nReviewed-by: Randy Schacher <stuart.schacher@broadcom.com>\n---\n drivers/net/bnxt/tf_core/tf_device_p58.c      |   4 -\n drivers/net/bnxt/tf_core/tf_em.h              |  10 -\n .../net/bnxt/tf_core/tf_em_hash_internal.c    |  34 ----\n drivers/net/bnxt/tf_core/tf_em_internal.c     | 180 +-----------------\n 4 files changed, 1 insertion(+), 227 deletions(-)",
    "diff": "diff --git a/drivers/net/bnxt/tf_core/tf_device_p58.c b/drivers/net/bnxt/tf_core/tf_device_p58.c\nindex ce4d8c661f..808dcb1f77 100644\n--- a/drivers/net/bnxt/tf_core/tf_device_p58.c\n+++ b/drivers/net/bnxt/tf_core/tf_device_p58.c\n@@ -348,11 +348,7 @@ const struct tf_dev_ops tf_dev_ops_p58 = {\n \t.tf_dev_get_tcam_resc_info = tf_tcam_get_resc_info,\n \t.tf_dev_insert_int_em_entry = tf_em_hash_insert_int_entry,\n \t.tf_dev_delete_int_em_entry = tf_em_hash_delete_int_entry,\n-#if (TF_EM_ALLOC == 1)\n \t.tf_dev_move_int_em_entry = tf_em_move_int_entry,\n-#else\n-\t.tf_dev_move_int_em_entry = NULL,\n-#endif\n \t.tf_dev_insert_ext_em_entry = NULL,\n \t.tf_dev_delete_ext_em_entry = NULL,\n \t.tf_dev_get_em_resc_info = tf_em_get_resc_info,\ndiff --git a/drivers/net/bnxt/tf_core/tf_em.h b/drivers/net/bnxt/tf_core/tf_em.h\nindex 568071ad8c..074c128651 100644\n--- a/drivers/net/bnxt/tf_core/tf_em.h\n+++ b/drivers/net/bnxt/tf_core/tf_em.h\n@@ -13,16 +13,6 @@\n \n #include \"hcapi_cfa_defs.h\"\n \n-/**\n- * TF_EM_ALLOC\n- *\n- * 0: Use stack allocator with fixed sized entries\n- *    (default).\n- * 1: Use dpool allocator with variable size\n- *    entries.\n- */\n-#define TF_EM_ALLOC 0\n-\n #define TF_EM_MIN_ENTRIES     (1 << 15) /* 32K */\n #define TF_EM_MAX_ENTRIES     (1 << 27) /* 128M */\n \ndiff --git a/drivers/net/bnxt/tf_core/tf_em_hash_internal.c b/drivers/net/bnxt/tf_core/tf_em_hash_internal.c\nindex 098e8af07e..60273a798c 100644\n--- a/drivers/net/bnxt/tf_core/tf_em_hash_internal.c\n+++ b/drivers/net/bnxt/tf_core/tf_em_hash_internal.c\n@@ -22,9 +22,7 @@\n /**\n  * EM Pool\n  */\n-#if (TF_EM_ALLOC == 1)\n #include \"dpool.h\"\n-#endif\n \n /**\n  * Insert EM internal entry API\n@@ -41,11 +39,7 @@ tf_em_hash_insert_int_entry(struct tf *tfp,\n \tuint16_t rptr_index = 0;\n \tuint8_t rptr_entry = 0;\n \tuint8_t num_of_entries = 0;\n-#if (TF_EM_ALLOC == 1)\n \tstruct dpool *pool;\n-#else\n-\tstruct stack *pool;\n-#endif\n \tuint32_t index;\n \tuint32_t key0_hash;\n \tuint32_t key1_hash;\n@@ -62,7 +56,6 @@ tf_em_hash_insert_int_entry(struct tf *tfp,\n \trc = tf_session_get_device(tfs, &dev);\n \tif (rc)\n \t\treturn rc;\n-#if (TF_EM_ALLOC == 1)\n \tpool = (struct dpool *)tfs->em_pool[parms->dir];\n \tindex = dpool_alloc(pool,\n \t\t\t    parms->em_record_sz_in_bits / 128,\n@@ -74,16 +67,6 @@ tf_em_hash_insert_int_entry(struct tf *tfp,\n \t\t\t    tf_dir_2_str(parms->dir));\n \t\treturn -1;\n \t}\n-#else\n-\tpool = (struct stack *)tfs->em_pool[parms->dir];\n-\trc = stack_pop(pool, &index);\n-\tif (rc) {\n-\t\tPMD_DRV_LOG(ERR,\n-\t\t\t    \"%s, EM entry index allocation failed\\n\",\n-\t\t\t    tf_dir_2_str(parms->dir));\n-\t\treturn rc;\n-\t}\n-#endif\n \n \tif (dev->ops->tf_dev_cfa_key_hash == NULL)\n \t\treturn -EINVAL;\n@@ -103,11 +86,7 @@ tf_em_hash_insert_int_entry(struct tf *tfp,\n \t\t\t\t\t\t  &num_of_entries);\n \tif (rc) {\n \t\t/* Free the allocated index before returning */\n-#if (TF_EM_ALLOC == 1)\n \t\tdpool_free(pool, index);\n-#else\n-\t\tstack_push(pool, index);\n-#endif\n \t\treturn -1;\n \t}\n \n@@ -128,9 +107,7 @@ tf_em_hash_insert_int_entry(struct tf *tfp,\n \t\t\t\t     rptr_index,\n \t\t\t\t     rptr_entry,\n \t\t\t\t     0);\n-#if (TF_EM_ALLOC == 1)\n \tdpool_set_entry_data(pool, index, parms->flow_handle);\n-#endif\n \treturn 0;\n }\n \n@@ -146,11 +123,7 @@ tf_em_hash_delete_int_entry(struct tf *tfp,\n {\n \tint rc = 0;\n \tstruct tf_session *tfs;\n-#if (TF_EM_ALLOC == 1)\n \tstruct dpool *pool;\n-#else\n-\tstruct stack *pool;\n-#endif\n \t/* Retrieve the session information */\n \trc = tf_session_get_session(tfp, &tfs);\n \tif (rc) {\n@@ -165,19 +138,13 @@ tf_em_hash_delete_int_entry(struct tf *tfp,\n \n \t/* Return resource to pool */\n \tif (rc == 0) {\n-#if (TF_EM_ALLOC == 1)\n \t\tpool = (struct dpool *)tfs->em_pool[parms->dir];\n \t\tdpool_free(pool, parms->index);\n-#else\n-\t\tpool = (struct stack *)tfs->em_pool[parms->dir];\n-\t\tstack_push(pool, parms->index);\n-#endif\n \t}\n \n \treturn rc;\n }\n \n-#if (TF_EM_ALLOC == 1)\n /** Move EM internal entry API\n  *\n  * returns:\n@@ -212,4 +179,3 @@ tf_em_move_int_entry(struct tf *tfp,\n \n \treturn rc;\n }\n-#endif\ndiff --git a/drivers/net/bnxt/tf_core/tf_em_internal.c b/drivers/net/bnxt/tf_core/tf_em_internal.c\nindex 0720bb905d..2d57595f17 100644\n--- a/drivers/net/bnxt/tf_core/tf_em_internal.c\n+++ b/drivers/net/bnxt/tf_core/tf_em_internal.c\n@@ -22,145 +22,7 @@\n /**\n  * EM Pool\n  */\n-#if (TF_EM_ALLOC == 1)\n #include \"dpool.h\"\n-#else\n-\n-/**\n- * Create EM Tbl pool of memory indexes.\n- *\n- * [in] dir\n- *   direction\n- * [in] num_entries\n- *   number of entries to write\n- * [in] start\n- *   starting offset\n- *\n- * Return:\n- *  0       - Success, entry allocated - no search support\n- *  -ENOMEM -EINVAL -EOPNOTSUPP\n- *          - Failure, entry not allocated, out of resources\n- */\n-static int\n-tf_create_em_pool(struct tf_session *tfs,\n-\t\t  enum tf_dir dir,\n-\t\t  uint32_t num_entries,\n-\t\t  uint32_t start)\n-{\n-\tstruct tfp_calloc_parms parms;\n-\tuint32_t i, j;\n-\tint rc = 0;\n-\tstruct stack *pool;\n-\n-\t/*\n-\t * Allocate stack pool\n-\t */\n-\tparms.nitems = 1;\n-\tparms.size = sizeof(struct stack);\n-\tparms.alignment = 0;\n-\n-\trc = tfp_calloc(&parms);\n-\n-\tif (rc) {\n-\t\tTFP_DRV_LOG(ERR,\n-\t\t\t    \"%s, EM stack allocation failure %s\\n\",\n-\t\t\t    tf_dir_2_str(dir),\n-\t\t\t    strerror(-rc));\n-\t\treturn rc;\n-\t}\n-\n-\tpool = (struct stack *)parms.mem_va;\n-\ttfs->em_pool[dir] = (void *)pool;\n-\n-\t/* Assumes that num_entries has been checked before we get here */\n-\tparms.nitems = num_entries / TF_SESSION_EM_ENTRY_SIZE;\n-\tparms.size = sizeof(uint32_t);\n-\tparms.alignment = 0;\n-\n-\trc = tfp_calloc(&parms);\n-\n-\tif (rc) {\n-\t\tTFP_DRV_LOG(ERR,\n-\t\t\t    \"%s, EM pool allocation failure %s\\n\",\n-\t\t\t    tf_dir_2_str(dir),\n-\t\t\t    strerror(-rc));\n-\t\treturn rc;\n-\t}\n-\n-\t/* Create empty stack\n-\t */\n-\trc = stack_init(num_entries / TF_SESSION_EM_ENTRY_SIZE,\n-\t\t\t(uint32_t *)parms.mem_va,\n-\t\t\tpool);\n-\n-\tif (rc) {\n-\t\tTFP_DRV_LOG(ERR,\n-\t\t\t    \"%s, EM pool stack init failure %s\\n\",\n-\t\t\t    tf_dir_2_str(dir),\n-\t\t\t    strerror(-rc));\n-\t\tgoto cleanup;\n-\t}\n-\n-\t/* Fill pool with indexes\n-\t */\n-\tj = start + num_entries - TF_SESSION_EM_ENTRY_SIZE;\n-\n-\tfor (i = 0; i < (num_entries / TF_SESSION_EM_ENTRY_SIZE); i++) {\n-\t\trc = stack_push(pool, j);\n-\t\tif (rc) {\n-\t\t\tTFP_DRV_LOG(ERR,\n-\t\t\t\t    \"%s, EM pool stack push failure %s\\n\",\n-\t\t\t\t    tf_dir_2_str(dir),\n-\t\t\t\t    strerror(-rc));\n-\t\t\tgoto cleanup;\n-\t\t}\n-\n-\t\tj -= TF_SESSION_EM_ENTRY_SIZE;\n-\t}\n-\n-\tif (!stack_is_full(pool)) {\n-\t\trc = -EINVAL;\n-\t\tTFP_DRV_LOG(ERR,\n-\t\t\t    \"%s, EM pool stack failure %s\\n\",\n-\t\t\t    tf_dir_2_str(dir),\n-\t\t\t    strerror(-rc));\n-\t\tgoto cleanup;\n-\t}\n-\n-\treturn 0;\n-cleanup:\n-\ttfp_free((void *)parms.mem_va);\n-\ttfp_free((void *)tfs->em_pool[dir]);\n-\ttfs->em_pool[dir] = NULL;\n-\treturn rc;\n-}\n-\n-/**\n- * Create EM Tbl pool of memory indexes.\n- *\n- * [in] dir\n- *   direction\n- *\n- * Return:\n- */\n-static void\n-tf_free_em_pool(struct tf_session *tfs,\n-\t\tenum tf_dir dir)\n-{\n-\tstruct stack *pool = (struct stack *)tfs->em_pool[dir];\n-\tuint32_t *ptr;\n-\n-\tif (pool != NULL) {\n-\t\tptr = stack_items(pool);\n-\n-\t\tif (ptr != NULL)\n-\t\t\ttfp_free(ptr);\n-\n-\t\ttfp_free(pool);\n-\t\ttfs->em_pool[dir] = NULL;\n-\t}\n-}\n-#endif /* TF_EM_ALLOC != 1 */\n \n /**\n  * Insert EM internal entry API\n@@ -178,11 +40,7 @@ tf_em_insert_int_entry(struct tf *tfp,\n \tuint8_t rptr_entry = 0;\n \tuint8_t num_of_entries = 0;\n \tstruct tf_session *tfs;\n-#if (TF_EM_ALLOC == 1)\n \tstruct dpool *pool;\n-#else\n-\tstruct stack *pool;\n-#endif\n \tuint32_t index;\n \n \t/* Retrieve the session information */\n@@ -195,7 +53,6 @@ tf_em_insert_int_entry(struct tf *tfp,\n \t\treturn rc;\n \t}\n \n-#if (TF_EM_ALLOC == 1)\n \tpool = (struct dpool *)tfs->em_pool[parms->dir];\n \tindex = dpool_alloc(pool, TF_SESSION_EM_ENTRY_SIZE, 0);\n \tif (index == DP_INVALID_INDEX) {\n@@ -204,16 +61,6 @@ tf_em_insert_int_entry(struct tf *tfp,\n \t\t\t    tf_dir_2_str(parms->dir));\n \t\treturn -1;\n \t}\n-#else\n-\tpool = (struct stack *)tfs->em_pool[parms->dir];\n-\trc = stack_pop(pool, &index);\n-\tif (rc) {\n-\t\tPMD_DRV_LOG(ERR,\n-\t\t\t    \"%s, EM entry index allocation failed\\n\",\n-\t\t\t    tf_dir_2_str(parms->dir));\n-\t\treturn rc;\n-\t}\n-#endif\n \n \n \trptr_index = index;\n@@ -224,11 +71,7 @@ tf_em_insert_int_entry(struct tf *tfp,\n \t\t\t\t\t     &num_of_entries);\n \tif (rc) {\n \t\t/* Free the allocated index before returning */\n-#if (TF_EM_ALLOC == 1)\n \t\tdpool_free(pool, index);\n-#else\n-\t\tstack_push(pool, index);\n-#endif\n \t\treturn -1;\n \t}\n \tTF_SET_GFID(gfid,\n@@ -264,11 +107,7 @@ tf_em_delete_int_entry(struct tf *tfp,\n {\n \tint rc = 0;\n \tstruct tf_session *tfs;\n-#if (TF_EM_ALLOC == 1)\n \tstruct dpool *pool;\n-#else\n-\tstruct stack *pool;\n-#endif\n \t/* Retrieve the session information */\n \trc = tf_session_get_session(tfp, &tfs);\n \tif (rc) {\n@@ -283,19 +122,13 @@ tf_em_delete_int_entry(struct tf *tfp,\n \n \t/* Return resource to pool */\n \tif (rc == 0) {\n-#if (TF_EM_ALLOC == 1)\n \t\tpool = (struct dpool *)tfs->em_pool[parms->dir];\n \t\tdpool_free(pool, parms->index);\n-#else\n-\t\tpool = (struct stack *)tfs->em_pool[parms->dir];\n-\t\tstack_push(pool, parms->index);\n-#endif\n \t}\n \n \treturn rc;\n }\n \n-#if (TF_EM_ALLOC == 1)\n static int\n tf_em_move_callback(void *user_data,\n \t\t    uint64_t entry_data,\n@@ -342,7 +175,6 @@ tf_em_move_callback(void *user_data,\n \n \treturn rc;\n }\n-#endif\n \n int\n tf_em_int_bind(struct tf *tfp,\n@@ -434,7 +266,7 @@ tf_em_int_bind(struct tf *tfp,\n \t\t\t\t\t    tf_dir_2_str(i));\n \t\t\t\treturn rc;\n \t\t\t}\n-#if (TF_EM_ALLOC == 1)\n+\n \t\t\t/*\n \t\t\t * Allocate stack pool\n \t\t\t */\n@@ -460,12 +292,6 @@ tf_em_int_bind(struct tf *tfp,\n \t\t\t\t\t7,\n \t\t\t\t\t(void *)tfp,\n \t\t\t\t\ttf_em_move_callback);\n-#else\n-\t\t\trc = tf_create_em_pool(tfs,\n-\t\t\t\t       i,\n-\t\t\t\t       iparms.info->entry.stride,\n-\t\t\t\t       iparms.info->entry.start);\n-#endif\n \t\t\t/* Logging handled in tf_create_em_pool */\n \t\t\tif (rc)\n \t\t\t\treturn rc;\n@@ -501,11 +327,7 @@ tf_em_int_unbind(struct tf *tfp)\n \n \tif (!tf_session_is_shared_session(tfs)) {\n \t\tfor (i = 0; i < TF_DIR_MAX; i++)\n-#if (TF_EM_ALLOC == 1)\n \t\t\tdpool_free_all(tfs->em_pool[i]);\n-#else\n-\t\ttf_free_em_pool(tfs, i);\n-#endif\n \t}\n \n \trc = tf_session_get_db(tfp, TF_MODULE_TYPE_EM, &em_db_ptr);\n",
    "prefixes": [
        "v3",
        "02/13"
    ]
}