get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 1291749,
    "url": "http://patchwork.ozlabs.org/api/patches/1291749/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20200516003644.4658-5-anthony.l.nguyen@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": "<20200516003644.4658-5-anthony.l.nguyen@intel.com>",
    "list_archive_url": null,
    "date": "2020-05-16T00:36:34",
    "name": "[S43,05/15] ice: check for compatibility between DDP package and firmware",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "63423d2cc17f20ff53b412d51996ba0ff118f1bb",
    "submitter": {
        "id": 68875,
        "url": "http://patchwork.ozlabs.org/api/people/68875/?format=api",
        "name": "Tony Nguyen",
        "email": "anthony.l.nguyen@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/20200516003644.4658-5-anthony.l.nguyen@intel.com/mbox/",
    "series": [
        {
            "id": 177325,
            "url": "http://patchwork.ozlabs.org/api/series/177325/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/list/?series=177325",
            "date": "2020-05-16T00:36:39",
            "name": "[S43,01/15] ice: Call ice_aq_set_mac_cfg",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/177325/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/1291749/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/1291749/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 spf=pass (sender SPF authorized) smtp.mailfrom=osuosl.org\n (client-ip=140.211.166.137; helo=fraxinus.osuosl.org;\n envelope-from=intel-wired-lan-bounces@osuosl.org; receiver=<UNKNOWN>)",
            "ozlabs.org;\n dmarc=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 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 49P5yG2gpPz9sTC\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 16 May 2020 10:39:34 +1000 (AEST)",
            "from localhost (localhost [127.0.0.1])\n\tby fraxinus.osuosl.org (Postfix) with ESMTP id EE36888017;\n\tSat, 16 May 2020 00:39:32 +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 PEZaK3XohLMF; Sat, 16 May 2020 00:39:31 +0000 (UTC)",
            "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby fraxinus.osuosl.org (Postfix) with ESMTP id 119DC88211;\n\tSat, 16 May 2020 00:39:31 +0000 (UTC)",
            "from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138])\n by ash.osuosl.org (Postfix) with ESMTP id 2908A1BF2B9\n for <intel-wired-lan@lists.osuosl.org>; Sat, 16 May 2020 00:39:24 +0000 (UTC)",
            "from localhost (localhost [127.0.0.1])\n by whitealder.osuosl.org (Postfix) with ESMTP id 25AF9877FA\n for <intel-wired-lan@lists.osuosl.org>; Sat, 16 May 2020 00:39:24 +0000 (UTC)",
            "from whitealder.osuosl.org ([127.0.0.1])\n by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n with ESMTP id nQL9Wim2DtED for <intel-wired-lan@lists.osuosl.org>;\n Sat, 16 May 2020 00:39:19 +0000 (UTC)",
            "from mga14.intel.com (mga14.intel.com [192.55.52.115])\n by whitealder.osuosl.org (Postfix) with ESMTPS id 89C6887863\n for <intel-wired-lan@lists.osuosl.org>; Sat, 16 May 2020 00:39:19 +0000 (UTC)",
            "from fmsmga003.fm.intel.com ([10.253.24.29])\n by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 15 May 2020 17:39:18 -0700",
            "from unknown (HELO localhost.jf.intel.com) ([10.166.241.65])\n by FMSMGA003.fm.intel.com with ESMTP; 15 May 2020 17:39:18 -0700"
        ],
        "X-Virus-Scanned": [
            "amavisd-new at osuosl.org",
            "amavisd-new at osuosl.org"
        ],
        "X-Greylist": "domain auto-whitelisted by SQLgrey-1.7.6",
        "IronPort-SDR": [
            "\n XKx7TbTb+vC+6T5XzOdGSVjq86wPYBa8NDhUCuXzE191hppFSeTd3AikYX6BCsnUP10LtmC2vX\n LeZOOv1l0OFQ==",
            "\n xUvgx/eEQrYr084UMyYFyObOjIKqZC8UTIbPDorqSkI2mjjT271zug6VboZ7HQYyQcmJzq9U5T\n SoxztGmlKxmw=="
        ],
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "X-Amp-File-Uploaded": "False",
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos;i=\"5.73,397,1583222400\"; d=\"scan'208\";a=\"307560860\"",
        "From": "Tony Nguyen <anthony.l.nguyen@intel.com>",
        "To": "intel-wired-lan@lists.osuosl.org",
        "Date": "Fri, 15 May 2020 17:36:34 -0700",
        "Message-Id": "<20200516003644.4658-5-anthony.l.nguyen@intel.com>",
        "X-Mailer": "git-send-email 2.20.1",
        "In-Reply-To": "<20200516003644.4658-1-anthony.l.nguyen@intel.com>",
        "References": "<20200516003644.4658-1-anthony.l.nguyen@intel.com>",
        "MIME-Version": "1.0",
        "Subject": "[Intel-wired-lan] [PATCH S43 05/15] ice: check for compatibility\n between DDP package and firmware",
        "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 <intel-wired-lan.osuosl.org>",
        "List-Unsubscribe": "<https://lists.osuosl.org/mailman/options/intel-wired-lan>,\n <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 <mailto:intel-wired-lan-request@osuosl.org?subject=subscribe>",
        "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\nRequire the Dynamic Device Personalization (DDP) file to have the same\nmajor version number and the same or older minor number than the firmware\nversion major and minor, respectively.\n\nCheck the OS and NVM package versions before downloading the package.\nIf the OS package version is not compatible with NVM then return an\nappropriate error.\n\nSplit the 32-byte segment name into a 28-byte segment name and\na 4-byte Track-ID. Older packages will still work with this change\nbecause no package has a name that will take up more than 28 bytes;\nin this case the Track-ID will be 0.\n\nNote that the driver will store the segment name as 32-bytes in the\nice_hw structure, in order to normalize the length of the various\npackage name strings that it uses.\n\nAlso add section ID and structure for the segment metadata section.\n\nSigned-off-by: Victor Raj <victor.raj@intel.com>\nSigned-off-by: Dan Nowlin <dan.nowlin@intel.com>\nSigned-off-by: Bruce Allan <bruce.w.allan@intel.com>\nSigned-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>\n---\n .../net/ethernet/intel/ice/ice_adminq_cmd.h   |   4 +-\n .../net/ethernet/intel/ice/ice_flex_pipe.c    | 112 ++++++++++++++----\n .../net/ethernet/intel/ice/ice_flex_type.h    |   8 +-\n drivers/net/ethernet/intel/ice/ice_main.c     |   5 +\n drivers/net/ethernet/intel/ice/ice_status.h   |   2 +\n drivers/net/ethernet/intel/ice/ice_type.h     |   1 +\n 6 files changed, 102 insertions(+), 30 deletions(-)",
    "diff": "diff --git a/drivers/net/ethernet/intel/ice/ice_adminq_cmd.h b/drivers/net/ethernet/intel/ice/ice_adminq_cmd.h\nindex 1586f24f26fb..d0ee14254df1 100644\n--- a/drivers/net/ethernet/intel/ice/ice_adminq_cmd.h\n+++ b/drivers/net/ethernet/intel/ice/ice_adminq_cmd.h\n@@ -1734,10 +1734,12 @@ struct ice_pkg_ver {\n };\n \n #define ICE_PKG_NAME_SIZE\t32\n+#define ICE_SEG_NAME_SIZE\t28\n \n struct ice_aqc_get_pkg_info {\n \tstruct ice_pkg_ver ver;\n-\tchar name[ICE_PKG_NAME_SIZE];\n+\tchar name[ICE_SEG_NAME_SIZE];\n+\t__le32 track_id;\n \tu8 is_in_nvm;\n \tu8 is_active;\n \tu8 is_active_at_boot;\ndiff --git a/drivers/net/ethernet/intel/ice/ice_flex_pipe.c b/drivers/net/ethernet/intel/ice/ice_flex_pipe.c\nindex da82783d1571..4420fc02f7e7 100644\n--- a/drivers/net/ethernet/intel/ice/ice_flex_pipe.c\n+++ b/drivers/net/ethernet/intel/ice/ice_flex_pipe.c\n@@ -864,8 +864,9 @@ ice_find_seg_in_pkg(struct ice_hw *hw, u32 seg_type,\n \tu32 i;\n \n \tice_debug(hw, ICE_DBG_PKG, \"Package format version: %d.%d.%d.%d\\n\",\n-\t\t  pkg_hdr->format_ver.major, pkg_hdr->format_ver.minor,\n-\t\t  pkg_hdr->format_ver.update, pkg_hdr->format_ver.draft);\n+\t\t  pkg_hdr->pkg_format_ver.major, pkg_hdr->pkg_format_ver.minor,\n+\t\t  pkg_hdr->pkg_format_ver.update,\n+\t\t  pkg_hdr->pkg_format_ver.draft);\n \n \t/* Search all package segments for the requested segment type */\n \tfor (i = 0; i < le32_to_cpu(pkg_hdr->seg_count); i++) {\n@@ -1035,13 +1036,15 @@ ice_download_pkg(struct ice_hw *hw, struct ice_seg *ice_seg)\n {\n \tstruct ice_buf_table *ice_buf_tbl;\n \n-\tice_debug(hw, ICE_DBG_PKG, \"Segment version: %d.%d.%d.%d\\n\",\n-\t\t  ice_seg->hdr.seg_ver.major, ice_seg->hdr.seg_ver.minor,\n-\t\t  ice_seg->hdr.seg_ver.update, ice_seg->hdr.seg_ver.draft);\n+\tice_debug(hw, ICE_DBG_PKG, \"Segment format version: %d.%d.%d.%d\\n\",\n+\t\t  ice_seg->hdr.seg_format_ver.major,\n+\t\t  ice_seg->hdr.seg_format_ver.minor,\n+\t\t  ice_seg->hdr.seg_format_ver.update,\n+\t\t  ice_seg->hdr.seg_format_ver.draft);\n \n \tice_debug(hw, ICE_DBG_PKG, \"Seg: type 0x%X, size %d, name %s\\n\",\n \t\t  le32_to_cpu(ice_seg->hdr.seg_type),\n-\t\t  le32_to_cpu(ice_seg->hdr.seg_size), ice_seg->hdr.seg_name);\n+\t\t  le32_to_cpu(ice_seg->hdr.seg_size), ice_seg->hdr.seg_id);\n \n \tice_buf_tbl = ice_find_buf_table(ice_seg);\n \n@@ -1086,14 +1089,16 @@ ice_init_pkg_info(struct ice_hw *hw, struct ice_pkg_hdr *pkg_hdr)\n \n \tseg_hdr = ice_find_seg_in_pkg(hw, SEGMENT_TYPE_ICE, pkg_hdr);\n \tif (seg_hdr) {\n-\t\thw->ice_pkg_ver = seg_hdr->seg_ver;\n-\t\tmemcpy(hw->ice_pkg_name, seg_hdr->seg_name,\n+\t\thw->ice_pkg_ver = seg_hdr->seg_format_ver;\n+\t\tmemcpy(hw->ice_pkg_name, seg_hdr->seg_id,\n \t\t       sizeof(hw->ice_pkg_name));\n \n-\t\tice_debug(hw, ICE_DBG_PKG, \"Ice Pkg: %d.%d.%d.%d, %s\\n\",\n-\t\t\t  seg_hdr->seg_ver.major, seg_hdr->seg_ver.minor,\n-\t\t\t  seg_hdr->seg_ver.update, seg_hdr->seg_ver.draft,\n-\t\t\t  seg_hdr->seg_name);\n+\t\tice_debug(hw, ICE_DBG_PKG, \"Ice Seg: %d.%d.%d.%d, %s\\n\",\n+\t\t\t  seg_hdr->seg_format_ver.major,\n+\t\t\t  seg_hdr->seg_format_ver.minor,\n+\t\t\t  seg_hdr->seg_format_ver.update,\n+\t\t\t  seg_hdr->seg_format_ver.draft,\n+\t\t\t  seg_hdr->seg_id);\n \t} else {\n \t\tice_debug(hw, ICE_DBG_INIT,\n \t\t\t  \"Did not find ice segment in driver package\\n\");\n@@ -1134,9 +1139,11 @@ static enum ice_status ice_get_pkg_info(struct ice_hw *hw)\n \t\tif (pkg_info->pkg_info[i].is_active) {\n \t\t\tflags[place++] = 'A';\n \t\t\thw->active_pkg_ver = pkg_info->pkg_info[i].ver;\n+\t\t\thw->active_track_id =\n+\t\t\t\tle32_to_cpu(pkg_info->pkg_info[i].track_id);\n \t\t\tmemcpy(hw->active_pkg_name,\n \t\t\t       pkg_info->pkg_info[i].name,\n-\t\t\t       sizeof(hw->active_pkg_name));\n+\t\t\t       sizeof(pkg_info->pkg_info[i].name));\n \t\t\thw->active_pkg_in_nvm = pkg_info->pkg_info[i].is_in_nvm;\n \t\t}\n \t\tif (pkg_info->pkg_info[i].is_active_at_boot)\n@@ -1176,10 +1183,10 @@ static enum ice_status ice_verify_pkg(struct ice_pkg_hdr *pkg, u32 len)\n \tif (len < sizeof(*pkg))\n \t\treturn ICE_ERR_BUF_TOO_SHORT;\n \n-\tif (pkg->format_ver.major != ICE_PKG_FMT_VER_MAJ ||\n-\t    pkg->format_ver.minor != ICE_PKG_FMT_VER_MNR ||\n-\t    pkg->format_ver.update != ICE_PKG_FMT_VER_UPD ||\n-\t    pkg->format_ver.draft != ICE_PKG_FMT_VER_DFT)\n+\tif (pkg->pkg_format_ver.major != ICE_PKG_FMT_VER_MAJ ||\n+\t    pkg->pkg_format_ver.minor != ICE_PKG_FMT_VER_MNR ||\n+\t    pkg->pkg_format_ver.update != ICE_PKG_FMT_VER_UPD ||\n+\t    pkg->pkg_format_ver.draft != ICE_PKG_FMT_VER_DFT)\n \t\treturn ICE_ERR_CFG;\n \n \t/* pkg must have at least one segment */\n@@ -1260,6 +1267,68 @@ static enum ice_status ice_chk_pkg_version(struct ice_pkg_ver *pkg_ver)\n \treturn 0;\n }\n \n+/**\n+ * ice_chk_pkg_compat\n+ * @hw: pointer to the hardware structure\n+ * @ospkg: pointer to the package hdr\n+ * @seg: pointer to the package segment hdr\n+ *\n+ * This function checks the package version compatibility with driver and NVM\n+ */\n+static enum ice_status\n+ice_chk_pkg_compat(struct ice_hw *hw, struct ice_pkg_hdr *ospkg,\n+\t\t   struct ice_seg **seg)\n+{\n+\tstruct ice_aqc_get_pkg_info_resp *pkg;\n+\tenum ice_status status;\n+\tu16 size;\n+\tu32 i;\n+\n+\t/* Check package version compatibility */\n+\tstatus = ice_chk_pkg_version(&hw->pkg_ver);\n+\tif (status) {\n+\t\tice_debug(hw, ICE_DBG_INIT, \"Package version check failed.\\n\");\n+\t\treturn status;\n+\t}\n+\n+\t/* find ICE segment in given package */\n+\t*seg = (struct ice_seg *)ice_find_seg_in_pkg(hw, SEGMENT_TYPE_ICE,\n+\t\t\t\t\t\t     ospkg);\n+\tif (!*seg) {\n+\t\tice_debug(hw, ICE_DBG_INIT, \"no ice segment in package.\\n\");\n+\t\treturn ICE_ERR_CFG;\n+\t}\n+\n+\t/* Check if FW is compatible with the OS package */\n+\tsize = struct_size(pkg, pkg_info, ICE_PKG_CNT - 1);\n+\tpkg = kzalloc(size, GFP_KERNEL);\n+\tif (!pkg)\n+\t\treturn ICE_ERR_NO_MEMORY;\n+\n+\tstatus = ice_aq_get_pkg_info_list(hw, pkg, size, NULL);\n+\tif (status)\n+\t\tgoto fw_ddp_compat_free_alloc;\n+\n+\tfor (i = 0; i < le32_to_cpu(pkg->count); i++) {\n+\t\t/* loop till we find the NVM package */\n+\t\tif (!pkg->pkg_info[i].is_in_nvm)\n+\t\t\tcontinue;\n+\t\tif ((*seg)->hdr.seg_format_ver.major !=\n+\t\t\tpkg->pkg_info[i].ver.major ||\n+\t\t    (*seg)->hdr.seg_format_ver.minor >\n+\t\t\tpkg->pkg_info[i].ver.minor) {\n+\t\t\tstatus = ICE_ERR_FW_DDP_MISMATCH;\n+\t\t\tice_debug(hw, ICE_DBG_INIT,\n+\t\t\t\t  \"OS package is not compatible with NVM.\\n\");\n+\t\t}\n+\t\t/* done processing NVM package so break */\n+\t\tbreak;\n+\t}\n+fw_ddp_compat_free_alloc:\n+\tkfree(pkg);\n+\treturn status;\n+}\n+\n /**\n  * ice_init_pkg - initialize/download package\n  * @hw: pointer to the hardware structure\n@@ -1310,17 +1379,10 @@ enum ice_status ice_init_pkg(struct ice_hw *hw, u8 *buf, u32 len)\n \t/* before downloading the package, check package version for\n \t * compatibility with driver\n \t */\n-\tstatus = ice_chk_pkg_version(&hw->pkg_ver);\n+\tstatus = ice_chk_pkg_compat(hw, pkg, &seg);\n \tif (status)\n \t\treturn status;\n \n-\t/* find segment in given package */\n-\tseg = (struct ice_seg *)ice_find_seg_in_pkg(hw, SEGMENT_TYPE_ICE, pkg);\n-\tif (!seg) {\n-\t\tice_debug(hw, ICE_DBG_INIT, \"no ice segment in package.\\n\");\n-\t\treturn ICE_ERR_CFG;\n-\t}\n-\n \t/* initialize package hints and then download package */\n \tice_init_pkg_hints(hw, seg);\n \tstatus = ice_download_pkg(hw, seg);\ndiff --git a/drivers/net/ethernet/intel/ice/ice_flex_type.h b/drivers/net/ethernet/intel/ice/ice_flex_type.h\nindex 249fb66fc230..a6f391eac8ff 100644\n--- a/drivers/net/ethernet/intel/ice/ice_flex_type.h\n+++ b/drivers/net/ethernet/intel/ice/ice_flex_type.h\n@@ -20,7 +20,7 @@ struct ice_fv {\n \n /* Package and segment headers and tables */\n struct ice_pkg_hdr {\n-\tstruct ice_pkg_ver format_ver;\n+\tstruct ice_pkg_ver pkg_format_ver;\n \t__le32 seg_count;\n \t__le32 seg_offset[1];\n };\n@@ -30,9 +30,9 @@ struct ice_generic_seg_hdr {\n #define SEGMENT_TYPE_METADATA\t0x00000001\n #define SEGMENT_TYPE_ICE\t0x00000010\n \t__le32 seg_type;\n-\tstruct ice_pkg_ver seg_ver;\n+\tstruct ice_pkg_ver seg_format_ver;\n \t__le32 seg_size;\n-\tchar seg_name[ICE_PKG_NAME_SIZE];\n+\tchar seg_id[ICE_PKG_NAME_SIZE];\n };\n \n /* ice specific segment */\n@@ -75,7 +75,7 @@ struct ice_buf_table {\n struct ice_global_metadata_seg {\n \tstruct ice_generic_seg_hdr hdr;\n \tstruct ice_pkg_ver pkg_ver;\n-\t__le32 track_id;\n+\t__le32 rsvd;\n \tchar pkg_name[ICE_PKG_NAME_SIZE];\n };\n \ndiff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c\nindex 9a05945c6419..5675804ba899 100644\n--- a/drivers/net/ethernet/intel/ice/ice_main.c\n+++ b/drivers/net/ethernet/intel/ice/ice_main.c\n@@ -3077,6 +3077,9 @@ ice_log_pkg_init(struct ice_hw *hw, enum ice_status *status)\n \t\t\t*status = ICE_ERR_NOT_SUPPORTED;\n \t\t}\n \t\tbreak;\n+\tcase ICE_ERR_FW_DDP_MISMATCH:\n+\t\tdev_err(dev, \"The firmware loaded on the device is not compatible with the DDP package.  Please update the device's NVM.  Entering safe mode.\\n\");\n+\t\tbreak;\n \tcase ICE_ERR_BUF_TOO_SHORT:\n \tcase ICE_ERR_CFG:\n \t\tdev_err(dev, \"The DDP package file is invalid. Entering Safe Mode.\\n\");\n@@ -5271,6 +5274,8 @@ const char *ice_stat_str(enum ice_status stat_err)\n \t\treturn \"ICE_ERR_HW_TABLE\";\n \tcase ICE_ERR_DOES_NOT_EXIST:\n \t\treturn \"ICE_ERR_DOES_NOT_EXIST\";\n+\tcase ICE_ERR_FW_DDP_MISMATCH:\n+\t\treturn \"ICE_ERR_FW_DDP_MISMATCH\";\n \tcase ICE_ERR_AQ_ERROR:\n \t\treturn \"ICE_ERR_AQ_ERROR\";\n \tcase ICE_ERR_AQ_TIMEOUT:\ndiff --git a/drivers/net/ethernet/intel/ice/ice_status.h b/drivers/net/ethernet/intel/ice/ice_status.h\nindex a9a8bc3aca42..546a02856d09 100644\n--- a/drivers/net/ethernet/intel/ice/ice_status.h\n+++ b/drivers/net/ethernet/intel/ice/ice_status.h\n@@ -27,6 +27,8 @@ enum ice_status {\n \tICE_ERR_MAX_LIMIT\t\t\t= -17,\n \tICE_ERR_RESET_ONGOING\t\t\t= -18,\n \tICE_ERR_HW_TABLE\t\t\t= -19,\n+\tICE_ERR_FW_DDP_MISMATCH\t\t\t= -20,\n+\n \tICE_ERR_NVM_CHECKSUM\t\t\t= -51,\n \tICE_ERR_BUF_TOO_SHORT\t\t\t= -52,\n \tICE_ERR_NVM_BLANK_MODE\t\t\t= -53,\ndiff --git a/drivers/net/ethernet/intel/ice/ice_type.h b/drivers/net/ethernet/intel/ice/ice_type.h\nindex 88a729e20fe4..06fce408acb0 100644\n--- a/drivers/net/ethernet/intel/ice/ice_type.h\n+++ b/drivers/net/ethernet/intel/ice/ice_type.h\n@@ -601,6 +601,7 @@ struct ice_hw {\n \n \t/* Active package version (currently active) */\n \tstruct ice_pkg_ver active_pkg_ver;\n+\tu32 active_track_id;\n \tu8 active_pkg_name[ICE_PKG_NAME_SIZE];\n \tu8 active_pkg_in_nvm;\n \n",
    "prefixes": [
        "S43",
        "05/15"
    ]
}