iwlwifi: always access the trans configuration via trans
authorLuca Coelho <luciano.coelho@intel.com>
Fri, 12 Jul 2019 12:52:39 +0000 (15:52 +0300)
committerLuca Coelho <luciano.coelho@intel.com>
Fri, 6 Sep 2019 12:52:04 +0000 (15:52 +0300)
Stop accessing the trans configuration via the iwl_cfg structure and
always access it via the iwl_trans structure.  This completes the
requirements to disassociate the trans-specific configuration from the
rest of the configuration.

Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
21 files changed:
drivers/net/wireless/intel/iwlwifi/dvm/devices.c
drivers/net/wireless/intel/iwlwifi/dvm/led.c
drivers/net/wireless/intel/iwlwifi/dvm/mac80211.c
drivers/net/wireless/intel/iwlwifi/dvm/main.c
drivers/net/wireless/intel/iwlwifi/dvm/power.c
drivers/net/wireless/intel/iwlwifi/dvm/tx.c
drivers/net/wireless/intel/iwlwifi/iwl-eeprom-parse.c
drivers/net/wireless/intel/iwlwifi/iwl-eeprom-parse.h
drivers/net/wireless/intel/iwlwifi/iwl-eeprom-read.c
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
drivers/net/wireless/intel/iwlwifi/mvm/fw.c
drivers/net/wireless/intel/iwlwifi/mvm/led.c
drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
drivers/net/wireless/intel/iwlwifi/mvm/mvm.h
drivers/net/wireless/intel/iwlwifi/mvm/nvm.c
drivers/net/wireless/intel/iwlwifi/mvm/sta.c
drivers/net/wireless/intel/iwlwifi/mvm/utils.c
drivers/net/wireless/intel/iwlwifi/pcie/drv.c
drivers/net/wireless/intel/iwlwifi/pcie/trans-gen2.c
drivers/net/wireless/intel/iwlwifi/pcie/trans.c
drivers/net/wireless/intel/iwlwifi/pcie/tx.c

