get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2268,
    "url": "https://patches.dpdk.org/api/patches/2268/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/F6F2A6264E145F47A18AB6DF8E87425D12B809FD@IRSMSX102.ger.corp.intel.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": "<F6F2A6264E145F47A18AB6DF8E87425D12B809FD@IRSMSX102.ger.corp.intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/F6F2A6264E145F47A18AB6DF8E87425D12B809FD@IRSMSX102.ger.corp.intel.com",
    "date": "2015-01-14T09:46:55",
    "name": "[dpdk-dev,1/2] pmd: add DCB for VF for ixgbe",
    "commit_ref": null,
    "pull_url": null,
    "state": "not-applicable",
    "archived": true,
    "hash": "2b591dc7740543e39e9cbc84230731a2e171acc5",
    "submitter": {
        "id": 58,
        "url": "https://patches.dpdk.org/api/people/58/?format=api",
        "name": "Wodkowski, PawelX",
        "email": "pawelx.wodkowski@intel.com"
    },
    "delegate": null,
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/F6F2A6264E145F47A18AB6DF8E87425D12B809FD@IRSMSX102.ger.corp.intel.com/mbox/",
    "series": [],
    "comments": "https://patches.dpdk.org/api/patches/2268/comments/",
    "check": "pending",
    "checks": "https://patches.dpdk.org/api/patches/2268/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 CF2F05A1F;\n\tWed, 14 Jan 2015 10:47:03 +0100 (CET)",
            "from mga09.intel.com (mga09.intel.com [134.134.136.24])\n\tby dpdk.org (Postfix) with ESMTP id B848F5686\n\tfor <dev@dpdk.org>; Wed, 14 Jan 2015 10:47:00 +0100 (CET)",
            "from fmsmga003.fm.intel.com ([10.253.24.29])\n\tby orsmga102.jf.intel.com with ESMTP; 14 Jan 2015 01:44:17 -0800",
            "from irsmsx106.ger.corp.intel.com ([163.33.3.31])\n\tby FMSMGA003.fm.intel.com with ESMTP; 14 Jan 2015 01:34:05 -0800",
            "from irsmsx102.ger.corp.intel.com ([169.254.2.213]) by\n\tIRSMSX106.ger.corp.intel.com ([169.254.8.222]) with mapi id\n\t14.03.0195.001; Wed, 14 Jan 2015 09:46:55 +0000"
        ],
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos;i=\"4.97,862,1389772800\"; d=\"scan'208\";a=\"440375772\"",
        "From": "\"Wodkowski, PawelX\" <pawelx.wodkowski@intel.com>",
        "To": "\"Ouyang, Changchun\" <changchun.ouyang@intel.com>, Vlad Zolotarov\n\t<vladz@cloudius-systems.com>, \"Jastrzebski, MichalX K\"\n\t<michalx.k.jastrzebski@intel.com>, \"dev@dpdk.org\" <dev@dpdk.org>",
        "Thread-Topic": "[dpdk-dev] [PATCH 1/2] pmd: add DCB for VF for ixgbe",
        "Thread-Index": "AQHQLnYf6hHH/oN/7EizLeiLa16Gspy91NsAgAD2pYCAAI5FYA==",
        "Date": "Wed, 14 Jan 2015 09:46:55 +0000",
        "Message-ID": "<F6F2A6264E145F47A18AB6DF8E87425D12B809FD@IRSMSX102.ger.corp.intel.com>",
        "References": "<6c3329$jtfs2e@orsmga002.jf.intel.com>\n\t<54B4EEA2.1020300@cloudius-systems.com>\n\t<F52918179C57134FAEC9EA62FA2F96251196BFB9@shsmsx102.ccr.corp.intel.com>",
        "In-Reply-To": "<F52918179C57134FAEC9EA62FA2F96251196BFB9@shsmsx102.ccr.corp.intel.com>",
        "Accept-Language": "pl-PL, en-US",
        "Content-Language": "en-US",
        "X-MS-Has-Attach": "",
        "X-MS-TNEF-Correlator": "",
        "x-originating-ip": "[163.33.239.180]",
        "Content-Type": "text/plain; charset=\"us-ascii\"",
        "Content-Transfer-Encoding": "quoted-printable",
        "MIME-Version": "1.0",
        "Subject": "Re: [dpdk-dev] [PATCH 1/2] pmd: add DCB for VF for ixgbe",
        "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": "> > >\n> > >   - split nb_q_per_pool to nb_rx_q_per_pool and nb_tx_q_per_pool\n> > >\n> > >     Rationale:\n> > >\n> > >     rx and tx number of queue might be different if RX and TX are\n> > >\n> > >     configured in different mode. This allow to inform VF about\n> > >\n> > >     proper number of queues.\n> >\n> >\n> > Nice move! Ouyang, this is a nice answer to my recent remarks about your\n> > PATCH4 in \"Enable VF RSS for Niantic\" series.\n> \n> After I respond your last comments, I see this,  :-), I am sure we both agree it is\n> the right way to resolve it in vmdq dcb case.\n> \n\nI am now dividing this patch with your suggestions and I am little confused.\n\nIn this (DCB in SRIOV) case the primary cause for spliting nb_q_per_pool into\nnb_rx_q_per_pool and nb_tx_q_per_pool was because of this code:\n\n--\n\nThis introduced an issue when RX and TX was configure in different way. The problem was\nthat the RTE_ETH_DEV_SRIOV(dev).nb_q_per_pool as common for RX and TX and it is\nchanged. So I did the above. But when testpmd was adjusted for DCB in SRIOV there \nwas another issue. Testpmd is pre-configuring ports by default and since\nnb_rx_q_per_pool  and nb_tx_q_per_pool was already reset to 1 there was no way to \nuse it for DCB in SRIOV. So I did another modification:\n\n> +\t\tuint16_t nb_rx_q_per_pool = RTE_ETH_DEV_SRIOV(dev).nb_rx_q_per_pool;\n> +\t\tuint16_t nb_tx_q_per_pool = RTE_ETH_DEV_SRIOV(dev).nb_tx_q_per_pool;\n> +\n>   \t\tswitch (dev_conf->rxmode.mq_mode) {\n> -\t\tcase ETH_MQ_RX_VMDQ_RSS:\n>   \t\tcase ETH_MQ_RX_VMDQ_DCB:\n> +\t\t\tbreak;\n> +\t\tcase ETH_MQ_RX_VMDQ_RSS:\n>   \t\tcase ETH_MQ_RX_VMDQ_DCB_RSS:\n> -\t\t\t/* DCB/RSS VMDQ in SRIOV mode, not implement yet */\n> +\t\t\t/* RSS, DCB+RSS VMDQ in SRIOV mode, not implement yet */\n>   \t\t\tPMD_DEBUG_TRACE(\"ethdev port_id=%\" PRIu8\n>   \t\t\t\t\t\" SRIOV active, \"\n>   \t\t\t\t\t\"unsupported VMDQ mq_mode rx %u\\n\",\n> @@ -537,37 +560,32 @@ rte_eth_dev_check_mq_mode(uint8_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,\n>   \t\tdefault: /* ETH_MQ_RX_VMDQ_ONLY or ETH_MQ_RX_NONE */\n>   \t\t\t/* if nothing mq mode configure, use default scheme */\n>   \t\t\tdev->data->dev_conf.rxmode.mq_mode = ETH_MQ_RX_VMDQ_ONLY;\n> -\t\t\tif (RTE_ETH_DEV_SRIOV(dev).nb_q_per_pool > 1)\n> -\t\t\t\tRTE_ETH_DEV_SRIOV(dev).nb_q_per_pool = 1;\n> +\t\t\tif (nb_rx_q_per_pool > 1)\n> +\t\t\t\tnb_rx_q_per_pool = 1;\n>   \t\t\tbreak;\n>   \t\t}\n>   \n>   \t\tswitch (dev_conf->txmode.mq_mode) {\n> -\t\tcase ETH_MQ_TX_VMDQ_DCB:\n> -\t\t\t/* DCB VMDQ in SRIOV mode, not implement yet */\n> -\t\t\tPMD_DEBUG_TRACE(\"ethdev port_id=%\" PRIu8\n> -\t\t\t\t\t\" SRIOV active, \"\n> -\t\t\t\t\t\"unsupported VMDQ mq_mode tx %u\\n\",\n> -\t\t\t\t\tport_id, dev_conf->txmode.mq_mode);\n> -\t\t\treturn (-EINVAL);\n> +\t\tcase ETH_MQ_TX_VMDQ_DCB: /* DCB VMDQ in SRIOV mode*/\n> +\t\t\tbreak;\n>   \t\tdefault: /* ETH_MQ_TX_VMDQ_ONLY or ETH_MQ_TX_NONE */\n>   \t\t\t/* if nothing mq mode configure, use default scheme */\n>   \t\t\tdev->data->dev_conf.txmode.mq_mode = ETH_MQ_TX_VMDQ_ONLY;\n> -\t\t\tif (RTE_ETH_DEV_SRIOV(dev).nb_q_per_pool > 1)\n> -\t\t\t\tRTE_ETH_DEV_SRIOV(dev).nb_q_per_pool = 1;\n> +\t\t\tif (nb_tx_q_per_pool > 1)\n> +\t\t\t\tnb_tx_q_per_pool = 1;\n>   \t\t\tbreak;\n>   \t\t}\n>   \n>   \t\t/* check valid queue number */\n> -\t\tif ((nb_rx_q > RTE_ETH_DEV_SRIOV(dev).nb_q_per_pool) ||\n> -\t\t    (nb_tx_q > RTE_ETH_DEV_SRIOV(dev).nb_q_per_pool)) {\n> +\t\tif (nb_rx_q > nb_rx_q_per_pool || nb_tx_q > nb_tx_q_per_pool) {\n>   \t\t\tPMD_DEBUG_TRACE(\"ethdev port_id=%d SRIOV active, \"\n> -\t\t\t\t    \"queue number must less equal to %d\\n\",\n> -\t\t\t\t\tport_id, RTE_ETH_DEV_SRIOV(dev).nb_q_per_pool);\n> +\t\t\t\t    \"rx/tx queue number must less equal to %d/%d\\n\",\n> +\t\t\t\t\tport_id, RTE_ETH_DEV_SRIOV(dev).nb_rx_q_per_pool,\n> +\t\t\t\t\tRTE_ETH_DEV_SRIOV(dev).nb_tx_q_per_pool);\n>   \t\t\treturn (-EINVAL);\n>   \t\t}\n\nFor this point I think that splitting RTE_ETH_DEV_SRIOV(dev).nb_q_per_pool might be not\nneeded. From my point  of view (DCB), since nb_q_per_pool is untouched, I think I can stay with:\n\n> +\t\tuint16_t nb_rx_q_per_pool = RTE_ETH_DEV_SRIOV(dev).nb_q_per_pool;\n> +\t\tuint16_t nb_tx_q_per_pool = RTE_ETH_DEV_SRIOV(dev).nb_q_per_pool;\n> +\n\nWhat do you think? I noticed that you was discussing some issue about nb_q_per_pool in face\nof RSS functionality. Can you spoke about my doubts in face of that RSS?\n\nPawel",
    "diff": "diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c\nindex af9e261..be3afe4 100644\n--- a/lib/librte_ether/rte_ethdev.c\n+++ b/lib/librte_ether/rte_ethdev.c\n@@ -537,8 +537,8 @@\n \t\tdefault: /* ETH_MQ_RX_VMDQ_ONLY or ETH_MQ_RX_NONE */\n \t\t\t/* if nothing mq mode configure, use default scheme */\n \t\t\tdev->data->dev_conf.rxmode.mq_mode = ETH_MQ_RX_VMDQ_ONLY;\n-\t\t\tif (RTE_ETH_DEV_SRIOV(dev).nb_q_per_pool > 1)\n-\t\t\t\tRTE_ETH_DEV_SRIOV(dev).nb_q_per_pool = 1;\n+\t\t\tif (RTE_ETH_DEV_SRIOV(dev).nb_rx_q_per_pool > 1)\n+\t\t\t\tRTE_ETH_DEV_SRIOV(dev).nb_rx_q_per_pool = 1;\n \t\t\tbreak;\n \t\t}\n \n@@ -553,17 +553,18 @@\n \t\tdefault: /* ETH_MQ_TX_VMDQ_ONLY or ETH_MQ_TX_NONE */\n \t\t\t/* if nothing mq mode configure, use default scheme */\n \t\t\tdev->data->dev_conf.txmode.mq_mode = ETH_MQ_TX_VMDQ_ONLY;\n-\t\t\tif (RTE_ETH_DEV_SRIOV(dev).nb_q_per_pool > 1)\n-\t\t\t\tRTE_ETH_DEV_SRIOV(dev).nb_q_per_pool = 1;\n+\t\t\tif (RTE_ETH_DEV_SRIOV(dev).nb_tx_q_per_pool > 1)\n+\t\t\t\tRTE_ETH_DEV_SRIOV(dev).nb_tx_q_per_pool = 1;\n \t\t\tbreak;\n \t\t}\n \n \t\t/* check valid queue number */\n-\t\tif ((nb_rx_q > RTE_ETH_DEV_SRIOV(dev).nb_q_per_pool) ||\n-\t\t    (nb_tx_q > RTE_ETH_DEV_SRIOV(dev).nb_q_per_pool)) {\n+\t\tif ((nb_rx_q > RTE_ETH_DEV_SRIOV(dev).nb_rx_q_per_pool) ||\n+\t\t    (nb_tx_q > RTE_ETH_DEV_SRIOV(dev).nb_tx_q_per_pool)) {\n \t\t\tPMD_DEBUG_TRACE(\"ethdev port_id=%d SRIOV active, \"\n-\t\t\t\t    \"queue number must less equal to %d\\n\",\n-\t\t\t\t\tport_id, RTE_ETH_DEV_SRIOV(dev).nb_q_per_pool);\n+\t\t\t\t    \"rx/tx queue number must less equal to %d/%d\\n\",\n+\t\t\t\t\tport_id, RTE_ETH_DEV_SRIOV(dev).nb_rx_q_per_pool,\n+\t\t\t\t\tRTE_ETH_DEV_SRIOV(dev).nb_tx_q_per_pool);\n \t\t\treturn (-EINVAL);\n \t\t}\n \t} else {\n",
    "prefixes": [
        "dpdk-dev",
        "1/2"
    ]
}