Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/119177/?format=api
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" ] }{ "id": 119177, "url": "