get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 45033,
    "url": "https://patches.dpdk.org/api/patches/45033/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20180920125226.11904-1-3chas3@gmail.com/",
    "project": {
        "id": 1,
        "url": "https://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": "<20180920125226.11904-1-3chas3@gmail.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20180920125226.11904-1-3chas3@gmail.com",
    "date": "2018-09-20T12:52:26",
    "name": "[v2] net/bonding: fix RX slave fairness",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "4c8f4e47afb5f983d8ca03913627f50d16fb7b0f",
    "submitter": {
        "id": 341,
        "url": "https://patches.dpdk.org/api/people/341/?format=api",
        "name": "Chas Williams",
        "email": "3chas3@gmail.com"
    },
    "delegate": {
        "id": 319,
        "url": "https://patches.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20180920125226.11904-1-3chas3@gmail.com/mbox/",
    "series": [
        {
            "id": 1418,
            "url": "https://patches.dpdk.org/api/series/1418/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=1418",
            "date": "2018-09-20T12:52:26",
            "name": "[v2] net/bonding: fix RX slave fairness",
            "version": 2,
            "mbox": "https://patches.dpdk.org/series/1418/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/45033/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/45033/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 [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id EAD117CEB;\n\tThu, 20 Sep 2018 14:52:33 +0200 (CEST)",
            "from mail-qt0-f196.google.com (mail-qt0-f196.google.com\n\t[209.85.216.196]) by dpdk.org (Postfix) with ESMTP id ADE796C9B;\n\tThu, 20 Sep 2018 14:52:32 +0200 (CEST)",
            "by mail-qt0-f196.google.com with SMTP id l42-v6so8280709qtf.13;\n\tThu, 20 Sep 2018 05:52:32 -0700 (PDT)",
            "from monolith.fios-router.home\n\t(pool-173-79-169-217.washdc.fios.verizon.net. [173.79.169.217])\n\tby smtp.gmail.com with ESMTPSA id\n\tu184-v6sm14301770qkc.87.2018.09.20.05.52.31\n\t(version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256);\n\tThu, 20 Sep 2018 05:52:31 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;\n\th=from:to:cc:subject:date:message-id:in-reply-to:references;\n\tbh=hCkNiR43GgMg+9aStxrr3xUesDfiP38MSIqZ89S2JW8=;\n\tb=YKttsPX6kJMaVYHkKVTRBNkP2wvdDQy5MbVZkKQeOcd1GbnL/3CnLc1V5kvjZVnpjA\n\tgIEm+sxWT1Bfabw7+/iwbnDL613OWGDIF3ERwA8MoznwC7P4aFkOpu/PxW1jqMWTaFQ2\n\tVd1g0wSwsi8T+8BHT/trQXHlA/EDxAcDTcHlBCpx5OrkWgxrt2xm9Z5Zz3nIdnmrjclj\n\tjGs8+ochA8bnISLyXedewEtui7bhSyAjNXgyOhh076wsgct0LfnlVLcsGnL2yr9L7+31\n\t+D5Jh6uT35qP5Rv6MbVyp6nA7KGfoSATkXiI9wkqr8Ys/kgxj3JGpYxKCgR4P63mqk2x\n\t6dJQ==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\n\t:references;\n\tbh=hCkNiR43GgMg+9aStxrr3xUesDfiP38MSIqZ89S2JW8=;\n\tb=HHzPTKxmutlbPi7Qyvv4roa1rHhBIljiOgnYZWkxgngKkUL4aayUsuoJYiuwpsXGwC\n\tAO5jvKhG46ntf76WQanftY2MxhV6PBdwfJ06eIKqJPKHfpHb2aHghJBo3nu2LswXOupn\n\tDKXDkJg6BQ//Mp/brzORz73k0deCoFRhnMO+BWZTYsGNHXTiP/qiGbgOF+fS/2aDo5RR\n\teF77Nyc2ufrbs6SbFZ6hlLD1F0bi9p2dKmMlCdGE2z80s4WBW0l5trYO+VgYNWFJS4p9\n\tVQRSacMkGWRW2xzvs6fmcvj8cWBRXQvyziXry56bdw+TSa3OeOKOLLmALKVIEco03uWs\n\tBEqg==",
        "X-Gm-Message-State": "APzg51DtX20/h1Fe9O67/HXN9gHdJvx0SjTZM+35KuQiv9xB0U1H96cU\n\tT9QsqXGB49uhFdsXAomkNsrxXoXWvHI=",
        "X-Google-Smtp-Source": "ANB0VdaMpmNao44q8gYG5/3Y+zXgnmneDfb8kqF8DjJmCv0x5AKmHkRh9sA/NunBdQRT+i4iUndjyA==",
        "X-Received": "by 2002:ac8:2f24:: with SMTP id\n\tj33-v6mr27064491qta.93.1537447951821; \n\tThu, 20 Sep 2018 05:52:31 -0700 (PDT)",
        "From": "Chas Williams <3chas3@gmail.com>",
        "To": "dev@dpdk.org",
        "Cc": "declan.doherty@intel.com, matan@mellanox.com, ehkinzie@gmail.com,\n\tChas Williams <chas3@att.com>, stable@dpdk.org",
        "Date": "Thu, 20 Sep 2018 08:52:26 -0400",
        "Message-Id": "<20180920125226.11904-1-3chas3@gmail.com>",
        "X-Mailer": "git-send-email 2.14.4",
        "In-Reply-To": "<20180919154825.5183-1-3chas3@gmail.com>",
        "References": "<20180919154825.5183-1-3chas3@gmail.com>",
        "Subject": "[dpdk-dev] [PATCH v2] net/bonding: fix RX slave fairness",
        "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": "From: Chas Williams <chas3@att.com>\n\nSome PMDs, especially ones with vector receives, require a minimum number\nof receive buffers in order to receive any packets.  If the first slave\nread leaves less than this number available, a read from the next slave\nmay return 0 implying that the slave doesn't have any packets which\nresults in skipping over that slave as the next active slave.\n\nTo fix this, implement round robin for the slaves during receive that\nis only advanced to the next slave at the end of each receive burst.\nThis is also done to provide some additional fairness in processing in\nother bonding RX burst routines as well.\n\nFixes: 2efb58cbab6e (\"bond: new link bonding library\")\nCc: stable@dpdk.org\n\nSigned-off-by: Chas Williams <chas3@att.com>\nAcked-by: Luca Boccassi <bluca@debian.org>\nAcked-by: Matan Azrad <matan@mellanox.com>\n---\n\nv2:\n  - Reworded title and commit message\n  - Fix checkpatch issue\n\t\t\n drivers/net/bonding/rte_eth_bond_pmd.c | 53 ++++++++++++++++++++++------------\n 1 file changed, 34 insertions(+), 19 deletions(-)",
    "diff": "diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c\nindex b84f32263..5efd046a1 100644\n--- a/drivers/net/bonding/rte_eth_bond_pmd.c\n+++ b/drivers/net/bonding/rte_eth_bond_pmd.c\n@@ -58,28 +58,34 @@ bond_ethdev_rx_burst(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)\n {\n \tstruct bond_dev_private *internals;\n \n-\tuint16_t num_rx_slave = 0;\n \tuint16_t num_rx_total = 0;\n-\n+\tuint16_t slave_count;\n+\tuint16_t active_slave;\n \tint i;\n \n \t/* Cast to structure, containing bonded device's port id and queue id */\n \tstruct bond_rx_queue *bd_rx_q = (struct bond_rx_queue *)queue;\n-\n \tinternals = bd_rx_q->dev_private;\n+\tslave_count = internals->active_slave_count;\n+\tactive_slave = internals->active_slave;\n \n+\tfor (i = 0; i < slave_count && nb_pkts; i++) {\n+\t\tuint16_t num_rx_slave;\n \n-\tfor (i = 0; i < internals->active_slave_count && nb_pkts; i++) {\n \t\t/* Offset of pointer to *bufs increases as packets are received\n \t\t * from other slaves */\n-\t\tnum_rx_slave = rte_eth_rx_burst(internals->active_slaves[i],\n-\t\t\t\tbd_rx_q->queue_id, bufs + num_rx_total, nb_pkts);\n-\t\tif (num_rx_slave) {\n-\t\t\tnum_rx_total += num_rx_slave;\n-\t\t\tnb_pkts -= num_rx_slave;\n-\t\t}\n+\t\tnum_rx_slave =\n+\t\t\trte_eth_rx_burst(internals->active_slaves[active_slave],\n+\t\t\t\t\t bd_rx_q->queue_id,\n+\t\t\t\t\t bufs + num_rx_total, nb_pkts);\n+\t\tnum_rx_total += num_rx_slave;\n+\t\tnb_pkts -= num_rx_slave;\n+\t\tif (++active_slave == slave_count)\n+\t\t\tactive_slave = 0;\n \t}\n \n+\tif (++internals->active_slave == slave_count)\n+\t\tinternals->active_slave = 0;\n \treturn num_rx_total;\n }\n \n@@ -258,25 +264,32 @@ bond_ethdev_rx_burst_8023ad_fast_queue(void *queue, struct rte_mbuf **bufs,\n \tuint16_t num_rx_total = 0;\t/* Total number of received packets */\n \tuint16_t slaves[RTE_MAX_ETHPORTS];\n \tuint16_t slave_count;\n-\n-\tuint16_t i, idx;\n+\tuint16_t active_slave;\n+\tuint16_t i;\n \n \t/* Copy slave list to protect against slave up/down changes during tx\n \t * bursting */\n \tslave_count = internals->active_slave_count;\n+\tactive_slave = internals->active_slave;\n \tmemcpy(slaves, internals->active_slaves,\n \t\t\tsizeof(internals->active_slaves[0]) * slave_count);\n \n-\tfor (i = 0, idx = internals->active_slave;\n-\t\t\ti < slave_count && num_rx_total < nb_pkts; i++, idx++) {\n-\t\tidx = idx % slave_count;\n+\tfor (i = 0; i < slave_count && nb_pkts; i++) {\n+\t\tuint16_t num_rx_slave;\n \n \t\t/* Read packets from this slave */\n-\t\tnum_rx_total += rte_eth_rx_burst(slaves[idx], bd_rx_q->queue_id,\n-\t\t\t\t&bufs[num_rx_total], nb_pkts - num_rx_total);\n+\t\tnum_rx_slave = rte_eth_rx_burst(slaves[active_slave],\n+\t\t\t\t\t\tbd_rx_q->queue_id,\n+\t\t\t\t\t\tbufs + num_rx_total, nb_pkts);\n+\t\tnum_rx_total += num_rx_slave;\n+\t\tnb_pkts -= num_rx_slave;\n+\n+\t\tif (++active_slave == slave_count)\n+\t\t\tactive_slave = 0;\n \t}\n \n-\tinternals->active_slave = idx;\n+\tif (++internals->active_slave == slave_count)\n+\t\tinternals->active_slave = 0;\n \n \treturn num_rx_total;\n }\n@@ -459,7 +472,9 @@ bond_ethdev_rx_burst_8023ad(void *queue, struct rte_mbuf **bufs,\n \t\t\tidx = 0;\n \t}\n \n-\tinternals->active_slave = idx;\n+\tif (++internals->active_slave == slave_count)\n+\t\tinternals->active_slave = 0;\n+\n \treturn num_rx_total;\n }\n \n",
    "prefixes": [
        "v2"
    ]
}