Show a patch.

GET /api/patches/40710/
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 40710,
    "url": "http://patches.dpdk.org/api/patches/40710/",
    "web_url": "http://patches.dpdk.org/patch/40710/",
    "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": "<20180607092616.27720-4-maxime.coquelin@redhat.com>",
    "date": "2018-06-07T09:26:14",
    "name": "[dpdk-dev,v3,3/5] net/vhost: improve Tx path selection",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "ca880cc51514da1cc7f454397a3eece270a644e3",
    "submitter": {
        "id": 512,
        "url": "http://patches.dpdk.org/api/people/512/",
        "name": "Maxime Coquelin",
        "email": "maxime.coquelin@redhat.com"
    },
    "delegate": {
        "id": 2642,
        "url": "http://patches.dpdk.org/api/users/2642/",
        "username": "mcoquelin",
        "first_name": "Maxime",
        "last_name": "Coquelin",
        "email": "maxime.coquelin@redhat.com"
    },
    "mbox": "http://patches.dpdk.org/patch/40710/mbox/",
    "series": [
        {
            "id": 25,
            "url": "http://patches.dpdk.org/api/series/25/",
            "web_url": "http://patches.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://patches.dpdk.org/series/25/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/40710/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/40710/checks/",
    "tags": {},
    "headers": {
        "X-Mailman-Version": "2.1.15",
        "In-Reply-To": "<20180607092616.27720-1-maxime.coquelin@redhat.com>",
        "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 8AB741B16D;\n\tThu,  7 Jun 2018 11:26:39 +0200 (CEST)",
            "from mx1.redhat.com (mx3-rdu2.redhat.com [66.187.233.73])\n\tby dpdk.org (Postfix) with ESMTP id DFDBC1B025\n\tfor <dev@dpdk.org>; Thu,  7 Jun 2018 11:26:36 +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 84DFC8A9FF;\n\tThu,  7 Jun 2018 09:26:36 +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 7FDC320357CA;\n\tThu,  7 Jun 2018 09:26:35 +0000 (UTC)"
        ],
        "References": "<20180607092616.27720-1-maxime.coquelin@redhat.com>",
        "Delivered-To": "patchwork@dpdk.org",
        "X-BeenThere": "dev@dpdk.org",
        "X-Scanned-By": "MIMEDefang 2.78 on 10.11.54.6",
        "Message-Id": "<20180607092616.27720-4-maxime.coquelin@redhat.com>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "Precedence": "list",
        "From": "Maxime Coquelin <maxime.coquelin@redhat.com>",
        "X-Original-To": "patchwork@dpdk.org",
        "Return-Path": "<dev-bounces@dpdk.org>",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>",
        "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:36 +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:36 +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:''"
        ],
        "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>",
        "To": "zhihong.wang@intel.com,\n\ttiwei.bie@intel.com,\n\tdev@dpdk.org",
        "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>",
        "Date": "Thu,  7 Jun 2018 11:26:14 +0200",
        "Cc": "Maxime Coquelin <maxime.coquelin@redhat.com>",
        "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
        "Subject": "[dpdk-dev] [PATCH v3 3/5] net/vhost: improve Tx path selection"
    },
    "content": "This patch improves the Tx path selection depending on\nwhether the application request for offloads, and on whether\noffload features have been negotiated.\n\nWhen the application doesn't request for Tx offload features,\nthe corresponding features bits aren't negotiated.\n\nWhen Tx offload virtio features have been negotiated, ensure\nthe simple Tx path isn't selected.\n\nReviewed-by: Tiwei Bie <tiwei.bie@intel.com>\nSigned-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>\n---\n drivers/net/virtio/virtio_ethdev.c | 21 +++++++++++++++++++--\n drivers/net/virtio/virtio_ethdev.h |  3 ---\n 2 files changed, 19 insertions(+), 5 deletions(-)",
    "diff": "diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c\nindex c6087d9b1..870bd727e 100644\n--- a/drivers/net/virtio/virtio_ethdev.c\n+++ b/drivers/net/virtio/virtio_ethdev.c\n@@ -1860,8 +1860,10 @@ static int\n virtio_dev_configure(struct rte_eth_dev *dev)\n {\n \tconst struct rte_eth_rxmode *rxmode = &dev->data->dev_conf.rxmode;\n+\tconst struct rte_eth_txmode *txmode = &dev->data->dev_conf.txmode;\n \tstruct virtio_hw *hw = dev->data->dev_private;\n \tuint64_t rx_offloads = rxmode->offloads;\n+\tuint64_t tx_offloads = txmode->offloads;\n \tuint64_t req_features;\n \tint ret;\n \n@@ -1887,6 +1889,15 @@ virtio_dev_configure(struct rte_eth_dev *dev)\n \t\t\t(1ULL << VIRTIO_NET_F_GUEST_TSO4) |\n \t\t\t(1ULL << VIRTIO_NET_F_GUEST_TSO6);\n \n+\tif (tx_offloads & (DEV_TX_OFFLOAD_UDP_CKSUM |\n+\t\t\t   DEV_TX_OFFLOAD_TCP_CKSUM))\n+\t\treq_features |= (1ULL << VIRTIO_NET_F_CSUM);\n+\n+\tif (tx_offloads & DEV_TX_OFFLOAD_TCP_TSO)\n+\t\treq_features |=\n+\t\t\t(1ULL << VIRTIO_NET_F_HOST_TSO4) |\n+\t\t\t(1ULL << VIRTIO_NET_F_HOST_TSO6);\n+\n \t/* if request features changed, reinit the device */\n \tif (req_features != hw->req_guest_features) {\n \t\tret = virtio_init_device(dev, req_features);\n@@ -1955,6 +1966,12 @@ virtio_dev_configure(struct rte_eth_dev *dev)\n \t\t\t   DEV_RX_OFFLOAD_TCP_CKSUM))\n \t\thw->use_simple_rx = 0;\n \n+\tif (tx_offloads & (DEV_TX_OFFLOAD_UDP_CKSUM |\n+\t\t\t   DEV_TX_OFFLOAD_TCP_CKSUM |\n+\t\t\t   DEV_TX_OFFLOAD_TCP_TSO |\n+\t\t\t   DEV_TX_OFFLOAD_VLAN_INSERT))\n+\t\thw->use_simple_tx = 0;\n+\n \treturn 0;\n }\n \n@@ -2208,14 +2225,14 @@ virtio_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)\n \n \tdev_info->tx_offload_capa = DEV_TX_OFFLOAD_MULTI_SEGS |\n \t\t\t\t    DEV_TX_OFFLOAD_VLAN_INSERT;\n-\tif (hw->guest_features & (1ULL << VIRTIO_NET_F_CSUM)) {\n+\tif (host_features & (1ULL << VIRTIO_NET_F_CSUM)) {\n \t\tdev_info->tx_offload_capa |=\n \t\t\tDEV_TX_OFFLOAD_UDP_CKSUM |\n \t\t\tDEV_TX_OFFLOAD_TCP_CKSUM;\n \t}\n \ttso_mask = (1ULL << VIRTIO_NET_F_HOST_TSO4) |\n \t\t(1ULL << VIRTIO_NET_F_HOST_TSO6);\n-\tif ((hw->guest_features & tso_mask) == tso_mask)\n+\tif ((host_features & tso_mask) == tso_mask)\n \t\tdev_info->tx_offload_capa |= DEV_TX_OFFLOAD_TCP_TSO;\n }\n \ndiff --git a/drivers/net/virtio/virtio_ethdev.h b/drivers/net/virtio/virtio_ethdev.h\nindex bb40064ea..b603665c7 100644\n--- a/drivers/net/virtio/virtio_ethdev.h\n+++ b/drivers/net/virtio/virtio_ethdev.h\n@@ -28,9 +28,6 @@\n \t 1u << VIRTIO_NET_F_CTRL_VQ\t  |\t\\\n \t 1u << VIRTIO_NET_F_CTRL_RX\t  |\t\\\n \t 1u << VIRTIO_NET_F_CTRL_VLAN\t  |\t\\\n-\t 1u << VIRTIO_NET_F_CSUM\t  |\t\\\n-\t 1u << VIRTIO_NET_F_HOST_TSO4\t  |\t\\\n-\t 1u << VIRTIO_NET_F_HOST_TSO6\t  |\t\\\n \t 1u << VIRTIO_NET_F_MRG_RXBUF\t  |\t\\\n \t 1u << VIRTIO_NET_F_MTU\t| \\\n \t 1ULL << VIRTIO_NET_F_GUEST_ANNOUNCE |\t\\\n",
    "prefixes": [
        "dpdk-dev",
        "v3",
        "3/5"
    ]
}