Show a cover letter.

GET /api/covers/44354/
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 44354,
    "url": "http://patches.dpdk.org/api/covers/44354/",
    "web_url": "http://patches.dpdk.org/cover/44354/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/",
        "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"
    },
    "msgid": "<20180906181947.20646-1-jfreimann@redhat.com>",
    "date": "2018-09-06T18:19:36",
    "name": "[v5,00/11] implement packed virtqueues",
    "submitter": {
        "id": 745,
        "url": "http://patches.dpdk.org/api/people/745/",
        "name": "Jens Freimann",
        "email": "jfreimann@redhat.com"
    },
    "mbox": "http://patches.dpdk.org/cover/44354/mbox/",
    "series": [
        {
            "id": 1215,
            "url": "http://patches.dpdk.org/api/series/1215/",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=1215",
            "date": "2018-09-06T18:19:36",
            "name": "implement packed virtqueues",
            "version": 5,
            "mbox": "http://patches.dpdk.org/series/1215/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/covers/44354/comments/",
    "headers": {
        "X-Greylist": [
            "Sender IP whitelisted, not delayed by milter-greylist-4.5.16\n\t(mx1.redhat.com [10.11.55.5]); Thu, 06 Sep 2018 18:19:52 +0000 (UTC)",
            "inspected by milter-greylist-4.5.16 (mx1.redhat.com\n\t[10.11.55.5]); \n\tThu, 06 Sep 2018 18:19:52 +0000 (UTC) for IP:'10.11.54.5'\n\tDOMAIN:'int-mx05.intmail.prod.int.rdu2.redhat.com'\n\tHELO:'smtp.corp.redhat.com' FROM:'jfreimann@redhat.com' RCPT:''"
        ],
        "List-Post": "<mailto:dev@dpdk.org>",
        "X-Mailman-Version": "2.1.15",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "Cc": "tiwei.bie@intel.com,\n\tmaxime.coquelin@redhat.com",
        "Delivered-To": "patchwork@dpdk.org",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "Subject": "[dpdk-dev] [PATCH v5 00/11] implement packed virtqueues",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Precedence": "list",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "From": "Jens Freimann <jfreimann@redhat.com>",
        "Message-Id": "<20180906181947.20646-1-jfreimann@redhat.com>",
        "Date": "Thu,  6 Sep 2018 19:19:36 +0100",
        "X-Scanned-By": "MIMEDefang 2.79 on 10.11.54.5",
        "To": "dev@dpdk.org",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "X-BeenThere": "dev@dpdk.org",
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Errors-To": "dev-bounces@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 372993772;\n\tThu,  6 Sep 2018 20:19:55 +0200 (CEST)",
            "from mx1.redhat.com (mx3-rdu2.redhat.com [66.187.233.73])\n\tby dpdk.org (Postfix) with ESMTP id C9489326D\n\tfor <dev@dpdk.org>; Thu,  6 Sep 2018 20:19:53 +0200 (CEST)",
            "from smtp.corp.redhat.com\n\t(int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby mx1.redhat.com (Postfix) with ESMTPS id A3A284072C10;\n\tThu,  6 Sep 2018 18:19:52 +0000 (UTC)",
            "from localhost (ovpn-116-129.ams2.redhat.com [10.36.116.129])\n\tby smtp.corp.redhat.com (Postfix) with ESMTPS id 92FC163AF6;\n\tThu,  6 Sep 2018 18:19:48 +0000 (UTC)"
        ],
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "This is a basic implementation of packed virtqueues as specified in the\nVirtio 1.1 draft. A compiled version of the current draft is available\nat https://github.com/oasis-tcs/virtio-docs.git (or as .pdf at\nhttps://github.com/oasis-tcs/virtio-docs/blob/master/virtio-v1.1-packed-wd10.pdf\n\nIt does not implement yet indirect descriptors and checksum offloading.\n\nA packed virtqueue is different from a split virtqueue in that it\nconsists of only a single descriptor ring that replaces available and\nused ring, index and descriptor buffer.\n\nEach descriptor is readable and writable and has a flags field. These flags\nwill mark if a descriptor is available or used.  To detect new available descriptors\neven after the ring has wrapped, device and driver each have a\nsingle-bit wrap counter that is flipped from 0 to 1 and vice versa every time\nthe last descriptor in the ring is used/made available.\n\nThe idea behind this is to 1. improve performance by avoiding cache misses\nand 2. be easier for devices to implement.\n\nRegarding performance: with these patches I get 21.13 Mpps on my system\nas compared to 18.8 Mpps with the virtio 1.0 code. Packet size was 64\nbytes, 0.05% acceptable loss.  Test setup is described as in\nhttp://dpdk.org/doc/guides/howto/pvp_reference_benchmark.html\n\nPacket generator:\nMoonGen\nIntel(R) Xeon(R) CPU E5-2665 0 @ 2.40GHz\nIntel X710 NIC\nRHEL 7.4\n\nDevice under test:\nIntel(R) Xeon(R) CPU E5-2667 v4 @ 3.20GHz\nIntel X710 NIC\nRHEL 7.4\n\nVM on DuT: RHEL7.4\n\nI plan to do more performance test with bigger frame sizes.\n\n\nchanges from v4->v5:\n* fix VIRTQUEUE_DUMP macro\n* fix wrap counter logic in transmit and receive functions  \n\nchanges from v3->v4:\n* added helpers to increment index and set available/used flags\n* driver keeps track of number of descriptors used\n* change logic in set_rxtx_funcs()\n* add patch for ctrl virtqueue with support for packed virtqueues\n* rename virtio-1.1.h to virtio-packed.h\n* fix wrong sizeof() in \"vhost: vring address setup for packed queues\"\n* fix coding style of function definition in \"net/virtio: add packed\n  virtqueue helpers\"\n* fix padding in vring_size()\n* move patches to enable packed virtqueues end of series\n* v4 has two open problems: I'm sending it out anyway for feedback/help:\n * when VIRTIO_NET_F_MRG_RXBUF enabled only 128 packets are send in\n   guest, i.e. when ring is full for the first time. I suspect a bug in\n   setting the avail/used flags\n\nchanges from v2->v3:\n* implement event suppression\n* add code do dump packed virtqueues\n* don't use assert in vhost code\n* rename virtio-user parameter to packed-vq\n* support rxvf flush\n\nchanges from v1->v2:\n* don't use VIRTQ_DESC_F_NEXT in used descriptors (Jason)\n* no rte_panice() in guest triggerable code (Maxime)\n* use unlikely when checking for vq (Maxime)\n* rename everything from _1_1 to _packed  (Yuanhan)\n* add two more patches to implement mergeable receive buffers\n\n\nJens Freimann (10):\n  net/virtio: vring init for packed queues\n  net/virtio: add virtio 1.1 defines\n  net/virtio: add packed virtqueue helpers\n  net/virtio: flush packed receive virtqueues\n  net/virtio: dump packed virtqueue data\n  net/virtio: implement transmit path for packed queues\n  net/virtio: implement receive path for packed queues\n  net/virtio: disable ctrl virtqueue for packed rings\n  net/virtio: add support for mergeable buffers with packed virtqueues\n  net/virtio: add support for event suppression\n\nYuanhan Liu (1):\n  net/virtio-user: add option to use packed queues\n\n drivers/net/virtio/virtio_ethdev.c            |  50 ++-\n drivers/net/virtio/virtio_ethdev.h            |   4 +\n drivers/net/virtio/virtio_pci.h               |   8 +\n drivers/net/virtio/virtio_ring.h              |  85 ++++-\n drivers/net/virtio/virtio_rxtx.c              | 360 +++++++++++++++++-\n .../net/virtio/virtio_user/virtio_user_dev.c  |  10 +-\n .../net/virtio/virtio_user/virtio_user_dev.h  |   2 +-\n drivers/net/virtio/virtio_user_ethdev.c       |  14 +-\n drivers/net/virtio/virtqueue.c                |  17 +\n drivers/net/virtio/virtqueue.h                | 113 +++++-\n 10 files changed, 630 insertions(+), 33 deletions(-)"
}