Show a cover letter.

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

{
    "id": 72429,
    "url": "https://patches.dpdk.org/api/covers/72429/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/cover/1593441849-27306-1-git-send-email-patrick.fu@intel.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": "<1593441849-27306-1-git-send-email-patrick.fu@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1593441849-27306-1-git-send-email-patrick.fu@intel.com",
    "date": "2020-06-29T14:44:07",
    "name": "[v2,0/2] introduce asynchronous data path for vhost",
    "submitter": {
        "id": 1781,
        "url": "https://patches.dpdk.org/api/people/1781/?format=api",
        "name": "Patrick Fu",
        "email": "patrick.fu@intel.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/cover/1593441849-27306-1-git-send-email-patrick.fu@intel.com/mbox/",
    "series": [
        {
            "id": 10668,
            "url": "https://patches.dpdk.org/api/series/10668/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=10668",
            "date": "2020-06-29T14:44:07",
            "name": "introduce asynchronous data path for vhost",
            "version": 2,
            "mbox": "https://patches.dpdk.org/series/10668/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/covers/72429/comments/",
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 5D9BCA0350;\n\tMon, 29 Jun 2020 16:54:56 +0200 (CEST)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 3C01E1BF82;\n\tMon, 29 Jun 2020 16:54:56 +0200 (CEST)",
            "from mga05.intel.com (mga05.intel.com [192.55.52.43])\n by dpdk.org (Postfix) with ESMTP id A1D321BF7B\n for <dev@dpdk.org>; Mon, 29 Jun 2020 16:54:54 +0200 (CEST)",
            "from orsmga004.jf.intel.com ([10.7.209.38])\n by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 29 Jun 2020 07:54:53 -0700",
            "from npg-dpdk-patrickfu-sl1.sh.intel.com ([10.67.117.45])\n by orsmga004.jf.intel.com with ESMTP; 29 Jun 2020 07:54:50 -0700"
        ],
        "IronPort-SDR": [
            "\n 5aqMAWrb1OaLKc+Rhq0jAyfWJkC5sQoPRNBEYTJ0+3A7Fy3UNxz1nRNOwJmTlt2Ud4wr90wJ5p\n RGzQ0R+2o0Hw==",
            "\n gbmT1OAz08T+SNLbCd1LfSCy2aql0q0rzraE+fJjsD4RSxdCS6ey6C6W3+qdXT14lOEnG4+gr8\n otNZdIgBzrGw=="
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6000,8403,9666\"; a=\"230812132\"",
            "E=Sophos;i=\"5.75,295,1589266800\"; d=\"scan'208\";a=\"230812132\"",
            "E=Sophos;i=\"5.75,295,1589266800\"; d=\"scan'208\";a=\"424844212\""
        ],
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "X-Amp-File-Uploaded": "False",
        "X-ExtLoop1": "1",
        "From": "patrick.fu@intel.com",
        "To": "dev@dpdk.org, maxime.coquelin@redhat.com, chenbo.xia@intel.com,\n zhihong.wang@intel.com",
        "Cc": "patrick.fu@intel.com, yinan.wang@intel.com, cheng1.jiang@intel.com,\n cunming.liang@intel.com",
        "Date": "Mon, 29 Jun 2020 22:44:07 +0800",
        "Message-Id": "<1593441849-27306-1-git-send-email-patrick.fu@intel.com>",
        "X-Mailer": "git-send-email 1.8.3.1",
        "Subject": "[dpdk-dev] [PATCH v2 0/2] introduce asynchronous data path for vhost",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "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: Patrick Fu <patrick.fu@intel.com>\n\nPerforming large memory copies usually takes up a major part of CPU\ncycles and becomes the hot spot in vhost-user enqueue operation. To\noffload expensive memory operations from the CPU, this patch set\nproposes to leverage DMA engines, e.g., I/OAT, a DMA engine in the\nIntel's processor, to accelerate large copies.\n\nLarge copies are offloaded from the CPU to the DMA in an asynchronous\nmanner. The CPU just submits copy jobs to the DMA but without waiting\nfor its copy completion. Thus, there is no CPU intervention during\ndata transfer; we can save precious CPU cycles and improve the overall\nthroughput for vhost-user based applications, like OVS. During packet\ntransmission, it offloads large copies to the DMA and performs small\ncopies by the CPU, due to startup overheads associated with the DMA.\n\nThis patch set construct a general framework that applications can\nleverage to attach DMA channels with vhost-user transmit queues. Four\nnew RTE APIs are introduced to vhost library for applications to\nregister and use the asynchronous data path. In addition, two new DMA\noperation callbacks are defined, by which vhost-user asynchronous data\npath can interact with DMA hardware. Currently only enqueue operation\nfor split queue is implemented, but the framework is flexible to extend\nsupport for packed queue.\n\nv2:\nupdate meson file for new header file\nupdate rte_vhost_version.map to include new APIs\nrename async APIs/structures to be prefixed with \"rte_vhost\"\nrename some variables/structures for readibility\ncorrect minor typo in comments/license statements\nrefine memory allocation logic for vq internal buffer\nadd error message printing in some failure cases\ncheck inflight async packets in unregistration API call\nmark new APIs as experimental\n\nPatrick Fu (2):\n  vhost: introduce async enqueue registration API\n  vhost: introduce async enqueue for split ring\n\n lib/librte_vhost/Makefile              |   2 +-\n lib/librte_vhost/meson.build           |   2 +-\n lib/librte_vhost/rte_vhost.h           |   1 +\n lib/librte_vhost/rte_vhost_async.h     | 176 +++++++++++\n lib/librte_vhost/rte_vhost_version.map |   4 +\n lib/librte_vhost/socket.c              |  20 ++\n lib/librte_vhost/vhost.c               | 127 +++++++-\n lib/librte_vhost/vhost.h               |  30 +-\n lib/librte_vhost/vhost_user.c          |  27 +-\n lib/librte_vhost/virtio_net.c          | 539 ++++++++++++++++++++++++++++++++-\n 10 files changed, 919 insertions(+), 9 deletions(-)\n create mode 100644 lib/librte_vhost/rte_vhost_async.h"
}