aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi
diff options
context:
space:
mode:
authorReinette Chatre <reinette.chatre@intel.com>2010-02-03 12:38:59 -0500
committerReinette Chatre <reinette.chatre@intel.com>2010-02-11 13:26:55 -0500
commit4843b5a731b31916d100cfc5ba4d03ae78462ed9 (patch)
tree2a1ed65c58a8f582aef410acd2fc6c1fd1354ee2 /drivers/net/wireless/iwlwifi
parentbbcbb9ef9735c67da303d30bd6beb9e699f0f508 (diff)
iwlwifi: reset card during probe
To ensure that card is in a sane state during probe we add a reset call. This change was prompted by users of kdump who was not able to bring up the wireless driver in the kdump kernel. The problem here was that the primary kernel, which is not running at the time, left the wireless card up and running. When the kdump kernel starts it is thus possible to immediately receive interrupts from firmware after registering interrupt, but without being ready to deal with interrupts from firmware yet. Reported-by: Stanislaw Gruszka <sgruszka@redhat.com> Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn.c8
-rw-r--r--drivers/net/wireless/iwlwifi/iwl3945-base.c7
2 files changed, 15 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index c1eff4c5b448..31b156d58d7f 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -3540,6 +3540,14 @@ static int iwl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
3540 */ 3540 */
3541 spin_lock_init(&priv->reg_lock); 3541 spin_lock_init(&priv->reg_lock);
3542 spin_lock_init(&priv->lock); 3542 spin_lock_init(&priv->lock);
3543
3544 /*
3545 * stop and reset the on-board processor just in case it is in a
3546 * strange state ... like being left stranded by a primary kernel
3547 * and this is now the kdump kernel trying to start up
3548 */
3549 iwl_write32(priv, CSR_RESET, CSR_RESET_REG_FLAG_NEVO_RESET);
3550
3543 iwl_hw_detect(priv); 3551 iwl_hw_detect(priv);
3544 IWL_INFO(priv, "Detected Intel Wireless WiFi Link %s REV=0x%X\n", 3552 IWL_INFO(priv, "Detected Intel Wireless WiFi Link %s REV=0x%X\n",
3545 priv->cfg->name, priv->hw_rev); 3553 priv->cfg->name, priv->hw_rev);
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c
index f6e8f45ff7f0..7af8ab80dcf1 100644
--- a/drivers/net/wireless/iwlwifi/iwl3945-base.c
+++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c
@@ -4039,6 +4039,13 @@ static int iwl3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *e
4039 spin_lock_init(&priv->reg_lock); 4039 spin_lock_init(&priv->reg_lock);
4040 spin_lock_init(&priv->lock); 4040 spin_lock_init(&priv->lock);
4041 4041
4042 /*
4043 * stop and reset the on-board processor just in case it is in a
4044 * strange state ... like being left stranded by a primary kernel
4045 * and this is now the kdump kernel trying to start up
4046 */
4047 iwl_write32(priv, CSR_RESET, CSR_RESET_REG_FLAG_NEVO_RESET);
4048
4042 /*********************** 4049 /***********************
4043 * 4. Read EEPROM 4050 * 4. Read EEPROM
4044 * ********************/ 4051 * ********************/