Show a cover letter.

GET /api/covers/5/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 5,
    "url": "http://patchwork.dpdk.org/api/covers/5/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/cover/20230801070016.340-1-syalavarthi@marvell.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": "<20230801070016.340-1-syalavarthi@marvell.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20230801070016.340-1-syalavarthi@marvell.com",
    "date": "2023-08-01T07:00:15",
    "name": "[RFC,v2,0/1] Introduce Event ML Adapter",
    "submitter": {
        "id": 2480,
        "url": "http://patchwork.dpdk.org/api/people/2480/?format=api",
        "name": "Srikanth Yalavarthi",
        "email": "syalavarthi@marvell.com"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/cover/20230801070016.340-1-syalavarthi@marvell.com/mbox/",
    "series": [
        {
            "id": 29055,
            "url": "http://patchwork.dpdk.org/api/series/29055/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=29055",
            "date": "2023-08-01T07:00:15",
            "name": "Introduce Event ML Adapter",
            "version": 2,
            "mbox": "http://patchwork.dpdk.org/series/29055/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/covers/5/comments/",
    "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 4B8C442F95;\n\tTue,  1 Aug 2023 09:00:26 +0200 (CEST)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 24E0D40A7D;\n\tTue,  1 Aug 2023 09:00:26 +0200 (CEST)",
            "from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com\n [67.231.148.174])\n by mails.dpdk.org (Postfix) with ESMTP id 58A67400D5\n for <dev@dpdk.org>; Tue,  1 Aug 2023 09:00:25 +0200 (CEST)",
            "from pps.filterd (m0045849.ppops.net [127.0.0.1])\n by mx0a-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id\n 3712rQYl021923 for <dev@dpdk.org>; Tue, 1 Aug 2023 00:00:24 -0700",
            "from dc5-exch02.marvell.com ([199.233.59.182])\n by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 3s6du0b84y-3\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT)\n for <dev@dpdk.org>; Tue, 01 Aug 2023 00:00:24 -0700",
            "from DC5-EXCH02.marvell.com (10.69.176.39) by DC5-EXCH02.marvell.com\n (10.69.176.39) with Microsoft SMTP Server (TLS) id 15.0.1497.48;\n Tue, 1 Aug 2023 00:00:22 -0700",
            "from maili.marvell.com (10.69.176.80) by DC5-EXCH02.marvell.com\n (10.69.176.39) with Microsoft SMTP Server id 15.0.1497.48 via Frontend\n Transport; Tue, 1 Aug 2023 00:00:22 -0700",
            "from ml-host-33.caveonetworks.com (unknown [10.110.143.233])\n by maili.marvell.com (Postfix) with ESMTP id DCCD33F7053;\n Tue,  1 Aug 2023 00:00:21 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com;\n h=from : to : cc :\n subject : date : message-id : in-reply-to : references : mime-version :\n content-type; s=pfpt0220; bh=CgrtB+EU48ypduVL0HMDBfP7hnHHRk6yjLbo2/MYhqk=;\n b=UOwctqDXg915783DKTmm2Na1a1PKrPfj5DxQ9V5fn8l8mYHKP3ew+ftoTNk76CrwQKOx\n h9mX8Lse3xVUbj98RB2KTk8ZicogGpDNOksQtqWruZQDQi1oh2v0pzlrRgYPlN89bhCm\n 0kIOF14kndc6hfSz5QjumHHyzQLDdkxKiLMRYVrKNkxTsf/BFNtg+6xBxrVtBmhyFWkR\n qf1DxFlqe22AGw7sLqdkwgceC98kNiO1AJpd+8UJpGT8fpuyc++R9erXqaQ8zogzRpg8\n fRxhrXkEqrcWliKPcszjNnvb5pEZg2jLTEvkYAKQMKGcIoW2WeIFPZMi8eZ6L76Pz267 tg==",
        "From": "Srikanth Yalavarthi <syalavarthi@marvell.com>",
        "To": "",
        "CC": "<dev@dpdk.org>, <syalavarthi@marvell.com>, <sshankarnara@marvell.com>,\n <jerinj@marvell.com>, <aprabhu@marvell.com>, <ptakkar@marvell.com>",
        "Subject": "[RFC PATCH v2 0/1] Introduce Event ML Adapter",
        "Date": "Tue, 1 Aug 2023 00:00:15 -0700",
        "Message-ID": "<20230801070016.340-1-syalavarthi@marvell.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "In-Reply-To": "<20230423041227.22036-1-syalavarthi@marvell.com>",
        "References": "<20230423041227.22036-1-syalavarthi@marvell.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Proofpoint-GUID": "7TbzOAvDsLBNLemLXg1euNav8yg1J_QI",
        "X-Proofpoint-ORIG-GUID": "7TbzOAvDsLBNLemLXg1euNav8yg1J_QI",
        "X-Proofpoint-Virus-Version": "vendor=baseguard\n engine=ICAP:2.0.254,Aquarius:18.0.957,Hydra:6.0.591,FMLib:17.11.176.26\n definitions=2023-08-01_03,2023-07-31_02,2023-05-22_02",
        "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": "Machine learning event adapter library\n======================================\n\nDPDK Eventdev library provides event driven programming model with features to schedule\nevents. ML Device library provides an interface to ML poll mode drivers that support\nMachine Learning inference operations. Event ML Adapter is intended to bridge between\nthe event device and the ML device.\n\nPacket flow from ML device to the event device can be accomplished using software and hardware\nbased transfer mechanisms. The adapter queries an eventdev PMD to determine which mechanism to\nbe used. The adapter uses an EAL service core function for software based packet transfer and\nuses the eventdev PMD functions to configure hardware based packet transfer between ML device\nand the event device.\n\nThe application can choose to submit a ML operation directly to an ML device or send it to the ML\nadapter via eventdev based on RTE_EVENT_ML_ADAPTER_CAP_INTERNAL_PORT_OP_FWD capability. The first\nmode is known as the event new (RTE_EVENT_ML_ADAPTER_OP_NEW) mode and the second as the event\nforward (RTE_EVENT_ML_ADAPTER_OP_FORWARD) mode. The choice of mode can be specified while\ncreating the adapter. In the former mode, it is an application responsibility to enable ingress\npacket ordering. In the latter mode, it is the adapter responsibility to enable the ingress\npacket ordering.\n\n\nWorking model of RTE_EVENT_ML_ADAPTER_OP_NEW mode:\n\n               +--------------+         +--------------+\n               |              |         |   ML stage   |\n               | Application  |---[2]-->| + enqueue to |\n               |              |         |     mldev    |\n               +--------------+         +--------------+\n                   ^   ^                       |\n                   |   |                      [3]\n                  [6] [1]                      |\n                   |   |                       |\n               +--------------+                |\n               |              |                |\n               | Event device |                |\n               |              |                |\n               +--------------+                |\n                      ^                        |\n                      |                        |\n                     [5]                       |\n                      |                        v\n               +--------------+         +--------------+\n               |              |         |              |\n               |  ML adapter  |<--[4]---|    mldev     |\n               |              |         |              |\n               +--------------+         +--------------+\n\n\n        [1] Application dequeues events from the previous stage.\n        [2] Application prepares the ML operations.\n        [3] ML operations are submitted to mldev by application.\n        [4] ML adapter dequeues ML completions from mldev.\n        [5] ML adapter enqueues events to the eventdev.\n        [6] Application dequeues from eventdev for further processing.\n\nIn the RTE_EVENT_ML_ADAPTER_OP_NEW mode, application submits ML operations directly to ML device.\nThe ML adapter then dequeues ML completions from ML device and enqueue events to the event\ndevice. This mode does not ensure ingress ordering, if the application directly enqueues to mldev\nwithout going through ML / atomic stage i.e. removing item [1] and [2].\n\nEvents dequeued from the adapter will be treated as new events. In this mode, application needs\nto specify event information (response information) which is needed to enqueue an event after the\nML operation is completed.\n\n\nWorking model of RTE_EVENT_ML_ADAPTER_OP_FORWARD mode:\n\n               +--------------+         +--------------+\n       --[1]-->|              |---[2]-->|  Application |\n               | Event device |         |      in      |\n       <--[8]--|              |<--[3]---| Ordered stage|\n               +--------------+         +--------------+\n                   ^      |\n                   |     [4]\n                  [7]     |\n                   |      v\n              +----------------+       +--------------+\n              |                |--[5]->|              |\n              |   ML adapter   |       |     mldev    |\n              |                |<-[6]--|              |\n              +----------------+       +--------------+\n\n\n        [1] Events from the previous stage.\n        [2] Application in ordered stage dequeues events from eventdev.\n        [3] Application enqueues ML operations as events to eventdev.\n        [4] ML adapter dequeues event from eventdev.\n        [5] ML adapter submits ML operations to mldev (Atomic stage).\n        [6] ML adapter dequeues ML completions from mldev\n        [7] ML adapter enqueues events to the eventdev\n        [8] Events to the next stage\n\nIn the event forward (RTE_EVENT_ML_ADAPTER_OP_FORWARD) mode, if the HW supports the capability\nRTE_EVENT_ML_ADAPTER_CAP_INTERNAL_PORT_OP_FWD, application can directly submit the ML operations\nto the mldev. If not, application retrieves the event port of the ML adapter through the API,\nrte_event_ml_adapter_event_port_get(). Then, links its event queue to this port and starts\nenqueuing ML operations as events to the eventdev. The adapter then dequeues the events and\nsubmits the ML operations to the mldev. After the ML completions, the adapter enqueues events to\nthe event device.\n\nApplication can use this mode, when ingress packet ordering is needed. Events dequeued from the\nadapter will be treated as forwarded events. In this mode, the application needs to specify the\nmldev ID and queue pair ID (request information) needed to enqueue an ML operation in addition to\nthe event information (response information) needed to enqueue an event after the ML operation\nhas completed.\n\nThe event ML adapter provides common APIs to configure the packet flow from the ML device to\nevent devices for both SW and HW based transfers. The ML event adapter's functions are:\n\n - rte_event_ml_adapter_create_ext()\n - rte_event_ml_adapter_create()\n - rte_event_ml_adapter_free()\n - rte_event_ml_adapter_queue_pair_add()\n - rte_event_ml_adapter_queue_pair_del()\n - rte_event_ml_adapter_start()\n - rte_event_ml_adapter_stop()\n - rte_event_ml_adapter_stats_get()\n - rte_event_ml_adapter_stats_reset()\n\nThe application creates an instance using rte_event_ml_adapter_create() or\nrte_event_ml_adapter_create_ext().\n\nmldev queue pair addition / deletion is done using the rte_event_ml_adapter_queue_pair_add() /\nrte_event_ml_adapter_queue_pair_del() APIs. If HW supports the capability\nRTE_EVENT_ML_ADAPTER_CAP_INTERNAL_PORT_QP_EV_BIND, event information must be passed to the add\nAPI.\n\n\nContents of RFC\n---------------\nThis RFC attempts to define standard APIs for:\n\n1) New event type for ML operations.\n2) Definition of mode of operations for the adapter.\n3) Definition of functions to handle ML event adapter, which includes fetching\ncapabilities, adapter initialization and termination, managing adapter queue-pairs\nand retrieving adapter stats.\n\nRoadmap\n-------\n1) Address the comments for this RFC.\n2) Common code for eventdev.\n3) ML adapter driver for cn10k.\n4) Add support for ML adapter in app/test-eventdev application.\n\nSrikanth Yalavarthi (1):\n  eventdev: introduce ML event adapter library\n\n MAINTAINERS                                   |    6 +\n config/rte_config.h                           |    1 +\n doc/api/doxy-api-index.md                     |    1 +\n doc/guides/prog_guide/event_ml_adapter.rst    |  268 ++++\n doc/guides/prog_guide/eventdev.rst            |    8 +-\n .../img/event_ml_adapter_op_forward.svg       | 1086 +++++++++++++++++\n .../img/event_ml_adapter_op_new.svg           | 1079 ++++++++++++++++\n doc/guides/prog_guide/index.rst               |    1 +\n lib/eventdev/meson.build                      |    4 +-\n lib/eventdev/rte_event_ml_adapter.c           |    6 +\n lib/eventdev/rte_event_ml_adapter.h           |  594 +++++++++\n lib/eventdev/rte_eventdev.h                   |   45 +\n lib/meson.build                               |    2 +-\n lib/mldev/rte_mldev.h                         |    6 +\n 14 files changed, 3102 insertions(+), 5 deletions(-)\n create mode 100644 doc/guides/prog_guide/event_ml_adapter.rst\n create mode 100644 doc/guides/prog_guide/img/event_ml_adapter_op_forward.svg\n create mode 100644 doc/guides/prog_guide/img/event_ml_adapter_op_new.svg\n create mode 100644 lib/eventdev/rte_event_ml_adapter.c\n create mode 100644 lib/eventdev/rte_event_ml_adapter.h"
}