Show a cover letter.

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

{
    "id": 40708,
    "url": "http://patchwork.dpdk.org/api/covers/40708/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/cover/20180607092616.27720-1-maxime.coquelin@redhat.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": "<20180607092616.27720-1-maxime.coquelin@redhat.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20180607092616.27720-1-maxime.coquelin@redhat.com",
    "date": "2018-06-07T09:26:11",
    "name": "[dpdk-dev,v3,0/5] net/virtio: Tx path selection and offload improvements",
    "submitter": {
        "id": 512,
        "url": "http://patchwork.dpdk.org/api/people/512/?format=api",
        "name": "Maxime Coquelin",
        "email": "maxime.coquelin@redhat.com"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/cover/20180607092616.27720-1-maxime.coquelin@redhat.com/mbox/",
    "series": [
        {
            "id": 25,
            "url": "http://patchwork.dpdk.org/api/series/25/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=25",
            "date": "2018-06-07T09:26:11",
            "name": "net/virtio: Tx path selection and offload improvements",
            "version": 3,
            "mbox": "http://patchwork.dpdk.org/series/25/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/covers/40708/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 A12FD1B010;\n\tThu,  7 Jun 2018 11:26:33 +0200 (CEST)",
            "from mx1.redhat.com (mx3-rdu2.redhat.com [66.187.233.73])\n\tby dpdk.org (Postfix) with ESMTP id 9DEBC7ED8\n\tfor <dev@dpdk.org>; Thu,  7 Jun 2018 11:26:32 +0200 (CEST)",
            "from smtp.corp.redhat.com\n\t(int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6])\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 BC01479D36;\n\tThu,  7 Jun 2018 09:26:31 +0000 (UTC)",
            "from localhost.localdomain (ovpn-112-46.ams2.redhat.com\n\t[10.36.112.46])\n\tby smtp.corp.redhat.com (Postfix) with ESMTP id D0DB920357CA;\n\tThu,  7 Jun 2018 09:26:30 +0000 (UTC)"
        ],
        "From": "Maxime Coquelin <maxime.coquelin@redhat.com>",
        "To": "zhihong.wang@intel.com,\n\ttiwei.bie@intel.com,\n\tdev@dpdk.org",
        "Cc": "Maxime Coquelin <maxime.coquelin@redhat.com>",
        "Date": "Thu,  7 Jun 2018 11:26:11 +0200",
        "Message-Id": "<20180607092616.27720-1-maxime.coquelin@redhat.com>",
        "X-Scanned-By": "MIMEDefang 2.78 on 10.11.54.6",
        "X-Greylist": [
            "Sender IP whitelisted, not delayed by milter-greylist-4.5.16\n\t(mx1.redhat.com [10.11.55.2]); Thu, 07 Jun 2018 09:26:31 +0000 (UTC)",
            "inspected by milter-greylist-4.5.16 (mx1.redhat.com\n\t[10.11.55.2]); \n\tThu, 07 Jun 2018 09:26:31 +0000 (UTC) for IP:'10.11.54.6'\n\tDOMAIN:'int-mx06.intmail.prod.int.rdu2.redhat.com'\n\tHELO:'smtp.corp.redhat.com' FROM:'maxime.coquelin@redhat.com' RCPT:''"
        ],
        "Subject": "[dpdk-dev] [PATCH v3 0/5] net/virtio: Tx path selection and offload\n\timprovements",
        "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://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "Since v2, the series introduce a new devarg to disable the\nTx simple path default. Indeed, as reported by Tiwei, simple\nTx path does not comply with the Virtio spec, and so should\nnot be selected automatically as it might break with some\nVirtio device implementations. In the default setup, it\nhas an impact on performance when mergeable buffers are\ndisabled, as the standard path will now be used.\n\nThis series initially addressed a problem seen when running\nbenchmarks, where we see a big difference in Tx performance\ndepending on whether Rx mergeable is enabled or not.\nWith patch 2, Tx simple path is selected even when Rx-mrg is\nnegotiated.\n\nDigging a bit further, I found that Tx simple path could be\nselected even when offload features had been negotiated.\nWith patch 3, guest does not try to negotiate Tx offload\nfeatures that haven't been selected by the application.\nIt means that without restarting the guest, we can now switch\nfrom Tx simple path when application do no request offloads,\nto Tx standard path when the application request offloads.\nNote that to do so, one must stop the port first [0].\nAnother advantage of doing this than using Tx simple path\nwhen guest application does not use offload features, is\nthat on host side, the virtio net header parsing is skipped\nin dequeue function.\n\nPatch 4 fixes an issue with Rx offload, as simple path was\nbe used if application requested TCP LRO only.\n\nFinally, patch 5 aims at improving the offload feature checks\nin the standard paths.\n\nBelow are benchmarks results when offloads are enabled at\ndevice level and simple Tx is disabled (default).\n\nRx-mrg=off benchmarks:\n+------------+-------+-------------+-------------+----------+\n|    Run     |  PVP  | Guest->Host | Host->Guest | Loopback |\n+------------+-------+-------------+-------------+----------+\n| v18.05     | 14.47 |       17.02 |       17.57 |    13.15 |\n| + series   | 11.73 |       13.90 |       17.50 |    13.19 |\n+------------+-------+-------------+-------------+----------+\n\nRx-mrg=on benchmarks:\n+------------+-------+-------------+-------------+----------+\n|    Run     |  PVP  | Guest->Host | Host->Guest | Loopback |\n+------------+-------+-------------+-------------+----------+\n| v18.05     |  9.53 |       13.80 |       16.70 |    13.11 |\n| + series   |  9.58 |       13.93 |       16.70 |    13.11 |\n+------------+-------+-------------+-------------+----------+\n\nBelow are benchmarks results when offloads are enabled at\ndevice level and simple Tx is unlocked (with passing\n'simple_tx_support=1' as Virtio device devarg).\n\nRx-mrg=off benchmarks:\n+------------+-------+-------------+-------------+----------+\n|    Run     |  PVP  | Guest->Host | Host->Guest | Loopback |\n+------------+-------+-------------+-------------+----------+\n| v18.05     | 14.47 |       17.02 |       17.57 |    13.15 |\n| + series   | 14.88 |       19.64 |       17.50 |    13.14 |\n+------------+-------+-------------+-------------+----------+\n\nRx-mrg=on benchmarks:\n+------------+-------+-------------+-------------+----------+\n|    Run     |  PVP  | Guest->Host | Host->Guest | Loopback |\n+------------+-------+-------------+-------------+----------+\n| v18.05     |  9.53 |       13.80 |       16.70 |    13.11 |\n| + series   | 12.62 |       19.69 |       16.70 |    13.11 |\n+------------+-------+-------------+-------------+----------+\n\n\n[0]:\ntestpmd> port start 0\nEAL: Error disabling MSI-X interrupts for fd 17\nset_rxtx_funcs(): virtio: using mergeable buffer Rx path on port 0\nset_rxtx_funcs(): virtio: using simple Tx path on port 0\nPort 0: 52:54:00:58:D7:01\nChecking link statuses...\nDone\ntestpmd> show port 0 tx_offload capabilities \nTx Offloading Capabilities of port 0 :\n  Per Queue :\n  Per Port  : VLAN_INSERT UDP_CKSUM TCP_CKSUM TCP_TSO MULTI_SEGS\n         \ntestpmd> show port 0 tx_offload configuration\nTx Offloading Configuration of port 0 :\n  Port :\n  Queue[ 0] :\n\ntestpmd> port stop 0\nStopping ports...\nChecking link statuses...\nDone                \ntestpmd> csum set tcp hw 0\nParse tunnel is off\nIP checksum offload is sw\nUDP checksum offload is sw\nTCP checksum offload is hw\nSCTP checksum offload is sw\nOuter-Ip checksum offload is sw\ntestpmd> port start 0\nConfiguring Port 0 (socket 0)\nEAL: Error disabling MSI-X interrupts for fd 17\nset_rxtx_funcs(): virtio: using mergeable buffer Rx path on port 0\nset_rxtx_funcs(): virtio: using standard Tx path on port 0\nPort 0: 52:54:00:58:D7:01\nChecking link statuses...\nDone                                         \ntestpmd> show port 0 tx_offload configuration\nTx Offloading Configuration of port 0 :\n  Port : TCP_CKSUM\n  Queue[ 0] :\n\nChanges in v3:\n==============\n- Fix devargs parsing not to break if other args are passed (Tiwei)\n- Various comestic fixes (Tiwei)\n\nChanges in v2:\n==============\n- Introduce a devarg to disable simple Tx path by default (Tiwei)\n- Use standard PATH if VLAN strip or insert offloads are requested (Tiwei)\n- Use boolean instead of int/uint8_t for has_tx/rx_offload (Tiwei)\n\nMaxime Coquelin (5):\n  net/virtio: forbid simple Tx path by default\n  net/virtio: use simple path for Tx even if Rx mergeable\n  net/vhost: improve Tx path selection\n  net/virtio: don't use simple Rx if TCP LRO or VLAN strip requested\n  net/virtio: improve offload check performance\n\n doc/guides/nics/virtio.rst         |   9 +++\n drivers/net/virtio/virtio_ethdev.c | 121 ++++++++++++++++++++++++++++++++++---\n drivers/net/virtio/virtio_ethdev.h |   3 -\n drivers/net/virtio/virtio_pci.h    |   4 ++\n drivers/net/virtio/virtio_rxtx.c   |  30 ++-------\n 5 files changed, 132 insertions(+), 35 deletions(-)"
}