iwlwifi: dvm: don't send zeroed LQ cmd
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Wed, 17 Apr 2013 06:47:00 +0000 (09:47 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Thu, 18 Apr 2013 11:36:29 +0000 (13:36 +0200)
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.

Cc: stable@vger.kernel.org
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>
drivers/net/wireless/iwlwifi/dvm/sta.c

index b775769f8322c437558712af955332296e95db89..db183b44e038ba7f1ed5a63f31bf7497e3599428 100644 (file)
@@ -695,6 +695,7 @@ void iwl_clear_ucode_stations(struct iwl_priv *priv,
 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;
        int i;
        bool found = false;
@@ -733,7 +734,9 @@ void iwl_restore_stations(struct iwl_priv *priv, struct iwl_rxon_context *ctx)
                                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_bh(&priv->sta_lock);
                        ret = iwl_send_add_sta(priv, &sta_cmd, CMD_SYNC);