mirror of
https://github.com/torvalds/linux.git
synced 2024-12-30 14:52:05 +00:00
iwlwifi: add {ack,plpc}_check module parameters
Add module ack_check, and plcp_check parameters. Ack_check is disabled by default since is proved that check ack health can cause troubles. Plcp_check is enabled by default. Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com> Acked-by: Wey-Yi Guy <wey-yi.w.guy@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
8a032c132b
commit
b7977ffaab
@ -609,6 +609,7 @@ const u8 *iwlagn_eeprom_query_addr(const struct iwl_priv *priv,
|
||||
struct iwl_mod_params iwlagn_mod_params = {
|
||||
.amsdu_size_8K = 1,
|
||||
.restart_fw = 1,
|
||||
.plcp_check = true,
|
||||
/* the rest are 0 by default */
|
||||
};
|
||||
|
||||
|
@ -4785,3 +4785,9 @@ MODULE_PARM_DESC(antenna_coupling,
|
||||
module_param_named(bt_ch_inhibition, iwlagn_bt_ch_announce, bool, S_IRUGO);
|
||||
MODULE_PARM_DESC(bt_ch_inhibition,
|
||||
"Disable BT channel inhibition (default: enable)");
|
||||
|
||||
module_param_named(plcp_check, iwlagn_mod_params.plcp_check, bool, S_IRUGO);
|
||||
MODULE_PARM_DESC(plcp_check, "Check plcp health (default: 1 [enabled])");
|
||||
|
||||
module_param_named(ack_check, iwlagn_mod_params.ack_check, bool, S_IRUGO);
|
||||
MODULE_PARM_DESC(ack_check, "Check ack health (default: 0 [disabled])");
|
||||
|
@ -261,6 +261,8 @@ struct iwl_mod_params {
|
||||
int amsdu_size_8K; /* def: 1 = enable 8K amsdu size */
|
||||
int antenna; /* def: 0 = both antennas (use diversity) */
|
||||
int restart_fw; /* def: 1 = restart firmware */
|
||||
bool plcp_check; /* def: true = enable plcp health check */
|
||||
bool ack_check; /* def: false = disable ack health check */
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -230,18 +230,22 @@ void iwl_rx_spectrum_measure_notif(struct iwl_priv *priv,
|
||||
void iwl_recover_from_statistics(struct iwl_priv *priv,
|
||||
struct iwl_rx_packet *pkt)
|
||||
{
|
||||
const struct iwl_mod_params *mod_params = priv->cfg->mod_params;
|
||||
|
||||
if (test_bit(STATUS_EXIT_PENDING, &priv->status) ||
|
||||
!iwl_is_any_associated(priv))
|
||||
return;
|
||||
|
||||
if (priv->cfg->ops->lib->check_ack_health &&
|
||||
if (mod_params->ack_check &&
|
||||
priv->cfg->ops->lib->check_ack_health &&
|
||||
!priv->cfg->ops->lib->check_ack_health(priv, pkt)) {
|
||||
IWL_ERR(priv, "low ack count detected, restart firmware\n");
|
||||
if (!iwl_force_reset(priv, IWL_FW_RESET, false))
|
||||
return;
|
||||
}
|
||||
|
||||
if (priv->cfg->ops->lib->check_plcp_health &&
|
||||
if (mod_params->plcp_check &&
|
||||
priv->cfg->ops->lib->check_plcp_health &&
|
||||
!priv->cfg->ops->lib->check_plcp_health(priv, pkt))
|
||||
iwl_force_reset(priv, IWL_RF_RESET, false);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user