aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-agn.c
diff options
context:
space:
mode:
authorReinette Chatre <reinette.chatre@intel.com>2010-05-10 18:08:11 -0400
committerReinette Chatre <reinette.chatre@intel.com>2010-05-10 18:08:11 -0400
commita15707d80ee9a0e0812c5f1a1ed8e41e0a6e52f3 (patch)
treeb1774dad1d72b70d88ab6c51ff4b87697dfca57a /drivers/net/wireless/iwlwifi/iwl-agn.c
parent9459d59fbf0bc82ff4c804679fa8bc22788eca63 (diff)
parent562db532760827f6ce30801a08e6b568848bc9f2 (diff)
Merge branch 'wireless-2.6' into wireless-next-2.6
Conflicts: drivers/net/wireless/iwlwifi/iwl-dev.h
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-agn.c')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index d18c61223ac5..dc283769780e 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -1776,6 +1776,7 @@ static void iwl_ucode_callback(const struct firmware *ucode_raw, void *context)
1776 1776
1777 /* We have our copies now, allow OS release its copies */ 1777 /* We have our copies now, allow OS release its copies */
1778 release_firmware(ucode_raw); 1778 release_firmware(ucode_raw);
1779 complete(&priv->_agn.firmware_loading_complete);
1779 return; 1780 return;
1780 1781
1781 try_again: 1782 try_again:
@@ -1789,6 +1790,7 @@ static void iwl_ucode_callback(const struct firmware *ucode_raw, void *context)
1789 IWL_ERR(priv, "failed to allocate pci memory\n"); 1790 IWL_ERR(priv, "failed to allocate pci memory\n");
1790 iwl_dealloc_ucode_pci(priv); 1791 iwl_dealloc_ucode_pci(priv);
1791 out_unbind: 1792 out_unbind:
1793 complete(&priv->_agn.firmware_loading_complete);
1792 device_release_driver(&priv->pci_dev->dev); 1794 device_release_driver(&priv->pci_dev->dev);
1793 release_firmware(ucode_raw); 1795 release_firmware(ucode_raw);
1794} 1796}
@@ -3586,6 +3588,8 @@ static int iwl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
3586 iwl_power_initialize(priv); 3588 iwl_power_initialize(priv);
3587 iwl_tt_initialize(priv); 3589 iwl_tt_initialize(priv);
3588 3590
3591 init_completion(&priv->_agn.firmware_loading_complete);
3592
3589 err = iwl_request_firmware(priv, true); 3593 err = iwl_request_firmware(priv, true);
3590 if (err) 3594 if (err)
3591 goto out_remove_sysfs; 3595 goto out_remove_sysfs;
@@ -3626,6 +3630,8 @@ static void __devexit iwl_pci_remove(struct pci_dev *pdev)
3626 if (!priv) 3630 if (!priv)
3627 return; 3631 return;
3628 3632
3633 wait_for_completion(&priv->_agn.firmware_loading_complete);
3634
3629 IWL_DEBUG_INFO(priv, "*** UNLOAD DRIVER ***\n"); 3635 IWL_DEBUG_INFO(priv, "*** UNLOAD DRIVER ***\n");
3630 3636
3631 iwl_dbgfs_unregister(priv); 3637 iwl_dbgfs_unregister(priv);