| From: Emmanuel Grumbach <emmanuel.grumbach@intel.com> |
| Date: Wed, 17 Apr 2013 09:47:00 +0300 |
| Subject: iwlwifi: dvm: don't send zeroed LQ cmd |
| |
| commit 63b77bf489881747c5118476918cc8c29378ee63 upstream. |
| |
| When the stations are being restored because of unassoc |
| RXON, the LQ cmd may not have been initialized because it |
| is initialized only after association. |
| Sending zeroed LQ_CMD makes the fw unhappy: it raises |
| SYSASSERT_2078. |
| |
| Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> |
| Reviewed-by: Johannes Berg <johannes.berg@intel.com> |
| [move zero_lq and make static const] |
| Signed-off-by: Johannes Berg <johannes.berg@intel.com> |
| [bwh: Backported to 3.2: adjust filename] |
| Signed-off-by: Ben Hutchings <ben@decadent.org.uk> |
| --- |
| drivers/net/wireless/iwlwifi/iwl-agn-sta.c | 5 ++++- |
| 1 file changed, 4 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/net/wireless/iwlwifi/iwl-agn-sta.c |
| +++ b/drivers/net/wireless/iwlwifi/iwl-agn-sta.c |
| @@ -563,6 +563,7 @@ void iwl_clear_ucode_stations(struct iwl |
| void iwl_restore_stations(struct iwl_priv *priv, struct iwl_rxon_context *ctx) |
| { |
| struct iwl_addsta_cmd sta_cmd; |
| + static const struct iwl_link_quality_cmd zero_lq = {}; |
| struct iwl_link_quality_cmd lq; |
| unsigned long flags_spin; |
| int i; |
| @@ -602,7 +603,9 @@ void iwl_restore_stations(struct iwl_pri |
| else |
| memcpy(&lq, priv->stations[i].lq, |
| sizeof(struct iwl_link_quality_cmd)); |
| - send_lq = true; |
| + |
| + if (!memcmp(&lq, &zero_lq, sizeof(lq))) |
| + send_lq = true; |
| } |
| spin_unlock_irqrestore(&priv->shrd->sta_lock, |
| flags_spin); |