get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 100801,
    "url": "https://patches.dpdk.org/api/patches/100801/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20211007184350.73858-34-srikanth.k@oneconvergence.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": "<20211007184350.73858-34-srikanth.k@oneconvergence.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20211007184350.73858-34-srikanth.k@oneconvergence.com",
    "date": "2021-10-07T18:43:42",
    "name": "[v2,33/41] net/mlx5: add initialization routines",
    "commit_ref": null,
    "pull_url": null,
    "state": "deferred",
    "archived": false,
    "hash": "7375bf90a5528665215f479f496b1c1373d955ea",
    "submitter": {
        "id": 2368,
        "url": "https://patches.dpdk.org/api/people/2368/?format=api",
        "name": "Srikanth Kaka",
        "email": "srikanth.k@oneconvergence.com"
    },
    "delegate": {
        "id": 3268,
        "url": "https://patches.dpdk.org/api/users/3268/?format=api",
        "username": "rasland",
        "first_name": "Raslan",
        "last_name": "Darawsheh",
        "email": "rasland@nvidia.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20211007184350.73858-34-srikanth.k@oneconvergence.com/mbox/",
    "series": [
        {
            "id": 19455,
            "url": "https://patches.dpdk.org/api/series/19455/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=19455",
            "date": "2021-10-07T18:43:09",
            "name": "add MLX5 FreeBSD support",
            "version": 2,
            "mbox": "https://patches.dpdk.org/series/19455/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/100801/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/100801/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 7E3BBA034F;\n\tFri,  8 Oct 2021 12:58:57 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id B3AEC411F3;\n\tFri,  8 Oct 2021 12:56:34 +0200 (CEST)",
            "from mail-pg1-f171.google.com (mail-pg1-f171.google.com\n [209.85.215.171])\n by mails.dpdk.org (Postfix) with ESMTP id 42FB5411E0\n for <dev@dpdk.org>; Thu,  7 Oct 2021 20:45:44 +0200 (CEST)",
            "by mail-pg1-f171.google.com with SMTP id s75so654753pgs.5\n for <dev@dpdk.org>; Thu, 07 Oct 2021 11:45:44 -0700 (PDT)",
            "from srikanth-ThinkPad-T450.domain.name ([136.185.113.102])\n by smtp.gmail.com with ESMTPSA id c11sm3311586pji.38.2021.10.07.11.45.41\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Thu, 07 Oct 2021 11:45:42 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=oneconvergence.com; s=google;\n h=from:to:cc:subject:date:message-id:in-reply-to:references\n :mime-version:content-transfer-encoding;\n bh=bvXw9srbEcSwqNdCiOug/Djjidp5l/z4oRCLDfhT8pY=;\n b=OC2Oqd/5/+jBDEsEBHXAdp/M6YYEzEsrwgJyfqsUqLuFYnzsk+RJH4+8F4dYsjS4DC\n e9tJi0kCx/RRLx7s2pbK73OQz/wl1XQf+BKBViQFGpkzo34gi+p2C5FWvetbAvG713NU\n 3+c/whkxiD3N0PIlp+7H0X0Nd0gaGsJGIQw6Y=",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20210112;\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=bvXw9srbEcSwqNdCiOug/Djjidp5l/z4oRCLDfhT8pY=;\n b=eNxlGFIWdcI0Eu0gsPa/fCrmLbslSL8vLPw0Ck9oHNJSodZ9sBkwj+WdnOP4lc5a0d\n lxzU1XUSWXqzPG++4AQgnBsaY4/d5TC3g6TiyYWWCJux08nhrKulZyy0otnTPH7rh/It\n 74LV086HChy5A+QKX+zQ915ojmOLM8gFS8QQXTHuYA3tYlF8xpfTdc2uU6ZP19A51RFA\n dNlrrNN9Hn1xk9oGVoNaCtjgo/1EejFf/7y2tNMxuiP52KOj4mHZlK+aRv/mEA2j4EHz\n torxpHb/4jm+h1ldjsqyTArdQKbvVsIkMPo3uwtvj1RGifScM7AV1S/J09UhzY8fqCV8\n r4dw==",
        "X-Gm-Message-State": "AOAM530aMBOf+7tN0hYqbV+39bgkrzV5wNevu8Q2WkCN7hwPK/dAS3gy\n kkQJEZkgvCxEZaMBBh3BuIvOiw==",
        "X-Google-Smtp-Source": "\n ABdhPJyhzDmIc1qAaEt8+Pi1Y6dHhQNbg/S2XwzcTab5T88cYX7TKX3Etu0U4mP5kJOJIjV4DUO6wg==",
        "X-Received": "by 2002:a05:6a00:14c2:b0:44c:d483:4df3 with SMTP id\n w2-20020a056a0014c200b0044cd4834df3mr849476pfu.52.1633632343430;\n Thu, 07 Oct 2021 11:45:43 -0700 (PDT)",
        "From": "Srikanth Kaka <srikanth.k@oneconvergence.com>",
        "To": "Matan Azrad <matan@nvidia.com>,\n Viacheslav Ovsiienko <viacheslavo@nvidia.com>",
        "Cc": "dev@dpdk.org, Vag Singh <vag.singh@oneconvergence.com>,\n Anand Thulasiram <avelu@juniper.net>,\n Srikanth Kaka <srikanth.k@oneconvergence.com>",
        "Date": "Fri,  8 Oct 2021 00:13:42 +0530",
        "Message-Id": "<20211007184350.73858-34-srikanth.k@oneconvergence.com>",
        "X-Mailer": "git-send-email 2.30.2",
        "In-Reply-To": "<20211007184350.73858-1-srikanth.k@oneconvergence.com>",
        "References": "<20211007184350.73858-1-srikanth.k@oneconvergence.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "X-Mailman-Approved-At": "Fri, 08 Oct 2021 12:55:54 +0200",
        "Subject": "[dpdk-dev] [PATCH v2 33/41] net/mlx5: add initialization routines",
        "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": "The mlx5_init_once() and mlx5_init_shared_data() are equivalent to\ntheir Linux counterparts\n\nSigned-off-by: Srikanth Kaka <srikanth.k@oneconvergence.com>\nSigned-off-by: Vag Singh <vag.singh@oneconvergence.com>\nSigned-off-by: Anand Thulasiram <avelu@juniper.net>\n---\n drivers/net/mlx5/freebsd/mlx5_os.c | 139 +++++++++++++++++++++++++++++\n 1 file changed, 139 insertions(+)",
    "diff": "diff --git a/drivers/net/mlx5/freebsd/mlx5_os.c b/drivers/net/mlx5/freebsd/mlx5_os.c\nindex 9a7c7e4b95..389b45b694 100644\n--- a/drivers/net/mlx5/freebsd/mlx5_os.c\n+++ b/drivers/net/mlx5/freebsd/mlx5_os.c\n@@ -15,6 +15,8 @@\n #include <rte_malloc.h>\n #include <ethdev_driver.h>\n #include <rte_common.h>\n+#include <rte_rwlock.h>\n+#include <rte_spinlock.h>\n #include <rte_eal_paging.h>\n \n #include <mlx5_glue.h>\n@@ -32,6 +34,14 @@\n #include \"mlx5_inet.h\"\n #include \"mlx5_devx.h\"\n \n+static const char *MZ_MLX5_PMD_SHARED_DATA = \"mlx5_pmd_shared_data\";\n+\n+/* Spinlock for mlx5_shared_data allocation. */\n+static rte_spinlock_t mlx5_shared_data_lock = RTE_SPINLOCK_INITIALIZER;\n+\n+/* Process local data for secondary processes. */\n+static struct mlx5_local_data mlx5_local_data;\n+\n /**\n  * Get mlx5 device attributes. The glue function query_device_ex() is called\n  * with out parameter of type 'struct ibv_device_attr_ex *'. Then fill in mlx5\n@@ -150,6 +160,135 @@ mlx5_free_verbs_buf(void *ptr, void *data __rte_unused)\n \tmlx5_free(ptr);\n }\n \n+/**\n+ * Initialize shared data between primary and secondary process.\n+ *\n+ * A memzone is reserved by primary process and secondary processes attach to\n+ * the memzone.\n+ *\n+ * @return\n+ *   0 on success, a negative errno value otherwise and rte_errno is set.\n+ */\n+static int\n+mlx5_init_shared_data(void)\n+{\n+\tconst struct rte_memzone *mz;\n+\tint ret = 0;\n+\n+\trte_spinlock_lock(&mlx5_shared_data_lock);\n+\tif (mlx5_shared_data == NULL) {\n+\t\tif (rte_eal_process_type() == RTE_PROC_PRIMARY) {\n+\t\t\t/* Allocate shared memory. */\n+\t\t\tmz = rte_memzone_reserve(MZ_MLX5_PMD_SHARED_DATA,\n+\t\t\t\t\t\t sizeof(*mlx5_shared_data),\n+\t\t\t\t\t\t SOCKET_ID_ANY, 0);\n+\t\t\tif (mz == NULL) {\n+\t\t\t\tDRV_LOG(ERR,\n+\t\t\t\t\t\"Cannot allocate mlx5 shared data\");\n+\t\t\t\tret = -rte_errno;\n+\t\t\t\tgoto error;\n+\t\t\t}\n+\t\t\tmlx5_shared_data = mz->addr;\n+\t\t\tmemset(mlx5_shared_data, 0, sizeof(*mlx5_shared_data));\n+\t\t\trte_spinlock_init(&mlx5_shared_data->lock);\n+\t\t} else {\n+\t\t\t/* Lookup allocated shared memory. */\n+\t\t\tmz = rte_memzone_lookup(MZ_MLX5_PMD_SHARED_DATA);\n+\t\t\tif (mz == NULL) {\n+\t\t\t\tDRV_LOG(ERR,\n+\t\t\t\t\t\"Cannot attach mlx5 shared data\");\n+\t\t\t\tret = -rte_errno;\n+\t\t\t\tgoto error;\n+\t\t\t}\n+\t\t\tmlx5_shared_data = mz->addr;\n+\t\t\tmemset(&mlx5_local_data, 0, sizeof(mlx5_local_data));\n+\t\t}\n+\t}\n+error:\n+\trte_spinlock_unlock(&mlx5_shared_data_lock);\n+\treturn ret;\n+}\n+\n+/**\n+ * PMD global initialization.\n+ *\n+ * Independent from individual device, this function initializes global\n+ * per-PMD data structures distinguishing primary and secondary processes.\n+ * Hence, each initialization is called once per a process.\n+ *\n+ * @return\n+ *   0 on success, a negative errno value otherwise and rte_errno is set.\n+ */\n+static int\n+mlx5_init_once(void)\n+{\n+\tstruct mlx5_shared_data *sd;\n+\tstruct mlx5_local_data *ld = &mlx5_local_data;\n+\tint ret = 0;\n+\n+\tif (mlx5_init_shared_data())\n+\t\treturn -rte_errno;\n+\tsd = mlx5_shared_data;\n+\tMLX5_ASSERT(sd);\n+\trte_spinlock_lock(&sd->lock);\n+\tswitch (rte_eal_process_type()) {\n+\tcase RTE_PROC_PRIMARY:\n+\t\tif (sd->init_done)\n+\t\t\tbreak;\n+\t\tLIST_INIT(&sd->mem_event_cb_list);\n+\t\trte_rwlock_init(&sd->mem_event_rwlock);\n+\t\trte_mem_event_callback_register(\"MLX5_MEM_EVENT_CB\",\n+\t\t\t\t\t\tmlx5_mr_mem_event_cb, NULL);\n+\t\tret = mlx5_mp_init_primary(MLX5_MP_NAME,\n+\t\t\t\t\t   mlx5_mp_os_primary_handle);\n+\t\tif (ret)\n+\t\t\tgoto out;\n+\t\tsd->init_done = true;\n+\t\tbreak;\n+\tcase RTE_PROC_SECONDARY:\n+\t\tif (ld->init_done)\n+\t\t\tbreak;\n+\t\tret = mlx5_mp_init_secondary(MLX5_MP_NAME,\n+\t\t\t\t\t     mlx5_mp_os_secondary_handle);\n+\t\tif (ret)\n+\t\t\tgoto out;\n+\t\t++sd->secondary_cnt;\n+\t\tld->init_done = true;\n+\t\tbreak;\n+\tdefault:\n+\t\tbreak;\n+\t}\n+out:\n+\trte_spinlock_unlock(&sd->lock);\n+\treturn ret;\n+}\n+\n+/**\n+ * Net class driver callback to probe a device.\n+ *\n+ * This function probe PCI bus device(s)\n+ *\n+ * @param[in] dev\n+ *   Pointer to the generic device.\n+ *\n+ * @return\n+ *   0 on success, the function cannot fail.\n+ */\n+int\n+mlx5_os_net_probe(struct rte_device *dev)\n+{\n+\tint ret;\n+\n+\tif (rte_eal_process_type() == RTE_PROC_PRIMARY)\n+\t\tmlx5_pmd_socket_init();\n+\tret = mlx5_init_once();\n+\tif (ret) {\n+\t\tDRV_LOG(ERR, \"unable to init PMD global data: %s\",\n+\t\t\tstrerror(rte_errno));\n+\t\treturn -rte_errno;\n+\t}\n+}\n+\n static int\n mlx5_config_doorbell_mapping_env(const struct mlx5_dev_config *config)\n {\n",
    "prefixes": [
        "v2",
        "33/41"
    ]
}