Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/963044/?format=api
{ "id": 963044, "url": "http://patchwork.ozlabs.org/api/patches/963044/?format=api", "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20180828171609.78242-5-alice.michael@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": "<20180828171609.78242-5-alice.michael@intel.com>", "list_archive_url": null, "date": "2018-08-28T17:16:05", "name": "[next,S96,5/9] i40e: add a helper function to validate a vf based on the vf id", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "e972833d7997a39e24e6ff1cb1862dbbb6208715", "submitter": { "id": 71123, "url": "http://patchwork.ozlabs.org/api/people/71123/?format=api", "name": "Michael, Alice", "email": "alice.michael@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/20180828171609.78242-5-alice.michael@intel.com/mbox/", "series": [ { "id": 62918, "url": "http://patchwork.ozlabs.org/api/series/62918/?format=api", "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/list/?series=62918", "date": "2018-08-28T17:16:03", "name": "[next,S96,1/9] i40e: Check and correct speed values for link on open", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/62918/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/963044/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/963044/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.136; helo=silver.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 silver.osuosl.org (smtp3.osuosl.org [140.211.166.136])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 420Flv6hsJz9s4c\n\tfor <incoming@patchwork.ozlabs.org>;\n\tWed, 29 Aug 2018 03:16:26 +1000 (AEST)", "from localhost (localhost [127.0.0.1])\n\tby silver.osuosl.org (Postfix) with ESMTP id DB1C922D22;\n\tTue, 28 Aug 2018 17:16:24 +0000 (UTC)", "from silver.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id AMIXv-N9levU; Tue, 28 Aug 2018 17:16:23 +0000 (UTC)", "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby silver.osuosl.org (Postfix) with ESMTP id 17D142285A;\n\tTue, 28 Aug 2018 17:16:23 +0000 (UTC)", "from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137])\n\tby ash.osuosl.org (Postfix) with ESMTP id 2A0B51C2B65\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tTue, 28 Aug 2018 17:16:20 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n\tby fraxinus.osuosl.org (Postfix) with ESMTP id 263C085755\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tTue, 28 Aug 2018 17:16:20 +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 wJjGGS9ddqcH for <intel-wired-lan@lists.osuosl.org>;\n\tTue, 28 Aug 2018 17:16:19 +0000 (UTC)", "from mga05.intel.com (mga05.intel.com [192.55.52.43])\n\tby fraxinus.osuosl.org (Postfix) with ESMTPS id 8CF9E85722\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tTue, 28 Aug 2018 17:16:19 +0000 (UTC)", "from orsmga001.jf.intel.com ([10.7.209.18])\n\tby fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t28 Aug 2018 10:16:19 -0700", "from alicemic-2.jf.intel.com ([10.166.16.121])\n\tby orsmga001.jf.intel.com with ESMTP; 28 Aug 2018 10:16:17 -0700" ], "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.53,300,1531810800\"; d=\"scan'208\";a=\"85666782\"", "From": "Alice Michael <alice.michael@intel.com>", "To": "alice.michael@intel.com,\n\tintel-wired-lan@lists.osuosl.org", "Date": "Tue, 28 Aug 2018 10:16:05 -0700", "Message-Id": "<20180828171609.78242-5-alice.michael@intel.com>", "X-Mailer": "git-send-email 2.9.5", "In-Reply-To": "<20180828171609.78242-1-alice.michael@intel.com>", "References": "<20180828171609.78242-1-alice.michael@intel.com>", "Subject": "[Intel-wired-lan] [next PATCH S96 5/9] i40e: add a helper function\n\tto validate a vf based on the vf id", "X-BeenThere": "intel-wired-lan@osuosl.org", "X-Mailman-Version": "2.1.24", "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: Harshitha Ramamurthy <harshitha.ramamurthy@intel.com>\n\nWhen we are trying to change VF settings, it is possible for 2 race\nconditions to happen. One, when the VF is created but not yet enabled.\nSecond, the VF is enabled but the vsi is still not created or not yet\nre-created in the VF reset flow.\n\nThis patch introduces a helper function to validate that the vf is\nenabled and that the vsi is set up. This patch also calls this\nfunction from other functions which could get into these race conditions.\nWhile we are poking around here, remove unnecessary parenthesis that\ncheckpatch was complaining about.\n\nSigned-off-by: Harshitha Ramamurthy <harshitha.ramamurthy@intel.com>\n---\n drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 62 ++++++++++++++--------\n 1 file changed, 41 insertions(+), 21 deletions(-)", "diff": "diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c\nindex ca423be..b299003 100644\n--- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c\n+++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c\n@@ -3833,6 +3833,35 @@ int i40e_vc_process_vflr_event(struct i40e_pf *pf)\n }\n \n /**\n+ * i40e_validate_vf\n+ * @pf: the physical function\n+ * @vf_id: VF identifier\n+ *\n+ * Check that the VF is enabled and the vsi exists.\n+ *\n+ * Returns 0 on success, negative on failure\n+ **/\n+static int i40e_validate_vf(struct i40e_pf *pf, int vf_id)\n+{\n+\tstruct i40e_vsi *vsi;\n+\tstruct i40e_vf *vf;\n+\tint ret = 0;\n+\n+\tif (vf_id >= pf->num_alloc_vfs) {\n+\t\tdev_err(&pf->pdev->dev,\n+\t\t\t\"Invalid VF Identifier %d\\n\", vf_id);\n+\t\tret = -EINVAL;\n+\t\tgoto err_out;\n+\t}\n+\tvf = &pf->vf[vf_id];\n+\tvsi = i40e_find_vsi_from_id(pf, vf->lan_vsi_id);\n+\tif (!vsi)\n+\t\tret = -EINVAL;\n+err_out:\n+\treturn ret;\n+}\n+\n+/**\n * i40e_ndo_set_vf_mac\n * @netdev: network interface device structure\n * @vf_id: VF identifier\n@@ -3853,14 +3882,11 @@ int i40e_ndo_set_vf_mac(struct net_device *netdev, int vf_id, u8 *mac)\n \tu8 i;\n \n \t/* validate the request */\n-\tif (vf_id >= pf->num_alloc_vfs) {\n-\t\tdev_err(&pf->pdev->dev,\n-\t\t\t\"Invalid VF Identifier %d\\n\", vf_id);\n-\t\tret = -EINVAL;\n+\tret = i40e_validate_vf(pf, vf_id);\n+\tif (ret)\n \t\tgoto error_param;\n-\t}\n \n-\tvf = &(pf->vf[vf_id]);\n+\tvf = &pf->vf[vf_id];\n \tvsi = pf->vsi[vf->lan_vsi_idx];\n \n \t/* When the VF is resetting wait until it is done.\n@@ -3979,11 +4005,9 @@ int i40e_ndo_set_vf_port_vlan(struct net_device *netdev, int vf_id,\n \tint ret = 0;\n \n \t/* validate the request */\n-\tif (vf_id >= pf->num_alloc_vfs) {\n-\t\tdev_err(&pf->pdev->dev, \"Invalid VF Identifier %d\\n\", vf_id);\n-\t\tret = -EINVAL;\n+\tret = i40e_validate_vf(pf, vf_id);\n+\tif (ret)\n \t\tgoto error_pvid;\n-\t}\n \n \tif ((vlan_id > I40E_MAX_VLANID) || (qos > 7)) {\n \t\tdev_err(&pf->pdev->dev, \"Invalid VF Parameters\\n\");\n@@ -3997,7 +4021,7 @@ int i40e_ndo_set_vf_port_vlan(struct net_device *netdev, int vf_id,\n \t\tgoto error_pvid;\n \t}\n \n-\tvf = &(pf->vf[vf_id]);\n+\tvf = &pf->vf[vf_id];\n \tvsi = pf->vsi[vf->lan_vsi_idx];\n \tif (!test_bit(I40E_VF_STATE_INIT, &vf->vf_states)) {\n \t\tdev_err(&pf->pdev->dev, \"VF %d still in reset. Try again.\\n\",\n@@ -4117,11 +4141,9 @@ int i40e_ndo_set_vf_bw(struct net_device *netdev, int vf_id, int min_tx_rate,\n \tint ret = 0;\n \n \t/* validate the request */\n-\tif (vf_id >= pf->num_alloc_vfs) {\n-\t\tdev_err(&pf->pdev->dev, \"Invalid VF Identifier %d.\\n\", vf_id);\n-\t\tret = -EINVAL;\n+\tret = i40e_validate_vf(pf, vf_id);\n+\tif (ret)\n \t\tgoto error;\n-\t}\n \n \tif (min_tx_rate) {\n \t\tdev_err(&pf->pdev->dev, \"Invalid min tx rate (%d) (greater than 0) specified for VF %d.\\n\",\n@@ -4129,7 +4151,7 @@ int i40e_ndo_set_vf_bw(struct net_device *netdev, int vf_id, int min_tx_rate,\n \t\treturn -EINVAL;\n \t}\n \n-\tvf = &(pf->vf[vf_id]);\n+\tvf = &pf->vf[vf_id];\n \tvsi = pf->vsi[vf->lan_vsi_idx];\n \tif (!test_bit(I40E_VF_STATE_INIT, &vf->vf_states)) {\n \t\tdev_err(&pf->pdev->dev, \"VF %d still in reset. Try again.\\n\",\n@@ -4165,13 +4187,11 @@ int i40e_ndo_get_vf_config(struct net_device *netdev,\n \tint ret = 0;\n \n \t/* validate the request */\n-\tif (vf_id >= pf->num_alloc_vfs) {\n-\t\tdev_err(&pf->pdev->dev, \"Invalid VF Identifier %d\\n\", vf_id);\n-\t\tret = -EINVAL;\n+\tret = i40e_validate_vf(pf, vf_id);\n+\tif (ret)\n \t\tgoto error_param;\n-\t}\n \n-\tvf = &(pf->vf[vf_id]);\n+\tvf = &pf->vf[vf_id];\n \t/* first vsi is always the LAN vsi */\n \tvsi = pf->vsi[vf->lan_vsi_idx];\n \tif (!test_bit(I40E_VF_STATE_INIT, &vf->vf_states)) {\n", "prefixes": [ "next", "S96", "5/9" ] }