|
Kyle McMartin |
398aba2 |
From sgruszka@redhat.com Mon Jun 20 10:14:54 2011
|
|
Kyle McMartin |
398aba2 |
From: Stanislaw Gruszka <sgruszka@redhat.com>
|
|
Kyle McMartin |
398aba2 |
To: kernel@lists.fedoraproject.org
|
|
Kyle McMartin |
398aba2 |
Subject: [PATCH 2.6.35 1/3] iwlwifi: add {ack, plpc}_check module parameters
|
|
Kyle McMartin |
398aba2 |
Date: Mon, 20 Jun 2011 16:15:12 +0200
|
|
Kyle McMartin |
398aba2 |
Message-Id: <1308579314-19348-2-git-send-email-sgruszka@redhat.com>
|
|
Kyle McMartin |
398aba2 |
|
|
Kyle McMartin |
398aba2 |
commit b7977ffaab5187ad75edaf04ac854615cea93828 upstream.
|
|
Kyle McMartin |
398aba2 |
|
|
Kyle McMartin |
398aba2 |
Add module ack_check, and plcp_check parameters. Ack_check is disabled
|
|
Kyle McMartin |
398aba2 |
by default since is proved that check ack health can cause troubles.
|
|
Kyle McMartin |
398aba2 |
Plcp_check is enabled by default.
|
|
Kyle McMartin |
398aba2 |
|
|
Kyle McMartin |
398aba2 |
This prevent connection hangs with "low ack count detected" messages.
|
|
Kyle McMartin |
398aba2 |
|
|
Kyle McMartin |
398aba2 |
Resolves:
|
|
Kyle McMartin |
398aba2 |
https://bugzilla.redhat.com/show_bug.cgi?id=666646
|
|
Kyle McMartin |
398aba2 |
|
|
Kyle McMartin |
398aba2 |
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
|
|
Kyle McMartin |
398aba2 |
---
|
|
Kyle McMartin |
398aba2 |
drivers/net/wireless/iwlwifi/iwl-agn-lib.c | 1 +
|
|
Kyle McMartin |
398aba2 |
drivers/net/wireless/iwlwifi/iwl-agn.c | 6 ++++++
|
|
Kyle McMartin |
398aba2 |
drivers/net/wireless/iwlwifi/iwl-core.h | 2 ++
|
|
Kyle McMartin |
398aba2 |
drivers/net/wireless/iwlwifi/iwl-rx.c | 8 ++++++--
|
|
Kyle McMartin |
398aba2 |
4 files changed, 15 insertions(+), 2 deletions(-)
|
|
Kyle McMartin |
398aba2 |
|
|
Kyle McMartin |
398aba2 |
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
|
|
Kyle McMartin |
398aba2 |
index 0f292a2..3a79907 100644
|
|
Kyle McMartin |
398aba2 |
--- a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
|
|
Kyle McMartin |
398aba2 |
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
|
|
Kyle McMartin |
398aba2 |
@@ -387,6 +387,7 @@ const u8 *iwlagn_eeprom_query_addr(const struct iwl_priv *priv,
|
|
Kyle McMartin |
398aba2 |
struct iwl_mod_params iwlagn_mod_params = {
|
|
Kyle McMartin |
398aba2 |
.amsdu_size_8K = 1,
|
|
Kyle McMartin |
398aba2 |
.restart_fw = 1,
|
|
Kyle McMartin |
398aba2 |
+ .plcp_check = true,
|
|
Kyle McMartin |
398aba2 |
/* the rest are 0 by default */
|
|
Kyle McMartin |
398aba2 |
};
|
|
Kyle McMartin |
398aba2 |
|
|
Kyle McMartin |
398aba2 |
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
|
|
Kyle McMartin |
398aba2 |
index 8a2c4d7..6bd11c7 100644
|
|
Kyle McMartin |
398aba2 |
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
|
|
Kyle McMartin |
398aba2 |
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
|
|
Kyle McMartin |
398aba2 |
@@ -4180,3 +4180,9 @@ module_param_named(ucode_alternative, iwlagn_wanted_ucode_alternative, int,
|
|
Kyle McMartin |
398aba2 |
S_IRUGO);
|
|
Kyle McMartin |
398aba2 |
MODULE_PARM_DESC(ucode_alternative,
|
|
Kyle McMartin |
398aba2 |
"specify ucode alternative to use from ucode file");
|
|
Kyle McMartin |
398aba2 |
+
|
|
Kyle McMartin |
398aba2 |
+module_param_named(plcp_check, iwlagn_mod_params.plcp_check, bool, S_IRUGO);
|
|
Kyle McMartin |
398aba2 |
+MODULE_PARM_DESC(plcp_check, "Check plcp health (default: 1 [enabled])");
|
|
Kyle McMartin |
398aba2 |
+
|
|
Kyle McMartin |
398aba2 |
+module_param_named(ack_check, iwlagn_mod_params.ack_check, bool, S_IRUGO);
|
|
Kyle McMartin |
398aba2 |
+MODULE_PARM_DESC(ack_check, "Check ack health (default: 0 [disabled])");
|
|
Kyle McMartin |
398aba2 |
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.h b/drivers/net/wireless/iwlwifi/iwl-core.h
|
|
Kyle McMartin |
398aba2 |
index e8ef317..ef03c24 100644
|
|
Kyle McMartin |
398aba2 |
--- a/drivers/net/wireless/iwlwifi/iwl-core.h
|
|
Kyle McMartin |
398aba2 |
+++ b/drivers/net/wireless/iwlwifi/iwl-core.h
|
|
Kyle McMartin |
398aba2 |
@@ -226,6 +226,8 @@ struct iwl_mod_params {
|
|
Kyle McMartin |
398aba2 |
int amsdu_size_8K; /* def: 1 = enable 8K amsdu size */
|
|
Kyle McMartin |
398aba2 |
int antenna; /* def: 0 = both antennas (use diversity) */
|
|
Kyle McMartin |
398aba2 |
int restart_fw; /* def: 1 = restart firmware */
|
|
Kyle McMartin |
398aba2 |
+ bool plcp_check; /* def: true = enable plcp health check */
|
|
Kyle McMartin |
398aba2 |
+ bool ack_check; /* def: false = disable ack health check */
|
|
Kyle McMartin |
398aba2 |
};
|
|
Kyle McMartin |
398aba2 |
|
|
Kyle McMartin |
398aba2 |
/**
|
|
Kyle McMartin |
398aba2 |
diff --git a/drivers/net/wireless/iwlwifi/iwl-rx.c b/drivers/net/wireless/iwlwifi/iwl-rx.c
|
|
Kyle McMartin |
398aba2 |
index 0a5d7cf..d6c5927 100644
|
|
Kyle McMartin |
398aba2 |
--- a/drivers/net/wireless/iwlwifi/iwl-rx.c
|
|
Kyle McMartin |
398aba2 |
+++ b/drivers/net/wireless/iwlwifi/iwl-rx.c
|
|
Kyle McMartin |
398aba2 |
@@ -401,10 +401,13 @@ EXPORT_SYMBOL(iwl_good_plcp_health);
|
|
Kyle McMartin |
398aba2 |
void iwl_recover_from_statistics(struct iwl_priv *priv,
|
|
Kyle McMartin |
398aba2 |
struct iwl_rx_packet *pkt)
|
|
Kyle McMartin |
398aba2 |
{
|
|
Kyle McMartin |
398aba2 |
+ const struct iwl_mod_params *mod_params = priv->cfg->mod_params;
|
|
Kyle McMartin |
398aba2 |
+
|
|
Kyle McMartin |
398aba2 |
if (test_bit(STATUS_EXIT_PENDING, &priv->status))
|
|
Kyle McMartin |
398aba2 |
return;
|
|
Kyle McMartin |
398aba2 |
if (iwl_is_associated(priv)) {
|
|
Kyle McMartin |
398aba2 |
- if (priv->cfg->ops->lib->check_ack_health) {
|
|
Kyle McMartin |
398aba2 |
+ if (mod_params->ack_check &&
|
|
Kyle McMartin |
398aba2 |
+ priv->cfg->ops->lib->check_ack_health) {
|
|
Kyle McMartin |
398aba2 |
if (!priv->cfg->ops->lib->check_ack_health(
|
|
Kyle McMartin |
398aba2 |
priv, pkt)) {
|
|
Kyle McMartin |
398aba2 |
/*
|
|
Kyle McMartin |
398aba2 |
@@ -417,7 +420,8 @@ void iwl_recover_from_statistics(struct iwl_priv *priv,
|
|
Kyle McMartin |
398aba2 |
return;
|
|
Kyle McMartin |
398aba2 |
}
|
|
Kyle McMartin |
398aba2 |
}
|
|
Kyle McMartin |
398aba2 |
- if (priv->cfg->ops->lib->check_plcp_health) {
|
|
Kyle McMartin |
398aba2 |
+ if (mod_params->plcp_check &&
|
|
Kyle McMartin |
398aba2 |
+ priv->cfg->ops->lib->check_plcp_health) {
|
|
Kyle McMartin |
398aba2 |
if (!priv->cfg->ops->lib->check_plcp_health(
|
|
Kyle McMartin |
398aba2 |
priv, pkt)) {
|
|
Kyle McMartin |
398aba2 |
/*
|
|
Kyle McMartin |
398aba2 |
--
|
|
Kyle McMartin |
398aba2 |
1.7.1
|
|
Kyle McMartin |
398aba2 |
|