]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/net/wireless/iwlwifi/iwl-calib.c
Merge branch 'upstream-davem' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik...
[linux-2.6-omap-h63xx.git] / drivers / net / wireless / iwlwifi / iwl-calib.c
index 1289d4c91abecf5ca7dfe1c884745a643febc292..ef49440bd7f6ac71c9fbb3a1f79316c0148ede2b 100644 (file)
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *****************************************************************************/
 
-#include <linux/kernel.h>
 #include <net/mac80211.h>
 
 #include "iwl-dev.h"
 #include "iwl-core.h"
 #include "iwl-calib.h"
-#include "iwl-eeprom.h"
 
 /* "false alarms" are signals that our DSP tries to lock onto,
  *   but then determines that they are either noise, or transmissions
@@ -426,14 +424,15 @@ void iwl_init_sensitivity(struct iwl_priv *priv)
        struct iwl_sensitivity_data *data = NULL;
        const struct iwl_sensitivity_ranges *ranges = priv->hw_params.sens;
 
+       if (priv->disable_sens_cal)
+               return;
+
        IWL_DEBUG_CALIB("Start iwl_init_sensitivity\n");
 
        /* Clear driver's sensitivity algo data */
        data = &(priv->sensitivity_data);
 
        if (ranges == NULL)
-               /* can happen if IWLWIFI_RUN_TIME_CALIB is selected
-                * but no IWLXXXX_RUN_TIME_CALIB for specific is selected */
                return;
 
        memset(data, 0, sizeof(struct iwl_sensitivity_data));
@@ -471,7 +470,7 @@ void iwl_init_sensitivity(struct iwl_priv *priv)
 EXPORT_SYMBOL(iwl_init_sensitivity);
 
 void iwl_sensitivity_calibration(struct iwl_priv *priv,
-                                   struct iwl4965_notif_statistics *resp)
+                                   struct iwl_notif_statistics *resp)
 {
        u32 rx_enable_time;
        u32 fa_cck;
@@ -486,6 +485,9 @@ void iwl_sensitivity_calibration(struct iwl_priv *priv,
        unsigned long flags;
        struct statistics_general_data statis;
 
+       if (priv->disable_sens_cal)
+               return;
+
        data = &(priv->sensitivity_data);
 
        if (!iwl_is_associated(priv)) {
@@ -582,7 +584,7 @@ EXPORT_SYMBOL(iwl_sensitivity_calibration);
  * 2)  Differential rx gain settings to balance the 3 receivers.
  */
 void iwl_chain_noise_calibration(struct iwl_priv *priv,
-                             struct iwl4965_notif_statistics *stat_resp)
+                                struct iwl_notif_statistics *stat_resp)
 {
        struct iwl_chain_noise_data *data = NULL;
 
@@ -608,6 +610,9 @@ void iwl_chain_noise_calibration(struct iwl_priv *priv,
        unsigned long flags;
        struct statistics_rx_non_phy *rx_info = &(stat_resp->rx.general);
 
+       if (priv->disable_chain_noise_cal)
+               return;
+
        data = &(priv->chain_noise_data);
 
        /* Accumulate just the first 20 beacons after the first association,
@@ -777,3 +782,21 @@ void iwl_chain_noise_calibration(struct iwl_priv *priv,
 }
 EXPORT_SYMBOL(iwl_chain_noise_calibration);
 
+
+void iwl_reset_run_time_calib(struct iwl_priv *priv)
+{
+       int i;
+       memset(&(priv->sensitivity_data), 0,
+              sizeof(struct iwl_sensitivity_data));
+       memset(&(priv->chain_noise_data), 0,
+              sizeof(struct iwl_chain_noise_data));
+       for (i = 0; i < NUM_RX_CHAINS; i++)
+               priv->chain_noise_data.delta_gain_code[i] =
+                               CHAIN_NOISE_DELTA_GAIN_INIT_VAL;
+
+       /* Ask for statistics now, the uCode will send notification
+        * periodically after association */
+       iwl_send_statistics_request(priv, CMD_ASYNC);
+}
+EXPORT_SYMBOL(iwl_reset_run_time_calib);
+