[sgruszka@] iwlwifi: add {ack,plpc}_check module parameters (#666646)
This commit is contained in:
parent
49be14f7fd
commit
34f3a6f6cf
|
@ -0,0 +1,96 @@
|
|||
From sgruszka@redhat.com Mon May 9 15:27:33 2011
|
||||
From: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
To: kernel@lists.fedoraproject.org, stable@kernel.org
|
||||
Cc: Kyle McMartin <kmcmartin@redhat.com>,
|
||||
Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Subject: [PATCH 2.6.38] iwlwifi: add {ack,plpc}_check module parameters
|
||||
Date: Mon, 9 May 2011 21:27:30 +0200
|
||||
Message-Id: <1304969250-27725-1-git-send-email-sgruszka@redhat.com>
|
||||
|
||||
commit b7977ffaab5187ad75edaf04ac854615cea93828 upstream.
|
||||
|
||||
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.
|
||||
|
||||
This prevent connection hangs with "low ack count detected" messages.
|
||||
|
||||
Resolves:
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=666646
|
||||
|
||||
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/iwlwifi/iwl-agn-lib.c | 1 +
|
||||
drivers/net/wireless/iwlwifi/iwl-agn.c | 6 ++++++
|
||||
drivers/net/wireless/iwlwifi/iwl-core.h | 2 ++
|
||||
drivers/net/wireless/iwlwifi/iwl-rx.c | 8 ++++++--
|
||||
4 files changed, 15 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
|
||||
index 3dee87e..d9c87b3 100644
|
||||
--- a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
|
||||
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
|
||||
@@ -604,6 +604,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 */
|
||||
};
|
||||
|
||||
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
|
||||
index 35239f0..be07643 100644
|
||||
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
|
||||
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
|
||||
@@ -4586,3 +4586,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])");
|
||||
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.h b/drivers/net/wireless/iwlwifi/iwl-core.h
|
||||
index a347437..5c0d5f7 100644
|
||||
--- a/drivers/net/wireless/iwlwifi/iwl-core.h
|
||||
+++ b/drivers/net/wireless/iwlwifi/iwl-core.h
|
||||
@@ -263,6 +263,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 */
|
||||
};
|
||||
|
||||
/*
|
||||
diff --git a/drivers/net/wireless/iwlwifi/iwl-rx.c b/drivers/net/wireless/iwlwifi/iwl-rx.c
|
||||
index 87a6fd8..b707617 100644
|
||||
--- a/drivers/net/wireless/iwlwifi/iwl-rx.c
|
||||
+++ b/drivers/net/wireless/iwlwifi/iwl-rx.c
|
||||
@@ -234,10 +234,13 @@ EXPORT_SYMBOL(iwl_rx_spectrum_measure_notif);
|
||||
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))
|
||||
return;
|
||||
if (iwl_is_any_associated(priv)) {
|
||||
- if (priv->cfg->ops->lib->check_ack_health) {
|
||||
+ if (mod_params->ack_check &&
|
||||
+ priv->cfg->ops->lib->check_ack_health) {
|
||||
if (!priv->cfg->ops->lib->check_ack_health(
|
||||
priv, pkt)) {
|
||||
/*
|
||||
@@ -250,7 +253,8 @@ void iwl_recover_from_statistics(struct iwl_priv *priv,
|
||||
return;
|
||||
}
|
||||
}
|
||||
- if (priv->cfg->ops->lib->check_plcp_health) {
|
||||
+ if (mod_params->plcp_check &&
|
||||
+ priv->cfg->ops->lib->check_plcp_health) {
|
||||
if (!priv->cfg->ops->lib->check_plcp_health(
|
||||
priv, pkt)) {
|
||||
/*
|
|
@ -741,6 +741,9 @@ Patch12403: x86-dumpstack-correct-stack-dump-info-when-frame-pointer-is-availabl
|
|||
# Fix breakage of PCI network adapter names on older Dell systems
|
||||
Patch12404: x86-pci-preserve-existing-pci-bfsort-whitelist-for-dell-systems.patch
|
||||
|
||||
# iwlwifi: add {ack,plpc}_check module parameters (#666646)
|
||||
Patch12405: iwlwifi-add-_ack_plpc_check-module-parameters.patch
|
||||
|
||||
%endif
|
||||
|
||||
BuildRoot: %{_tmppath}/kernel-%{KVERREL}-root
|
||||
|
@ -1375,6 +1378,9 @@ ApplyPatch linux-2.6-netconsole-deadlock.patch
|
|||
# CVE-2011-1581
|
||||
ApplyPatch bonding-incorrect-tx-queue-offset.patch
|
||||
|
||||
# iwlwifi: add {ack,plpc}_check module parameters (#666646) queued for stable
|
||||
ApplyPatch iwlwifi-add-_ack_plpc_check-module-parameters.patch
|
||||
|
||||
# END OF PATCH APPLICATIONS
|
||||
|
||||
%endif
|
||||
|
@ -1983,6 +1989,9 @@ fi
|
|||
# and build.
|
||||
|
||||
%changelog
|
||||
* Tue May 10 2011 Kyle McMartin <kmcmartin@redhat.com>
|
||||
- [sgruszka@] iwlwifi: add {ack,plpc}_check module parameters (#666646)
|
||||
|
||||
* Tue May 10 2011 Chuck Ebbert <cebbert@redhat.com>
|
||||
- Linux 2.6.38.6 (no functional changes from 2.6.38.6-26.rc1)
|
||||
- Drop merged patches:
|
||||
|
|
Loading…
Reference in New Issue