Show a cover letter.

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

{
    "id": 45067,
    "url": "http://patches.dpdk.org/api/covers/45067/",
    "web_url": "http://patches.dpdk.org/cover/45067/",
    "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": "<20180921103308.16357-1-jfreimann@redhat.com>",
    "date": "2018-09-21T10:32:57",
    "name": "[v6,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/45067/mbox/",
    "series": [
        {
            "id": 1435,
            "url": "http://patches.dpdk.org/api/series/1435/",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=1435",
            "date": "2018-09-21T10:32:57",
            "name": "implement packed virtqueues",
            "version": 6,
            "mbox": "http://patches.dpdk.org/series/1435/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/covers/45067/comments/",
    "headers": {
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Cc": "tiwei.bie@intel.com,\n\tmaxime.coquelin@redhat.com,\n\tGavin.Hu@arm.com",
        "X-Original-To": "patchwork@dpdk.org",
        "Date": "Fri, 21 Sep 2018 12:32:57 +0200",
        "X-Scanned-By": "MIMEDefang 2.84 on 10.5.11.25",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "X-BeenThere": "dev@dpdk.org",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "To": "dev@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id DB9932BA3;\n\tFri, 21 Sep 2018 12:33:17 +0200 (CEST)",
            "from mx1.redhat.com (mx1.redhat.com [209.132.183.28])\n\tby dpdk.org (Postfix) with ESMTP id D80EC1DA4\n\tfor <dev@dpdk.org>; Fri, 21 Sep 2018 12:33:16 +0200 (CEST)",
            "from smtp.corp.redhat.com\n\t(int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.25])\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 1985588E56;\n\tFri, 21 Sep 2018 10:33:16 +0000 (UTC)",
            "from localhost (dhcp-192-209.str.redhat.com [10.33.192.209])\n\tby smtp.corp.redhat.com (Postfix) with ESMTPS id 03D102015AD1;\n\tFri, 21 Sep 2018 10:33:09 +0000 (UTC)"
        ],
        "Errors-To": "dev-bounces@dpdk.org",
        "X-Greylist": "Sender IP whitelisted, not delayed by milter-greylist-4.5.16\n\t(mx1.redhat.com [10.5.110.25]); Fri, 21 Sep 2018 10:33:16 +0000 (UTC)",
        "From": "Jens Freimann <jfreimann@redhat.com>",
        "Precedence": "list",
        "Delivered-To": "patchwork@dpdk.org",
        "Message-Id": "<20180921103308.16357-1-jfreimann@redhat.com>",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "Subject": "[dpdk-dev] [PATCH v6 00/11] implement packed virtqueues",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "Return-Path": "<dev-bounces@dpdk.org>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "X-Mailman-Version": "2.1.15"
    },
    "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\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\nchanges from v5->v6:\n* fix VIRTQUEUE_DUMP macro\n* rework mergeable rx buffer path, support out of order (not sure if I\n  need a .next field to support chains) \n* move wmb in virtio_receive_pkts_packed() (Gavin)\n* rename to virtio_init_split/_packed (Maxime)\n* add support for ctrl virtqueues (Tiwei, thx Max for fixing)\n* rework tx path to support update_packet_stats and\n  virtqueue_xmit_offload, TODO: merge with split-ring code to\n  avoid a lot of duplicate code\n* remove unnecessary check for avoiding to call VIRTQUEUE_DUMP (Maxime)\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*** BLURB HERE ***\n\nJens Freimann (10):\n  net/virtio: vring init for packed queues\n  net/virtio: add packed virtqueue 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: add support for mergeable buffers with packed virtqueues\n  net/virtio: add virtio send command packed queue support\n  net/virtio: enable packed virtqueues by default\n\nYuanhan Liu (1):\n  net/virtio-user: add option to use packed queues\n\n drivers/net/virtio/virtio_ethdev.c            | 135 ++++-\n drivers/net/virtio/virtio_ethdev.h            |   5 +\n drivers/net/virtio/virtio_pci.h               |   8 +\n drivers/net/virtio/virtio_ring.h              |  96 +++-\n drivers/net/virtio/virtio_rxtx.c              | 490 +++++++++++++++++-\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                |  21 +\n drivers/net/virtio/virtqueue.h                |  50 +-\n 10 files changed, 796 insertions(+), 35 deletions(-)"
}