iwlwifi: adding parameter of fw_restart
authorEster Kummer <ester.kummer@intel.com>
Tue, 6 May 2008 03:05:14 +0000 (11:05 +0800)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 14 May 2008 20:29:48 +0000 (16:29 -0400)
This patch adds a module parameter of fw_restart which determine if
the uCode will be restarted or not in case of error.

Signed-off-by: Ester Kummer <ester.kummer@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/iwlwifi/iwl-4965.c
drivers/net/wireless/iwlwifi/iwl-5000.c
drivers/net/wireless/iwlwifi/iwl-core.h
drivers/net/wireless/iwlwifi/iwl4965-base.c

index 0b4413830507da7cdc1fa81563b01c4146581ee1..b7036e0114571a5df787fc8040ed444dcae59ad4 100644 (file)
@@ -50,6 +50,7 @@ static struct iwl_mod_params iwl4965_mod_params = {
        .num_of_queues = IWL49_NUM_QUEUES,
        .enable_qos = 1,
        .amsdu_size_8K = 1,
+       .restart_fw = 1,
        /* the rest are 0 by default */
 };
 
@@ -3892,4 +3893,5 @@ module_param_named(qos_enable, iwl4965_mod_params.enable_qos, int, 0444);
 MODULE_PARM_DESC(qos_enable, "enable all QoS functionality");
 module_param_named(amsdu_size_8K, iwl4965_mod_params.amsdu_size_8K, int, 0444);
 MODULE_PARM_DESC(amsdu_size_8K, "enable 8K amsdu size");
-
+module_param_named(fw_restart4965, iwl4965_mod_params.restart_fw, int, 0444);
+MODULE_PARM_DESC(fw_restart4965, "restart firmware in case of error");
index 43b4d20467de4bc4a8559e1e91e08af0056eafaa..b5e28b811796c5456a549e8166c1edf0b33c2cf0 100644 (file)
@@ -510,6 +510,7 @@ static struct iwl_mod_params iwl50_mod_params = {
        .num_of_queues = IWL50_NUM_QUEUES,
        .enable_qos = 1,
        .amsdu_size_8K = 1,
+       .restart_fw = 1,
        /* the rest are 0 by default */
 };
 
@@ -555,5 +556,5 @@ module_param_named(qos_enable50, iwl50_mod_params.enable_qos, int, 0444);
 MODULE_PARM_DESC(qos_enable50, "enable all 50XX QoS functionality");
 module_param_named(amsdu_size_8K50, iwl50_mod_params.amsdu_size_8K, int, 0444);
 MODULE_PARM_DESC(amsdu_size_8K50, "enable 8K amsdu size in 50XX series");
-
-
+module_param_named(fw_restart50, iwl50_mod_params.restart_fw, int, 0444);
+MODULE_PARM_DESC(fw_restart50, "restart firmware in case of error");
index 83fe0cbf6aeeff1a8a968e8bb802287dd4284641..e139c8ffa9a28366431171e2f700d182581e9ba1 100644 (file)
@@ -149,6 +149,7 @@ struct iwl_mod_params {
        int enable_qos;         /* def: 1 = use quality of service */
        int amsdu_size_8K;      /* def: 1 = enable 8K amsdu size */
        int antenna;            /* def: 0 = both antennas (use diversity) */
+       int restart_fw;         /* def: 1 = restart firmware */
 };
 
 struct iwl_cfg {
index 7708b19ca0cceed4c93a50311128b33b10bfde43..55ca752ae9e6c01700950149e8bf03f1bd3f9a75 100644 (file)
@@ -3569,7 +3569,8 @@ static void iwl4965_irq_handle_error(struct iwl_priv *priv)
                               sizeof(priv->recovery_rxon));
                        priv->error_recovering = 1;
                }
-               queue_work(priv->workqueue, &priv->restart);
+               if (priv->cfg->mod_params->restart_fw)
+                       queue_work(priv->workqueue, &priv->restart);
        }
 }
 
@@ -6847,6 +6848,7 @@ static int __init iwl4965_init(void)
 
        return ret;
 
+
 #ifdef CONFIG_IWLWIFI_DEBUG
        pci_unregister_driver(&iwl_driver);
 #endif