diff options
-rw-r--r-- | drivers/net/wireless/iwlwifi/Kconfig | 28 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/Makefile | 3 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-4965.c | 39 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-5000.c | 11 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-calib.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-calib.h | 20 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-core.h | 2 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-debug.h | 2 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-debugfs.c | 4 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-dev.h | 12 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-rx.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl4965-base.c | 24 |
12 files changed, 27 insertions, 122 deletions
diff --git a/drivers/net/wireless/iwlwifi/Kconfig b/drivers/net/wireless/iwlwifi/Kconfig index b992428ab4db..a382c0078923 100644 --- a/drivers/net/wireless/iwlwifi/Kconfig +++ b/drivers/net/wireless/iwlwifi/Kconfig | |||
@@ -14,15 +14,6 @@ config IWLWIFI_LEDS | |||
14 | bool | 14 | bool |
15 | default n | 15 | default n |
16 | 16 | ||
17 | config IWLWIFI_RUN_TIME_CALIB | ||
18 | bool | ||
19 | depends on IWLCORE | ||
20 | default n | ||
21 | ---help--- | ||
22 | This option will enable run time calibration for the iwlwifi driver. | ||
23 | These calibrations are Sensitivity and Chain Noise. | ||
24 | |||
25 | |||
26 | config IWLWIFI_RFKILL | 17 | config IWLWIFI_RFKILL |
27 | boolean "IWLWIFI RF kill support" | 18 | boolean "IWLWIFI RF kill support" |
28 | depends on IWLCORE | 19 | depends on IWLCORE |
@@ -68,15 +59,6 @@ config IWL4965_SPECTRUM_MEASUREMENT | |||
68 | ---help--- | 59 | ---help--- |
69 | This option will enable spectrum measurement for the iwl4965 driver. | 60 | This option will enable spectrum measurement for the iwl4965 driver. |
70 | 61 | ||
71 | config IWL4965_RUN_TIME_CALIB | ||
72 | bool "Enable run time Calibration for 4965 NIC" | ||
73 | select IWLWIFI_RUN_TIME_CALIB | ||
74 | depends on IWL4965 | ||
75 | default y | ||
76 | ---help--- | ||
77 | This option will enable run time calibration for the iwl4965 driver. | ||
78 | These calibrations are Sensitivity and Chain Noise. If unsure, say yes | ||
79 | |||
80 | config IWLWIFI_DEBUG | 62 | config IWLWIFI_DEBUG |
81 | bool "Enable full debugging output in iwl4965 driver" | 63 | bool "Enable full debugging output in iwl4965 driver" |
82 | depends on IWL4965 | 64 | depends on IWL4965 |
@@ -110,16 +92,6 @@ config IWL5000 | |||
110 | This option enables support for Intel Wireless WiFi Link 5000AGN Family | 92 | This option enables support for Intel Wireless WiFi Link 5000AGN Family |
111 | Dependency on 4965 is temporary | 93 | Dependency on 4965 is temporary |
112 | 94 | ||
113 | config IWL5000_RUN_TIME_CALIB | ||
114 | bool "Enable run time Calibration for 5000 NIC" | ||
115 | select IWLWIFI_RUN_TIME_CALIB | ||
116 | depends on IWL5000 | ||
117 | default y | ||
118 | ---help--- | ||
119 | This option will enable run time calibration for the iwl5000 driver. | ||
120 | These calibrations are Sensitivity and Chain Noise. If unsure, say yes | ||
121 | |||
122 | |||
123 | config IWLWIFI_DEBUGFS | 95 | config IWLWIFI_DEBUGFS |
124 | bool "Iwlwifi debugfs support" | 96 | bool "Iwlwifi debugfs support" |
125 | depends on IWLCORE && IWLWIFI_DEBUG && MAC80211_DEBUGFS | 97 | depends on IWLCORE && IWLWIFI_DEBUG && MAC80211_DEBUGFS |
diff --git a/drivers/net/wireless/iwlwifi/Makefile b/drivers/net/wireless/iwlwifi/Makefile index 5c73eede7193..184fdeec3606 100644 --- a/drivers/net/wireless/iwlwifi/Makefile +++ b/drivers/net/wireless/iwlwifi/Makefile | |||
@@ -1,10 +1,9 @@ | |||
1 | obj-$(CONFIG_IWLCORE) += iwlcore.o | 1 | obj-$(CONFIG_IWLCORE) += iwlcore.o |
2 | iwlcore-objs := iwl-core.o iwl-eeprom.o iwl-hcmd.o iwl-power.o | 2 | iwlcore-objs := iwl-core.o iwl-eeprom.o iwl-hcmd.o iwl-power.o iwl-calib.o |
3 | iwlcore-objs += iwl-rx.o iwl-tx.o iwl-sta.o | 3 | iwlcore-objs += iwl-rx.o iwl-tx.o iwl-sta.o |
4 | iwlcore-$(CONFIG_IWLWIFI_DEBUGFS) += iwl-debugfs.o | 4 | iwlcore-$(CONFIG_IWLWIFI_DEBUGFS) += iwl-debugfs.o |
5 | iwlcore-$(CONFIG_IWLWIFI_LEDS) += iwl-led.o | 5 | iwlcore-$(CONFIG_IWLWIFI_LEDS) += iwl-led.o |
6 | iwlcore-$(CONFIG_IWLWIFI_RFKILL) += iwl-rfkill.o | 6 | iwlcore-$(CONFIG_IWLWIFI_RFKILL) += iwl-rfkill.o |
7 | iwlcore-$(CONFIG_IWLWIFI_RUN_TIME_CALIB) += iwl-calib.o | ||
8 | 7 | ||
9 | obj-$(CONFIG_IWL3945) += iwl3945.o | 8 | obj-$(CONFIG_IWL3945) += iwl3945.o |
10 | iwl3945-objs := iwl3945-base.o iwl-3945.o iwl-3945-rs.o | 9 | iwl3945-objs := iwl3945-base.o iwl-3945.o iwl-3945-rs.o |
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965.c b/drivers/net/wireless/iwlwifi/iwl-4965.c index 84414da0bdeb..e2c2d9f3edb5 100644 --- a/drivers/net/wireless/iwlwifi/iwl-4965.c +++ b/drivers/net/wireless/iwlwifi/iwl-4965.c | |||
@@ -652,8 +652,6 @@ void iwl4965_rf_kill_ct_config(struct iwl_priv *priv) | |||
652 | cmd.critical_temperature_R); | 652 | cmd.critical_temperature_R); |
653 | } | 653 | } |
654 | 654 | ||
655 | #ifdef CONFIG_IWL4965_RUN_TIME_CALIB | ||
656 | |||
657 | /* Reset differential Rx gains in NIC to prepare for chain noise calibration. | 655 | /* Reset differential Rx gains in NIC to prepare for chain noise calibration. |
658 | * Called after every association, but this runs only once! | 656 | * Called after every association, but this runs only once! |
659 | * ... once chain noise is calibrated the first time, it's good forever. */ | 657 | * ... once chain noise is calibrated the first time, it's good forever. */ |
@@ -741,30 +739,6 @@ static void iwl4965_gain_computation(struct iwl_priv *priv, | |||
741 | data->beacon_count = 0; | 739 | data->beacon_count = 0; |
742 | } | 740 | } |
743 | 741 | ||
744 | static void iwl4965_bg_sensitivity_work(struct work_struct *work) | ||
745 | { | ||
746 | struct iwl_priv *priv = container_of(work, struct iwl_priv, | ||
747 | sensitivity_work); | ||
748 | |||
749 | mutex_lock(&priv->mutex); | ||
750 | |||
751 | if (test_bit(STATUS_EXIT_PENDING, &priv->status) || | ||
752 | test_bit(STATUS_SCANNING, &priv->status)) { | ||
753 | mutex_unlock(&priv->mutex); | ||
754 | return; | ||
755 | } | ||
756 | |||
757 | if (priv->start_calib) { | ||
758 | iwl_chain_noise_calibration(priv, &priv->statistics); | ||
759 | |||
760 | iwl_sensitivity_calibration(priv, &priv->statistics); | ||
761 | } | ||
762 | |||
763 | mutex_unlock(&priv->mutex); | ||
764 | return; | ||
765 | } | ||
766 | #endif /*CONFIG_IWL4965_RUN_TIME_CALIB*/ | ||
767 | |||
768 | static void iwl4965_bg_txpower_work(struct work_struct *work) | 742 | static void iwl4965_bg_txpower_work(struct work_struct *work) |
769 | { | 743 | { |
770 | struct iwl_priv *priv = container_of(work, struct iwl_priv, | 744 | struct iwl_priv *priv = container_of(work, struct iwl_priv, |
@@ -920,7 +894,6 @@ int iwl4965_alive_notify(struct iwl_priv *priv) | |||
920 | return ret; | 894 | return ret; |
921 | } | 895 | } |
922 | 896 | ||
923 | #ifdef CONFIG_IWL4965_RUN_TIME_CALIB | ||
924 | static struct iwl_sensitivity_ranges iwl4965_sensitivity = { | 897 | static struct iwl_sensitivity_ranges iwl4965_sensitivity = { |
925 | .min_nrg_cck = 97, | 898 | .min_nrg_cck = 97, |
926 | .max_nrg_cck = 0, | 899 | .max_nrg_cck = 0, |
@@ -943,7 +916,6 @@ static struct iwl_sensitivity_ranges iwl4965_sensitivity = { | |||
943 | .nrg_th_cck = 100, | 916 | .nrg_th_cck = 100, |
944 | .nrg_th_ofdm = 100, | 917 | .nrg_th_ofdm = 100, |
945 | }; | 918 | }; |
946 | #endif | ||
947 | 919 | ||
948 | /** | 920 | /** |
949 | * iwl4965_hw_set_hw_params | 921 | * iwl4965_hw_set_hw_params |
@@ -983,9 +955,7 @@ int iwl4965_hw_set_hw_params(struct iwl_priv *priv) | |||
983 | priv->hw_params.valid_rx_ant = ANT_A | ANT_B; | 955 | priv->hw_params.valid_rx_ant = ANT_A | ANT_B; |
984 | priv->hw_params.ct_kill_threshold = CELSIUS_TO_KELVIN(CT_KILL_THRESHOLD); | 956 | priv->hw_params.ct_kill_threshold = CELSIUS_TO_KELVIN(CT_KILL_THRESHOLD); |
985 | 957 | ||
986 | #ifdef CONFIG_IWL4965_RUN_TIME_CALIB | ||
987 | priv->hw_params.sens = &iwl4965_sensitivity; | 958 | priv->hw_params.sens = &iwl4965_sensitivity; |
988 | #endif | ||
989 | 959 | ||
990 | return 0; | 960 | return 0; |
991 | } | 961 | } |
@@ -2123,9 +2093,7 @@ void iwl4965_hw_rx_statistics(struct iwl_priv *priv, | |||
2123 | if (unlikely(!test_bit(STATUS_SCANNING, &priv->status)) && | 2093 | if (unlikely(!test_bit(STATUS_SCANNING, &priv->status)) && |
2124 | (pkt->hdr.cmd == STATISTICS_NOTIFICATION)) { | 2094 | (pkt->hdr.cmd == STATISTICS_NOTIFICATION)) { |
2125 | iwl4965_rx_calc_noise(priv); | 2095 | iwl4965_rx_calc_noise(priv); |
2126 | #ifdef CONFIG_IWL4965_RUN_TIME_CALIB | 2096 | queue_work(priv->workqueue, &priv->run_time_calib_work); |
2127 | queue_work(priv->workqueue, &priv->sensitivity_work); | ||
2128 | #endif | ||
2129 | } | 2097 | } |
2130 | 2098 | ||
2131 | iwl_leds_background(priv); | 2099 | iwl_leds_background(priv); |
@@ -3504,9 +3472,6 @@ static void iwl4965_rx_handler_setup(struct iwl_priv *priv) | |||
3504 | void iwl4965_hw_setup_deferred_work(struct iwl_priv *priv) | 3472 | void iwl4965_hw_setup_deferred_work(struct iwl_priv *priv) |
3505 | { | 3473 | { |
3506 | INIT_WORK(&priv->txpower_work, iwl4965_bg_txpower_work); | 3474 | INIT_WORK(&priv->txpower_work, iwl4965_bg_txpower_work); |
3507 | #ifdef CONFIG_IWL4965_RUN_TIME_CALIB | ||
3508 | INIT_WORK(&priv->sensitivity_work, iwl4965_bg_sensitivity_work); | ||
3509 | #endif | ||
3510 | init_timer(&priv->statistics_periodic); | 3475 | init_timer(&priv->statistics_periodic); |
3511 | priv->statistics_periodic.data = (unsigned long)priv; | 3476 | priv->statistics_periodic.data = (unsigned long)priv; |
3512 | priv->statistics_periodic.function = iwl4965_bg_statistics_periodic; | 3477 | priv->statistics_periodic.function = iwl4965_bg_statistics_periodic; |
@@ -3527,10 +3492,8 @@ static struct iwl_hcmd_ops iwl4965_hcmd = { | |||
3527 | static struct iwl_hcmd_utils_ops iwl4965_hcmd_utils = { | 3492 | static struct iwl_hcmd_utils_ops iwl4965_hcmd_utils = { |
3528 | .get_hcmd_size = iwl4965_get_hcmd_size, | 3493 | .get_hcmd_size = iwl4965_get_hcmd_size, |
3529 | .build_addsta_hcmd = iwl4965_build_addsta_hcmd, | 3494 | .build_addsta_hcmd = iwl4965_build_addsta_hcmd, |
3530 | #ifdef CONFIG_IWL4965_RUN_TIME_CALIB | ||
3531 | .chain_noise_reset = iwl4965_chain_noise_reset, | 3495 | .chain_noise_reset = iwl4965_chain_noise_reset, |
3532 | .gain_computation = iwl4965_gain_computation, | 3496 | .gain_computation = iwl4965_gain_computation, |
3533 | #endif | ||
3534 | }; | 3497 | }; |
3535 | 3498 | ||
3536 | static struct iwl_lib_ops iwl4965_lib = { | 3499 | static struct iwl_lib_ops iwl4965_lib = { |
diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c index 65484779bd3d..fc8ad7326edd 100644 --- a/drivers/net/wireless/iwlwifi/iwl-5000.c +++ b/drivers/net/wireless/iwlwifi/iwl-5000.c | |||
@@ -300,8 +300,6 @@ err: | |||
300 | 300 | ||
301 | } | 301 | } |
302 | 302 | ||
303 | #ifdef CONFIG_IWL5000_RUN_TIME_CALIB | ||
304 | |||
305 | static void iwl5000_gain_computation(struct iwl_priv *priv, | 303 | static void iwl5000_gain_computation(struct iwl_priv *priv, |
306 | u32 average_noise[NUM_RX_CHAINS], | 304 | u32 average_noise[NUM_RX_CHAINS], |
307 | u16 min_average_noise_antenna_i, | 305 | u16 min_average_noise_antenna_i, |
@@ -354,7 +352,6 @@ static void iwl5000_gain_computation(struct iwl_priv *priv, | |||
354 | data->beacon_count = 0; | 352 | data->beacon_count = 0; |
355 | } | 353 | } |
356 | 354 | ||
357 | |||
358 | static void iwl5000_chain_noise_reset(struct iwl_priv *priv) | 355 | static void iwl5000_chain_noise_reset(struct iwl_priv *priv) |
359 | { | 356 | { |
360 | struct iwl_chain_noise_data *data = &priv->chain_noise_data; | 357 | struct iwl_chain_noise_data *data = &priv->chain_noise_data; |
@@ -393,10 +390,6 @@ static struct iwl_sensitivity_ranges iwl5000_sensitivity = { | |||
393 | .nrg_th_ofdm = 95, | 390 | .nrg_th_ofdm = 95, |
394 | }; | 391 | }; |
395 | 392 | ||
396 | #endif /* CONFIG_IWL5000_RUN_TIME_CALIB */ | ||
397 | |||
398 | |||
399 | |||
400 | static const u8 *iwl5000_eeprom_query_addr(const struct iwl_priv *priv, | 393 | static const u8 *iwl5000_eeprom_query_addr(const struct iwl_priv *priv, |
401 | size_t offset) | 394 | size_t offset) |
402 | { | 395 | { |
@@ -847,9 +840,7 @@ static int iwl5000_hw_set_hw_params(struct iwl_priv *priv) | |||
847 | priv->hw_params.max_bsm_size = BSM_SRAM_SIZE; | 840 | priv->hw_params.max_bsm_size = BSM_SRAM_SIZE; |
848 | priv->hw_params.fat_channel = BIT(IEEE80211_BAND_2GHZ) | | 841 | priv->hw_params.fat_channel = BIT(IEEE80211_BAND_2GHZ) | |
849 | BIT(IEEE80211_BAND_5GHZ); | 842 | BIT(IEEE80211_BAND_5GHZ); |
850 | #ifdef CONFIG_IWL5000_RUN_TIME_CALIB | ||
851 | priv->hw_params.sens = &iwl5000_sensitivity; | 843 | priv->hw_params.sens = &iwl5000_sensitivity; |
852 | #endif | ||
853 | 844 | ||
854 | switch (priv->hw_rev & CSR_HW_REV_TYPE_MSK) { | 845 | switch (priv->hw_rev & CSR_HW_REV_TYPE_MSK) { |
855 | case CSR_HW_REV_TYPE_5100: | 846 | case CSR_HW_REV_TYPE_5100: |
@@ -1309,10 +1300,8 @@ static struct iwl_hcmd_ops iwl5000_hcmd = { | |||
1309 | static struct iwl_hcmd_utils_ops iwl5000_hcmd_utils = { | 1300 | static struct iwl_hcmd_utils_ops iwl5000_hcmd_utils = { |
1310 | .get_hcmd_size = iwl5000_get_hcmd_size, | 1301 | .get_hcmd_size = iwl5000_get_hcmd_size, |
1311 | .build_addsta_hcmd = iwl5000_build_addsta_hcmd, | 1302 | .build_addsta_hcmd = iwl5000_build_addsta_hcmd, |
1312 | #ifdef CONFIG_IWL5000_RUN_TIME_CALIB | ||
1313 | .gain_computation = iwl5000_gain_computation, | 1303 | .gain_computation = iwl5000_gain_computation, |
1314 | .chain_noise_reset = iwl5000_chain_noise_reset, | 1304 | .chain_noise_reset = iwl5000_chain_noise_reset, |
1315 | #endif | ||
1316 | }; | 1305 | }; |
1317 | 1306 | ||
1318 | static struct iwl_lib_ops iwl5000_lib = { | 1307 | static struct iwl_lib_ops iwl5000_lib = { |
diff --git a/drivers/net/wireless/iwlwifi/iwl-calib.c b/drivers/net/wireless/iwlwifi/iwl-calib.c index a6c7f0d9a414..72242a4ede8c 100644 --- a/drivers/net/wireless/iwlwifi/iwl-calib.c +++ b/drivers/net/wireless/iwlwifi/iwl-calib.c | |||
@@ -435,8 +435,6 @@ void iwl_init_sensitivity(struct iwl_priv *priv) | |||
435 | data = &(priv->sensitivity_data); | 435 | data = &(priv->sensitivity_data); |
436 | 436 | ||
437 | if (ranges == NULL) | 437 | if (ranges == NULL) |
438 | /* can happen if IWLWIFI_RUN_TIME_CALIB is selected | ||
439 | * but no IWLXXXX_RUN_TIME_CALIB for specific is selected */ | ||
440 | return; | 438 | return; |
441 | 439 | ||
442 | memset(data, 0, sizeof(struct iwl_sensitivity_data)); | 440 | memset(data, 0, sizeof(struct iwl_sensitivity_data)); |
diff --git a/drivers/net/wireless/iwlwifi/iwl-calib.h b/drivers/net/wireless/iwlwifi/iwl-calib.h index b8e57c59eac8..45f37cb2bfe2 100644 --- a/drivers/net/wireless/iwlwifi/iwl-calib.h +++ b/drivers/net/wireless/iwlwifi/iwl-calib.h | |||
@@ -71,7 +71,6 @@ | |||
71 | #include "iwl-core.h" | 71 | #include "iwl-core.h" |
72 | #include "iwl-dev.h" | 72 | #include "iwl-dev.h" |
73 | 73 | ||
74 | #ifdef CONFIG_IWLWIFI_RUN_TIME_CALIB | ||
75 | void iwl_chain_noise_calibration(struct iwl_priv *priv, | 74 | void iwl_chain_noise_calibration(struct iwl_priv *priv, |
76 | struct iwl4965_notif_statistics *stat_resp); | 75 | struct iwl4965_notif_statistics *stat_resp); |
77 | void iwl_sensitivity_calibration(struct iwl_priv *priv, | 76 | void iwl_sensitivity_calibration(struct iwl_priv *priv, |
@@ -86,24 +85,5 @@ static inline void iwl_chain_noise_reset(struct iwl_priv *priv) | |||
86 | priv->cfg->ops->utils->chain_noise_reset) | 85 | priv->cfg->ops->utils->chain_noise_reset) |
87 | priv->cfg->ops->utils->chain_noise_reset(priv); | 86 | priv->cfg->ops->utils->chain_noise_reset(priv); |
88 | } | 87 | } |
89 | #else | ||
90 | static inline void iwl_chain_noise_calibration(struct iwl_priv *priv, | ||
91 | struct iwl4965_notif_statistics *stat_resp) | ||
92 | { | ||
93 | } | ||
94 | static inline void iwl_sensitivity_calibration(struct iwl_priv *priv, | ||
95 | struct iwl4965_notif_statistics *resp) | ||
96 | { | ||
97 | } | ||
98 | static inline void iwl_init_sensitivity(struct iwl_priv *priv) | ||
99 | { | ||
100 | } | ||
101 | static inline void iwl_chain_noise_reset(struct iwl_priv *priv) | ||
102 | { | ||
103 | } | ||
104 | static inline void iwl_reset_run_time_calib(struct iwl_priv *priv) | ||
105 | { | ||
106 | } | ||
107 | #endif | ||
108 | 88 | ||
109 | #endif /* __iwl_calib_h__ */ | 89 | #endif /* __iwl_calib_h__ */ |
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.h b/drivers/net/wireless/iwlwifi/iwl-core.h index d9c5bd13e781..192cda24a411 100644 --- a/drivers/net/wireless/iwlwifi/iwl-core.h +++ b/drivers/net/wireless/iwlwifi/iwl-core.h | |||
@@ -88,13 +88,11 @@ struct iwl_hcmd_ops { | |||
88 | struct iwl_hcmd_utils_ops { | 88 | struct iwl_hcmd_utils_ops { |
89 | u16 (*get_hcmd_size)(u8 cmd_id, u16 len); | 89 | u16 (*get_hcmd_size)(u8 cmd_id, u16 len); |
90 | u16 (*build_addsta_hcmd)(const struct iwl_addsta_cmd *cmd, u8 *data); | 90 | u16 (*build_addsta_hcmd)(const struct iwl_addsta_cmd *cmd, u8 *data); |
91 | #ifdef CONFIG_IWLWIFI_RUN_TIME_CALIB | ||
92 | void (*gain_computation)(struct iwl_priv *priv, | 91 | void (*gain_computation)(struct iwl_priv *priv, |
93 | u32 *average_noise, | 92 | u32 *average_noise, |
94 | u16 min_average_noise_antennat_i, | 93 | u16 min_average_noise_antennat_i, |
95 | u32 min_average_noise); | 94 | u32 min_average_noise); |
96 | void (*chain_noise_reset)(struct iwl_priv *priv); | 95 | void (*chain_noise_reset)(struct iwl_priv *priv); |
97 | #endif | ||
98 | }; | 96 | }; |
99 | 97 | ||
100 | struct iwl_lib_ops { | 98 | struct iwl_lib_ops { |
diff --git a/drivers/net/wireless/iwlwifi/iwl-debug.h b/drivers/net/wireless/iwlwifi/iwl-debug.h index 11de561c7bf8..48563a07795a 100644 --- a/drivers/net/wireless/iwlwifi/iwl-debug.h +++ b/drivers/net/wireless/iwlwifi/iwl-debug.h | |||
@@ -55,10 +55,8 @@ struct iwl_debugfs { | |||
55 | struct dentry *file_log_event; | 55 | struct dentry *file_log_event; |
56 | } dbgfs_data_files; | 56 | } dbgfs_data_files; |
57 | struct dir_rf_files { | 57 | struct dir_rf_files { |
58 | #ifdef CONFIG_IWLWIFI_RUN_TIME_CALIB | ||
59 | struct dentry *file_disable_sensitivity; | 58 | struct dentry *file_disable_sensitivity; |
60 | struct dentry *file_disable_chain_noise; | 59 | struct dentry *file_disable_chain_noise; |
61 | #endif /* CONFIG_IWLWIFI_RUN_TIME_CALIB */ | ||
62 | } dbgfs_rf_files; | 60 | } dbgfs_rf_files; |
63 | u32 sram_offset; | 61 | u32 sram_offset; |
64 | u32 sram_len; | 62 | u32 sram_len; |
diff --git a/drivers/net/wireless/iwlwifi/iwl-debugfs.c b/drivers/net/wireless/iwlwifi/iwl-debugfs.c index d5f9df176bab..da6dcb20b5e8 100644 --- a/drivers/net/wireless/iwlwifi/iwl-debugfs.c +++ b/drivers/net/wireless/iwlwifi/iwl-debugfs.c | |||
@@ -385,11 +385,9 @@ int iwl_dbgfs_register(struct iwl_priv *priv, const char *name) | |||
385 | DEBUGFS_ADD_FILE(stations, data); | 385 | DEBUGFS_ADD_FILE(stations, data); |
386 | DEBUGFS_ADD_FILE(rx_statistics, data); | 386 | DEBUGFS_ADD_FILE(rx_statistics, data); |
387 | DEBUGFS_ADD_FILE(tx_statistics, data); | 387 | DEBUGFS_ADD_FILE(tx_statistics, data); |
388 | #ifdef CONFIG_IWLWIFI_RUN_TIME_CALIB | ||
389 | DEBUGFS_ADD_BOOL(disable_sensitivity, rf, &priv->disable_sens_cal); | 388 | DEBUGFS_ADD_BOOL(disable_sensitivity, rf, &priv->disable_sens_cal); |
390 | DEBUGFS_ADD_BOOL(disable_chain_noise, rf, | 389 | DEBUGFS_ADD_BOOL(disable_chain_noise, rf, |
391 | &priv->disable_chain_noise_cal); | 390 | &priv->disable_chain_noise_cal); |
392 | #endif /* CONFIG_IWLWIFI_RUN_TIME_CALIB */ | ||
393 | return 0; | 391 | return 0; |
394 | 392 | ||
395 | err: | 393 | err: |
@@ -415,10 +413,8 @@ void iwl_dbgfs_unregister(struct iwl_priv *priv) | |||
415 | DEBUGFS_REMOVE(priv->dbgfs->dbgfs_data_files.file_log_event); | 413 | DEBUGFS_REMOVE(priv->dbgfs->dbgfs_data_files.file_log_event); |
416 | DEBUGFS_REMOVE(priv->dbgfs->dbgfs_data_files.file_stations); | 414 | DEBUGFS_REMOVE(priv->dbgfs->dbgfs_data_files.file_stations); |
417 | DEBUGFS_REMOVE(priv->dbgfs->dir_data); | 415 | DEBUGFS_REMOVE(priv->dbgfs->dir_data); |
418 | #ifdef CONFIG_IWLWIFI_RUN_TIME_CALIB | ||
419 | DEBUGFS_REMOVE(priv->dbgfs->dbgfs_rf_files.file_disable_sensitivity); | 416 | DEBUGFS_REMOVE(priv->dbgfs->dbgfs_rf_files.file_disable_sensitivity); |
420 | DEBUGFS_REMOVE(priv->dbgfs->dbgfs_rf_files.file_disable_chain_noise); | 417 | DEBUGFS_REMOVE(priv->dbgfs->dbgfs_rf_files.file_disable_chain_noise); |
421 | #endif /* CONFIG_IWLWIFI_RUN_TIME_CALIB */ | ||
422 | DEBUGFS_REMOVE(priv->dbgfs->dir_rf); | 418 | DEBUGFS_REMOVE(priv->dbgfs->dir_rf); |
423 | DEBUGFS_REMOVE(priv->dbgfs->dir_drv); | 419 | DEBUGFS_REMOVE(priv->dbgfs->dir_drv); |
424 | kfree(priv->dbgfs); | 420 | kfree(priv->dbgfs); |
diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h index 59a6960f41b3..631931c155a1 100644 --- a/drivers/net/wireless/iwlwifi/iwl-dev.h +++ b/drivers/net/wireless/iwlwifi/iwl-dev.h | |||
@@ -602,9 +602,7 @@ struct iwl_hw_params { | |||
602 | u32 max_data_size; | 602 | u32 max_data_size; |
603 | u32 max_bsm_size; | 603 | u32 max_bsm_size; |
604 | u32 ct_kill_threshold; /* value in hw-dependent units */ | 604 | u32 ct_kill_threshold; /* value in hw-dependent units */ |
605 | #ifdef CONFIG_IWLWIFI_RUN_TIME_CALIB | ||
606 | const struct iwl_sensitivity_ranges *sens; | 605 | const struct iwl_sensitivity_ranges *sens; |
607 | #endif | ||
608 | }; | 606 | }; |
609 | 607 | ||
610 | #define HT_SHORT_GI_20MHZ (1 << 0) | 608 | #define HT_SHORT_GI_20MHZ (1 << 0) |
@@ -882,7 +880,6 @@ enum ucode_type { | |||
882 | UCODE_RT | 880 | UCODE_RT |
883 | }; | 881 | }; |
884 | 882 | ||
885 | #ifdef CONFIG_IWLWIFI_RUN_TIME_CALIB | ||
886 | /* Sensitivity calib data */ | 883 | /* Sensitivity calib data */ |
887 | struct iwl_sensitivity_data { | 884 | struct iwl_sensitivity_data { |
888 | u32 auto_corr_ofdm; | 885 | u32 auto_corr_ofdm; |
@@ -924,7 +921,6 @@ struct iwl_chain_noise_data { | |||
924 | u8 delta_gain_code[NUM_RX_CHAINS]; | 921 | u8 delta_gain_code[NUM_RX_CHAINS]; |
925 | u8 radio_write; | 922 | u8 radio_write; |
926 | }; | 923 | }; |
927 | #endif /* CONFIG_IWLWIFI_RUN_TIME_CALIB */ | ||
928 | 924 | ||
929 | #define EEPROM_SEM_TIMEOUT 10 /* milliseconds */ | 925 | #define EEPROM_SEM_TIMEOUT 10 /* milliseconds */ |
930 | #define EEPROM_SEM_RETRY_LIMIT 1000 /* number of attempts (not time) */ | 926 | #define EEPROM_SEM_RETRY_LIMIT 1000 /* number of attempts (not time) */ |
@@ -1057,11 +1053,9 @@ struct iwl_priv { | |||
1057 | u8 assoc_station_added; | 1053 | u8 assoc_station_added; |
1058 | u8 use_ant_b_for_management_frame; /* Tx antenna selection */ | 1054 | u8 use_ant_b_for_management_frame; /* Tx antenna selection */ |
1059 | u8 start_calib; | 1055 | u8 start_calib; |
1060 | #ifdef CONFIG_IWLWIFI_RUN_TIME_CALIB | ||
1061 | struct iwl_sensitivity_data sensitivity_data; | 1056 | struct iwl_sensitivity_data sensitivity_data; |
1062 | struct iwl_chain_noise_data chain_noise_data; | 1057 | struct iwl_chain_noise_data chain_noise_data; |
1063 | __le16 sensitivity_tbl[HD_TABLE_SIZE]; | 1058 | __le16 sensitivity_tbl[HD_TABLE_SIZE]; |
1064 | #endif /*CONFIG_IWLWIFI_RUN_TIME_CALIB*/ | ||
1065 | 1059 | ||
1066 | struct iwl_ht_info current_ht_config; | 1060 | struct iwl_ht_info current_ht_config; |
1067 | u8 last_phy_res[100]; | 1061 | u8 last_phy_res[100]; |
@@ -1211,13 +1205,9 @@ struct iwl_priv { | |||
1211 | #endif /* CONFIG_IWLWIFI_DEBUG */ | 1205 | #endif /* CONFIG_IWLWIFI_DEBUG */ |
1212 | 1206 | ||
1213 | struct work_struct txpower_work; | 1207 | struct work_struct txpower_work; |
1214 | #ifdef CONFIG_IWLWIFI_RUN_TIME_CALIB | ||
1215 | u32 disable_sens_cal; | 1208 | u32 disable_sens_cal; |
1216 | u32 disable_chain_noise_cal; | 1209 | u32 disable_chain_noise_cal; |
1217 | #endif /* CONFIG_IWLWIFI_RUN_TIME_CALIB */ | 1210 | struct work_struct run_time_calib_work; |
1218 | #ifdef CONFIG_IWL4965_RUN_TIME_CALIB | ||
1219 | struct work_struct sensitivity_work; | ||
1220 | #endif /* CONFIG_IWL4965_RUN_TIME_CALIB */ | ||
1221 | struct timer_list statistics_periodic; | 1211 | struct timer_list statistics_periodic; |
1222 | }; /*iwl_priv */ | 1212 | }; /*iwl_priv */ |
1223 | 1213 | ||
diff --git a/drivers/net/wireless/iwlwifi/iwl-rx.c b/drivers/net/wireless/iwlwifi/iwl-rx.c index cc61c937320f..c24844802a88 100644 --- a/drivers/net/wireless/iwlwifi/iwl-rx.c +++ b/drivers/net/wireless/iwlwifi/iwl-rx.c | |||
@@ -451,7 +451,6 @@ void iwl_rx_missed_beacon_notif(struct iwl_priv *priv, | |||
451 | struct iwl_rx_mem_buffer *rxb) | 451 | struct iwl_rx_mem_buffer *rxb) |
452 | 452 | ||
453 | { | 453 | { |
454 | #ifdef CONFIG_IWLWIFI_RUN_TIME_CALIB | ||
455 | struct iwl_rx_packet *pkt = (struct iwl_rx_packet *)rxb->skb->data; | 454 | struct iwl_rx_packet *pkt = (struct iwl_rx_packet *)rxb->skb->data; |
456 | struct iwl4965_missed_beacon_notif *missed_beacon; | 455 | struct iwl4965_missed_beacon_notif *missed_beacon; |
457 | 456 | ||
@@ -465,6 +464,5 @@ void iwl_rx_missed_beacon_notif(struct iwl_priv *priv, | |||
465 | if (!test_bit(STATUS_SCANNING, &priv->status)) | 464 | if (!test_bit(STATUS_SCANNING, &priv->status)) |
466 | iwl_init_sensitivity(priv); | 465 | iwl_init_sensitivity(priv); |
467 | } | 466 | } |
468 | #endif /* CONFIG_IWLWIFI_RUN_TIME_CALIB */ | ||
469 | } | 467 | } |
470 | EXPORT_SYMBOL(iwl_rx_missed_beacon_notif); | 468 | EXPORT_SYMBOL(iwl_rx_missed_beacon_notif); |
diff --git a/drivers/net/wireless/iwlwifi/iwl4965-base.c b/drivers/net/wireless/iwlwifi/iwl4965-base.c index 88229e25837a..a8dfdcbb8b43 100644 --- a/drivers/net/wireless/iwlwifi/iwl4965-base.c +++ b/drivers/net/wireless/iwlwifi/iwl4965-base.c | |||
@@ -3423,6 +3423,29 @@ static void iwl4965_bg_request_scan(struct work_struct *data) | |||
3423 | mutex_unlock(&priv->mutex); | 3423 | mutex_unlock(&priv->mutex); |
3424 | } | 3424 | } |
3425 | 3425 | ||
3426 | static void iwl_bg_run_time_calib_work(struct work_struct *work) | ||
3427 | { | ||
3428 | struct iwl_priv *priv = container_of(work, struct iwl_priv, | ||
3429 | run_time_calib_work); | ||
3430 | |||
3431 | mutex_lock(&priv->mutex); | ||
3432 | |||
3433 | if (test_bit(STATUS_EXIT_PENDING, &priv->status) || | ||
3434 | test_bit(STATUS_SCANNING, &priv->status)) { | ||
3435 | mutex_unlock(&priv->mutex); | ||
3436 | return; | ||
3437 | } | ||
3438 | |||
3439 | if (priv->start_calib) { | ||
3440 | iwl_chain_noise_calibration(priv, &priv->statistics); | ||
3441 | |||
3442 | iwl_sensitivity_calibration(priv, &priv->statistics); | ||
3443 | } | ||
3444 | |||
3445 | mutex_unlock(&priv->mutex); | ||
3446 | return; | ||
3447 | } | ||
3448 | |||
3426 | static void iwl4965_bg_up(struct work_struct *data) | 3449 | static void iwl4965_bg_up(struct work_struct *data) |
3427 | { | 3450 | { |
3428 | struct iwl_priv *priv = container_of(data, struct iwl_priv, up); | 3451 | struct iwl_priv *priv = container_of(data, struct iwl_priv, up); |
@@ -5014,6 +5037,7 @@ static void iwl4965_setup_deferred_work(struct iwl_priv *priv) | |||
5014 | INIT_WORK(&priv->rf_kill, iwl4965_bg_rf_kill); | 5037 | INIT_WORK(&priv->rf_kill, iwl4965_bg_rf_kill); |
5015 | INIT_WORK(&priv->beacon_update, iwl4965_bg_beacon_update); | 5038 | INIT_WORK(&priv->beacon_update, iwl4965_bg_beacon_update); |
5016 | INIT_WORK(&priv->set_monitor, iwl4965_bg_set_monitor); | 5039 | INIT_WORK(&priv->set_monitor, iwl4965_bg_set_monitor); |
5040 | INIT_WORK(&priv->run_time_calib_work, iwl_bg_run_time_calib_work); | ||
5017 | INIT_DELAYED_WORK(&priv->post_associate, iwl4965_bg_post_associate); | 5041 | INIT_DELAYED_WORK(&priv->post_associate, iwl4965_bg_post_associate); |
5018 | INIT_DELAYED_WORK(&priv->init_alive_start, iwl_bg_init_alive_start); | 5042 | INIT_DELAYED_WORK(&priv->init_alive_start, iwl_bg_init_alive_start); |
5019 | INIT_DELAYED_WORK(&priv->alive_start, iwl_bg_alive_start); | 5043 | INIT_DELAYED_WORK(&priv->alive_start, iwl_bg_alive_start); |