Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/972027/?format=api
{ "id": 972027, "url": "http://patchwork.ozlabs.org/api/patches/972027/?format=api", "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20180920002311.10891-5-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": "<20180920002311.10891-5-anirudh.venkataramanan@intel.com>", "list_archive_url": null, "date": "2018-09-20T00:23:07", "name": "[4/8] ice: update fw version check logic", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "b0e85d0788e9ec654c45938bd34e942609970368", "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/20180920002311.10891-5-anirudh.venkataramanan@intel.com/mbox/", "series": [ { "id": 66524, "url": "http://patchwork.ozlabs.org/api/series/66524/?format=api", "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/list/?series=66524", "date": "2018-09-20T00:23:03", "name": "Minor updates and bug fixes", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/66524/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/972027/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/972027/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.133; helo=hemlock.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 hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133])\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 42FyBT56Hhz9sBJ\n\tfor <incoming@patchwork.ozlabs.org>;\n\tThu, 20 Sep 2018 10:23:29 +1000 (AEST)", "from localhost (localhost [127.0.0.1])\n\tby hemlock.osuosl.org (Postfix) with ESMTP id 2AE5E88AEE;\n\tThu, 20 Sep 2018 00:23:27 +0000 (UTC)", "from hemlock.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id BPXigD74rZRK; Thu, 20 Sep 2018 00:23:25 +0000 (UTC)", "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby hemlock.osuosl.org (Postfix) with ESMTP id 8CDDD88ABC;\n\tThu, 20 Sep 2018 00:23:25 +0000 (UTC)", "from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138])\n\tby ash.osuosl.org (Postfix) with ESMTP id 3D7FB1C08AF\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tThu, 20 Sep 2018 00:23:21 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n\tby whitealder.osuosl.org (Postfix) with ESMTP id 3B94088220\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tThu, 20 Sep 2018 00:23:21 +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 dHhXcb+vTnvV for <intel-wired-lan@lists.osuosl.org>;\n\tThu, 20 Sep 2018 00:23:18 +0000 (UTC)", "from mga12.intel.com (mga12.intel.com [192.55.52.136])\n\tby whitealder.osuosl.org (Postfix) with ESMTPS id 347C387FB1\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tThu, 20 Sep 2018 00:23:18 +0000 (UTC)", "from orsmga006.jf.intel.com ([10.7.209.51])\n\tby fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t19 Sep 2018 17:23:17 -0700", "from shasta.jf.intel.com ([10.166.241.11])\n\tby orsmga006.jf.intel.com with ESMTP; 19 Sep 2018 17:23:11 -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,396,1531810800\"; d=\"scan'208\";a=\"75747550\"", "From": "Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>", "To": "intel-wired-lan@lists.osuosl.org", "Date": "Wed, 19 Sep 2018 17:23:07 -0700", "Message-Id": "<20180920002311.10891-5-anirudh.venkataramanan@intel.com>", "X-Mailer": "git-send-email 2.14.3", "In-Reply-To": "<20180920002311.10891-1-anirudh.venkataramanan@intel.com>", "References": "<20180920002311.10891-1-anirudh.venkataramanan@intel.com>", "Subject": "[Intel-wired-lan] [PATCH 4/8] ice: update fw version check logic", "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: Jacob Keller <jacob.e.keller@intel.com>\n\nWe have MAX_FW_API_VER_BRANCH, MAX_FW_API_VER_MAJOR, and\nMAX_FW_API_VER_MINOR that we use in ice_controlq.h to test when a\nfirmware version is newer than expected. This is currently tested by\ncomparing each field separately. Thus, we compare the branch field\nagainst the MAX_FW_API_VER_BRANCH, and so forth.\n\nThis means that currently, if we suppose that the max firmware version\nis defined as 0.2.1, i.e.\n\n#define MAX_FW_API_VER_BRANCH 0\n#define MAX_FW_API_VER_MAJOR 2\n#define MAX_FW_API_VER_MINOR 1\n\nThen firmware 0.1.3 will fail to load. This is because the minor version\n3 is greater than the max minor version 1.\n\nThis is not intuitive, because of the notion that increasing the major\nfirmware version to 2 should mean any firmware version with a major\nversion is less than 2 sould be considered older than 2...\n\nIn order to allow both 0.2.1 and 0.1.3 to load, you would have to define\nthe \"max\" firmware version as 0.2.3.. It is possible that such\na firmware version doesn't even exist yet!\n\nFix this by replacing the current logic with an updated check that\nbehaves as follows:\n\nFirst, we check the major version. If it is greater than the expected\nversion, then we prevent driver load. Additionally, a warning message is\nlogged to indicate to the system administrator that they need to update\ntheir driver. This is now the only case where the driver will refuse to\nload.\n\nSecond, if the major version is less than the expected version, we log\nan information message indicating the NVM should be updated.\n\nThird, if the major version is exact, we'll then check the minor\nversion. If the minor version is more than two versions less than\nexpected, we log an information message indicating the NVM should be\nupdated. If it is more than two versions greater than the expected\nversion, we log an information message that the driver should be\nupdated.\n\nTo support this, the ice_aq_ver_check function needs its signature\nupdated to pass the hw structure. Since we now pass this structure,\nthere is no need to pass the fw api versions separately.\n\nSigned-off-by: Jacob Keller <jacob.e.keller@intel.com>\nSigned-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>\n---\n[Anirudh Venkataramanan <anirudh.venkataramanan@intel.com> cleaned up commit message]\n---\n drivers/net/ethernet/intel/ice/ice_controlq.c | 30 +++++++++++++++++----------\n 1 file changed, 19 insertions(+), 11 deletions(-)", "diff": "diff --git a/drivers/net/ethernet/intel/ice/ice_controlq.c b/drivers/net/ethernet/intel/ice/ice_controlq.c\nindex 6cd86cff6a23..b25ce4f587f5 100644\n--- a/drivers/net/ethernet/intel/ice/ice_controlq.c\n+++ b/drivers/net/ethernet/intel/ice/ice_controlq.c\n@@ -518,22 +518,31 @@ ice_shutdown_sq(struct ice_hw *hw, struct ice_ctl_q_info *cq)\n \n /**\n * ice_aq_ver_check - Check the reported AQ API version.\n- * @fw_branch: The \"branch\" of FW, typically describes the device type\n- * @fw_major: The major version of the FW API\n- * @fw_minor: The minor version increment of the FW API\n+ * @hw: pointer to the hardware structure\n *\n * Checks if the driver should load on a given AQ API version.\n *\n * Return: 'true' iff the driver should attempt to load. 'false' otherwise.\n */\n-static bool ice_aq_ver_check(u8 fw_branch, u8 fw_major, u8 fw_minor)\n+static bool ice_aq_ver_check(struct ice_hw *hw)\n {\n-\tif (fw_branch != EXP_FW_API_VER_BRANCH)\n-\t\treturn false;\n-\tif (fw_major != EXP_FW_API_VER_MAJOR)\n-\t\treturn false;\n-\tif (fw_minor != EXP_FW_API_VER_MINOR)\n+\tif (hw->api_maj_ver > EXP_FW_API_VER_MAJOR) {\n+\t\t/* Major API version is newer than expected, don't load */\n+\t\tdev_warn(ice_hw_to_dev(hw),\n+\t\t\t \"The driver for the device stopped because the NVM image is newer than expected. You must install the most recent version of the network driver.\\n\");\n \t\treturn false;\n+\t} else if (hw->api_maj_ver == EXP_FW_API_VER_MAJOR) {\n+\t\tif (hw->api_min_ver > (EXP_FW_API_VER_MINOR + 2))\n+\t\t\tdev_info(ice_hw_to_dev(hw),\n+\t\t\t\t \"The driver for the device detected a newer version of the NVM image than expected. Please install the most recent version of the network driver.\\n\");\n+\t\telse if ((hw->api_min_ver + 2) < EXP_FW_API_VER_MINOR)\n+\t\t\tdev_info(ice_hw_to_dev(hw),\n+\t\t\t\t \"The driver for the device detected an older version of the NVM image than expected. Please update the NVM image.\\n\");\n+\t} else {\n+\t\t/* Major API version is older than expected, log a warning */\n+\t\tdev_info(ice_hw_to_dev(hw),\n+\t\t\t \"The driver for the device detected an older version of the NVM image than expected. Please update the NVM image.\\n\");\n+\t}\n \treturn true;\n }\n \n@@ -588,8 +597,7 @@ static enum ice_status ice_init_check_adminq(struct ice_hw *hw)\n \tif (status)\n \t\tgoto init_ctrlq_free_rq;\n \n-\tif (!ice_aq_ver_check(hw->api_branch, hw->api_maj_ver,\n-\t\t\t hw->api_min_ver)) {\n+\tif (!ice_aq_ver_check(hw)) {\n \t\tstatus = ICE_ERR_FW_API_VER;\n \t\tgoto init_ctrlq_free_rq;\n \t}\n", "prefixes": [ "4/8" ] }