get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 3085,
    "url": "http://patchwork.dpdk.org/api/1.0/patches/3085/?format=api",
    "project": {
        "id": 1,
        "url": "http://patchwork.dpdk.org/api/1.0/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"
    },
    "msgid": "<1423470639-15744-12-git-send-email-mukawa@igel.co.jp>",
    "date": "2015-02-09T08:30:34",
    "name": "[dpdk-dev,v7,11/14] ethdev: Add one dev_type parameter to rte_eth_dev_allocate",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "59f4783a867864ad8d30b1e5a99974556204bf08",
    "submitter": {
        "id": 64,
        "url": "http://patchwork.dpdk.org/api/1.0/people/64/?format=api",
        "name": "Tetsuya Mukawa",
        "email": "mukawa@igel.co.jp"
    },
    "delegate": null,
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/1423470639-15744-12-git-send-email-mukawa@igel.co.jp/mbox/",
    "series": [],
    "check": "pending",
    "checks": "http://patchwork.dpdk.org/api/patches/3085/checks/",
    "tags": {},
    "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 0E7439A81;\n\tMon,  9 Feb 2015 09:31:21 +0100 (CET)",
            "from mail-pd0-f172.google.com (mail-pd0-f172.google.com\n\t[209.85.192.172]) by dpdk.org (Postfix) with ESMTP id 010665A98\n\tfor <dev@dpdk.org>; Mon,  9 Feb 2015 09:31:15 +0100 (CET)",
            "by pdbfl12 with SMTP id fl12so4858975pdb.4\n\tfor <dev@dpdk.org>; Mon, 09 Feb 2015 00:31:13 -0800 (PST)",
            "from localhost.localdomain (napt.igel.co.jp. [219.106.231.132])\n\tby mx.google.com with ESMTPSA id\n\tpp9sm15497875pbb.65.2015.02.09.00.31.11\n\t(version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128);\n\tMon, 09 Feb 2015 00:31:12 -0800 (PST)"
        ],
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20130820;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\n\t:references;\n\tbh=guINLHxkaS79M1FKvSj6ZKCvBI8+kJzL3z37N6Bxw38=;\n\tb=Hpwf+IApKpFo3As7/yiLz/YolTrA5RJrCgm9PIC9jmb75k4z+tc1o1lUhytVv4QAYS\n\t5SynCK9XIZs3M/AD5UiKsjWWJfih/NtvqdSN8Zly9CPYNpqJ169bIMm5CkqnJA/kjp9F\n\tiGYIi0aZRQWvvj8K+6VypVMPoeQQ93HS3boKry5hUHXIW1GFulLxiifGpVe+pj4Z/S7g\n\te1tQcF/cPEsNs18T5GXjAWDW3m4TSBeMB8WAbx4+LuqmVu+n8W9i6Dl4GdRbV4jaajJK\n\tdFjxZncQhdks/4U9V+VABh7QAlOgHvX8NuLM7NGrtNGOi0V1XQZjyRRygry6R+qahsAx\n\tk/Ow==",
        "X-Gm-Message-State": "ALoCoQlVSkmrKRhL+275E/Ay6xeZjcizckTlHHuY/d66U3BG409I7hE7a6KSGHU9l2QM25r4VKy+",
        "X-Received": "by 10.66.186.110 with SMTP id fj14mr26361453pac.98.1423470673067;\n\tMon, 09 Feb 2015 00:31:13 -0800 (PST)",
        "From": "Tetsuya Mukawa <mukawa@igel.co.jp>",
        "To": "dev@dpdk.org",
        "Date": "Mon,  9 Feb 2015 17:30:34 +0900",
        "Message-Id": "<1423470639-15744-12-git-send-email-mukawa@igel.co.jp>",
        "X-Mailer": "git-send-email 1.9.1",
        "In-Reply-To": "<1423470639-15744-1-git-send-email-mukawa@igel.co.jp>",
        "References": "<1422763322-13742-4-git-send-email-mukawa@igel.co.jp>\n\t<1423470639-15744-1-git-send-email-mukawa@igel.co.jp>",
        "Subject": "[dpdk-dev] [PATCH v7 11/14] ethdev: Add one dev_type parameter to\n\trte_eth_dev_allocate",
        "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 new parameter is needed to keep device type like physical or virtual.\nPort detaching processes are different between physical and virtual.\nThis parameter lets detaching function know a device type of the port.\n\nv4:\n- Fix comments of rte_eth_dev_type.\n\nSigned-off-by: Tetsuya Mukawa <mukawa@igel.co.jp>\n---\n app/test/virtual_pmd.c                       |  2 +-\n lib/librte_ether/rte_ethdev.c                | 14 ++++++++++++--\n lib/librte_ether/rte_ethdev.h                | 25 ++++++++++++++++++++++++-\n lib/librte_pmd_af_packet/rte_eth_af_packet.c |  2 +-\n lib/librte_pmd_bond/rte_eth_bond_api.c       |  2 +-\n lib/librte_pmd_pcap/rte_eth_pcap.c           |  2 +-\n lib/librte_pmd_ring/rte_eth_ring.c           |  2 +-\n lib/librte_pmd_xenvirt/rte_eth_xenvirt.c     |  2 +-\n 8 files changed, 42 insertions(+), 9 deletions(-)",
    "diff": "diff --git a/app/test/virtual_pmd.c b/app/test/virtual_pmd.c\nindex 9fac95d..8d3a5ff 100644\n--- a/app/test/virtual_pmd.c\n+++ b/app/test/virtual_pmd.c\n@@ -556,7 +556,7 @@ virtual_ethdev_create(const char *name, struct ether_addr *mac_addr,\n \t\tgoto err;\n \n \t/* reserve an ethdev entry */\n-\teth_dev = rte_eth_dev_allocate(name);\n+\teth_dev = rte_eth_dev_allocate(name, RTE_ETH_DEV_PHYSICAL);\n \tif (eth_dev == NULL)\n \t\tgoto err;\n \ndiff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c\nindex 14a040a..704185d 100644\n--- a/lib/librte_ether/rte_ethdev.c\n+++ b/lib/librte_ether/rte_ethdev.c\n@@ -232,7 +232,7 @@ rte_eth_dev_allocate_new_port(void)\n }\n \n struct rte_eth_dev *\n-rte_eth_dev_allocate(const char *name)\n+rte_eth_dev_allocate(const char *name, enum rte_eth_dev_type type)\n {\n \tuint8_t port_id;\n \tstruct rte_eth_dev *eth_dev;\n@@ -256,6 +256,7 @@ rte_eth_dev_allocate(const char *name)\n \tsnprintf(eth_dev->data->name, sizeof(eth_dev->data->name), \"%s\", name);\n \teth_dev->data->port_id = port_id;\n \teth_dev->attached = DEV_CONNECTED;\n+\teth_dev->dev_type = type;\n \tnb_ports++;\n \treturn eth_dev;\n }\n@@ -267,6 +268,7 @@ rte_eth_dev_free(struct rte_eth_dev *eth_dev)\n \t\treturn -EINVAL;\n \n \teth_dev->attached = 0;\n+\teth_dev->dev_type = RTE_ETH_DEV_UNKNOWN;\n \tnb_ports--;\n \treturn 0;\n }\n@@ -287,7 +289,7 @@ rte_eth_dev_init(struct rte_pci_driver *pci_drv,\n \tsnprintf(ethdev_name, RTE_ETH_NAME_MAX_LEN, \"%d:%d.%d\",\n \t\t\tpci_dev->addr.bus, pci_dev->addr.devid, pci_dev->addr.function);\n \n-\teth_dev = rte_eth_dev_allocate(ethdev_name);\n+\teth_dev = rte_eth_dev_allocate(ethdev_name, RTE_ETH_DEV_PHYSICAL);\n \tif (eth_dev == NULL)\n \t\treturn -ENOMEM;\n \n@@ -426,6 +428,14 @@ rte_eth_dev_count(void)\n \treturn (nb_ports);\n }\n \n+enum rte_eth_dev_type\n+rte_eth_dev_get_device_type(uint8_t port_id)\n+{\n+\tif (rte_eth_dev_validate_port(port_id, NONE_TRACE) == DEV_INVALID)\n+\t\treturn -1;\n+\treturn rte_eth_devices[port_id].dev_type;\n+}\n+\n void\n rte_eth_dev_save(struct rte_eth_dev *devs)\n {\ndiff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h\nindex 9919968..00a6218 100644\n--- a/lib/librte_ether/rte_ethdev.h\n+++ b/lib/librte_ether/rte_ethdev.h\n@@ -1522,6 +1522,17 @@ struct eth_dev_ops {\n };\n \n /**\n+ * The eth device type\n+ */\n+enum rte_eth_dev_type {\n+\tRTE_ETH_DEV_UNKNOWN,\t/**< unknown device type */\n+\tRTE_ETH_DEV_PHYSICAL,\n+\t\t/**< Physical function and Virtual function devices of NIC */\n+\tRTE_ETH_DEV_VIRTUAL,\t/**< non hardware device */\n+\tRTE_ETH_DEV_MAX\t\t/**< max value of this enum */\n+};\n+\n+/**\n  * @internal\n  * The generic data structure associated with each ethernet device.\n  *\n@@ -1540,6 +1551,7 @@ struct rte_eth_dev {\n \tstruct rte_pci_device *pci_dev; /**< PCI info. supplied by probing */\n \tstruct rte_eth_dev_cb_list callbacks; /**< User application callbacks */\n \tuint8_t attached; /**< Flag indicating the port is attached */\n+\tenum rte_eth_dev_type dev_type; /**< Flag indicating the device type */\n };\n \n struct rte_eth_dev_sriov {\n@@ -1617,6 +1629,15 @@ extern uint8_t rte_eth_dev_count(void);\n \n /**\n  * Function for internal use by port hotplug functions.\n+ * Get the device type to know whether the device is physical or virtual.\n+ * @param\tport_id\tThe pointer to the port id\n+ * @return\n+ *   - Device type.\n+ */\n+extern enum rte_eth_dev_type rte_eth_dev_get_device_type(uint8_t port_id);\n+\n+/**\n+ * Function for internal use by port hotplug functions.\n  * Copies current ethdev structures to the specified pointer.\n  *\n  * @param\tdevs\tThe pointer to the ethdev structures\n@@ -1702,10 +1723,12 @@ extern struct rte_eth_dev *rte_eth_dev_allocated(const char *name);\n  * to that slot for the driver to use.\n  *\n  * @param\tname\tUnique identifier name for each Ethernet device\n+ * @param\ttype\tDevice type of this Ethernet device\n  * @return\n  *   - Slot in the rte_dev_devices array for a new device;\n  */\n-struct rte_eth_dev *rte_eth_dev_allocate(const char *name);\n+struct rte_eth_dev *rte_eth_dev_allocate(const char *name,\n+\t\tenum rte_eth_dev_type type);\n \n /**\n  * Function for internal use by dummy drivers primarily, e.g. ring-based\ndiff --git a/lib/librte_pmd_af_packet/rte_eth_af_packet.c b/lib/librte_pmd_af_packet/rte_eth_af_packet.c\nindex 1ffe1cd..80e9bdf 100644\n--- a/lib/librte_pmd_af_packet/rte_eth_af_packet.c\n+++ b/lib/librte_pmd_af_packet/rte_eth_af_packet.c\n@@ -649,7 +649,7 @@ rte_pmd_init_internals(const char *name,\n \t}\n \n \t/* reserve an ethdev entry */\n-\t*eth_dev = rte_eth_dev_allocate(name);\n+\t*eth_dev = rte_eth_dev_allocate(name, RTE_ETH_DEV_VIRTUAL);\n \tif (*eth_dev == NULL)\n \t\tgoto error;\n \ndiff --git a/lib/librte_pmd_bond/rte_eth_bond_api.c b/lib/librte_pmd_bond/rte_eth_bond_api.c\nindex 4ab3267..7a6a5f7 100644\n--- a/lib/librte_pmd_bond/rte_eth_bond_api.c\n+++ b/lib/librte_pmd_bond/rte_eth_bond_api.c\n@@ -235,7 +235,7 @@ rte_eth_bond_create(const char *name, uint8_t mode, uint8_t socket_id)\n \t}\n \n \t/* reserve an ethdev entry */\n-\teth_dev = rte_eth_dev_allocate(name);\n+\teth_dev = rte_eth_dev_allocate(name, RTE_ETH_DEV_VIRTUAL);\n \tif (eth_dev == NULL) {\n \t\tRTE_BOND_LOG(ERR, \"Unable to allocate rte_eth_dev\");\n \t\tgoto err;\ndiff --git a/lib/librte_pmd_pcap/rte_eth_pcap.c b/lib/librte_pmd_pcap/rte_eth_pcap.c\nindex d299288..af7fae8 100644\n--- a/lib/librte_pmd_pcap/rte_eth_pcap.c\n+++ b/lib/librte_pmd_pcap/rte_eth_pcap.c\n@@ -709,7 +709,7 @@ rte_pmd_init_internals(const char *name, const unsigned nb_rx_queues,\n \t\tgoto error;\n \n \t/* reserve an ethdev entry */\n-\t*eth_dev = rte_eth_dev_allocate(name);\n+\t*eth_dev = rte_eth_dev_allocate(name, RTE_ETH_DEV_VIRTUAL);\n \tif (*eth_dev == NULL)\n \t\tgoto error;\n \ndiff --git a/lib/librte_pmd_ring/rte_eth_ring.c b/lib/librte_pmd_ring/rte_eth_ring.c\nindex d5b1686..c837fcd 100644\n--- a/lib/librte_pmd_ring/rte_eth_ring.c\n+++ b/lib/librte_pmd_ring/rte_eth_ring.c\n@@ -255,7 +255,7 @@ rte_eth_from_rings(const char *name, struct rte_ring *const rx_queues[],\n \t\tgoto error;\n \n \t/* reserve an ethdev entry */\n-\teth_dev = rte_eth_dev_allocate(name);\n+\teth_dev = rte_eth_dev_allocate(name, RTE_ETH_DEV_VIRTUAL);\n \tif (eth_dev == NULL)\n \t\tgoto error;\n \ndiff --git a/lib/librte_pmd_xenvirt/rte_eth_xenvirt.c b/lib/librte_pmd_xenvirt/rte_eth_xenvirt.c\nindex 04e30c9..bc403d6 100644\n--- a/lib/librte_pmd_xenvirt/rte_eth_xenvirt.c\n+++ b/lib/librte_pmd_xenvirt/rte_eth_xenvirt.c\n@@ -648,7 +648,7 @@ eth_dev_xenvirt_create(const char *name, const char *params,\n \t\tgoto err;\n \n \t/* reserve an ethdev entry */\n-\teth_dev = rte_eth_dev_allocate(name);\n+\teth_dev = rte_eth_dev_allocate(name, RTE_ETH_DEV_VIRTUAL);\n \tif (eth_dev == NULL)\n \t\tgoto err;\n \n",
    "prefixes": [
        "dpdk-dev",
        "v7",
        "11/14"
    ]
}