static int iwl1000_hw_set_hw_params(struct iwl_priv *priv)
 {
-       if (priv->cfg->mod_params->num_of_queues >= IWL_MIN_NUM_QUEUES &&
-           priv->cfg->mod_params->num_of_queues <= IWLAGN_NUM_QUEUES)
+       if (iwlagn_mod_params.num_of_queues >= IWL_MIN_NUM_QUEUES &&
+           iwlagn_mod_params.num_of_queues <= IWLAGN_NUM_QUEUES)
                priv->cfg->base_params->num_of_queues =
-                       priv->cfg->mod_params->num_of_queues;
+                       iwlagn_mod_params.num_of_queues;
 
        priv->hw_params.max_txq_num = priv->cfg->base_params->num_of_queues;
        priv->hw_params.dma_chnl_num = FH50_TCSR_CHNL_NUM;
        .eeprom_ver = EEPROM_1000_EEPROM_VERSION,               \
        .eeprom_calib_ver = EEPROM_1000_TX_POWER_VERSION,       \
        .ops = &iwl1000_ops,                                    \
-       .mod_params = &iwlagn_mod_params,                       \
        .base_params = &iwl1000_base_params,                    \
        .led_mode = IWL_LED_BLINK
 
        .eeprom_ver = EEPROM_1000_EEPROM_VERSION,               \
        .eeprom_calib_ver = EEPROM_1000_TX_POWER_VERSION,       \
        .ops = &iwl1000_ops,                                    \
-       .mod_params = &iwlagn_mod_params,                       \
        .base_params = &iwl1000_base_params,                    \
        .led_mode = IWL_LED_RF_STATE,                           \
        .rx_with_siso_diversity = true
 
 
 static int iwl2000_hw_set_hw_params(struct iwl_priv *priv)
 {
-       if (priv->cfg->mod_params->num_of_queues >= IWL_MIN_NUM_QUEUES &&
-           priv->cfg->mod_params->num_of_queues <= IWLAGN_NUM_QUEUES)
+       if (iwlagn_mod_params.num_of_queues >= IWL_MIN_NUM_QUEUES &&
+           iwlagn_mod_params.num_of_queues <= IWLAGN_NUM_QUEUES)
                priv->cfg->base_params->num_of_queues =
-                       priv->cfg->mod_params->num_of_queues;
+                       iwlagn_mod_params.num_of_queues;
 
        priv->hw_params.max_txq_num = priv->cfg->base_params->num_of_queues;
        priv->hw_params.dma_chnl_num = FH50_TCSR_CHNL_NUM;
        .eeprom_ver = EEPROM_2000_EEPROM_VERSION,               \
        .eeprom_calib_ver = EEPROM_2000_TX_POWER_VERSION,       \
        .ops = &iwl2000_ops,                                    \
-       .mod_params = &iwlagn_mod_params,                       \
        .base_params = &iwl2000_base_params,                    \
        .need_dc_calib = true,                                  \
        .need_temp_offset_calib = true,                         \
        .eeprom_ver = EEPROM_2000_EEPROM_VERSION,               \
        .eeprom_calib_ver = EEPROM_2000_TX_POWER_VERSION,       \
        .ops = &iwl2030_ops,                                    \
-       .mod_params = &iwlagn_mod_params,                       \
        .base_params = &iwl2030_base_params,                    \
        .bt_params = &iwl2030_bt_params,                        \
        .need_dc_calib = true,                                  \
        .eeprom_ver = EEPROM_2000_EEPROM_VERSION,               \
        .eeprom_calib_ver = EEPROM_2000_TX_POWER_VERSION,       \
        .ops = &iwl105_ops,                                     \
-       .mod_params = &iwlagn_mod_params,                       \
        .base_params = &iwl2000_base_params,                    \
        .need_dc_calib = true,                                  \
        .need_temp_offset_calib = true,                         \
        .eeprom_ver = EEPROM_2000_EEPROM_VERSION,               \
        .eeprom_calib_ver = EEPROM_2000_TX_POWER_VERSION,       \
        .ops = &iwl135_ops,                                     \
-       .mod_params = &iwlagn_mod_params,                       \
        .base_params = &iwl2030_base_params,                    \
        .bt_params = &iwl2030_bt_params,                        \
        .need_dc_calib = true,                                  \
 
 
 static int iwl5000_hw_set_hw_params(struct iwl_priv *priv)
 {
-       if (priv->cfg->mod_params->num_of_queues >= IWL_MIN_NUM_QUEUES &&
-           priv->cfg->mod_params->num_of_queues <= IWLAGN_NUM_QUEUES)
+       if (iwlagn_mod_params.num_of_queues >= IWL_MIN_NUM_QUEUES &&
+           iwlagn_mod_params.num_of_queues <= IWLAGN_NUM_QUEUES)
                priv->cfg->base_params->num_of_queues =
-                       priv->cfg->mod_params->num_of_queues;
+                       iwlagn_mod_params.num_of_queues;
 
        priv->hw_params.max_txq_num = priv->cfg->base_params->num_of_queues;
        priv->hw_params.dma_chnl_num = FH50_TCSR_CHNL_NUM;
 
 static int iwl5150_hw_set_hw_params(struct iwl_priv *priv)
 {
-       if (priv->cfg->mod_params->num_of_queues >= IWL_MIN_NUM_QUEUES &&
-           priv->cfg->mod_params->num_of_queues <= IWLAGN_NUM_QUEUES)
+       if (iwlagn_mod_params.num_of_queues >= IWL_MIN_NUM_QUEUES &&
+           iwlagn_mod_params.num_of_queues <= IWLAGN_NUM_QUEUES)
                priv->cfg->base_params->num_of_queues =
-                       priv->cfg->mod_params->num_of_queues;
+                       iwlagn_mod_params.num_of_queues;
 
        priv->hw_params.max_txq_num = priv->cfg->base_params->num_of_queues;
        priv->hw_params.dma_chnl_num = FH50_TCSR_CHNL_NUM;
        .eeprom_ver = EEPROM_5000_EEPROM_VERSION,               \
        .eeprom_calib_ver = EEPROM_5000_TX_POWER_VERSION,       \
        .ops = &iwl5000_ops,                                    \
-       .mod_params = &iwlagn_mod_params,                       \
        .base_params = &iwl5000_base_params,                    \
        .led_mode = IWL_LED_BLINK
 
        .eeprom_ver = EEPROM_5050_EEPROM_VERSION,
        .eeprom_calib_ver = EEPROM_5050_TX_POWER_VERSION,
        .ops = &iwl5000_ops,
-       .mod_params = &iwlagn_mod_params,
        .base_params = &iwl5000_base_params,
        .ht_params = &iwl5000_ht_params,
        .led_mode = IWL_LED_BLINK,
        .eeprom_ver = EEPROM_5050_EEPROM_VERSION,               \
        .eeprom_calib_ver = EEPROM_5050_TX_POWER_VERSION,       \
        .ops = &iwl5150_ops,                                    \
-       .mod_params = &iwlagn_mod_params,                       \
        .base_params = &iwl5000_base_params,                    \
        .need_dc_calib = true,                                  \
        .led_mode = IWL_LED_BLINK,                              \
 
 
 static int iwl6000_hw_set_hw_params(struct iwl_priv *priv)
 {
-       if (priv->cfg->mod_params->num_of_queues >= IWL_MIN_NUM_QUEUES &&
-           priv->cfg->mod_params->num_of_queues <= IWLAGN_NUM_QUEUES)
+       if (iwlagn_mod_params.num_of_queues >= IWL_MIN_NUM_QUEUES &&
+           iwlagn_mod_params.num_of_queues <= IWLAGN_NUM_QUEUES)
                priv->cfg->base_params->num_of_queues =
-                       priv->cfg->mod_params->num_of_queues;
+                       iwlagn_mod_params.num_of_queues;
 
        priv->hw_params.max_txq_num = priv->cfg->base_params->num_of_queues;
        priv->hw_params.dma_chnl_num = FH50_TCSR_CHNL_NUM;
        .eeprom_ver = EEPROM_6005_EEPROM_VERSION,               \
        .eeprom_calib_ver = EEPROM_6005_TX_POWER_VERSION,       \
        .ops = &iwl6000_ops,                                    \
-       .mod_params = &iwlagn_mod_params,                       \
        .base_params = &iwl6000_g2_base_params,                 \
        .need_dc_calib = true,                                  \
        .need_temp_offset_calib = true,                         \
        .eeprom_ver = EEPROM_6030_EEPROM_VERSION,               \
        .eeprom_calib_ver = EEPROM_6030_TX_POWER_VERSION,       \
        .ops = &iwl6030_ops,                                    \
-       .mod_params = &iwlagn_mod_params,                       \
        .base_params = &iwl6000_g2_base_params,                 \
        .bt_params = &iwl6000_bt_params,                        \
        .need_dc_calib = true,                                  \
        .eeprom_ver = EEPROM_6000_EEPROM_VERSION,               \
        .eeprom_calib_ver = EEPROM_6000_TX_POWER_VERSION,       \
        .ops = &iwl6000_ops,                                    \
-       .mod_params = &iwlagn_mod_params,                       \
        .base_params = &iwl6000_base_params,                    \
        .pa_type = IWL_PA_INTERNAL,                             \
        .led_mode = IWL_LED_BLINK
        .ops = &iwl6050_ops,                                    \
        .eeprom_ver = EEPROM_6050_EEPROM_VERSION,               \
        .eeprom_calib_ver = EEPROM_6050_TX_POWER_VERSION,       \
-       .mod_params = &iwlagn_mod_params,                       \
        .base_params = &iwl6050_base_params,                    \
        .need_dc_calib = true,                                  \
        .led_mode = IWL_LED_BLINK,                              \
        .eeprom_ver = EEPROM_6150_EEPROM_VERSION,
        .eeprom_calib_ver = EEPROM_6150_TX_POWER_VERSION,
        .ops = &iwl6150_ops,
-       .mod_params = &iwlagn_mod_params,
        .base_params = &iwl6050_base_params,
        .ht_params = &iwl6000_ht_params,
        .need_dc_calib = true,
        .eeprom_ver = EEPROM_6000_EEPROM_VERSION,
        .eeprom_calib_ver = EEPROM_6000_TX_POWER_VERSION,
        .ops = &iwl6000_ops,
-       .mod_params = &iwlagn_mod_params,
        .base_params = &iwl6000_base_params,
        .ht_params = &iwl6000_ht_params,
        .need_dc_calib = true,
 
 
        rb_timeout = RX_RB_TIMEOUT;
 
-       if (priv->cfg->mod_params->amsdu_size_8K)
+       if (iwlagn_mod_params.amsdu_size_8K)
                rb_size = FH_RCSR_RX_CONFIG_REG_VAL_RB_SIZE_8K;
        else
                rb_size = FH_RCSR_RX_CONFIG_REG_VAL_RB_SIZE_4K;
 
                        return ret;
        }
 
-       iwl_set_rxon_hwcrypto(priv, ctx, !priv->cfg->mod_params->sw_crypto);
+       iwl_set_rxon_hwcrypto(priv, ctx, !iwlagn_mod_params.sw_crypto);
 
        IWL_DEBUG_INFO(priv,
                       "Going to commit RXON\n"
 
 
        IWL_DEBUG_MAC80211(priv, "enter\n");
 
-       if (priv->cfg->mod_params->sw_crypto) {
+       if (iwlagn_mod_params.sw_crypto) {
                IWL_DEBUG_MAC80211(priv, "leave - hwcrypto disabled\n");
                return -EOPNOTSUPP;
        }
 {
        priv->hw_params.max_rxq_size = RX_QUEUE_SIZE;
        priv->hw_params.max_rxq_log = RX_QUEUE_SIZE_LOG;
-       if (priv->cfg->mod_params->amsdu_size_8K)
+       if (iwlagn_mod_params.amsdu_size_8K)
                priv->hw_params.rx_page_order = get_order(IWL_RX_BUF_SIZE_8K);
        else
                priv->hw_params.rx_page_order = get_order(IWL_RX_BUF_SIZE_4K);
 
        priv->hw_params.max_beacon_itrvl = IWL_MAX_UCODE_BEACON_INTERVAL;
 
-       if (priv->cfg->mod_params->disable_11n)
+       if (iwlagn_mod_params.disable_11n)
                priv->cfg->sku &= ~IWL_SKU_N;
 
        /* Device-specific setup */
 
 #include "iwl-power.h"
 #include "iwl-sta.h"
 #include "iwl-helpers.h"
+#include "iwl-agn.h"
 
 
 /*
                max_bit_rate = MAX_BIT_RATE_40_MHZ;
        }
 
-       if (priv->cfg->mod_params->amsdu_size_8K)
+       if (iwlagn_mod_params.amsdu_size_8K)
                ht_info->cap |= IEEE80211_HT_CAP_MAX_AMSDU;
 
        ht_info->ampdu_factor = CFG_HT_RX_AMPDU_FACTOR_DEF;
        }
 
        if (!test_bit(STATUS_EXIT_PENDING, &priv->status)) {
-               if (priv->cfg->mod_params->restart_fw) {
+               if (iwlagn_mod_params.restart_fw) {
                        IWL_DEBUG(priv, IWL_DL_FW_ERRORS,
                                  "Restarting adapter due to uCode error.\n");
                        queue_work(priv->workqueue, &priv->restart);
                 * detect failure), then fw_restart module parameter
                 * need to be check before performing firmware reload
                 */
-               if (!external && !priv->cfg->mod_params->restart_fw) {
+               if (!external && !iwlagn_mod_params.restart_fw) {
                        IWL_DEBUG_INFO(priv, "Cancel firmware reload based on "
                                       "module parameter setting\n");
                        break;
 
        u16  eeprom_ver;
        u16  eeprom_calib_ver;
        const struct iwl_ops *ops;
-       /* module based parameters which can be set from modprobe cmd */
-       const struct iwl_mod_params *mod_params;
        /* params not likely to change within a device family */
        struct iwl_base_params *base_params;
        /* params likely to change within a device family */
 
                                        struct statistics_tx *tx,
                                        unsigned long stamp)
 {
-       const struct iwl_mod_params *mod_params = priv->cfg->mod_params;
        unsigned int msecs;
 
        if (test_bit(STATUS_EXIT_PENDING, &priv->status))
        if (msecs < 99)
                return;
 
-       if (mod_params->ack_check && !iwl_good_ack_health(priv, tx)) {
+       if (iwlagn_mod_params.ack_check && !iwl_good_ack_health(priv, tx)) {
                IWL_ERR(priv, "low ack count detected, restart firmware\n");
                if (!iwl_force_reset(priv, IWL_FW_RESET, false))
                        return;
        }
 
-       if (mod_params->plcp_check &&
+       if (iwlagn_mod_params.plcp_check &&
            !iwl_good_plcp_health(priv, cur_ofdm, cur_ofdm_ht, msecs))
                iwl_force_reset(priv, IWL_RF_RESET, false);
 }
        }
 
        /* In case of HW accelerated crypto and bad decryption, drop */
-       if (!priv->cfg->mod_params->sw_crypto &&
+       if (!iwlagn_mod_params.sw_crypto &&
            iwl_set_decrypted_flag(priv, hdr, ampdu_status, stats))
                return;