get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 17104,
    "url": "https://patches.dpdk.org/api/patches/17104/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/1479722378-23959-1-git-send-email-alejandro.lucero@netronome.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": "<1479722378-23959-1-git-send-email-alejandro.lucero@netronome.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1479722378-23959-1-git-send-email-alejandro.lucero@netronome.com",
    "date": "2016-11-21T09:59:38",
    "name": "[dpdk-dev,v2] ethdev: check number of queues less than RTE_ETHDEV_QUEUE_STAT_CNTRS",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "713b75df024416d150f94bbd30af180ce81f29b7",
    "submitter": {
        "id": 270,
        "url": "https://patches.dpdk.org/api/people/270/?format=api",
        "name": "Alejandro Lucero",
        "email": "alejandro.lucero@netronome.com"
    },
    "delegate": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/1479722378-23959-1-git-send-email-alejandro.lucero@netronome.com/mbox/",
    "series": [],
    "comments": "https://patches.dpdk.org/api/patches/17104/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/17104/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 C894A2BC8;\n\tMon, 21 Nov 2016 10:59:42 +0100 (CET)",
            "from netronome.com (host-79-78-33-110.static.as9105.net\n\t[79.78.33.110]) by dpdk.org (Postfix) with ESMTP id 743B42BC6\n\tfor <dev@dpdk.org>; Mon, 21 Nov 2016 10:59:41 +0100 (CET)",
            "from netronome.com (localhost [127.0.0.1])\n\tby netronome.com (8.14.4/8.14.4/Debian-4.1ubuntu1) with ESMTP id\n\tuAL9xcdk023998; Mon, 21 Nov 2016 09:59:38 GMT",
            "(from alucero@localhost)\n\tby netronome.com (8.14.4/8.14.4/Submit) id uAL9xcsm023997;\n\tMon, 21 Nov 2016 09:59:38 GMT"
        ],
        "From": "Alejandro Lucero <alejandro.lucero@netronome.com>",
        "To": "dev@dpdk.org",
        "Cc": "Bert van Leeuwen <bert.vanleeuwen@netronome.com>",
        "Date": "Mon, 21 Nov 2016 09:59:38 +0000",
        "Message-Id": "<1479722378-23959-1-git-send-email-alejandro.lucero@netronome.com>",
        "X-Mailer": "git-send-email 1.9.1",
        "Subject": "[dpdk-dev] [PATCH v2] ethdev: check number of queues less than\n\tRTE_ETHDEV_QUEUE_STAT_CNTRS",
        "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": "From: Bert van Leeuwen <bert.vanleeuwen@netronome.com>\n\nArrays inside rte_eth_stats have size=RTE_ETHDEV_QUEUE_STAT_CNTRS.\nSome devices report more queues than that and this code blindly uses\nthe reported number of queues by the device to fill those arrays up.\nThis patch fixes the problem using MIN between the reported number of\nqueues and RTE_ETHDEV_QUEUE_STAT_CNTRS.\n\nSigned-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>\n---\n lib/librte_ether/rte_ethdev.c | 25 +++++++++++++++++--------\n 1 file changed, 17 insertions(+), 8 deletions(-)",
    "diff": "diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c\nindex fde8112..4209ad0 100644\n--- a/lib/librte_ether/rte_ethdev.c\n+++ b/lib/librte_ether/rte_ethdev.c\n@@ -1343,8 +1343,10 @@ get_xstats_count(uint8_t port_id)\n \t} else\n \t\tcount = 0;\n \tcount += RTE_NB_STATS;\n-\tcount += dev->data->nb_rx_queues * RTE_NB_RXQ_STATS;\n-\tcount += dev->data->nb_tx_queues * RTE_NB_TXQ_STATS;\n+\tcount += RTE_MIN(dev->data->nb_rx_queues, RTE_ETHDEV_QUEUE_STAT_CNTRS) *\n+\t\t RTE_NB_RXQ_STATS;\n+\tcount += RTE_MIN(dev->data->nb_tx_queues, RTE_ETHDEV_QUEUE_STAT_CNTRS) *\n+\t\t RTE_NB_TXQ_STATS;\n \treturn count;\n }\n \n@@ -1358,6 +1360,7 @@ rte_eth_xstats_get_names(uint8_t port_id,\n \tint cnt_expected_entries;\n \tint cnt_driver_entries;\n \tuint32_t idx, id_queue;\n+\tuint16_t num_q;\n \n \tcnt_expected_entries = get_xstats_count(port_id);\n \tif (xstats_names == NULL || cnt_expected_entries < 0 ||\n@@ -1374,7 +1377,8 @@ rte_eth_xstats_get_names(uint8_t port_id,\n \t\t\t\"%s\", rte_stats_strings[idx].name);\n \t\tcnt_used_entries++;\n \t}\n-\tfor (id_queue = 0; id_queue < dev->data->nb_rx_queues; id_queue++) {\n+\tnum_q = RTE_MIN(dev->data->nb_rx_queues, RTE_ETHDEV_QUEUE_STAT_CNTRS);\n+\tfor (id_queue = 0; id_queue < num_q; id_queue++) {\n \t\tfor (idx = 0; idx < RTE_NB_RXQ_STATS; idx++) {\n \t\t\tsnprintf(xstats_names[cnt_used_entries].name,\n \t\t\t\tsizeof(xstats_names[0].name),\n@@ -1384,7 +1388,8 @@ rte_eth_xstats_get_names(uint8_t port_id,\n \t\t}\n \n \t}\n-\tfor (id_queue = 0; id_queue < dev->data->nb_tx_queues; id_queue++) {\n+\tnum_q = RTE_MIN(dev->data->nb_tx_queues, RTE_ETHDEV_QUEUE_STAT_CNTRS);\n+\tfor (id_queue = 0; id_queue < num_q; id_queue++) {\n \t\tfor (idx = 0; idx < RTE_NB_TXQ_STATS; idx++) {\n \t\t\tsnprintf(xstats_names[cnt_used_entries].name,\n \t\t\t\tsizeof(xstats_names[0].name),\n@@ -1420,14 +1425,18 @@ rte_eth_xstats_get(uint8_t port_id, struct rte_eth_xstat *xstats,\n \tunsigned count = 0, i, q;\n \tsigned xcount = 0;\n \tuint64_t val, *stats_ptr;\n+\tuint16_t nb_rxqs, nb_txqs;\n \n \tRTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -EINVAL);\n \n \tdev = &rte_eth_devices[port_id];\n \n+\tnb_rxqs = RTE_MIN(dev->data->nb_rx_queues, RTE_ETHDEV_QUEUE_STAT_CNTRS);\n+\tnb_txqs = RTE_MIN(dev->data->nb_tx_queues, RTE_ETHDEV_QUEUE_STAT_CNTRS);\n+\n \t/* Return generic statistics */\n-\tcount = RTE_NB_STATS + (dev->data->nb_rx_queues * RTE_NB_RXQ_STATS) +\n-\t\t(dev->data->nb_tx_queues * RTE_NB_TXQ_STATS);\n+\tcount = RTE_NB_STATS + (nb_rxqs * RTE_NB_RXQ_STATS) +\n+\t\t(nb_txqs * RTE_NB_TXQ_STATS);\n \n \t/* implemented by the driver */\n \tif (dev->dev_ops->xstats_get != NULL) {\n@@ -1458,7 +1467,7 @@ rte_eth_xstats_get(uint8_t port_id, struct rte_eth_xstat *xstats,\n \t}\n \n \t/* per-rxq stats */\n-\tfor (q = 0; q < dev->data->nb_rx_queues; q++) {\n+\tfor (q = 0; q < nb_rxqs; q++) {\n \t\tfor (i = 0; i < RTE_NB_RXQ_STATS; i++) {\n \t\t\tstats_ptr = RTE_PTR_ADD(&eth_stats,\n \t\t\t\t\trte_rxq_stats_strings[i].offset +\n@@ -1469,7 +1478,7 @@ rte_eth_xstats_get(uint8_t port_id, struct rte_eth_xstat *xstats,\n \t}\n \n \t/* per-txq stats */\n-\tfor (q = 0; q < dev->data->nb_tx_queues; q++) {\n+\tfor (q = 0; q < nb_txqs; q++) {\n \t\tfor (i = 0; i < RTE_NB_TXQ_STATS; i++) {\n \t\t\tstats_ptr = RTE_PTR_ADD(&eth_stats,\n \t\t\t\t\trte_txq_stats_strings[i].offset +\n",
    "prefixes": [
        "dpdk-dev",
        "v2"
    ]
}