get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 1128,
    "url": "http://patches.dpdk.org/api/patches/1128/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1415152183-119796-4-git-send-email-yongwang@vmware.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": "<1415152183-119796-4-git-send-email-yongwang@vmware.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1415152183-119796-4-git-send-email-yongwang@vmware.com",
    "date": "2014-11-05T01:49:40",
    "name": "[dpdk-dev,v2,3/6] vmxnet3: Fix dev stop/restart bug",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "23003086b881409c9c7f60033f3e878a40cb0067",
    "submitter": {
        "id": 93,
        "url": "http://patches.dpdk.org/api/people/93/?format=api",
        "name": "Yong Wang",
        "email": "yongwang@vmware.com"
    },
    "delegate": null,
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1415152183-119796-4-git-send-email-yongwang@vmware.com/mbox/",
    "series": [],
    "comments": "http://patches.dpdk.org/api/patches/1128/comments/",
    "check": "pending",
    "checks": "http://patches.dpdk.org/api/patches/1128/checks/",
    "tags": {},
    "related": [],
    "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 [IPv6:::1])\n\tby dpdk.org (Postfix) with ESMTP id C8F8D7F2D;\n\tWed,  5 Nov 2014 02:40:33 +0100 (CET)",
            "from smtp-outbound-2.vmware.com (smtp-outbound-2.vmware.com\n\t[208.91.2.13]) by dpdk.org (Postfix) with ESMTP id D54795947\n\tfor <dev@dpdk.org>; Wed,  5 Nov 2014 02:40:30 +0100 (CET)",
            "from sc9-mailhost1.vmware.com (sc9-mailhost1.vmware.com\n\t[10.113.161.71])\n\tby smtp-outbound-2.vmware.com (Postfix) with ESMTP id BF45C289F4\n\tfor <dev@dpdk.org>; Tue,  4 Nov 2014 17:49:46 -0800 (PST)",
            "from sc9-mailhost2.vmware.com (unknown [10.32.43.10])\n\tby sc9-mailhost1.vmware.com (Postfix) with ESMTP id A1DC1191CE\n\tfor <dev@dpdk.org>; Tue,  4 Nov 2014 17:49:46 -0800 (PST)"
        ],
        "From": "Yong Wang <yongwang@vmware.com>",
        "To": "dev@dpdk.org",
        "Date": "Tue,  4 Nov 2014 17:49:40 -0800",
        "Message-Id": "<1415152183-119796-4-git-send-email-yongwang@vmware.com>",
        "X-Mailer": "git-send-email 1.9.1",
        "In-Reply-To": "<1415152183-119796-1-git-send-email-yongwang@vmware.com>",
        "References": "<1415152183-119796-1-git-send-email-yongwang@vmware.com>",
        "Subject": "[dpdk-dev] [PATCH v2 3/6] vmxnet3: Fix dev stop/restart bug",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "patches and discussions about DPDK <dev.dpdk.org>",
        "List-Unsubscribe": "<http://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": "<http://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": "This change makes vmxnet3 consistent with other pmds in\nterms of dev_stop behavior: rather than releasing tx/rx\nrings, it only resets the ring structure and release the\npending mbufs.\n\nVerified with various tests (test-pmd and pktgen) over\nvmxnet3 that dev stop/restart works fine.\n\nSigned-off-by: Yong Wang <yongwang@vmware.com>\n---\n lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c | 78 ++++++++++++++++++++++++++++++++---\n 1 file changed, 73 insertions(+), 5 deletions(-)",
    "diff": "diff --git a/lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c b/lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c\nindex 0b6363f..2017d4b 100644\n--- a/lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c\n+++ b/lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c\n@@ -157,7 +157,7 @@ vmxnet3_txq_dump(struct vmxnet3_tx_queue *txq)\n #endif\n \n static inline void\n-vmxnet3_cmd_ring_release(vmxnet3_cmd_ring_t *ring)\n+vmxnet3_cmd_ring_release_mbufs(vmxnet3_cmd_ring_t *ring)\n {\n \twhile (ring->next2comp != ring->next2fill) {\n \t\t/* No need to worry about tx desc ownership, device is quiesced by now. */\n@@ -171,16 +171,23 @@ vmxnet3_cmd_ring_release(vmxnet3_cmd_ring_t *ring)\n \t\t}\n \t\tvmxnet3_cmd_ring_adv_next2comp(ring);\n \t}\n+}\n+\n+static void\n+vmxnet3_cmd_ring_release(vmxnet3_cmd_ring_t *ring)\n+{\n+\tvmxnet3_cmd_ring_release_mbufs(ring);\n \trte_free(ring->buf_info);\n \tring->buf_info = NULL;\n }\n \n+\n void\n vmxnet3_dev_tx_queue_release(void *txq)\n {\n \tvmxnet3_tx_queue_t *tq = txq;\n \n-\tif (txq != NULL) {\n+\tif (tq != NULL) {\n \t\t/* Release the cmd_ring */\n \t\tvmxnet3_cmd_ring_release(&tq->cmd_ring);\n \t}\n@@ -192,13 +199,74 @@ vmxnet3_dev_rx_queue_release(void *rxq)\n \tint i;\n \tvmxnet3_rx_queue_t *rq = rxq;\n \n-\tif (rxq != NULL) {\n+\tif (rq != NULL) {\n \t\t/* Release both the cmd_rings */\n \t\tfor (i = 0; i < VMXNET3_RX_CMDRING_SIZE; i++)\n \t\t\tvmxnet3_cmd_ring_release(&rq->cmd_ring[i]);\n \t}\n }\n \n+static void\n+vmxnet3_dev_tx_queue_reset(void *txq)\n+{\n+\tvmxnet3_tx_queue_t *tq = txq;\n+\tstruct vmxnet3_cmd_ring *ring = &tq->cmd_ring;\n+\tstruct vmxnet3_comp_ring *comp_ring = &tq->comp_ring;\n+\tint size;\n+\n+\tif (tq != NULL) {\n+\t\t/* Release the cmd_ring mbufs */\n+\t\tvmxnet3_cmd_ring_release_mbufs(&tq->cmd_ring);\n+\t}\n+\n+\t/* Tx vmxnet rings structure initialization*/\n+\tring->next2fill = 0;\n+\tring->next2comp = 0;\n+\tring->gen = VMXNET3_INIT_GEN;\n+\tcomp_ring->next2proc = 0;\n+\tcomp_ring->gen = VMXNET3_INIT_GEN;\n+\n+\tsize = sizeof(struct Vmxnet3_TxDesc) * ring->size;\n+\tsize += sizeof(struct Vmxnet3_TxCompDesc) * comp_ring->size;\n+\n+\tmemset(ring->base, 0, size);\n+}\n+\n+static void\n+vmxnet3_dev_rx_queue_reset(void *rxq)\n+{\n+\tint i;\n+\tvmxnet3_rx_queue_t *rq = rxq;\n+\tstruct vmxnet3_cmd_ring *ring0, *ring1;\n+\tstruct vmxnet3_comp_ring *comp_ring;\n+\tint size;\n+\n+\tif (rq != NULL) {\n+\t\t/* Release both the cmd_rings mbufs */\n+\t\tfor (i = 0; i < VMXNET3_RX_CMDRING_SIZE; i++)\n+\t\t\tvmxnet3_cmd_ring_release_mbufs(&rq->cmd_ring[i]);\n+\t}\n+\n+\tring0 = &rq->cmd_ring[0];\n+\tring1 = &rq->cmd_ring[1];\n+\tcomp_ring = &rq->comp_ring;\n+\n+\t/* Rx vmxnet rings structure initialization */\n+\tring0->next2fill = 0;\n+\tring1->next2fill = 0;\n+\tring0->next2comp = 0;\n+\tring1->next2comp = 0;\n+\tring0->gen = VMXNET3_INIT_GEN;\n+\tring1->gen = VMXNET3_INIT_GEN;\n+\tcomp_ring->next2proc = 0;\n+\tcomp_ring->gen = VMXNET3_INIT_GEN;\n+\n+\tsize = sizeof(struct Vmxnet3_RxDesc) * (ring0->size + ring1->size);\n+\tsize += sizeof(struct Vmxnet3_RxCompDesc) * comp_ring->size;\n+\n+\tmemset(ring0->base, 0, size);\n+}\n+\n void\n vmxnet3_dev_clear_queues(struct rte_eth_dev *dev)\n {\n@@ -211,7 +279,7 @@ vmxnet3_dev_clear_queues(struct rte_eth_dev *dev)\n \n \t\tif (txq != NULL) {\n \t\t\ttxq->stopped = TRUE;\n-\t\t\tvmxnet3_dev_tx_queue_release(txq);\n+\t\t\tvmxnet3_dev_tx_queue_reset(txq);\n \t\t}\n \t}\n \n@@ -220,7 +288,7 @@ vmxnet3_dev_clear_queues(struct rte_eth_dev *dev)\n \n \t\tif (rxq != NULL) {\n \t\t\trxq->stopped = TRUE;\n-\t\t\tvmxnet3_dev_rx_queue_release(rxq);\n+\t\t\tvmxnet3_dev_rx_queue_reset(rxq);\n \t\t}\n \t}\n }\n",
    "prefixes": [
        "dpdk-dev",
        "v2",
        "3/6"
    ]
}