Show a cover letter.

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

{
    "id": 48496,
    "url": "http://patches.dpdk.org/api/covers/48496/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/cover/20181203141515.28368-1-jfreimann@redhat.com/",
    "project": {
        "id": 1,
        "url": "http://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": "<20181203141515.28368-1-jfreimann@redhat.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20181203141515.28368-1-jfreimann@redhat.com",
    "date": "2018-12-03T14:15:06",
    "name": "[v11,0/9] implement packed virtqueues",
    "submitter": {
        "id": 745,
        "url": "http://patches.dpdk.org/api/people/745/?format=api",
        "name": "Jens Freimann",
        "email": "jfreimann@redhat.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/cover/20181203141515.28368-1-jfreimann@redhat.com/mbox/",
    "series": [
        {
            "id": 2645,
            "url": "http://patches.dpdk.org/api/series/2645/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=2645",
            "date": "2018-12-03T14:15:06",
            "name": "implement packed virtqueues",
            "version": 11,
            "mbox": "http://patches.dpdk.org/series/2645/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/covers/48496/comments/",
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id EE85E5F44;\n\tMon,  3 Dec 2018 15:15:52 +0100 (CET)",
            "from mx1.redhat.com (mx1.redhat.com [209.132.183.28])\n\tby dpdk.org (Postfix) with ESMTP id EA7A15F22\n\tfor <dev@dpdk.org>; Mon,  3 Dec 2018 15:15:50 +0100 (CET)",
            "from smtp.corp.redhat.com\n\t(int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15])\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 40D7D87628;\n\tMon,  3 Dec 2018 14:15:50 +0000 (UTC)",
            "from localhost (dhcp-192-205.str.redhat.com [10.33.192.205])\n\tby smtp.corp.redhat.com (Postfix) with ESMTPS id CBBBD6295B;\n\tMon,  3 Dec 2018 14:15:16 +0000 (UTC)"
        ],
        "From": "Jens Freimann <jfreimann@redhat.com>",
        "To": "dev@dpdk.org",
        "Cc": "tiwei.bie@intel.com,\n\tmaxime.coquelin@redhat.com,\n\tGavin.Hu@arm.com",
        "Date": "Mon,  3 Dec 2018 15:15:06 +0100",
        "Message-Id": "<20181203141515.28368-1-jfreimann@redhat.com>",
        "X-Scanned-By": "MIMEDefang 2.79 on 10.5.11.15",
        "X-Greylist": "Sender IP whitelisted, not delayed by milter-greylist-4.5.16\n\t(mx1.redhat.com [10.5.110.26]); Mon, 03 Dec 2018 14:15:50 +0000 (UTC)",
        "Subject": "[dpdk-dev] [PATCH v11 0/9] implement packed virtqueues",
        "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\t<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\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "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\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 pointers.\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\nWith this patch set I see a slight performance drop compared to split\nvirtqueues. I tested according to\nhttp://doc.dpdk.org/guides/howto/pvp_reference_benchmark.html and I see\na small performance drop of 3-4 percent in PVP and and similar numbers\nwhen doing txonly tests. I tested with DPDK v18.11 in the host and Wei's\nv3 QEMU series for packed ring [1]. The root cause of this is still under\ninvestigation and will hopefully be fixed in the next version of this\npatch set. I'm posting this in the current state so people can review\nand possibly do their own tests. \n\nregards,\nJens \n\n[1] https://github.com/jensfr/qemu/tree/wexu-packed-ring-v3\n\nv10-v11:\n * this version includes some fixes from Tiwei, so I added his\n   Signed-off-by to some of the patches\n * fix hang with mergable rx buffers (Tiwei)\n * clean-up code and simplify buffer handling (Tiwei)\n * rebase to current virtio-next master branch\n\nv9-v10:\n * don't mix index into buffer list and descriptors\n * whitespace and formatting issues\n * remove \"VQ:\" in dump virtqueue patch\n * add extra packed vring struct to virtqueue and change function\n   prototypes and code accordingly\n * move wrap_counters to virtqueue\n * make if-conditions for packed and !packed more clear in\n   set_rxtx_funcs()\n * initialize wrap counters in first patch, instead of rx and tx\n   implementation patch\n * make virtio-user not supported with packed virtqueues, to\n   be fixed in other patch set?\n\nv8-v9:\n * fix virtio_ring_free_chain_packed() to handle descriptors\n   correctly in case of out-of-order\n * fix check in virtqueue_xmit_cleanup_packed() to improve performance\n\nv7->v8:\n * move desc_is_used change to correct patch\n * remove trailing newline\n * correct xmit code, flags update and memory barrier\n * move packed desc init to dedicated function, split\n   and packed variant\n\n\nJens Freimann (8):\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: 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 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            | 227 +++++--\n drivers/net/virtio/virtio_ethdev.h            |   8 +\n drivers/net/virtio/virtio_pci.h               |   7 +\n drivers/net/virtio/virtio_ring.h              |  64 +-\n drivers/net/virtio/virtio_rxtx.c              | 604 +++++++++++++++++-\n .../net/virtio/virtio_user/virtio_user_dev.c  |  19 +-\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                |  22 +\n drivers/net/virtio/virtqueue.h                | 122 +++-\n 10 files changed, 1014 insertions(+), 75 deletions(-)"
}