Commit 680788ac authored by Wey-Yi Guy's avatar Wey-Yi Guy Committed by Reinette Chatre

iwlwifi: add a mechanism to disable plcp error checking

For some devices, especially the upcoming new devices, the plcp error
rate is different. Before the correct error rate can be determine, also
for the debugging purpose; add the mechanism to disable plcp error checking
which cause radio reset happen.
Signed-off-by: default avatarWey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: default avatarReinette Chatre <reinette.chatre@intel.com>
parent 178d1596
...@@ -406,6 +406,11 @@ static bool iwl3945_good_plcp_health(struct iwl_priv *priv, ...@@ -406,6 +406,11 @@ static bool iwl3945_good_plcp_health(struct iwl_priv *priv,
unsigned int plcp_msec; unsigned int plcp_msec;
unsigned long plcp_received_jiffies; unsigned long plcp_received_jiffies;
if (priv->cfg->plcp_delta_threshold ==
IWL_MAX_PLCP_ERR_THRESHOLD_DISABLE) {
IWL_DEBUG_RADIO(priv, "plcp_err check disabled\n");
return rc;
}
memcpy(&current_stat, pkt->u.raw, sizeof(struct memcpy(&current_stat, pkt->u.raw, sizeof(struct
iwl3945_notif_statistics)); iwl3945_notif_statistics));
/* /*
......
...@@ -166,6 +166,12 @@ bool iwl_good_plcp_health(struct iwl_priv *priv, ...@@ -166,6 +166,12 @@ bool iwl_good_plcp_health(struct iwl_priv *priv,
unsigned int plcp_msec; unsigned int plcp_msec;
unsigned long plcp_received_jiffies; unsigned long plcp_received_jiffies;
if (priv->cfg->plcp_delta_threshold ==
IWL_MAX_PLCP_ERR_THRESHOLD_DISABLE) {
IWL_DEBUG_RADIO(priv, "plcp_err check disabled\n");
return rc;
}
/* /*
* check for plcp_err and trigger radio reset if it exceeds * check for plcp_err and trigger radio reset if it exceeds
* the plcp error threshold plcp_delta. * the plcp error threshold plcp_delta.
......
...@@ -1430,10 +1430,10 @@ static ssize_t iwl_dbgfs_plcp_delta_write(struct file *file, ...@@ -1430,10 +1430,10 @@ static ssize_t iwl_dbgfs_plcp_delta_write(struct file *file,
return -EFAULT; return -EFAULT;
if (sscanf(buf, "%d", &plcp) != 1) if (sscanf(buf, "%d", &plcp) != 1)
return -EINVAL; return -EINVAL;
if ((plcp <= IWL_MAX_PLCP_ERR_THRESHOLD_MIN) || if ((plcp < IWL_MAX_PLCP_ERR_THRESHOLD_MIN) ||
(plcp > IWL_MAX_PLCP_ERR_THRESHOLD_MAX)) (plcp > IWL_MAX_PLCP_ERR_THRESHOLD_MAX))
priv->cfg->plcp_delta_threshold = priv->cfg->plcp_delta_threshold =
IWL_MAX_PLCP_ERR_THRESHOLD_DEF; IWL_MAX_PLCP_ERR_THRESHOLD_DISABLE;
else else
priv->cfg->plcp_delta_threshold = plcp; priv->cfg->plcp_delta_threshold = plcp;
return count; return count;
......
...@@ -1036,11 +1036,12 @@ struct iwl_event_log { ...@@ -1036,11 +1036,12 @@ struct iwl_event_log {
* This is the threshold value of plcp error rate per 100mSecs. It is * This is the threshold value of plcp error rate per 100mSecs. It is
* used to set and check for the validity of plcp_delta. * used to set and check for the validity of plcp_delta.
*/ */
#define IWL_MAX_PLCP_ERR_THRESHOLD_MIN (0) #define IWL_MAX_PLCP_ERR_THRESHOLD_MIN (1)
#define IWL_MAX_PLCP_ERR_THRESHOLD_DEF (50) #define IWL_MAX_PLCP_ERR_THRESHOLD_DEF (50)
#define IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF (100) #define IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF (100)
#define IWL_MAX_PLCP_ERR_EXT_LONG_THRESHOLD_DEF (200) #define IWL_MAX_PLCP_ERR_EXT_LONG_THRESHOLD_DEF (200)
#define IWL_MAX_PLCP_ERR_THRESHOLD_MAX (255) #define IWL_MAX_PLCP_ERR_THRESHOLD_MAX (255)
#define IWL_MAX_PLCP_ERR_THRESHOLD_DISABLE (0)
#define IWL_DELAY_NEXT_FORCE_RF_RESET (HZ*3) #define IWL_DELAY_NEXT_FORCE_RF_RESET (HZ*3)
#define IWL_DELAY_NEXT_FORCE_FW_RELOAD (HZ*5) #define IWL_DELAY_NEXT_FORCE_FW_RELOAD (HZ*5)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment