get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 1048612,
    "url": "http://patchwork.ozlabs.org/api/patches/1048612/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20190227003523.28733-15-anirudh.venkataramanan@intel.com/",
    "project": {
        "id": 46,
        "url": "http://patchwork.ozlabs.org/api/projects/46/?format=api",
        "name": "Intel Wired Ethernet development",
        "link_name": "intel-wired-lan",
        "list_id": "intel-wired-lan.osuosl.org",
        "list_email": "intel-wired-lan@osuosl.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20190227003523.28733-15-anirudh.venkataramanan@intel.com>",
    "list_archive_url": null,
    "date": "2019-02-27T00:35:20",
    "name": "[S13,v2,14/17] ice: update VSI config dynamically",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "85dc8ca0ab8c477f09f40c01397385d24d111e09",
    "submitter": {
        "id": 73601,
        "url": "http://patchwork.ozlabs.org/api/people/73601/?format=api",
        "name": "Anirudh Venkataramanan",
        "email": "anirudh.venkataramanan@intel.com"
    },
    "delegate": {
        "id": 68,
        "url": "http://patchwork.ozlabs.org/api/users/68/?format=api",
        "username": "jtkirshe",
        "first_name": "Jeff",
        "last_name": "Kirsher",
        "email": "jeffrey.t.kirsher@intel.com"
    },
    "mbox": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20190227003523.28733-15-anirudh.venkataramanan@intel.com/mbox/",
    "series": [
        {
            "id": 94355,
            "url": "http://patchwork.ozlabs.org/api/series/94355/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/list/?series=94355",
            "date": "2019-02-27T00:35:10",
            "name": "Bug fixes and minor feature updates for ice",
            "version": 2,
            "mbox": "http://patchwork.ozlabs.org/series/94355/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/1048612/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/1048612/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<intel-wired-lan-bounces@osuosl.org>",
        "X-Original-To": [
            "incoming@patchwork.ozlabs.org",
            "intel-wired-lan@lists.osuosl.org"
        ],
        "Delivered-To": [
            "patchwork-incoming@bilbo.ozlabs.org",
            "intel-wired-lan@lists.osuosl.org"
        ],
        "Authentication-Results": [
            "ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=osuosl.org\n\t(client-ip=140.211.166.137; helo=fraxinus.osuosl.org;\n\tenvelope-from=intel-wired-lan-bounces@osuosl.org;\n\treceiver=<UNKNOWN>)",
            "ozlabs.org;\n\tdmarc=fail (p=none dis=none) header.from=intel.com"
        ],
        "Received": [
            "from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 448Gtc36b3z9s9y\n\tfor <incoming@patchwork.ozlabs.org>;\n\tWed, 27 Feb 2019 11:35:36 +1100 (AEDT)",
            "from localhost (localhost [127.0.0.1])\n\tby fraxinus.osuosl.org (Postfix) with ESMTP id 79CE985766;\n\tWed, 27 Feb 2019 00:35:34 +0000 (UTC)",
            "from fraxinus.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id yQBXRrXXb-O7; Wed, 27 Feb 2019 00:35:33 +0000 (UTC)",
            "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby fraxinus.osuosl.org (Postfix) with ESMTP id D17428575E;\n\tWed, 27 Feb 2019 00:35:31 +0000 (UTC)",
            "from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138])\n\tby ash.osuosl.org (Postfix) with ESMTP id 65E541BF2A0\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tWed, 27 Feb 2019 00:35:28 +0000 (UTC)",
            "from localhost (localhost [127.0.0.1])\n\tby whitealder.osuosl.org (Postfix) with ESMTP id 6356D85608\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tWed, 27 Feb 2019 00:35:28 +0000 (UTC)",
            "from whitealder.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id XPSRhN58mMrB for <intel-wired-lan@lists.osuosl.org>;\n\tWed, 27 Feb 2019 00:35:26 +0000 (UTC)",
            "from mga12.intel.com (mga12.intel.com [192.55.52.136])\n\tby whitealder.osuosl.org (Postfix) with ESMTPS id 0EB5D8559F\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tWed, 27 Feb 2019 00:35:26 +0000 (UTC)",
            "from fmsmga001.fm.intel.com ([10.253.24.23])\n\tby fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t26 Feb 2019 16:35:26 -0800",
            "from shasta.jf.intel.com ([10.166.241.11])\n\tby fmsmga001.fm.intel.com with ESMTP; 26 Feb 2019 16:35:25 -0800"
        ],
        "X-Virus-Scanned": [
            "amavisd-new at osuosl.org",
            "amavisd-new at osuosl.org"
        ],
        "X-Greylist": "domain auto-whitelisted by SQLgrey-1.7.6",
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "X-Amp-File-Uploaded": "False",
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos;i=\"5.58,417,1544515200\"; d=\"scan'208\";a=\"150284177\"",
        "From": "Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>",
        "To": "intel-wired-lan@lists.osuosl.org",
        "Date": "Tue, 26 Feb 2019 16:35:20 -0800",
        "Message-Id": "<20190227003523.28733-15-anirudh.venkataramanan@intel.com>",
        "X-Mailer": "git-send-email 2.14.5",
        "In-Reply-To": "<20190227003523.28733-1-anirudh.venkataramanan@intel.com>",
        "References": "<20190227003523.28733-1-anirudh.venkataramanan@intel.com>",
        "Subject": "[Intel-wired-lan] [PATCH S13 v2 14/17] ice: update VSI config\n\tdynamically",
        "X-BeenThere": "intel-wired-lan@osuosl.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "Intel Wired Ethernet Linux Kernel Driver Development\n\t<intel-wired-lan.osuosl.org>",
        "List-Unsubscribe": "<https://lists.osuosl.org/mailman/options/intel-wired-lan>, \n\t<mailto:intel-wired-lan-request@osuosl.org?subject=unsubscribe>",
        "List-Archive": "<http://lists.osuosl.org/pipermail/intel-wired-lan/>",
        "List-Post": "<mailto:intel-wired-lan@osuosl.org>",
        "List-Help": "<mailto:intel-wired-lan-request@osuosl.org?subject=help>",
        "List-Subscribe": "<https://lists.osuosl.org/mailman/listinfo/intel-wired-lan>, \n\t<mailto:intel-wired-lan-request@osuosl.org?subject=subscribe>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=\"us-ascii\"",
        "Content-Transfer-Encoding": "7bit",
        "Errors-To": "intel-wired-lan-bounces@osuosl.org",
        "Sender": "\"Intel-wired-lan\" <intel-wired-lan-bounces@osuosl.org>"
    },
    "content": "From: Victor Raj <victor.raj@intel.com>\n\nWhen VSI increases the number of queues dynamically, the scheduler\njust needs to add the new required nodes rather than re-adjusting with\npreviously allocated number of nodes. Readjusting didn't provide enough\nparents to add the upper layer nodes also can't place lan and rdma\nsubtrees separately.\n\nIn decrese case, keep the VSI configuration with max number of queues\nalways. This will leave some extra nodes in the tree but no harm done.\n\nSigned-off-by: Victor Raj <victor.raj@intel.com>\nReviewed-by: Bruce Allan <bruce.w.allan@intel.com>\nSigned-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>\n---\n drivers/net/ethernet/intel/ice/ice_sched.c | 75 ++++++------------------------\n 1 file changed, 13 insertions(+), 62 deletions(-)",
    "diff": "diff --git a/drivers/net/ethernet/intel/ice/ice_sched.c b/drivers/net/ethernet/intel/ice/ice_sched.c\nindex cf1142ec16ee..efbebf7a050f 100644\n--- a/drivers/net/ethernet/intel/ice/ice_sched.c\n+++ b/drivers/net/ethernet/intel/ice/ice_sched.c\n@@ -1268,42 +1268,6 @@ ice_sched_add_vsi_child_nodes(struct ice_port_info *pi, u16 vsi_handle,\n \treturn 0;\n }\n \n-/**\n- * ice_sched_rm_vsi_child_nodes - remove VSI child nodes from the tree\n- * @pi: port information structure\n- * @vsi_node: pointer to the VSI node\n- * @num_nodes: pointer to the num nodes that needs to be removed per layer\n- * @owner: node owner (lan or rdma)\n- *\n- * This function removes the VSI child nodes from the tree. It gets called for\n- * lan and rdma separately.\n- */\n-static void\n-ice_sched_rm_vsi_child_nodes(struct ice_port_info *pi,\n-\t\t\t     struct ice_sched_node *vsi_node, u16 *num_nodes,\n-\t\t\t     u8 owner)\n-{\n-\tstruct ice_sched_node *node, *next;\n-\tu8 i, qgl, vsil;\n-\tu16 num;\n-\n-\tqgl = ice_sched_get_qgrp_layer(pi->hw);\n-\tvsil = ice_sched_get_vsi_layer(pi->hw);\n-\n-\tfor (i = qgl; i > vsil; i--) {\n-\t\tnum = num_nodes[i];\n-\t\tnode = ice_sched_get_first_node(pi->hw, vsi_node, i);\n-\t\twhile (node && num) {\n-\t\t\tnext = node->sibling;\n-\t\t\tif (node->owner == owner && !node->num_children) {\n-\t\t\t\tice_free_sched_node(pi, node);\n-\t\t\t\tnum--;\n-\t\t\t}\n-\t\t\tnode = next;\n-\t\t}\n-\t}\n-}\n-\n /**\n  * ice_sched_calc_vsi_support_nodes - calculate number of VSI support nodes\n  * @hw: pointer to the hw struct\n@@ -1444,7 +1408,6 @@ static enum ice_status\n ice_sched_update_vsi_child_nodes(struct ice_port_info *pi, u16 vsi_handle,\n \t\t\t\t u8 tc, u16 new_numqs, u8 owner)\n {\n-\tu16 prev_num_nodes[ICE_AQC_TOPO_MAX_LEVEL_NUM] = { 0 };\n \tu16 new_num_nodes[ICE_AQC_TOPO_MAX_LEVEL_NUM] = { 0 };\n \tstruct ice_sched_node *vsi_node;\n \tstruct ice_sched_node *tc_node;\n@@ -1452,7 +1415,6 @@ ice_sched_update_vsi_child_nodes(struct ice_port_info *pi, u16 vsi_handle,\n \tenum ice_status status = 0;\n \tstruct ice_hw *hw = pi->hw;\n \tu16 prev_numqs;\n-\tu8 i;\n \n \ttc_node = ice_sched_get_tc_node(pi, tc);\n \tif (!tc_node)\n@@ -1471,33 +1433,22 @@ ice_sched_update_vsi_child_nodes(struct ice_port_info *pi, u16 vsi_handle,\n \telse\n \t\treturn ICE_ERR_PARAM;\n \n-\t/* num queues are not changed */\n-\tif (prev_numqs == new_numqs)\n+\t/* num queues are not changed or less than the previous number */\n+\tif (new_numqs <= prev_numqs)\n \t\treturn status;\n-\n-\t/* calculate number of nodes based on prev/new number of qs */\n-\tif (prev_numqs)\n-\t\tice_sched_calc_vsi_child_nodes(hw, prev_numqs, prev_num_nodes);\n-\n \tif (new_numqs)\n \t\tice_sched_calc_vsi_child_nodes(hw, new_numqs, new_num_nodes);\n-\n-\tif (prev_numqs > new_numqs) {\n-\t\tfor (i = 0; i < ICE_AQC_TOPO_MAX_LEVEL_NUM; i++)\n-\t\t\tnew_num_nodes[i] = prev_num_nodes[i] - new_num_nodes[i];\n-\n-\t\tice_sched_rm_vsi_child_nodes(pi, vsi_node, new_num_nodes,\n-\t\t\t\t\t     owner);\n-\t} else {\n-\t\tfor (i = 0; i < ICE_AQC_TOPO_MAX_LEVEL_NUM; i++)\n-\t\t\tnew_num_nodes[i] -= prev_num_nodes[i];\n-\n-\t\tstatus = ice_sched_add_vsi_child_nodes(pi, vsi_handle, tc_node,\n-\t\t\t\t\t\t       new_num_nodes, owner);\n-\t\tif (status)\n-\t\t\treturn status;\n-\t}\n-\n+\t/* Keep the max number of queue configuration all the time. Update the\n+\t * tree only if number of queues > previous number of queues. This may\n+\t * leave some extra nodes in the tree if number of queues < previous\n+\t * number but that wouldn't harm anything. Removing those extra nodes\n+\t * may complicate the code if those nodes are part of SRL or\n+\t * individually rate limited.\n+\t */\n+\tstatus = ice_sched_add_vsi_child_nodes(pi, vsi_handle, tc_node,\n+\t\t\t\t\t       new_num_nodes, owner);\n+\tif (status)\n+\t\treturn status;\n \tvsi_ctx->sched.max_lanq[tc] = new_numqs;\n \n \treturn 0;\n",
    "prefixes": [
        "S13",
        "v2",
        "14/17"
    ]
}