diff options
author | Abhijeet Kolekar <abhijeet.kolekar@intel.com> | 2009-06-12 16:22:52 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-06-15 15:05:53 -0400 |
commit | 8a9b99267cb3b51d4e59693c03e1204d86b42445 (patch) | |
tree | 78d92df7a96f786820148b63c53cd40a53117587 | |
parent | 611d3eb72aa7847a1081e6c1ac05fd2012652cde (diff) |
iwlwifi/iwl3945: fix suspend resume association bug
Patch fixes the following bugs at
http://www.intellinuxwireless.org/bugzilla/show_bug.cgi?id=2005
http://www.intellinuxwireless.org/bugzilla/show_bug.cgi?id=2007
If we suspend with an association and then resumed,
we need to synchronize the active rxon with staging rxon,
else we will get an error when iwl_alive_start try to commit
rxon and staging is set to channel 0. Before going to suspend
staging and active rxon are in sync. After resuming from the
suspend, iwl_mac_start is called and it clears the staging
rxon. Patch fixes the bug by not clearing the staging rxon
in iwl_mac_start.
Patch also adds similar fix to 3945.
Signed-off-by: Abhijeet Kolekar <abhijeet.kolekar@intel.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/iwl-agn.c | 1 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl3945-base.c | 4 |
2 files changed, 1 insertions, 4 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c index a5637c4aa85d..6d1519e1f011 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn.c | |||
@@ -2152,7 +2152,6 @@ static int iwl_mac_start(struct ieee80211_hw *hw) | |||
2152 | /* we should be verifying the device is ready to be opened */ | 2152 | /* we should be verifying the device is ready to be opened */ |
2153 | mutex_lock(&priv->mutex); | 2153 | mutex_lock(&priv->mutex); |
2154 | 2154 | ||
2155 | memset(&priv->staging_rxon, 0, sizeof(struct iwl_rxon_cmd)); | ||
2156 | /* fetch ucode file from disk, alloc and copy to bus-master buffers ... | 2155 | /* fetch ucode file from disk, alloc and copy to bus-master buffers ... |
2157 | * ucode filename and max sizes are card-specific. */ | 2156 | * ucode filename and max sizes are card-specific. */ |
2158 | 2157 | ||
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c index 83d31606dd00..cb9bd4c8f25e 100644 --- a/drivers/net/wireless/iwlwifi/iwl3945-base.c +++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c | |||
@@ -2498,8 +2498,7 @@ static void iwl3945_alive_start(struct iwl_priv *priv) | |||
2498 | struct iwl3945_rxon_cmd *active_rxon = | 2498 | struct iwl3945_rxon_cmd *active_rxon = |
2499 | (struct iwl3945_rxon_cmd *)(&priv->active_rxon); | 2499 | (struct iwl3945_rxon_cmd *)(&priv->active_rxon); |
2500 | 2500 | ||
2501 | memcpy(&priv->staging_rxon, &priv->active_rxon, | 2501 | priv->staging_rxon.filter_flags |= RXON_FILTER_ASSOC_MSK; |
2502 | sizeof(priv->staging_rxon)); | ||
2503 | active_rxon->filter_flags &= ~RXON_FILTER_ASSOC_MSK; | 2502 | active_rxon->filter_flags &= ~RXON_FILTER_ASSOC_MSK; |
2504 | } else { | 2503 | } else { |
2505 | /* Initialize our rx_config data */ | 2504 | /* Initialize our rx_config data */ |
@@ -3147,7 +3146,6 @@ static int iwl3945_mac_start(struct ieee80211_hw *hw) | |||
3147 | /* we should be verifying the device is ready to be opened */ | 3146 | /* we should be verifying the device is ready to be opened */ |
3148 | mutex_lock(&priv->mutex); | 3147 | mutex_lock(&priv->mutex); |
3149 | 3148 | ||
3150 | memset(&priv->staging_rxon, 0, sizeof(priv->staging_rxon)); | ||
3151 | /* fetch ucode file from disk, alloc and copy to bus-master buffers ... | 3149 | /* fetch ucode file from disk, alloc and copy to bus-master buffers ... |
3152 | * ucode filename and max sizes are card-specific. */ | 3150 | * ucode filename and max sizes are card-specific. */ |
3153 | 3151 | ||