Some features were introduced in different FW API version on XL710 and X722
MACs. Others are available only on specific MAC type. Make sure that they
are properly assigned. Also fix the style issues reported by current
check-patch.

Signed-off-by: Galazka Krzysztof <krzysztof.gala...@intel.com>
Reviewed-by: Paul M Stillwell Jr <paul.m.stillwell...@intel.com>
Reviewed-by: Kirsher Jeffrey T <jeffrey.t.kirs...@intel.com>
Signed-off-by: Xiaolong Ye <xiaolong...@intel.com>
---
 drivers/net/i40e/base/i40e_adminq.c | 84 +++++++++++++++--------------
 1 file changed, 45 insertions(+), 39 deletions(-)

diff --git a/drivers/net/i40e/base/i40e_adminq.c 
b/drivers/net/i40e/base/i40e_adminq.c
index 6bd4595d0..b5d789ede 100644
--- a/drivers/net/i40e/base/i40e_adminq.c
+++ b/drivers/net/i40e/base/i40e_adminq.c
@@ -582,25 +582,24 @@ STATIC void i40e_resume_aq(struct i40e_hw *hw)
  **/
 enum i40e_status_code i40e_init_adminq(struct i40e_hw *hw)
 {
+       struct i40e_adminq_info *aq = &hw->aq;
+       enum i40e_status_code ret_code;
 #ifdef PF_DRIVER
        u16 cfg_ptr, oem_hi, oem_lo;
        u16 eetrack_lo, eetrack_hi;
-#endif
-       enum i40e_status_code ret_code;
-#ifdef PF_DRIVER
        int retry = 0;
 #endif
 
        /* verify input for valid configuration */
-       if ((hw->aq.num_arq_entries == 0) ||
-           (hw->aq.num_asq_entries == 0) ||
-           (hw->aq.arq_buf_size == 0) ||
-           (hw->aq.asq_buf_size == 0)) {
+       if (aq->num_arq_entries == 0 ||
+           aq->num_asq_entries == 0 ||
+           aq->arq_buf_size == 0 ||
+           aq->asq_buf_size == 0) {
                ret_code = I40E_ERR_CONFIG;
                goto init_adminq_exit;
        }
-       i40e_init_spinlock(&hw->aq.asq_spinlock);
-       i40e_init_spinlock(&hw->aq.arq_spinlock);
+       i40e_init_spinlock(&aq->asq_spinlock);
+       i40e_init_spinlock(&aq->arq_spinlock);
 
        /* Set up register offsets */
        i40e_adminq_init_regs(hw);
@@ -630,11 +629,11 @@ enum i40e_status_code i40e_init_adminq(struct i40e_hw *hw)
         */
        do {
                ret_code = i40e_aq_get_firmware_version(hw,
-                                                       &hw->aq.fw_maj_ver,
-                                                       &hw->aq.fw_min_ver,
-                                                       &hw->aq.fw_build,
-                                                       &hw->aq.api_maj_ver,
-                                                       &hw->aq.api_min_ver,
+                                                       &aq->fw_maj_ver,
+                                                       &aq->fw_min_ver,
+                                                       &aq->fw_build,
+                                                       &aq->api_maj_ver,
+                                                       &aq->api_min_ver,
                                                        NULL);
                if (ret_code != I40E_ERR_ADMIN_QUEUE_TIMEOUT)
                        break;
@@ -658,36 +657,43 @@ enum i40e_status_code i40e_init_adminq(struct i40e_hw *hw)
                           &oem_lo);
        hw->nvm.oem_ver = ((u32)oem_hi << 16) | oem_lo;
 
-       /* The ability to RX (not drop) 802.1ad frames was added in API 1.7 */
-       if ((hw->aq.api_maj_ver > 1) ||
-           ((hw->aq.api_maj_ver == 1) &&
-            (hw->aq.api_min_ver >= 7)))
-               hw->flags |= I40E_HW_FLAG_802_1AD_CAPABLE;
-
-       if (hw->mac.type == I40E_MAC_XL710 &&
-           hw->aq.api_maj_ver == I40E_FW_API_VERSION_MAJOR &&
-           hw->aq.api_min_ver >= I40E_MINOR_VER_GET_LINK_INFO_XL710) {
-               hw->flags |= I40E_HW_FLAG_AQ_PHY_ACCESS_CAPABLE;
-               hw->flags |= I40E_HW_FLAG_FW_LLDP_STOPPABLE;
-       }
-       if (hw->mac.type == I40E_MAC_X722 &&
-           hw->aq.api_maj_ver == I40E_FW_API_VERSION_MAJOR &&
-           hw->aq.api_min_ver >= I40E_MINOR_VER_FW_LLDP_STOPPABLE_X722) {
-               hw->flags |= I40E_HW_FLAG_FW_LLDP_STOPPABLE;
+       /*
+        * Some features were introduced in different FW API version
+        * for different MAC type.
+        */
+       switch (hw->mac.type) {
+       case I40E_MAC_XL710:
+               if (aq->api_maj_ver > 1 ||
+                   (aq->api_maj_ver == 1 &&
+                    aq->api_min_ver >= I40E_MINOR_VER_GET_LINK_INFO_XL710)) {
+                       hw->flags |= I40E_HW_FLAG_AQ_PHY_ACCESS_CAPABLE;
+                       hw->flags |= I40E_HW_FLAG_FW_LLDP_STOPPABLE;
+                       /* The ability to RX (not drop) 802.1ad frames */
+                       hw->flags |= I40E_HW_FLAG_802_1AD_CAPABLE;
+               }
+               break;
+       case I40E_MAC_X722:
+               if (aq->api_maj_ver > 1 ||
+                   (aq->api_maj_ver == 1 &&
+                    aq->api_min_ver >= I40E_MINOR_VER_FW_LLDP_STOPPABLE_X722))
+                       hw->flags |= I40E_HW_FLAG_FW_LLDP_STOPPABLE;
+               /* fall through */
+       default:
+               break;
        }
 
        /* Newer versions of firmware require lock when reading the NVM */
-       if ((hw->aq.api_maj_ver > 1) ||
-           ((hw->aq.api_maj_ver == 1) &&
-            (hw->aq.api_min_ver >= 5)))
+       if (aq->api_maj_ver > 1 ||
+           (aq->api_maj_ver == 1 &&
+            aq->api_min_ver >= 5))
                hw->flags |= I40E_HW_FLAG_NVM_READ_REQUIRES_LOCK;
 
-       if (hw->aq.api_maj_ver > 1 ||
-           (hw->aq.api_maj_ver == 1 &&
-            hw->aq.api_min_ver >= 8))
+       if (aq->api_maj_ver > 1 ||
+           (aq->api_maj_ver == 1 &&
+            aq->api_min_ver >= 8))
                hw->flags |= I40E_HW_FLAG_FW_LLDP_PERSISTENT;
 
-       if (hw->aq.api_maj_ver > I40E_FW_API_VERSION_MAJOR) {
+       if (aq->api_maj_ver > I40E_FW_API_VERSION_MAJOR) {
                ret_code = I40E_ERR_FIRMWARE_API_VERSION;
                goto init_adminq_free_arq;
        }
@@ -710,8 +716,8 @@ enum i40e_status_code i40e_init_adminq(struct i40e_hw *hw)
 init_adminq_free_asq:
        i40e_shutdown_asq(hw);
 init_adminq_destroy_spinlocks:
-       i40e_destroy_spinlock(&hw->aq.asq_spinlock);
-       i40e_destroy_spinlock(&hw->aq.arq_spinlock);
+       i40e_destroy_spinlock(&aq->asq_spinlock);
+       i40e_destroy_spinlock(&aq->arq_spinlock);
 
 init_adminq_exit:
        return ret_code;
-- 
2.17.1

Reply via email to