iwlagn: re-enable calibration
authorJohannes Berg <johannes.berg@intel.com>
Wed, 10 Nov 2010 17:56:46 +0000 (09:56 -0800)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 15 Nov 2010 18:26:53 +0000 (13:26 -0500)
During the RXON rewrite, this code got lost.
When we've just associated, we need to enable
all calibrations and see if some were already
finished. Add back the missing code.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/iwlwifi/iwl-agn-rxon.c

index d594a1658a9e33046b7d2a25ba972ad1568db79c..d9d617fd5078af0496e79ca42a91f0922cbfd15c 100644 (file)
@@ -569,6 +569,20 @@ void iwlagn_bss_info_changed(struct ieee80211_hw *hw,
        if (force || memcmp(&ctx->staging, &ctx->active, sizeof(ctx->staging)))
                iwlagn_commit_rxon(priv, ctx);
 
+       if (changes & BSS_CHANGED_ASSOC && bss_conf->assoc) {
+               /*
+                * The chain noise calibration will enable PM upon
+                * completion. If calibration has already been run
+                * then we need to enable power management here.
+                */
+               if (priv->chain_noise_data.state == IWL_CHAIN_NOISE_DONE)
+                       iwl_power_update_mode(priv, false);
+
+               /* Enable RX differential gain and sensitivity calibrations */
+               iwl_chain_noise_reset(priv);
+               priv->start_calib = 1;
+       }
+
        if (changes & BSS_CHANGED_IBSS) {
                ret = iwlagn_manage_ibss_station(priv, vif,
                                                 bss_conf->ibss_joined);