index 73b3a947ab7a347ee8bb233f69b9d473a027d8fb..dc3f197f94d95cb1c8b03b8a6a70de0cad3d4169 100644 (file)
@@ -484,7 +484,7 @@ static void iwl6000_set_ct_threshold(struct iwl_priv *priv)
 /* NIC configuration for 6000 series */
 static void iwl6000_nic_config(struct iwl_priv *priv)
 {
-       switch (priv->cfg->trans.device_family) {
+       switch (priv->trans->trans_cfg->device_family) {
        case IWL_DEVICE_FAMILY_6005:
        case IWL_DEVICE_FAMILY_6030:
        case IWL_DEVICE_FAMILY_6000:
index 1e1664ecf30b330a004e7fe6e6cece077c87d833..dd387aba33179486efe0d633472280937bcd4652 100644 (file)
@@ -121,9 +121,9 @@ static int iwl_led_cmd(struct iwl_priv *priv,
        }
 
        led_cmd.on = iwl_blink_compensation(priv, on,
-                               priv->cfg->trans.base_params->led_compensation);
+                               priv->trans->trans_cfg->base_params->led_compensation);
        led_cmd.off = iwl_blink_compensation(priv, off,
-                               priv->cfg->trans.base_params->led_compensation);
+                               priv->trans->trans_cfg->base_params->led_compensation);
 
        ret = iwl_send_led_cmd(priv, &led_cmd);
        if (!ret) {
index c223f26f046e1480a6fb7b0e4b7d27f6122c6d09..6512d25e35630387aa8c2f536c6afe4c39ecf244 100644 (file)
@@ -1099,7 +1099,7 @@ static void iwlagn_mac_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
                goto done;
        }
 
-       scd_queues = BIT(priv->cfg->trans.base_params->num_of_queues) - 1;
+       scd_queues = BIT(priv->trans->trans_cfg->base_params->num_of_queues) - 1;
        scd_queues &= ~(BIT(IWL_IPAN_CMD_QUEUE_NUM) |
                        BIT(IWL_DEFAULT_CMD_QUEUE_NUM));
 
index 8e47a075089fb74ac5f8755f74d3351b79f1bebe..4f2789bb3b5bf624d6d1972436ce165a564f6486 100644 (file)
@@ -1267,7 +1267,7 @@ static struct iwl_op_mode *iwl_op_mode_dvm_start(struct iwl_trans *trans,
        priv->cfg = cfg;
        priv->fw = fw;
 
-       switch (priv->cfg->trans.device_family) {
+       switch (priv->trans->trans_cfg->device_family) {
        case IWL_DEVICE_FAMILY_1000:
        case IWL_DEVICE_FAMILY_100:
                priv->lib = &iwl_dvm_1000_cfg;
@@ -1342,7 +1342,7 @@ static struct iwl_op_mode *iwl_op_mode_dvm_start(struct iwl_trans *trans,
                                          driver_data[2]);
 
        WARN_ON(sizeof(priv->transport_queue_stop) * BITS_PER_BYTE <
-               priv->cfg->trans.base_params->num_of_queues);
+               priv->trans->trans_cfg->base_params->num_of_queues);
 
        ucode_flags = fw->ucode_capa.flags;
 
@@ -1405,9 +1405,9 @@ static struct iwl_op_mode *iwl_op_mode_dvm_start(struct iwl_trans *trans,
        /* Reset chip to save power until we load uCode during "up". */
        iwl_trans_stop_device(priv->trans);
 
-       priv->nvm_data = iwl_parse_eeprom_data(priv->trans->dev, priv->cfg,
-                                                 priv->eeprom_blob,
-                                                 priv->eeprom_blob_size);
+       priv->nvm_data = iwl_parse_eeprom_data(priv->trans, priv->cfg,
+                                              priv->eeprom_blob,
+                                              priv->eeprom_blob_size);
        if (!priv->nvm_data)
                goto out_free_eeprom_blob;
 
index e4e02fcbcd9f0624f74cf4c05f2650c5783d3003..93ef023905c96173656dc86f83003dbbd9418942 100644 (file)
@@ -200,7 +200,7 @@ static void iwl_static_sleep_cmd(struct iwl_priv *priv,
        else
                cmd->flags &= ~IWL_POWER_SLEEP_OVER_DTIM_MSK;
 
-       if (priv->cfg->trans.base_params->shadow_reg_enable)
+       if (priv->trans->trans_cfg->base_params->shadow_reg_enable)
                cmd->flags |= IWL_POWER_SHADOW_REG_ENA;
        else
                cmd->flags &= ~IWL_POWER_SHADOW_REG_ENA;
index 75dc911b8f004c15ba5191020e85990de118e9f9..3029e3f6de63b5e8feeab7ef0505c18c2ffd17e8 100644 (file)
@@ -468,7 +468,7 @@ static int iwlagn_alloc_agg_txq(struct iwl_priv *priv, int mq)
        int q;
 
        for (q = IWLAGN_FIRST_AMPDU_QUEUE;
-            q < priv->cfg->trans.base_params->num_of_queues; q++) {
+            q < priv->trans->trans_cfg->base_params->num_of_queues; q++) {
                if (!test_and_set_bit(q, priv->agg_q_alloc)) {
                        priv->queue_to_mac80211[q] = mq;
                        return q;
@@ -1282,7 +1282,7 @@ void iwlagn_rx_reply_compressed_ba(struct iwl_priv *priv,
         * (in Tx queue's circular buffer) of first TFD/frame in window */
        u16 ba_resp_scd_ssn = le16_to_cpu(ba_resp->scd_ssn);
 
-       if (scd_flow >= priv->cfg->trans.base_params->num_of_queues) {
+       if (scd_flow >= priv->trans->trans_cfg->base_params->num_of_queues) {
                IWL_ERR(priv,
                        "BUG_ON scd_flow is bigger than number of queues\n");
                return;
index 75e7053f68070eed77cedb0172241662fa98591d..cf7e2a9232e525bed83d8d979ef1513c7154e3a9 100644 (file)
@@ -728,12 +728,13 @@ int iwl_init_sband_channels(struct iwl_nvm_data *data,
 #define MAX_BIT_RATE_40_MHZ    150 /* Mbps */
 #define MAX_BIT_RATE_20_MHZ    72 /* Mbps */
 
-void iwl_init_ht_hw_capab(const struct iwl_cfg *cfg,
+void iwl_init_ht_hw_capab(struct iwl_trans *trans,
                          struct iwl_nvm_data *data,
                          struct ieee80211_sta_ht_cap *ht_info,
                          enum nl80211_band band,
                          u8 tx_chains, u8 rx_chains)
 {
+       const struct iwl_cfg *cfg = trans->cfg;
        int max_bit_rate = 0;
 
        tx_chains = hweight8(tx_chains);
@@ -765,7 +766,7 @@ void iwl_init_ht_hw_capab(const struct iwl_cfg *cfg,
        if (cfg->ht_params->ldpc)
                ht_info->cap |= IEEE80211_HT_CAP_LDPC_CODING;
 
-       if ((cfg->trans.mq_rx_supported &&
+       if ((trans->trans_cfg->mq_rx_supported &&
             iwlwifi_mod_params.amsdu_size == IWL_AMSDU_DEF) ||
             iwlwifi_mod_params.amsdu_size >= IWL_AMSDU_8K)
                ht_info->cap |= IEEE80211_HT_CAP_MAX_AMSDU;
@@ -805,10 +806,11 @@ void iwl_init_ht_hw_capab(const struct iwl_cfg *cfg,
        }
 }
 
-static void iwl_init_sbands(struct device *dev, const struct iwl_cfg *cfg,
+static void iwl_init_sbands(struct iwl_trans *trans, const struct iwl_cfg *cfg,
                            struct iwl_nvm_data *data,
                            const u8 *eeprom, size_t eeprom_size)
 {
+       struct device *dev = trans->dev;
        int n_channels = iwl_init_channel_map(dev, cfg, data,
                                              eeprom, eeprom_size);
        int n_used = 0;
@@ -820,7 +822,7 @@ static void iwl_init_sbands(struct device *dev, const struct iwl_cfg *cfg,
        sband->n_bitrates = N_RATES_24;
        n_used += iwl_init_sband_channels(data, sband, n_channels,
                                          NL80211_BAND_2GHZ);
-       iwl_init_ht_hw_capab(cfg, data, &sband->ht_cap, NL80211_BAND_2GHZ,
+       iwl_init_ht_hw_capab(trans, data, &sband->ht_cap, NL80211_BAND_2GHZ,
                             data->valid_tx_ant, data->valid_rx_ant);
 
        sband = &data->bands[NL80211_BAND_5GHZ];
@@ -829,7 +831,7 @@ static void iwl_init_sbands(struct device *dev, const struct iwl_cfg *cfg,
        sband->n_bitrates = N_RATES_52;
        n_used += iwl_init_sband_channels(data, sband, n_channels,
                                          NL80211_BAND_5GHZ);
-       iwl_init_ht_hw_capab(cfg, data, &sband->ht_cap, NL80211_BAND_5GHZ,
+       iwl_init_ht_hw_capab(trans, data, &sband->ht_cap, NL80211_BAND_5GHZ,
                             data->valid_tx_ant, data->valid_rx_ant);
 
        if (n_channels != n_used)
@@ -840,10 +842,11 @@ static void iwl_init_sbands(struct device *dev, const struct iwl_cfg *cfg,
 /* EEPROM data functions */
 
 struct iwl_nvm_data *
-iwl_parse_eeprom_data(struct device *dev, const struct iwl_cfg *cfg,
+iwl_parse_eeprom_data(struct iwl_trans *trans, const struct iwl_cfg *cfg,
                      const u8 *eeprom, size_t eeprom_size)
 {
        struct iwl_nvm_data *data;
+       struct device *dev = trans->dev;
        const void *tmp;
        u16 radio_cfg, sku;
 
@@ -918,7 +921,7 @@ iwl_parse_eeprom_data(struct device *dev, const struct iwl_cfg *cfg,
                goto err_free;
        }
 
-       iwl_init_sbands(dev, cfg, data, eeprom, eeprom_size);
+       iwl_init_sbands(trans, cfg, data, eeprom, eeprom_size);
 
        return data;
  err_free:
index 2375d300a7cd8732711072bc5609b93217264814..03a748cc98fa3a52a085196c22e98d9a804884af 100644 (file)
@@ -116,14 +116,14 @@ struct iwl_nvm_data {
  * later with iwl_free_nvm_data().
  */
 struct iwl_nvm_data *
-iwl_parse_eeprom_data(struct device *dev, const struct iwl_cfg *cfg,
+iwl_parse_eeprom_data(struct iwl_trans *trans, const struct iwl_cfg *cfg,
                      const u8 *eeprom, size_t eeprom_size);
 
 int iwl_init_sband_channels(struct iwl_nvm_data *data,
                            struct ieee80211_supported_band *sband,
                            int n_channels, enum nl80211_band band);
 
-void iwl_init_ht_hw_capab(const struct iwl_cfg *cfg,
+void iwl_init_ht_hw_capab(struct iwl_trans *trans,
                          struct iwl_nvm_data *data,
                          struct ieee80211_sta_ht_cap *ht_info,
                          enum nl80211_band band,
index 80bc2e44c7b1d2d1419a0197023ff02c0a42750b..ad6dc4497437e2e02c869b339583de3839771198 100644 (file)
@@ -193,7 +193,7 @@ static int iwl_init_otp_access(struct iwl_trans *trans)
 {
        int ret;
 
-       ret = iwl_finish_nic_init(trans, &trans->cfg->trans);
+       ret = iwl_finish_nic_init(trans, trans->trans_cfg);
        if (ret)
                return ret;
 
index 83d4311e83d76672b31ebc28d0b9a0fa0e1f5e40..c8972f6e38bac88aa2451e04a6830013beaeb9e8 100644 (file)
@@ -435,14 +435,14 @@ static void iwl_init_vht_hw_capab(struct iwl_trans *trans,
 
        switch (iwlwifi_mod_params.amsdu_size) {
        case IWL_AMSDU_DEF:
-               if (cfg->trans.mq_rx_supported)
+               if (trans->trans_cfg->mq_rx_supported)
                        vht_cap->cap |=
                                IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_11454;
                else
                        vht_cap->cap |= IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_3895;
                break;
        case IWL_AMSDU_2K:
-               if (cfg->trans.mq_rx_supported)
+               if (trans->trans_cfg->mq_rx_supported)
                        vht_cap->cap |=
                                IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_11454;
                else
@@ -689,7 +689,7 @@ static void iwl_init_sbands(struct iwl_trans *trans,
        sband->n_bitrates = N_RATES_24;
        n_used += iwl_init_sband_channels(data, sband, n_channels,
                                          NL80211_BAND_2GHZ);
-       iwl_init_ht_hw_capab(cfg, data, &sband->ht_cap, NL80211_BAND_2GHZ,
+       iwl_init_ht_hw_capab(trans, data, &sband->ht_cap, NL80211_BAND_2GHZ,
                             tx_chains, rx_chains);
 
        if (data->sku_cap_11ax_enable && !iwlwifi_mod_params.disable_11ax)
@@ -701,7 +701,7 @@ static void iwl_init_sbands(struct iwl_trans *trans,
        sband->n_bitrates = N_RATES_52;
        n_used += iwl_init_sband_channels(data, sband, n_channels,
                                          NL80211_BAND_5GHZ);
-       iwl_init_ht_hw_capab(cfg, data, &sband->ht_cap, NL80211_BAND_5GHZ,
+       iwl_init_ht_hw_capab(trans, data, &sband->ht_cap, NL80211_BAND_5GHZ,
                             tx_chains, rx_chains);
        if (data->sku_cap_11ac_enable && !iwlwifi_mod_params.disable_11ac)
                iwl_init_vht_hw_capab(trans, data, &sband->vht_cap,
@@ -899,7 +899,7 @@ static int iwl_set_hw_address(struct iwl_trans *trans,
 }
 
 static bool
-iwl_nvm_no_wide_in_5ghz(struct device *dev, const struct iwl_cfg *cfg,
+iwl_nvm_no_wide_in_5ghz(struct iwl_trans *trans, const struct iwl_cfg *cfg,
                        const __be16 *nvm_hw)
 {
        /*
@@ -911,7 +911,7 @@ iwl_nvm_no_wide_in_5ghz(struct device *dev, const struct iwl_cfg *cfg,
         * in 5GHz otherwise the FW will throw a sysassert when we try
         * to use them.
         */
-       if (cfg->trans.device_family == IWL_DEVICE_FAMILY_7000) {
+       if (trans->trans_cfg->device_family == IWL_DEVICE_FAMILY_7000) {
                /*
                 * Unlike the other sections in the NVM, the hw
                 * section uses big-endian.
@@ -920,7 +920,7 @@ iwl_nvm_no_wide_in_5ghz(struct device *dev, const struct iwl_cfg *cfg,
                u8 sku = (subsystem_id & 0x1e) >> 1;
 
                if (sku == 5 || sku == 9) {
-                       IWL_DEBUG_EEPROM(dev,
+                       IWL_DEBUG_EEPROM(trans->dev,
                                         "disabling wide channels in 5GHz (0x%0x %d)\n",
                                         subsystem_id, sku);
                        return true;
@@ -937,7 +937,6 @@ iwl_parse_nvm_data(struct iwl_trans *trans, const struct iwl_cfg *cfg,
                   const __le16 *mac_override, const __le16 *phy_sku,
                   u8 tx_chains, u8 rx_chains, bool lar_fw_supported)
 {
-       struct device *dev = trans->dev;
        struct iwl_nvm_data *data;
        bool lar_enabled;
        u32 sku, radio_cfg;
@@ -1019,7 +1018,7 @@ iwl_parse_nvm_data(struct iwl_trans *trans, const struct iwl_cfg *cfg,
        if (lar_fw_supported && lar_enabled)
                sbands_flags |= IWL_NVM_SBANDS_FLAGS_LAR;
 
-       if (iwl_nvm_no_wide_in_5ghz(dev, cfg, nvm_hw))
+       if (iwl_nvm_no_wide_in_5ghz(trans, cfg, nvm_hw))
                sbands_flags |= IWL_NVM_SBANDS_FLAGS_NO_WIDE_IN_5GHZ;
 
        iwl_init_sbands(trans, data, ch_section, tx_chains, rx_chains,
index fcb51cb3010e32d95d97794f8fc80363a2daa195..f93d50ceca680d8824878d842f9e9ab630830f5c 100644 (file)
@@ -558,7 +558,7 @@ int iwl_run_init_mvm_ucode(struct iwl_mvm *mvm, bool read_nvm)
                goto remove_notif;
        }
 
-       if (mvm->cfg->trans.device_family < IWL_DEVICE_FAMILY_8000) {
+       if (mvm->trans->trans_cfg->device_family < IWL_DEVICE_FAMILY_8000) {
                ret = iwl_mvm_send_bt_init_conf(mvm);
                if (ret)
                        goto remove_notif;
index 64298aec893a0982fd074e637319b78cb9a9b5e2..d104da9170ca99f4adcbc63ead44f062e5accae0 100644 (file)
@@ -156,7 +156,7 @@ void iwl_mvm_leds_sync(struct iwl_mvm *mvm)
         * if we control through the register, we're doing it
         * even when the firmware isn't up, so no need to sync
         */
-       if (mvm->cfg->trans.device_family < IWL_DEVICE_FAMILY_8000)
+       if (mvm->trans->trans_cfg->device_family < IWL_DEVICE_FAMILY_8000)
                return;
 
        iwl_mvm_led_set(mvm, mvm->led.brightness > 0);
index 98c9562647c3c7542262caf53370cde589bfcd7f..bec48a55f890dbb9fadcc6bc054083b6234046c6 100644 (file)
@@ -400,7 +400,7 @@ int iwl_mvm_mac_setup_register(struct iwl_mvm *mvm)
         * for older devices. We also don't see this issue on any newer
         * devices.
         */
-       if (mvm->cfg->trans.device_family >= IWL_DEVICE_FAMILY_9000)
+       if (mvm->trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_9000)
                ieee80211_hw_set(hw, TX_AMSDU);
        ieee80211_hw_set(hw, TX_FRAG_LIST);
 
index 9e76d494c45c6eb560d559377a552c8d9bc30474..2540d7ffbbc101d5636af1da7cd9131441eb9216 100644 (file)
@@ -1922,7 +1922,7 @@ void iwl_mvm_vif_set_low_latency(struct iwl_mvm_vif *mvmvif, bool set,
  */
 static inline u32 iwl_mvm_flushable_queues(struct iwl_mvm *mvm)
 {
-       return ((BIT(mvm->cfg->trans.base_params->num_of_queues) - 1) &
+       return ((BIT(mvm->trans->trans_cfg->base_params->num_of_queues) - 1) &
                ~BIT(IWL_MVM_DQA_CMD_QUEUE));
 }
 
index e2855efc2afd6d09f029007a55c52c01bdff2464..945c1ea5cda8642285fec3b95349d0c8cbefc4b2 100644 (file)
@@ -249,7 +249,7 @@ static int iwl_nvm_read_section(struct iwl_mvm *mvm, u16 section,
        while (ret == length) {
                /* Check no memory assumptions fail and cause an overflow */
                if ((size_read + offset + length) >
-                   mvm->cfg->trans.base_params->eeprom_size) {
+                   mvm->trans->trans_cfg->base_params->eeprom_size) {
                        IWL_ERR(mvm, "EEPROM size is too small for NVM\n");
                        return -ENOBUFS;
                }
@@ -372,7 +372,7 @@ int iwl_nvm_init(struct iwl_mvm *mvm)
        /* Read From FW NVM */
        IWL_DEBUG_EEPROM(mvm->trans->dev, "Read from NVM\n");
 
-       nvm_buffer = kmalloc(mvm->cfg->trans.base_params->eeprom_size,
+       nvm_buffer = kmalloc(mvm->trans->trans_cfg->base_params->eeprom_size,
                             GFP_KERNEL);
        if (!nvm_buffer)
                return -ENOMEM;
index eaa8b1c9938aa275ce489d889551363db7ecfbd9..0bedba4c61f2ae898c7ddbb612d041e9c9fdd7dc 100644 (file)
@@ -1954,7 +1954,7 @@ static void iwl_mvm_enable_aux_snif_queue(struct iwl_mvm *mvm, u16 *queue,
                                          u8 sta_id, u8 fifo)
 {
        unsigned int wdg_timeout = iwlmvm_mod_params.tfd_q_hang_detect ?
-               mvm->cfg->trans.base_params->wd_timeout :
+               mvm->trans->trans_cfg->base_params->wd_timeout :
                IWL_WATCHDOG_DISABLED;
 
        if (iwl_mvm_has_new_tx_api(mvm)) {
index ba1524727a1fcee26b30ce7195ad34bd3e73322e..8686107da116839a3691ce5b34d5e136ceb4e466 100644 (file)
@@ -531,7 +531,7 @@ static void iwl_mvm_dump_lmac_error_log(struct iwl_mvm *mvm, u8 lmac_num)
                /* reset the device */
                iwl_trans_sw_reset(trans);
 
-               err = iwl_finish_nic_init(trans, &trans->cfg->trans);
+               err = iwl_finish_nic_init(trans, trans->trans_cfg);
                if (err)
                        return;
        }
@@ -941,7 +941,7 @@ unsigned int iwl_mvm_get_wd_timeout(struct iwl_mvm *mvm,
        struct iwl_fw_dbg_trigger_txq_timer *txq_timer;
        unsigned int default_timeout = cmd_q ?
                IWL_DEF_WD_TIMEOUT :
-               mvm->cfg->trans.base_params->wd_timeout;
+               mvm->trans->trans_cfg->base_params->wd_timeout;
 
        if (!iwl_fw_dbg_trigger_enabled(mvm->fw, FW_DBG_TRIGGER_TXQ_TIMERS)) {
                /*
@@ -985,7 +985,7 @@ unsigned int iwl_mvm_get_wd_timeout(struct iwl_mvm *mvm,
                return default_timeout;
        default:
                WARN_ON(1);
-               return mvm->cfg->trans.base_params->wd_timeout;
+               return mvm->trans->trans_cfg->base_params->wd_timeout;
        }
 }
 
index e6a3fa2080e2eadf96871d7855e5b2f85b1e29c8..e5ca1f2685b6ced635a2061b8a787704516ec182 100644 (file)
@@ -997,9 +997,6 @@ static int iwl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        unsigned long flags;
        int ret;
 
-       if (WARN_ONCE(!cfg->trans.csr, "CSR addresses aren't configured\n"))
-               return -EINVAL;
-
        iwl_trans = iwl_trans_pcie_alloc(pdev, ent, &cfg->trans);
        if (IS_ERR(iwl_trans))
                return PTR_ERR(iwl_trans);
@@ -1007,6 +1004,12 @@ static int iwl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        /* the trans_cfg should never change, so set it now */
        iwl_trans->trans_cfg = &cfg->trans;
 
+       if (WARN_ONCE(!iwl_trans->trans_cfg->csr,
+                     "CSR addresses aren't configured\n")) {
+               ret = -EINVAL;
+               goto out_free_trans;
+       }
+
 #if IS_ENABLED(CONFIG_IWLMVM)
        /*
         * special-case 7265D, it has the same PCI IDs.
@@ -1129,7 +1132,7 @@ static int iwl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        /* now set the real cfg we decided to use */
        iwl_trans->cfg = cfg;
 
-       if (cfg->trans.device_family >= IWL_DEVICE_FAMILY_8000 &&
+       if (iwl_trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_8000 &&
            iwl_trans_grab_nic_access(iwl_trans, &flags)) {
                u32 hw_step;
 
index b6db3c42c467259da68bb5b8588f5da577137699..df8455f14e4d82462238de74a9b3f4ea664ccfe0 100644 (file)
@@ -92,7 +92,7 @@ int iwl_pcie_gen2_apm_init(struct iwl_trans *trans)
 
        iwl_pcie_apm_config(trans);
 
-       ret = iwl_finish_nic_init(trans, &trans->cfg->trans);
+       ret = iwl_finish_nic_init(trans, trans->trans_cfg);
        if (ret)
                return ret;
 
index d2fe8ff45bbb125a4f47304e026e1fd765447a7c..ae4f84016c3c45dcede1e6fea7656288a401ff8e 100644 (file)
@@ -368,7 +368,7 @@ static int iwl_pcie_apm_init(struct iwl_trans *trans)
        if (trans->trans_cfg->base_params->pll_cfg)
                iwl_set_bit(trans, CSR_ANA_PLL_CFG, CSR50_ANA_PLL_CFG_VAL);
 
-       ret = iwl_finish_nic_init(trans, &trans->cfg->trans);
+       ret = iwl_finish_nic_init(trans, trans->trans_cfg);
        if (ret)
                return ret;
 
@@ -440,7 +440,7 @@ static void iwl_pcie_apm_lp_xtal_enable(struct iwl_trans *trans)
 
        iwl_trans_pcie_sw_reset(trans);
 
-       ret = iwl_finish_nic_init(trans, &trans->cfg->trans);
+       ret = iwl_finish_nic_init(trans, trans->trans_cfg);
        if (WARN_ON(ret)) {
                /* Release XTAL ON request */
                __iwl_trans_pcie_clear_bit(trans, CSR_GP_CNTRL,
@@ -1534,7 +1534,7 @@ static int iwl_trans_pcie_d3_resume(struct iwl_trans *trans,
        iwl_set_bit(trans, CSR_GP_CNTRL,
                    BIT(trans->trans_cfg->csr->flag_mac_access_req));
 
-       ret = iwl_finish_nic_init(trans, &trans->cfg->trans);
+       ret = iwl_finish_nic_init(trans, trans->trans_cfg);
        if (ret)
                return ret;
 
index 5787cdefacd6a3b8e3107915e4ad37b891dd7586..4806a04cec8c4f3e14272c0ccaee0c73b52d07b0 100644 (file)
@@ -1238,7 +1238,6 @@ static int iwl_pcie_set_cmd_in_flight(struct iwl_trans *trans,
                                      const struct iwl_host_cmd *cmd)
 {
        struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
-       const struct iwl_cfg *cfg = trans->cfg;
        int ret;
 
        lockdep_assert_held(&trans_pcie->reg_lock);
@@ -1253,19 +1252,19 @@ static int iwl_pcie_set_cmd_in_flight(struct iwl_trans *trans,
         * returned. This needs to be done only on NICs that have
         * apmg_wake_up_wa set.
         */
-       if (cfg->trans.base_params->apmg_wake_up_wa &&
+       if (trans->trans_cfg->base_params->apmg_wake_up_wa &&
            !trans_pcie->cmd_hold_nic_awake) {
                __iwl_trans_pcie_set_bit(trans, CSR_GP_CNTRL,
-                                        BIT(cfg->trans.csr->flag_mac_access_req));
+                                        BIT(trans->trans_cfg->csr->flag_mac_access_req));
 
                ret = iwl_poll_bit(trans, CSR_GP_CNTRL,
-                                  BIT(cfg->trans.csr->flag_val_mac_access_en),
-                                  (BIT(cfg->trans.csr->flag_mac_clock_ready) |
+                                  BIT(trans->trans_cfg->csr->flag_val_mac_access_en),
+                                  (BIT(trans->trans_cfg->csr->flag_mac_clock_ready) |
                                    CSR_GP_CNTRL_REG_FLAG_GOING_TO_SLEEP),
                                   15000);
                if (ret < 0) {
                        __iwl_trans_pcie_clear_bit(trans, CSR_GP_CNTRL,
-                                       BIT(cfg->trans.csr->flag_mac_access_req));
+                                       BIT(trans->trans_cfg->csr->flag_mac_access_req));
                        IWL_ERR(trans, "Failed to wake NIC for hcmd\n");
                        return -EIO;
                }