mirror of
https://github.com/torvalds/linux.git
synced 2024-12-16 08:02:17 +00:00
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>
This commit is contained in:
parent
611d3eb72a
commit
8a9b99267c
@ -2152,7 +2152,6 @@ static int iwl_mac_start(struct ieee80211_hw *hw)
|
||||
/* we should be verifying the device is ready to be opened */
|
||||
mutex_lock(&priv->mutex);
|
||||
|
||||
memset(&priv->staging_rxon, 0, sizeof(struct iwl_rxon_cmd));
|
||||
/* fetch ucode file from disk, alloc and copy to bus-master buffers ...
|
||||
* ucode filename and max sizes are card-specific. */
|
||||
|
||||
|
@ -2498,8 +2498,7 @@ static void iwl3945_alive_start(struct iwl_priv *priv)
|
||||
struct iwl3945_rxon_cmd *active_rxon =
|
||||
(struct iwl3945_rxon_cmd *)(&priv->active_rxon);
|
||||
|
||||
memcpy(&priv->staging_rxon, &priv->active_rxon,
|
||||
sizeof(priv->staging_rxon));
|
||||
priv->staging_rxon.filter_flags |= RXON_FILTER_ASSOC_MSK;
|
||||
active_rxon->filter_flags &= ~RXON_FILTER_ASSOC_MSK;
|
||||
} else {
|
||||
/* Initialize our rx_config data */
|
||||
@ -3147,7 +3146,6 @@ static int iwl3945_mac_start(struct ieee80211_hw *hw)
|
||||
/* we should be verifying the device is ready to be opened */
|
||||
mutex_lock(&priv->mutex);
|
||||
|
||||
memset(&priv->staging_rxon, 0, sizeof(priv->staging_rxon));
|
||||
/* fetch ucode file from disk, alloc and copy to bus-master buffers ...
|
||||
* ucode filename and max sizes are card-specific. */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user