get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 40694,
    "url": "http://patchwork.dpdk.org/api/patches/40694/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/20180606123128.7868-4-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": "<20180606123128.7868-4-maxime.coquelin@redhat.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20180606123128.7868-4-maxime.coquelin@redhat.com",
    "date": "2018-06-06T12:31:26",
    "name": "[dpdk-dev,v2,3/5] net/vhost: improve Tx path selection",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "84a65b63716aa5d3bd3b1c6f5e215049a4995cf1",
    "submitter": {
        "id": 512,
        "url": "http://patchwork.dpdk.org/api/people/512/?format=api",
        "name": "Maxime Coquelin",
        "email": "maxime.coquelin@redhat.com"
    },
    "delegate": {
        "id": 2642,
        "url": "http://patchwork.dpdk.org/api/users/2642/?format=api",
        "username": "mcoquelin",
        "first_name": "Maxime",
        "last_name": "Coquelin",
        "email": "maxime.coquelin@redhat.com"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/20180606123128.7868-4-maxime.coquelin@redhat.com/mbox/",
    "series": [
        {
            "id": 20,
            "url": "http://patchwork.dpdk.org/api/series/20/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=20",
            "date": "2018-06-06T12:31:23",
            "name": "net/virtio: Tx path selection and offload improvements",
            "version": 2,
            "mbox": "http://patchwork.dpdk.org/series/20/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/40694/comments/",
    "check": "success",
    "checks": "http://patchwork.dpdk.org/api/patches/40694/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<maxime.coquelin@redhat.com>",
        "Received": [
            "from mx1.redhat.com (mx3-rdu2.redhat.com [66.187.233.73])\n\tby dpdk.org (Postfix) with ESMTP id 474121B22A\n\tfor <dev@dpdk.org>; Wed,  6 Jun 2018 14:31:47 +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 E2747818BAF1;\n\tWed,  6 Jun 2018 12:31:46 +0000 (UTC)",
            "from localhost.localdomain (ovpn-112-47.ams2.redhat.com\n\t[10.36.112.47])\n\tby smtp.corp.redhat.com (Postfix) with ESMTP id E842263F76;\n\tWed,  6 Jun 2018 12:31:45 +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": "Wed,  6 Jun 2018 14:31:26 +0200",
        "Message-Id": "<20180606123128.7868-4-maxime.coquelin@redhat.com>",
        "In-Reply-To": "<20180606123128.7868-1-maxime.coquelin@redhat.com>",
        "References": "<20180606123128.7868-1-maxime.coquelin@redhat.com>",
        "X-Scanned-By": "MIMEDefang 2.79 on 10.11.54.5",
        "X-Greylist": [
            "Sender IP whitelisted, not delayed by milter-greylist-4.5.16\n\t(mx1.redhat.com [10.11.55.8]); Wed, 06 Jun 2018 12:31:46 +0000 (UTC)",
            "inspected by milter-greylist-4.5.16 (mx1.redhat.com\n\t[10.11.55.8]); \n\tWed, 06 Jun 2018 12:31:46 +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:'maxime.coquelin@redhat.com' RCPT:''"
        ],
        "Subject": "[dpdk-dev] [PATCH v2 3/5] net/vhost: improve Tx path selection",
        "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>",
        "X-List-Received-Date": "Wed, 06 Jun 2018 12:31:47 -0000"
    },
    "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\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 73e6d6b6b..b023ec02e 100644\n--- a/drivers/net/virtio/virtio_ethdev.c\n+++ b/drivers/net/virtio/virtio_ethdev.c\n@@ -1859,8 +1859,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@@ -1886,6 +1888,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_TCP_CKSUM |\n+\t\t\t\tDEV_TX_OFFLOAD_UDP_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_TCP_CKSUM |\n+\t\t\t\tDEV_TX_OFFLOAD_UDP_CKSUM |\n+\t\t\t\tDEV_TX_OFFLOAD_TCP_TSO |\n+\t\t\t\tDEV_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",
        "v2",
        "3/5"
    ]
}