get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 119177,
    "url": "http://patchwork.dpdk.org/api/patches/119177/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/20221026194613.1008232-11-john.miller@atomicrules.com/",
    "project": {
        "id": 1,
        "url": "http://patchwork.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": "<20221026194613.1008232-11-john.miller@atomicrules.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20221026194613.1008232-11-john.miller@atomicrules.com",
    "date": "2022-10-26T19:46:10",
    "name": "[11/14] baseband/ark: introduce ark baseband driver custom functions",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "9c2ca1942b53b53b961946d6843e45bf6b89c4ca",
    "submitter": {
        "id": 719,
        "url": "http://patchwork.dpdk.org/api/people/719/?format=api",
        "name": "John Miller",
        "email": "john.miller@atomicrules.com"
    },
    "delegate": {
        "id": 2642,
        "url": "http://patchwork.dpdk.org/api/users/2642/?format=api",
        "username": "mcoquelin",
        "first_name": "Maxime",
        "last_name": "Coquelin",
        "email": "maxime.coquelin@redhat.com"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/20221026194613.1008232-11-john.miller@atomicrules.com/mbox/",
    "series": [
        {
            "id": 25445,
            "url": "http://patchwork.dpdk.org/api/series/25445/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=25445",
            "date": "2022-10-26T19:46:00",
            "name": "[01/14] doc/guides/bbdevs: add ark baseband device documentation",
            "version": 1,
            "mbox": "http://patchwork.dpdk.org/series/25445/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/119177/comments/",
    "check": "success",
    "checks": "http://patchwork.dpdk.org/api/patches/119177/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 E6F53A04FD;\n\tWed, 26 Oct 2022 21:47:32 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 9D2E542BBB;\n\tWed, 26 Oct 2022 21:46:49 +0200 (CEST)",
            "from mail-io1-f52.google.com (mail-io1-f52.google.com\n [209.85.166.52]) by mails.dpdk.org (Postfix) with ESMTP id 3487A42B9D\n for <dev@dpdk.org>; Wed, 26 Oct 2022 21:46:43 +0200 (CEST)",
            "by mail-io1-f52.google.com with SMTP id e15so14499388iof.2\n for <dev@dpdk.org>; Wed, 26 Oct 2022 12:46:43 -0700 (PDT)",
            "from john-System-Product-Name.tds\n (h64-35-205-155.cntcnh.broadband.dynamic.tds.net. [64.35.205.155])\n by smtp.googlemail.com with ESMTPSA id\n m1-20020a056e020de100b002faecf63c48sm2336169ilj.79.2022.10.26.12.46.40\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Wed, 26 Oct 2022 12:46:41 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=atomicrules-com.20210112.gappssmtp.com; s=20210112;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:from:to:cc:subject:date\n :message-id:reply-to;\n bh=CinhMuL/+oVOKbH719JxYAXoO3S0sENKA2k9CkFlx60=;\n b=kcQT5OWItNM9nqLu5gqPaJ65TMaLD0VctmUD2EWHT5r4csVz5m0gRFI3ezbiBpCXAC\n Qu3WHGbfYirph8kt5XEl1AM8cCYouKyiuEO9qwdceih0FpzHI21+2fPaeGqKapqwKiMd\n FbcJyOUu69aNtMHtpPWYECpop8bLFaRNSxiDRVC6CMNkcTwjjwAvRJwX51d2mPPAMnGc\n s29bZZ6HGYDiIYDaz0BwsZrGBivg27oMF4B9KdlNsoN872rcC8OksMxgItR0+GF2E92o\n No8EXgDk08bwv/ayc8TpqilVTlqV/bnXRCPvv+UvdboOWcd6Tr2Wi0OuqlfWx2ol3ZTn\n ohJw==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20210112;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc\n :subject:date:message-id:reply-to;\n bh=CinhMuL/+oVOKbH719JxYAXoO3S0sENKA2k9CkFlx60=;\n b=sUSUB2AgMj7jP23RWGMkfXPXmOi00EqSB5OhbR38aDHhJcxsDg9gqVADYr9coYzAju\n b1XhkpjpY88twH2tH+Cso8uLQijTryZm4ZHz2YIgBnjK0omytWHWFVfqQPGoB5l4PsAj\n yYWMN1YpWkh/uPmv0I+m23Aiu2eKqqFb/fc+w3TNbHPDt2PIrDc3/4WSCcBejBn7LCBR\n faZYl0ubpZEaZU4RhW0y3e/0Gm9hT0SdcQa7uSS9w6T24zp9vcIPK5N4CJjBkesEEWfw\n ywBtK8m0tclvcNIR/gFRT/+NoHHM4j6CGfg6z5/qi+ANMLXWC2SL62frJdp2WwhE0IoP\n pV9g==",
        "X-Gm-Message-State": "ACrzQf1S2V1AmqXEkxvjULmhjHeUDpKs6XYdNfXIoh8ImdaH7I6dtvTH\n TwEtsN1CqWnUSL1sZ1+2jXzE1w2bcT0nZA==",
        "X-Google-Smtp-Source": "\n AMsMyM6W2hvYdPYItyeNWr33vF++yvoa+k5GjTk5ljarWsZHVz2jn1P5Y7z5p8A+dASGxMuwhgUBUA==",
        "X-Received": "by 2002:a05:6638:613:b0:375:13ba:a548 with SMTP id\n g19-20020a056638061300b0037513baa548mr3064956jar.56.1666813602585;\n Wed, 26 Oct 2022 12:46:42 -0700 (PDT)",
        "From": "John Miller <john.miller@atomicrules.com>",
        "To": "nicolas.chautru@intel.com",
        "Cc": "dev@dpdk.org, ed.czeck@atomicrules.com, shepard.siegel@atomicrules.com,\n John Miller <john.miller@atomicrules.com>",
        "Subject": "[PATCH 11/14] baseband/ark: introduce ark baseband driver custom\n functions",
        "Date": "Wed, 26 Oct 2022 15:46:10 -0400",
        "Message-Id": "<20221026194613.1008232-11-john.miller@atomicrules.com>",
        "X-Mailer": "git-send-email 2.25.1",
        "In-Reply-To": "<20221026194613.1008232-1-john.miller@atomicrules.com>",
        "References": "<20221026194613.1008232-1-john.miller@atomicrules.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "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": "This patch introduces the Arkville baseband device driver custom functions.\n\nSigned-off-by: John Miller <john.miller@atomicrules.com>\n---\n drivers/baseband/ark/ark_bbdev_custom.c | 201 ++++++++++++++++++++++++\n drivers/baseband/ark/ark_bbdev_custom.h |  30 ++++\n 2 files changed, 231 insertions(+)\n create mode 100644 drivers/baseband/ark/ark_bbdev_custom.c\n create mode 100644 drivers/baseband/ark/ark_bbdev_custom.h",
    "diff": "diff --git a/drivers/baseband/ark/ark_bbdev_custom.c b/drivers/baseband/ark/ark_bbdev_custom.c\nnew file mode 100644\nindex 0000000000..6b1553abe1\n--- /dev/null\n+++ b/drivers/baseband/ark/ark_bbdev_custom.c\n@@ -0,0 +1,201 @@\n+/* SPDX-License-Identifier: BSD-3-Clause\n+ * Copyright(c) 2016-2021 Atomic Rules LLC\n+ */\n+\n+#include <rte_bbdev.h>\n+#include <rte_bbdev_pmd.h>\n+\n+#include <rte_mbuf.h>\n+#include <rte_hexdump.h>\t/* For debug */\n+\n+\n+#include \"ark_bbdev_common.h\"\n+#include \"ark_bbdev_custom.h\"\n+\n+/* It is expected that functions in this file will be modified based on\n+ * specifics of the FPGA hardware beyond the core Arkville\n+ * components.\n+ */\n+\n+/* bytyes must be range of 0 to 20 */\n+static inline\n+uint8_t ark_bb_cvt_bytes_meta_cnt(size_t bytes)\n+{\n+\treturn (bytes + 3) / 8;\n+}\n+\n+void\n+ark_bbdev_info_get(struct rte_bbdev *dev,\n+\t\t   struct rte_bbdev_driver_info *dev_info)\n+{\n+\tstruct ark_bbdevice *ark_bb =  dev->data->dev_private;\n+\n+\tstatic const struct rte_bbdev_op_cap bbdev_capabilities[] = {\n+\t\t{\n+\t\t\t.type = RTE_BBDEV_OP_LDPC_DEC,\n+\t\t\t.cap.ldpc_dec = {\n+\t\t\t\t.capability_flags =\n+\t\t\t\t\tRTE_BBDEV_LDPC_CRC_24B_ATTACH |\n+\t\t\t\t\tRTE_BBDEV_LDPC_RATE_MATCH,\n+\t\t\t\t.num_buffers_src =\n+\t\t\t\t\tRTE_BBDEV_LDPC_MAX_CODE_BLOCKS,\n+\t\t\t\t.num_buffers_hard_out =\n+\t\t\t\t\tRTE_BBDEV_LDPC_MAX_CODE_BLOCKS\n+\t\t\t}\n+\t\t},\n+\t\t{\n+\t\t\t.type = RTE_BBDEV_OP_LDPC_ENC,\n+\t\t\t.cap.ldpc_enc = {\n+\t\t\t\t.capability_flags =\n+\t\t\t\t\tRTE_BBDEV_LDPC_CRC_24B_ATTACH |\n+\t\t\t\t\tRTE_BBDEV_LDPC_RATE_MATCH,\n+\t\t\t\t.num_buffers_src =\n+\t\t\t\t\tRTE_BBDEV_LDPC_MAX_CODE_BLOCKS,\n+\t\t\t\t.num_buffers_dst =\n+\t\t\t\t\tRTE_BBDEV_LDPC_MAX_CODE_BLOCKS\n+\t\t\t}\n+\t\t},\n+\t\tRTE_BBDEV_END_OF_CAPABILITIES_LIST(),\n+\t};\n+\n+\tstatic struct rte_bbdev_queue_conf default_queue_conf = {\n+\t\t.queue_size = RTE_BBDEV_QUEUE_SIZE_LIMIT,\n+\t};\n+\n+\tdefault_queue_conf.socket = dev->data->socket_id;\n+\n+\tdev_info->driver_name = RTE_STR(DRIVER_NAME);\n+\tdev_info->max_num_queues = ark_bb->max_nb_queues;\n+\tdev_info->queue_size_lim = RTE_BBDEV_QUEUE_SIZE_LIMIT;\n+\tdev_info->hardware_accelerated = true;\n+\tdev_info->max_dl_queue_priority = 0;\n+\tdev_info->max_ul_queue_priority = 0;\n+\tdev_info->default_queue_conf = default_queue_conf;\n+\tdev_info->capabilities = bbdev_capabilities;\n+\tdev_info->cpu_flag_reqs = NULL;\n+\tdev_info->min_alignment = 4;\n+\n+}\n+\n+/* Structure defining layout of the ldpc command struct */\n+struct ark_bb_ldpc_enc_meta {\n+\tuint16_t header;\n+\tuint8_t rv_index:2,\n+\t\tbasegraph:1,\n+\t\tcode_block_mode:1,\n+\t\trfu_71_68:4;\n+\n+\tuint8_t q_m;\n+\tuint32_t e_ea;\n+\tuint32_t eb;\n+\tuint8_t c;\n+\tuint8_t cab;\n+\tuint16_t n_cb;\n+\tuint16_t pad;\n+\tuint16_t trailer;\n+} __rte_packed;\n+\n+/* The size must be less then 20 Bytes */\n+static_assert(sizeof(struct ark_bb_ldpc_enc_meta) <= 20, \"struct size\");\n+\n+/* Custom operation on equeue ldpc operation  */\n+/* Do these function need queue number? */\n+/* Maximum of 20 bytes */\n+int\n+ark_bb_user_enqueue_ldpc_enc(struct rte_bbdev_enc_op *enc_op,\n+\t\t\t  uint32_t *meta, uint8_t *meta_cnt)\n+{\n+\tstruct rte_bbdev_op_ldpc_enc *ldpc_enc_op = &enc_op->ldpc_enc;\n+\tstruct ark_bb_ldpc_enc_meta *src = (struct ark_bb_ldpc_enc_meta *)meta;\n+\n+\tsrc->header = 0x4321;\t/* For testings */\n+\tsrc->trailer = 0xFEDC;\n+\n+\tsrc->rv_index = ldpc_enc_op->rv_index;\n+\tsrc->basegraph = ldpc_enc_op->basegraph;\n+\tsrc->code_block_mode = ldpc_enc_op->code_block_mode;\n+\n+\tsrc->q_m = ldpc_enc_op->q_m;\n+\tsrc->e_ea = 0xABCD;\n+\tsrc->eb = ldpc_enc_op->tb_params.eb;\n+\tsrc->c = ldpc_enc_op->tb_params.c;\n+\tsrc->cab = ldpc_enc_op->tb_params.cab;\n+\n+\tsrc->n_cb = 0;\n+\n+\tmeta[0] = 0x11111110;\n+\tmeta[1] = 0x22222220;\n+\tmeta[2] = 0x33333330;\n+\tmeta[3] = 0x44444440;\n+\tmeta[4] = 0x55555550;\n+\n+\t*meta_cnt = ark_bb_cvt_bytes_meta_cnt(\n+\t\t\tsizeof(struct ark_bb_ldpc_enc_meta));\n+\treturn 0;\n+}\n+\n+/* Custom operation on dequeue ldpc operation  */\n+int\n+ark_bb_user_dequeue_ldpc_enc(struct rte_bbdev_enc_op *enc_op,\n+\t\t\t     const uint32_t *usermeta)\n+{\n+\tstatic int dump;\t/* = 0 */\n+\t/* Just compare with what was sent? */\n+\tuint32_t meta_in[5] = {0};\n+\tuint8_t  meta_cnt;\n+\n+\tark_bb_user_enqueue_ldpc_enc(enc_op, meta_in, &meta_cnt);\n+\tif (memcmp(usermeta, meta_in, 3 + (meta_cnt * 8))) {\n+\t\tfprintf(stderr,\n+\t\t\t\"------------------------------------------\\n\");\n+\t\trte_hexdump(stdout, \"meta difference for lpdc_enc IN\",\n+\t\t\t    meta_in, 20);\n+\t\trte_hexdump(stdout, \"meta difference for lpdc_enc OUT\",\n+\t\t\t    usermeta, 20);\n+\t} else if (dump) {\n+\t\trte_hexdump(stdout, \"DUMP lpdc_enc IN\", usermeta, 20);\n+\t\tdump--;\n+\t}\n+\n+\treturn 0;\n+}\n+\n+\n+/* Turbo op call backs for user meta data */\n+int ark_bb_user_enqueue_ldpc_dec(struct rte_bbdev_dec_op *enc_op,\n+\t\t\t\t uint32_t *meta, uint8_t *meta_cnt)\n+{\n+\tRTE_SET_USED(enc_op);\n+\tmeta[0] = 0xF1111110;\n+\tmeta[1] = 0xF2222220;\n+\tmeta[2] = 0xF3333330;\n+\tmeta[3] = 0xF4444440;\n+\tmeta[4] = 0xF5555550;\n+\n+\t*meta_cnt = ark_bb_cvt_bytes_meta_cnt(20);\n+\treturn 0;\n+}\n+\n+int ark_bb_user_dequeue_ldpc_dec(struct rte_bbdev_dec_op *enc_op,\n+\t\t\t\t const uint32_t *usermeta)\n+{\n+\tRTE_SET_USED(enc_op);\n+\tstatic int dump;\t/* = 0 */\n+\t/* Just compare with what was sent? */\n+\tuint32_t meta_in[5] = {0};\n+\tuint8_t  meta_cnt;\n+\n+\tark_bb_user_enqueue_ldpc_dec(enc_op, meta_in, &meta_cnt);\n+\tif (memcmp(usermeta, meta_in, 3 + (meta_cnt * 8))) {\n+\t\tfprintf(stderr,\n+\t\t\t\"------------------------------------------\\n\");\n+\t\trte_hexdump(stdout, \"meta difference for lpdc_enc IN\",\n+\t\t\t    meta_in, 20);\n+\t\trte_hexdump(stdout, \"meta difference for lpdc_enc OUT\",\n+\t\t\t    usermeta, 20);\n+\t} else if (dump) {\n+\t\trte_hexdump(stdout, \"DUMP lpdc_enc IN\", usermeta, 20);\n+\t\tdump--;\n+\t}\n+\treturn 0;\n+}\ndiff --git a/drivers/baseband/ark/ark_bbdev_custom.h b/drivers/baseband/ark/ark_bbdev_custom.h\nnew file mode 100644\nindex 0000000000..32a2ef6bb6\n--- /dev/null\n+++ b/drivers/baseband/ark/ark_bbdev_custom.h\n@@ -0,0 +1,30 @@\n+/* SPDX-License-Identifier: BSD-3-Clause\n+ * Copyright(c) 2016-2021 Atomic Rules LLC\n+ */\n+\n+#ifndef _ARK_BBDEV_CUSTOM_H_\n+#define _ARK_BBDEV_CUSTOM_H_\n+\n+#include <stdint.h>\n+\n+/* Forward declarations */\n+struct rte_bbdev;\n+struct rte_bbdev_driver_info;\n+struct rte_bbdev_enc_op;\n+struct rte_bbdev_dec_op;\n+struct rte_mbuf;\n+\n+void ark_bbdev_info_get(struct rte_bbdev *dev,\n+\t\t\tstruct rte_bbdev_driver_info *dev_info);\n+\n+int ark_bb_user_enqueue_ldpc_dec(struct rte_bbdev_dec_op *enc_op,\n+\t\t\t\t uint32_t *meta, uint8_t *meta_cnt);\n+int ark_bb_user_dequeue_ldpc_dec(struct rte_bbdev_dec_op *enc_op,\n+\t\t\t\t const uint32_t *usermeta);\n+\n+int ark_bb_user_enqueue_ldpc_enc(struct rte_bbdev_enc_op *enc_op,\n+\t\t\t\t uint32_t *meta, uint8_t *meta_cnt);\n+int ark_bb_user_dequeue_ldpc_enc(struct rte_bbdev_enc_op *enc_op,\n+\t\t\t\t const uint32_t *usermeta);\n+\n+#endif\n",
    "prefixes": [
        "11/14"
    ]
}