ice: add flags indicating pending update of firmware module
authorJacob Keller <jacob.e.keller@intel.com>
Fri, 24 Jul 2020 00:22:02 +0000 (17:22 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 29 Jul 2020 00:07:06 +0000 (17:07 -0700)
After a flash update, the pending status of the update can be determined
from the device capabilities.

Read the appropriate device capability and store whether there is
a pending update awaiting a reboot.

Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/intel/ice/ice_adminq_cmd.h
drivers/net/ethernet/intel/ice/ice_common.c
drivers/net/ethernet/intel/ice/ice_type.h

index b2ec792..7fec930 100644 (file)
@@ -109,6 +109,12 @@ struct ice_aqc_list_caps_elem {
 #define ICE_AQC_CAPS_MSIX                              0x0043
 #define ICE_AQC_CAPS_FD                                        0x0045
 #define ICE_AQC_CAPS_MAX_MTU                           0x0047
+#define ICE_AQC_CAPS_NVM_VER                           0x0048
+#define ICE_AQC_CAPS_PENDING_NVM_VER                   0x0049
+#define ICE_AQC_CAPS_OROM_VER                          0x004A
+#define ICE_AQC_CAPS_PENDING_OROM_VER                  0x004B
+#define ICE_AQC_CAPS_NET_VER                           0x004C
+#define ICE_AQC_CAPS_PENDING_NET_VER                   0x004D
 #define ICE_AQC_CAPS_NVM_MGMT                          0x0080
 
        u8 major_ver;
index 249526f..e5d7f3c 100644 (file)
@@ -1857,6 +1857,18 @@ ice_parse_common_caps(struct ice_hw *hw, struct ice_hw_common_caps *caps,
                          "%s: msix_vector_first_id = %d\n", prefix,
                          caps->msix_vector_first_id);
                break;
+       case ICE_AQC_CAPS_PENDING_NVM_VER:
+               caps->nvm_update_pending_nvm = true;
+               ice_debug(hw, ICE_DBG_INIT, "%s: update_pending_nvm\n", prefix);
+               break;
+       case ICE_AQC_CAPS_PENDING_OROM_VER:
+               caps->nvm_update_pending_orom = true;
+               ice_debug(hw, ICE_DBG_INIT, "%s: update_pending_orom\n", prefix);
+               break;
+       case ICE_AQC_CAPS_PENDING_NET_VER:
+               caps->nvm_update_pending_netlist = true;
+               ice_debug(hw, ICE_DBG_INIT, "%s: update_pending_netlist\n", prefix);
+               break;
        case ICE_AQC_CAPS_NVM_MGMT:
                caps->nvm_unified_update =
                        (number & ICE_NVM_MGMT_UNIFIED_UPD_SUPPORT) ?
index 1022086..e434947 100644 (file)
@@ -245,6 +245,12 @@ struct ice_hw_common_caps {
 
        u8 dcb;
 
+       bool nvm_update_pending_nvm;
+       bool nvm_update_pending_orom;
+       bool nvm_update_pending_netlist;
+#define ICE_NVM_PENDING_NVM_IMAGE              BIT(0)
+#define ICE_NVM_PENDING_OROM                   BIT(1)
+#define ICE_NVM_PENDING_NETLIST                        BIT(2)
        bool nvm_unified_update;
 #define ICE_NVM_MGMT_UNIFIED_UPD_SUPPORT       BIT(3)
 };