aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-dev.h
diff options
context:
space:
mode:
authorTrieu 'Andrew' Nguyen <trieux.t.nguyen@intel.com>2010-01-22 17:22:46 -0500
committerJohn W. Linville <linville@tuxdriver.com>2010-01-25 16:36:21 -0500
commit3e4fb5faefb57824f2e42305b3d5907845af978c (patch)
treea9cb64dff2fea16e290ab29eb4260c973d52e88f /drivers/net/wireless/iwlwifi/iwl-dev.h
parentd4d59e88cb746165c6fe33eacb6f582d525c6ef1 (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-dev.h')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-dev.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h
index 86d38ae2ec7..a1f3ecb69ed 100644
--- a/drivers/net/wireless/iwlwifi/iwl-dev.h
+++ b/drivers/net/wireless/iwlwifi/iwl-dev.h
@@ -1026,6 +1026,15 @@ struct iwl_event_log {
1026#define IWL_HOST_INT_CALIB_TIMEOUT_DEF (0x10) 1026#define IWL_HOST_INT_CALIB_TIMEOUT_DEF (0x10)
1027#define IWL_HOST_INT_CALIB_TIMEOUT_MIN (0x0) 1027#define IWL_HOST_INT_CALIB_TIMEOUT_MIN (0x0)
1028 1028
1029/*
1030 * This is the threshold value of plcp error rate per 100mSecs. It is
1031 * used to set and check for the validity of plcp_delta.
1032 */
1033#define IWL_MAX_PLCP_ERR_THRESHOLD_MIN (0)
1034#define IWL_MAX_PLCP_ERR_THRESHOLD_DEF (50)
1035#define IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF (100)
1036#define IWL_MAX_PLCP_ERR_THRESHOLD_MAX (255)
1037
1029struct iwl_priv { 1038struct iwl_priv {
1030 1039
1031 /* ieee device used by generic ieee processing code */ 1040 /* ieee device used by generic ieee processing code */
@@ -1055,6 +1064,9 @@ struct iwl_priv {
1055 u32 ucode_beacon_time; 1064 u32 ucode_beacon_time;
1056 int missed_beacon_threshold; 1065 int missed_beacon_threshold;
1057 1066
1067 /* storing the jiffies when the plcp error rate is received */
1068 unsigned long plcp_jiffies;
1069
1058 /* we allocate array of iwl4965_channel_info for NIC's valid channels. 1070 /* we allocate array of iwl4965_channel_info for NIC's valid channels.
1059 * Access via channel # using indirect index array */ 1071 * Access via channel # using indirect index array */
1060 struct iwl_channel_info *channel_info; /* channel info array */ 1072 struct iwl_channel_info *channel_info; /* channel info array */