get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 17232,
    "url": "http://patchwork.dpdk.org/api/patches/17232/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/1479981261-19512-3-git-send-email-olivier.matz@6wind.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": "<1479981261-19512-3-git-send-email-olivier.matz@6wind.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1479981261-19512-3-git-send-email-olivier.matz@6wind.com",
    "date": "2016-11-24T09:54:14",
    "name": "[dpdk-dev,RFC,2/9] ethdev: move queue id check in generic layer",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "fa05dcf4dd3a6c0c95ceb2042da5a18c21a3d35c",
    "submitter": {
        "id": 8,
        "url": "http://patchwork.dpdk.org/api/people/8/?format=api",
        "name": "Olivier Matz",
        "email": "olivier.matz@6wind.com"
    },
    "delegate": {
        "id": 1,
        "url": "http://patchwork.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/1479981261-19512-3-git-send-email-olivier.matz@6wind.com/mbox/",
    "series": [],
    "comments": "http://patchwork.dpdk.org/api/patches/17232/comments/",
    "check": "success",
    "checks": "http://patchwork.dpdk.org/api/patches/17232/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 804C84A59;\n\tThu, 24 Nov 2016 10:59:41 +0100 (CET)",
            "from proxy.6wind.com (host.76.145.23.62.rev.coltfrance.com\n\t[62.23.145.76]) by dpdk.org (Postfix) with ESMTP id 502E04A59\n\tfor <dev@dpdk.org>; Thu, 24 Nov 2016 10:59:38 +0100 (CET)",
            "from glumotte.dev.6wind.com (unknown [10.16.0.195])\n\tby proxy.6wind.com (Postfix) with ESMTP id 0AAE9278AB;\n\tThu, 24 Nov 2016 10:59:34 +0100 (CET)"
        ],
        "From": "Olivier Matz <olivier.matz@6wind.com>",
        "To": "dev@dpdk.org",
        "Cc": "thomas.monjalon@6wind.com, konstantin.ananyev@intel.com,\n\twenzhuo.lu@intel.com, helin.zhang@intel.com",
        "Date": "Thu, 24 Nov 2016 10:54:14 +0100",
        "Message-Id": "<1479981261-19512-3-git-send-email-olivier.matz@6wind.com>",
        "X-Mailer": "git-send-email 2.8.1",
        "In-Reply-To": "<1479981261-19512-1-git-send-email-olivier.matz@6wind.com>",
        "References": "<1479981261-19512-1-git-send-email-olivier.matz@6wind.com>",
        "Subject": "[dpdk-dev] [RFC 2/9] ethdev: move queue id check in generic layer",
        "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": "The check of queue_id is done in all drivers implementing\nrte_eth_rx_queue_count(). Factorize this check in the generic function.\n\nNote that the nfp driver was doing the check differently, which could\ninduce crashes if the queue index was too big.\n\nBy the way, also move the is_supported test before the port valid and\nqueue valid test.\n\nPR=52423\nSigned-off-by: Olivier Matz <olivier.matz@6wind.com>\nAcked-by: Ivan Boule <ivan.boule@6wind.com>\n---\n drivers/net/e1000/em_rxtx.c    | 5 -----\n drivers/net/e1000/igb_rxtx.c   | 5 -----\n drivers/net/i40e/i40e_rxtx.c   | 5 -----\n drivers/net/ixgbe/ixgbe_rxtx.c | 5 -----\n drivers/net/nfp/nfp_net.c      | 6 ------\n lib/librte_ether/rte_ethdev.h  | 6 ++++--\n 6 files changed, 4 insertions(+), 28 deletions(-)",
    "diff": "diff --git a/drivers/net/e1000/em_rxtx.c b/drivers/net/e1000/em_rxtx.c\nindex 41f51c0..c1c724b 100644\n--- a/drivers/net/e1000/em_rxtx.c\n+++ b/drivers/net/e1000/em_rxtx.c\n@@ -1390,11 +1390,6 @@ eth_em_rx_queue_count(struct rte_eth_dev *dev, uint16_t rx_queue_id)\n \tstruct em_rx_queue *rxq;\n \tuint32_t desc = 0;\n \n-\tif (rx_queue_id >= dev->data->nb_rx_queues) {\n-\t\tPMD_RX_LOG(DEBUG, \"Invalid RX queue_id=%d\", rx_queue_id);\n-\t\treturn 0;\n-\t}\n-\n \trxq = dev->data->rx_queues[rx_queue_id];\n \trxdp = &(rxq->rx_ring[rxq->rx_tail]);\n \ndiff --git a/drivers/net/e1000/igb_rxtx.c b/drivers/net/e1000/igb_rxtx.c\nindex dbd37ac..e9aa356 100644\n--- a/drivers/net/e1000/igb_rxtx.c\n+++ b/drivers/net/e1000/igb_rxtx.c\n@@ -1512,11 +1512,6 @@ eth_igb_rx_queue_count(struct rte_eth_dev *dev, uint16_t rx_queue_id)\n \tstruct igb_rx_queue *rxq;\n \tuint32_t desc = 0;\n \n-\tif (rx_queue_id >= dev->data->nb_rx_queues) {\n-\t\tPMD_RX_LOG(ERR, \"Invalid RX queue id=%d\", rx_queue_id);\n-\t\treturn 0;\n-\t}\n-\n \trxq = dev->data->rx_queues[rx_queue_id];\n \trxdp = &(rxq->rx_ring[rxq->rx_tail]);\n \ndiff --git a/drivers/net/i40e/i40e_rxtx.c b/drivers/net/i40e/i40e_rxtx.c\nindex 7ae7d9f..79a72f0 100644\n--- a/drivers/net/i40e/i40e_rxtx.c\n+++ b/drivers/net/i40e/i40e_rxtx.c\n@@ -1793,11 +1793,6 @@ i40e_dev_rx_queue_count(struct rte_eth_dev *dev, uint16_t rx_queue_id)\n \tstruct i40e_rx_queue *rxq;\n \tuint16_t desc = 0;\n \n-\tif (unlikely(rx_queue_id >= dev->data->nb_rx_queues)) {\n-\t\tPMD_DRV_LOG(ERR, \"Invalid RX queue id %u\", rx_queue_id);\n-\t\treturn 0;\n-\t}\n-\n \trxq = dev->data->rx_queues[rx_queue_id];\n \trxdp = &(rxq->rx_ring[rxq->rx_tail]);\n \twhile ((desc < rxq->nb_rx_desc) &&\ndiff --git a/drivers/net/ixgbe/ixgbe_rxtx.c b/drivers/net/ixgbe/ixgbe_rxtx.c\nindex b2d9f45..1a8ea5f 100644\n--- a/drivers/net/ixgbe/ixgbe_rxtx.c\n+++ b/drivers/net/ixgbe/ixgbe_rxtx.c\n@@ -2857,11 +2857,6 @@ ixgbe_dev_rx_queue_count(struct rte_eth_dev *dev, uint16_t rx_queue_id)\n \tstruct ixgbe_rx_queue *rxq;\n \tuint32_t desc = 0;\n \n-\tif (rx_queue_id >= dev->data->nb_rx_queues) {\n-\t\tPMD_RX_LOG(ERR, \"Invalid RX queue id=%d\", rx_queue_id);\n-\t\treturn 0;\n-\t}\n-\n \trxq = dev->data->rx_queues[rx_queue_id];\n \trxdp = &(rxq->rx_ring[rxq->rx_tail]);\n \ndiff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c\nindex e315dd8..f1d00fb 100644\n--- a/drivers/net/nfp/nfp_net.c\n+++ b/drivers/net/nfp/nfp_net.c\n@@ -1084,12 +1084,6 @@ nfp_net_rx_queue_count(struct rte_eth_dev *dev, uint16_t queue_idx)\n \tuint32_t count;\n \n \trxq = (struct nfp_net_rxq *)dev->data->rx_queues[queue_idx];\n-\n-\tif (rxq == NULL) {\n-\t\tPMD_INIT_LOG(ERR, \"Bad queue: %u\\n\", queue_idx);\n-\t\treturn 0;\n-\t}\n-\n \tidx = rxq->rd_p % rxq->rx_count;\n \trxds = &rxq->rxds[idx];\n \ndiff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h\nindex c3edc23..9551cfd 100644\n--- a/lib/librte_ether/rte_ethdev.h\n+++ b/lib/librte_ether/rte_ethdev.h\n@@ -2693,7 +2693,7 @@ rte_eth_rx_burst(uint8_t port_id, uint16_t queue_id,\n  *  The queue id on the specific port.\n  * @return\n  *  The number of used descriptors in the specific queue, or:\n- *     (-EINVAL) if *port_id* is invalid\n+ *     (-EINVAL) if *port_id* or *queue_id* is invalid\n  *     (-ENOTSUP) if the device does not support this function\n  */\n static inline int\n@@ -2701,8 +2701,10 @@ rte_eth_rx_queue_count(uint8_t port_id, uint16_t queue_id)\n {\n \tstruct rte_eth_dev *dev = &rte_eth_devices[port_id];\n \n-\tRTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -EINVAL);\n \tRTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->rx_queue_count, -ENOTSUP);\n+\tRTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -EINVAL);\n+\tif (queue_id >= dev->data->nb_rx_queues)\n+\t\treturn -EINVAL;\n \n \treturn (*dev->dev_ops->rx_queue_count)(dev, queue_id);\n }\n",
    "prefixes": [
        "dpdk-dev",
        "RFC",
        "2/9"
    ]
}