]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
iwlwifi: move iwl_nvm_check_version() into dvm
authorLuca Coelho <luciano.coelho@intel.com>
Thu, 16 Aug 2018 06:23:08 +0000 (09:23 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 5 Dec 2019 08:20:14 +0000 (09:20 +0100)
[ Upstream commit 64866e5da1eabd0c52ff45029b245f5465920031 ]

This function is only half-used by mvm (i.e. only the nvm_version part
matters, since the calibration version is irrelevant), so it's
pointless to export it from iwlwifi.  If mvm uses this function, it
has the additional complexity of setting the calib version to a bogus
value on all cfg structs.

To avoid this, move the function to dvm and make a simple comparison
of the nvm_version in mvm instead.

Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/wireless/intel/iwlwifi/dvm/main.c
drivers/net/wireless/intel/iwlwifi/iwl-eeprom-parse.c
drivers/net/wireless/intel/iwlwifi/iwl-eeprom-parse.h
drivers/net/wireless/intel/iwlwifi/mvm/fw.c

index 030482b357a3c3038bcf456f2c782b04747fa70f..06dd4e81b73745c3bfb6eebff4f0178658d7f61c 100644 (file)
@@ -1227,6 +1227,23 @@ static int iwl_eeprom_init_hw_params(struct iwl_priv *priv)
        return 0;
 }
 
+static int iwl_nvm_check_version(struct iwl_nvm_data *data,
+                                struct iwl_trans *trans)
+{
+       if (data->nvm_version >= trans->cfg->nvm_ver ||
+           data->calib_version >= trans->cfg->nvm_calib_ver) {
+               IWL_DEBUG_INFO(trans, "device EEPROM VER=0x%x, CALIB=0x%x\n",
+                              data->nvm_version, data->calib_version);
+               return 0;
+       }
+
+       IWL_ERR(trans,
+               "Unsupported (too old) EEPROM VER=0x%x < 0x%x CALIB=0x%x < 0x%x\n",
+               data->nvm_version, trans->cfg->nvm_ver,
+               data->calib_version,  trans->cfg->nvm_calib_ver);
+       return -EINVAL;
+}
+
 static struct iwl_op_mode *iwl_op_mode_dvm_start(struct iwl_trans *trans,
                                                 const struct iwl_cfg *cfg,
                                                 const struct iwl_fw *fw,
index a4c96215933ba589d2bbbc272728c901c80a4214..a59bab8345f4ea83f4eb659299c1f2706921548f 100644 (file)
@@ -928,22 +928,3 @@ iwl_parse_eeprom_data(struct device *dev, const struct iwl_cfg *cfg,
        return NULL;
 }
 IWL_EXPORT_SYMBOL(iwl_parse_eeprom_data);
-
-/* helper functions */
-int iwl_nvm_check_version(struct iwl_nvm_data *data,
-                            struct iwl_trans *trans)
-{
-       if (data->nvm_version >= trans->cfg->nvm_ver ||
-           data->calib_version >= trans->cfg->nvm_calib_ver) {
-               IWL_DEBUG_INFO(trans, "device EEPROM VER=0x%x, CALIB=0x%x\n",
-                              data->nvm_version, data->calib_version);
-               return 0;
-       }
-
-       IWL_ERR(trans,
-               "Unsupported (too old) EEPROM VER=0x%x < 0x%x CALIB=0x%x < 0x%x\n",
-               data->nvm_version, trans->cfg->nvm_ver,
-               data->calib_version,  trans->cfg->nvm_calib_ver);
-       return -EINVAL;
-}
-IWL_EXPORT_SYMBOL(iwl_nvm_check_version);
index 8be50ed12300f5b16df34be38c9ad7d7ca5b41eb..c59dd47cf15d332ce7b39ac15f04d91df03322c6 100644 (file)
@@ -7,6 +7,7 @@
  *
  * Copyright(c) 2008 - 2014 Intel Corporation. All rights reserved.
  * Copyright(c) 2015 Intel Mobile Communications GmbH
+ * Copyright (C) 2018 Intel Corporation
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of version 2 of the GNU General Public License as
@@ -33,6 +34,7 @@
  *
  * Copyright(c) 2005 - 2014 Intel Corporation. All rights reserved.
  * Copyright(c) 2015 Intel Mobile Communications GmbH
+ * Copyright (C) 2018 Intel Corporation
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -122,9 +124,6 @@ struct iwl_nvm_data *
 iwl_parse_eeprom_data(struct device *dev, const struct iwl_cfg *cfg,
                      const u8 *eeprom, size_t eeprom_size);
 
-int iwl_nvm_check_version(struct iwl_nvm_data *data,
-                         struct iwl_trans *trans);
-
 int iwl_init_sband_channels(struct iwl_nvm_data *data,
                            struct ieee80211_supported_band *sband,
                            int n_channels, enum nl80211_band band);
index 2eba6d6f367f85a5b688385c9e5d62fe4711f3d4..9808d954dca2942d566ecde8a292cf4b6432ab3a 100644 (file)
@@ -547,7 +547,9 @@ int iwl_run_init_mvm_ucode(struct iwl_mvm *mvm, bool read_nvm)
        if (mvm->nvm_file_name)
                iwl_mvm_load_nvm_to_nic(mvm);
 
-       WARN_ON(iwl_nvm_check_version(mvm->nvm_data, mvm->trans));
+       WARN_ONCE(mvm->nvm_data->nvm_version < mvm->trans->cfg->nvm_ver,
+                 "Too old NVM version (0x%0x, required = 0x%0x)",
+                 mvm->nvm_data->nvm_version, mvm->trans->cfg->nvm_ver);
 
        /*
         * abort after reading the nvm in case RF Kill is on, we will complete