diff options
author | Trieu 'Andrew' Nguyen <trieux.t.nguyen@intel.com> | 2010-01-22 17:22:46 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-01-25 16:36:21 -0500 |
commit | 3e4fb5faefb57824f2e42305b3d5907845af978c (patch) | |
tree | a9cb64dff2fea16e290ab29eb4260c973d52e88f /drivers/net/wireless/iwlwifi/iwl-6000.c | |
parent | d4d59e88cb746165c6fe33eacb6f582d525c6ef1 (diff) |
iwlwifi: Tune radio to prevent unexpected behavior
We have seen the throughput dropped due to external noisy environment
and the radio is out of tune. There are lot of plcp errors indicating
this condition. Eventually the station can get de-authenticated by the
Access Point. By resetting and tuning the radio, the plcp errors are
reduced or eliminated and the throughput starts to rise.
To prevent unexpected behavior such as drop in throughput or deauthentication,
- The change provides the driver feature to monitor and tune the radio base on
the statistics notification from the uCode.
- It also allows the setting of the plcp error rate threshold via
the plcp_delta under debugfs interface.
Signed-off-by: Trieu 'Andrew' Nguyen <trieux.t.nguyen@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-6000.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-6000.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-6000.c b/drivers/net/wireless/iwlwifi/iwl-6000.c index 4dab7f12e725..b191c634ad92 100644 --- a/drivers/net/wireless/iwlwifi/iwl-6000.c +++ b/drivers/net/wireless/iwlwifi/iwl-6000.c | |||
@@ -308,6 +308,7 @@ struct iwl_cfg iwl6000i_2agn_cfg = { | |||
308 | .supports_idle = true, | 308 | .supports_idle = true, |
309 | .adv_thermal_throttle = true, | 309 | .adv_thermal_throttle = true, |
310 | .support_ct_kill_exit = true, | 310 | .support_ct_kill_exit = true, |
311 | .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF, | ||
311 | }; | 312 | }; |
312 | 313 | ||
313 | struct iwl_cfg iwl6000i_2abg_cfg = { | 314 | struct iwl_cfg iwl6000i_2abg_cfg = { |
@@ -337,6 +338,7 @@ struct iwl_cfg iwl6000i_2abg_cfg = { | |||
337 | .supports_idle = true, | 338 | .supports_idle = true, |
338 | .adv_thermal_throttle = true, | 339 | .adv_thermal_throttle = true, |
339 | .support_ct_kill_exit = true, | 340 | .support_ct_kill_exit = true, |
341 | .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF, | ||
340 | }; | 342 | }; |
341 | 343 | ||
342 | struct iwl_cfg iwl6000i_2bg_cfg = { | 344 | struct iwl_cfg iwl6000i_2bg_cfg = { |
@@ -366,6 +368,7 @@ struct iwl_cfg iwl6000i_2bg_cfg = { | |||
366 | .supports_idle = true, | 368 | .supports_idle = true, |
367 | .adv_thermal_throttle = true, | 369 | .adv_thermal_throttle = true, |
368 | .support_ct_kill_exit = true, | 370 | .support_ct_kill_exit = true, |
371 | .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF, | ||
369 | }; | 372 | }; |
370 | 373 | ||
371 | struct iwl_cfg iwl6050_2agn_cfg = { | 374 | struct iwl_cfg iwl6050_2agn_cfg = { |
@@ -396,6 +399,7 @@ struct iwl_cfg iwl6050_2agn_cfg = { | |||
396 | .supports_idle = true, | 399 | .supports_idle = true, |
397 | .adv_thermal_throttle = true, | 400 | .adv_thermal_throttle = true, |
398 | .support_ct_kill_exit = true, | 401 | .support_ct_kill_exit = true, |
402 | .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF, | ||
399 | }; | 403 | }; |
400 | 404 | ||
401 | struct iwl_cfg iwl6050_2abg_cfg = { | 405 | struct iwl_cfg iwl6050_2abg_cfg = { |
@@ -425,6 +429,7 @@ struct iwl_cfg iwl6050_2abg_cfg = { | |||
425 | .supports_idle = true, | 429 | .supports_idle = true, |
426 | .adv_thermal_throttle = true, | 430 | .adv_thermal_throttle = true, |
427 | .support_ct_kill_exit = true, | 431 | .support_ct_kill_exit = true, |
432 | .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF, | ||
428 | }; | 433 | }; |
429 | 434 | ||
430 | struct iwl_cfg iwl6000_3agn_cfg = { | 435 | struct iwl_cfg iwl6000_3agn_cfg = { |
@@ -455,6 +460,7 @@ struct iwl_cfg iwl6000_3agn_cfg = { | |||
455 | .supports_idle = true, | 460 | .supports_idle = true, |
456 | .adv_thermal_throttle = true, | 461 | .adv_thermal_throttle = true, |
457 | .support_ct_kill_exit = true, | 462 | .support_ct_kill_exit = true, |
463 | .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF, | ||
458 | }; | 464 | }; |
459 | 465 | ||
460 | MODULE_FIRMWARE(IWL6000_MODULE_FIRMWARE(IWL6000_UCODE_API_MAX)); | 466 | MODULE_FIRMWARE(IWL6000_MODULE_FIRMWARE(IWL6000_UCODE_API_MAX)); |