diff options
author | Rick Farrington <rickdic@hotmail.com> | 2008-03-18 17:57:49 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-03-24 19:25:08 -0400 |
commit | a9f46786ec5bb291c9b5e6cc6f83ebbd3fceea51 (patch) | |
tree | d13d8f045436c368ee97b898595fa04e96244b5a | |
parent | ea995abfed7f0726aaa22580aaf10b2cf5d91be5 (diff) |
iwlwifi: mac start synchronization issue
This patch fixes a synchronization problem on the 4965 and 3945 with the
mac start callback routine. The problem is that this function exits BEFORE the
'xxx_alive_start' has completed. This can lead to a problem if a
subsequent MAC callback attempts to issue a firmware command.
Signed-off-by: Rick Farrington <rickdic@hotmail.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl3945-base.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl4965-base.c | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c index 40b71bc2c4a4..39cc13f6b62c 100644 --- a/drivers/net/wireless/iwlwifi/iwl3945-base.c +++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c | |||
@@ -6206,11 +6206,11 @@ static void iwl3945_alive_start(struct iwl3945_priv *priv) | |||
6206 | 6206 | ||
6207 | /* At this point, the NIC is initialized and operational */ | 6207 | /* At this point, the NIC is initialized and operational */ |
6208 | priv->notif_missed_beacons = 0; | 6208 | priv->notif_missed_beacons = 0; |
6209 | set_bit(STATUS_READY, &priv->status); | ||
6210 | 6209 | ||
6211 | iwl3945_reg_txpower_periodic(priv); | 6210 | iwl3945_reg_txpower_periodic(priv); |
6212 | 6211 | ||
6213 | IWL_DEBUG_INFO("ALIVE processing complete.\n"); | 6212 | IWL_DEBUG_INFO("ALIVE processing complete.\n"); |
6213 | set_bit(STATUS_READY, &priv->status); | ||
6214 | wake_up_interruptible(&priv->wait_command_queue); | 6214 | wake_up_interruptible(&priv->wait_command_queue); |
6215 | 6215 | ||
6216 | if (priv->error_recovering) | 6216 | if (priv->error_recovering) |
diff --git a/drivers/net/wireless/iwlwifi/iwl4965-base.c b/drivers/net/wireless/iwlwifi/iwl4965-base.c index a23d4798653b..7020822e78d1 100644 --- a/drivers/net/wireless/iwlwifi/iwl4965-base.c +++ b/drivers/net/wireless/iwlwifi/iwl4965-base.c | |||
@@ -6628,11 +6628,11 @@ static void iwl4965_alive_start(struct iwl4965_priv *priv) | |||
6628 | 6628 | ||
6629 | /* At this point, the NIC is initialized and operational */ | 6629 | /* At this point, the NIC is initialized and operational */ |
6630 | priv->notif_missed_beacons = 0; | 6630 | priv->notif_missed_beacons = 0; |
6631 | set_bit(STATUS_READY, &priv->status); | ||
6632 | 6631 | ||
6633 | iwl4965_rf_kill_ct_config(priv); | 6632 | iwl4965_rf_kill_ct_config(priv); |
6634 | 6633 | ||
6635 | IWL_DEBUG_INFO("ALIVE processing complete.\n"); | 6634 | IWL_DEBUG_INFO("ALIVE processing complete.\n"); |
6635 | set_bit(STATUS_READY, &priv->status); | ||
6636 | wake_up_interruptible(&priv->wait_command_queue); | 6636 | wake_up_interruptible(&priv->wait_command_queue); |
6637 | 6637 | ||
6638 | if (priv->error_recovering) | 6638 | if (priv->error_recovering) |