summaryrefslogtreecommitdiffstats
path: root/freed-ora
diff options
context:
space:
mode:
authorAlexandre Oliva <lxoliva@fsfla.org>2011-06-22 13:08:19 +0000
committerAlexandre Oliva <lxoliva@fsfla.org>2011-06-22 13:08:19 +0000
commit22c3282a5b828b1bea1b0acab9e7aaac26de10d9 (patch)
tree6ceb85cbff1d6fccfce913fc1cf4c956fc87d809 /freed-ora
parentbade2bf304fe9a25b396a2dea5152b4a17a397f5 (diff)
downloadlinux-libre-raptor-22c3282a5b828b1bea1b0acab9e7aaac26de10d9.tar.gz
linux-libre-raptor-22c3282a5b828b1bea1b0acab9e7aaac26de10d9.zip
2.6.38.8-33.fc15
Diffstat (limited to 'freed-ora')
-rw-r--r--freed-ora/current/f15/crypto-aesni_intel-merge-with-fpu_ko.patch134
-rw-r--r--freed-ora/current/f15/iwlagn-use-cts-to-self-protection-on-5000-adapters-series.patch103
-rw-r--r--freed-ora/current/f15/kernel.spec17
3 files changed, 253 insertions, 1 deletions
diff --git a/freed-ora/current/f15/crypto-aesni_intel-merge-with-fpu_ko.patch b/freed-ora/current/f15/crypto-aesni_intel-merge-with-fpu_ko.patch
new file mode 100644
index 000000000..afb4bec8b
--- /dev/null
+++ b/freed-ora/current/f15/crypto-aesni_intel-merge-with-fpu_ko.patch
@@ -0,0 +1,134 @@
+From: Andy Lutomirski <luto@mit.edu>
+Date: Mon, 16 May 2011 05:12:47 +0000 (+1000)
+Subject: crypto: aesni-intel - Merge with fpu.ko
+X-Git-Tag: v3.0-rc1~371^2~5
+X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=b23b64516500df6b70fcafb820970f18538252cf
+
+crypto: aesni-intel - Merge with fpu.ko
+
+Loading fpu without aesni-intel does nothing. Loading aesni-intel
+without fpu causes modes like xts to fail. (Unloading
+aesni-intel will restore those modes.)
+
+One solution would be to make aesni-intel depend on fpu, but it
+seems cleaner to just combine the modules.
+
+This is probably responsible for bugs like:
+https://bugzilla.redhat.com/show_bug.cgi?id=589390
+
+Signed-off-by: Andy Lutomirski <luto@mit.edu>
+Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
+[also 9bed4aca for the bugfix. --kyle]
+
+---
+diff --git a/arch/x86/crypto/Makefile b/arch/x86/crypto/Makefile
+index 1a58ad8..c04f1b7 100644
+--- a/arch/x86/crypto/Makefile
++++ b/arch/x86/crypto/Makefile
+@@ -2,8 +2,6 @@
+ # Arch-specific CryptoAPI modules.
+ #
+
+-obj-$(CONFIG_CRYPTO_FPU) += fpu.o
+-
+ obj-$(CONFIG_CRYPTO_AES_586) += aes-i586.o
+ obj-$(CONFIG_CRYPTO_TWOFISH_586) += twofish-i586.o
+ obj-$(CONFIG_CRYPTO_SALSA20_586) += salsa20-i586.o
+@@ -24,6 +22,6 @@ aes-x86_64-y := aes-x86_64-asm_64.o aes_glue.o
+ twofish-x86_64-y := twofish-x86_64-asm_64.o twofish_glue.o
+ salsa20-x86_64-y := salsa20-x86_64-asm_64.o salsa20_glue.o
+
+-aesni-intel-y := aesni-intel_asm.o aesni-intel_glue.o
++aesni-intel-y := aesni-intel_asm.o aesni-intel_glue.o fpu.o
+
+ ghash-clmulni-intel-y := ghash-clmulni-intel_asm.o ghash-clmulni-intel_glue.o
+diff --git a/arch/x86/crypto/aesni-intel_glue.c b/arch/x86/crypto/aesni-intel_glue.c
+index b375b2a..ede3fa7 100644
+--- a/arch/x86/crypto/aesni-intel_glue.c
++++ b/arch/x86/crypto/aesni-intel_glue.c
+@@ -94,6 +94,10 @@ asmlinkage void aesni_cbc_enc(struct crypto_aes_ctx *ctx, u8 *out,
+ const u8 *in, unsigned int len, u8 *iv);
+ asmlinkage void aesni_cbc_dec(struct crypto_aes_ctx *ctx, u8 *out,
+ const u8 *in, unsigned int len, u8 *iv);
++
++int crypto_fpu_init(void);
++void crypto_fpu_exit(void);
++
+ #ifdef CONFIG_X86_64
+ asmlinkage void aesni_ctr_enc(struct crypto_aes_ctx *ctx, u8 *out,
+ const u8 *in, unsigned int len, u8 *iv);
+@@ -1259,6 +1263,8 @@ static int __init aesni_init(void)
+ return -ENODEV;
+ }
+
++ if ((err = crypto_fpu_init()))
++ goto fpu_err;
+ if ((err = crypto_register_alg(&aesni_alg)))
+ goto aes_err;
+ if ((err = crypto_register_alg(&__aesni_alg)))
+@@ -1336,6 +1342,7 @@ blk_ecb_err:
+ __aes_err:
+ crypto_unregister_alg(&aesni_alg);
+ aes_err:
++fpu_err:
+ return err;
+ }
+
+@@ -1365,6 +1372,8 @@ static void __exit aesni_exit(void)
+ crypto_unregister_alg(&blk_ecb_alg);
+ crypto_unregister_alg(&__aesni_alg);
+ crypto_unregister_alg(&aesni_alg);
++
++ crypto_fpu_exit();
+ }
+
+ module_init(aesni_init);
+diff --git a/arch/x86/crypto/fpu.c b/arch/x86/crypto/fpu.c
+index 1a8f864..98d7a18 100644
+--- a/arch/x86/crypto/fpu.c
++++ b/arch/x86/crypto/fpu.c
+@@ -150,18 +150,12 @@ static struct crypto_template crypto_fpu_tmpl = {
+ .module = THIS_MODULE,
+ };
+
+-static int __init crypto_fpu_module_init(void)
++int __init crypto_fpu_init(void)
+ {
+ return crypto_register_template(&crypto_fpu_tmpl);
+ }
+
+-static void __exit crypto_fpu_module_exit(void)
++void __exit crypto_fpu_exit(void)
+ {
+ crypto_unregister_template(&crypto_fpu_tmpl);
+ }
+-
+-module_init(crypto_fpu_module_init);
+-module_exit(crypto_fpu_module_exit);
+-
+-MODULE_LICENSE("GPL");
+-MODULE_DESCRIPTION("FPU block cipher wrapper");
+diff --git a/crypto/Kconfig b/crypto/Kconfig
+index 4b7cb0e..87b22ca 100644
+--- a/crypto/Kconfig
++++ b/crypto/Kconfig
+@@ -264,11 +264,6 @@ config CRYPTO_XTS
+ key size 256, 384 or 512 bits. This implementation currently
+ can't handle a sectorsize which is not a multiple of 16 bytes.
+
+-config CRYPTO_FPU
+- tristate
+- select CRYPTO_BLKCIPHER
+- select CRYPTO_MANAGER
+-
+ comment "Hash modes"
+
+ config CRYPTO_HMAC
+@@ -543,7 +538,6 @@ config CRYPTO_AES_NI_INTEL
+ select CRYPTO_AES_586 if !64BIT
+ select CRYPTO_CRYPTD
+ select CRYPTO_ALGAPI
+- select CRYPTO_FPU
+ help
+ Use Intel AES-NI instructions for AES algorithm.
+
diff --git a/freed-ora/current/f15/iwlagn-use-cts-to-self-protection-on-5000-adapters-series.patch b/freed-ora/current/f15/iwlagn-use-cts-to-self-protection-on-5000-adapters-series.patch
new file mode 100644
index 000000000..6743f9057
--- /dev/null
+++ b/freed-ora/current/f15/iwlagn-use-cts-to-self-protection-on-5000-adapters-series.patch
@@ -0,0 +1,103 @@
+From sgruszka@redhat.com Mon Jun 20 10:09:55 2011
+From: Stanislaw Gruszka <sgruszka@redhat.com>
+To: kernel@lists.fedoraproject.org
+Subject: [PATCH 2.6.38] iwlagn: use cts-to-self protection on 5000 adapters series
+Date: Mon, 20 Jun 2011 16:11:22 +0200
+Message-Id: <1308579082-19006-2-git-send-email-sgruszka@redhat.com>
+
+This patch fixes 802.11n stability and performance regression we have
+since 2.6.35. It boost performance on my 5GHz N-only network from about
+5MB/s to 8MB/s. Similar percentage boost can be observed on 2.4 GHz.
+
+These are test results of 5x downloading of approximately 700MB iso
+image:
+
+vanilla: 5.27 5.22 4.94 4.47 5.31 ; avr 5.0420 std 0.35110
+patched: 8.07 7.95 8.06 7.99 7.96 ; avr 8.0060 std 0.055946
+
+This was achieved with NetworkManager configured to do not perform
+periodical scans, by configuring constant BSSID. With periodical scans,
+after some time, performance downgrade to unpatched driver level, like
+in example below:
+
+patched: 7.40 7.61 4.28 4.37 4.80 avr 5.6920 std 1.6683
+
+However patch still make better here, since similar test on unpatched
+driver make link disconnects with below messages after some time:
+
+wlan1: authenticate with 00:23:69:35:d1:3f (try 1)
+wlan1: authenticate with 00:23:69:35:d1:3f (try 2)
+wlan1: authenticate with 00:23:69:35:d1:3f (try 3)
+wlan1: authentication with 00:23:69:35:d1:3f timed out
+
+On 2.6.35 kernel patch helps against connection hangs with messages:
+
+iwlagn 0000:20:00.0: queue 10 stuck 3 time. Fw reload.
+iwlagn 0000:20:00.0: On demand firmware reload
+iwlagn 0000:20:00.0: Stopping AGG while state not ON or starting
+
+Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
+---
+ drivers/net/wireless/iwlwifi/iwl-5000.c | 1 -
+ drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c | 12 ++----------
+ drivers/net/wireless/iwlwifi/iwl-agn-rxon.c | 8 ++++++++
+ 3 files changed, 10 insertions(+), 11 deletions(-)
+
+diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c
+index 537fb8c..909cc30 100644
+--- a/drivers/net/wireless/iwlwifi/iwl-5000.c
++++ b/drivers/net/wireless/iwlwifi/iwl-5000.c
+@@ -517,7 +517,6 @@ static struct iwl_base_params iwl5000_base_params = {
+ };
+ static struct iwl_ht_params iwl5000_ht_params = {
+ .ht_greenfield_support = true,
+- .use_rts_for_aggregation = true, /* use rts/cts protection */
+ };
+
+ #define IWL_DEVICE_5000 \
+diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c b/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c
+index 366340f..89762a7 100644
+--- a/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c
++++ b/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c
+@@ -217,17 +217,9 @@ static void iwlagn_tx_cmd_protection(struct iwl_priv *priv,
+ __le16 fc, __le32 *tx_flags)
+ {
+ if (info->control.rates[0].flags & IEEE80211_TX_RC_USE_RTS_CTS ||
+- info->control.rates[0].flags & IEEE80211_TX_RC_USE_CTS_PROTECT) {
++ info->control.rates[0].flags & IEEE80211_TX_RC_USE_CTS_PROTECT ||
++ info->flags & IEEE80211_TX_CTL_AMPDU)
+ *tx_flags |= TX_CMD_FLG_PROT_REQUIRE_MSK;
+- return;
+- }
+-
+- if (priv->cfg->ht_params &&
+- priv->cfg->ht_params->use_rts_for_aggregation &&
+- info->flags & IEEE80211_TX_CTL_AMPDU) {
+- *tx_flags |= TX_CMD_FLG_PROT_REQUIRE_MSK;
+- return;
+- }
+ }
+
+ /* Calc max signal level (dBm) among 3 possible receivers */
+diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c b/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c
+index ee802fe..b19fb85 100644
+--- a/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c
++++ b/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c
+@@ -145,6 +145,14 @@ int iwlagn_commit_rxon(struct iwl_priv *priv, struct iwl_rxon_context *ctx)
+ /* always get timestamp with Rx frame */
+ ctx->staging.flags |= RXON_FLG_TSF2HOST_MSK;
+
++ /*
++ * force CTS-to-self frames protection if RTS-CTS is not preferred
++ * one aggregation protection method
++ */
++ if (!(priv->cfg->ht_params &&
++ priv->cfg->ht_params->use_rts_for_aggregation))
++ ctx->staging.flags |= RXON_FLG_SELF_CTS_EN;
++
+ if ((ctx->vif && ctx->vif->bss_conf.use_short_slot) ||
+ !(ctx->staging.flags & RXON_FLG_BAND_24G_MSK))
+ ctx->staging.flags |= RXON_FLG_SHORT_SLOT_MSK;
+--
+1.7.1
+
diff --git a/freed-ora/current/f15/kernel.spec b/freed-ora/current/f15/kernel.spec
index eefcba8f4..f10f2b131 100644
--- a/freed-ora/current/f15/kernel.spec
+++ b/freed-ora/current/f15/kernel.spec
@@ -51,7 +51,7 @@ Summary: The Linux kernel
# For non-released -rc kernels, this will be prepended with "0.", so
# for example a 3 here will become 0.3
#
-%global baserelease 32
+%global baserelease 33
%global fedora_build %{baserelease}
# base_sublevel is the kernel version we're starting with and patching
@@ -773,6 +773,9 @@ Patch12415: hid-multitouch-add-support-for-elo-touchsystems.patch
Patch12416: bluetooth-device-ids-for-ath3k-on-pegatron-lucid-tablets.patch
Patch12418: ath5k-disable-fast-channel-switching-by-default.patch
+Patch12419: iwlagn-use-cts-to-self-protection-on-5000-adapters-series.patch
+
+Patch12420: crypto-aesni_intel-merge-with-fpu_ko.patch
%endif
@@ -1449,6 +1452,12 @@ ApplyPatch bluetooth-device-ids-for-ath3k-on-pegatron-lucid-tablets.patch
# rhbz#709122
ApplyPatch ath5k-disable-fast-channel-switching-by-default.patch
+# rhbz#648732
+ApplyPatch iwlagn-use-cts-to-self-protection-on-5000-adapters-series.patch
+
+# rhbz#589390
+ApplyPatch crypto-aesni_intel-merge-with-fpu_ko.patch
+
# END OF PATCH APPLICATIONS
%endif
@@ -2057,6 +2066,12 @@ fi
# and build.
%changelog
+* Mon Jun 20 2011 Kyle McMartin <kmcmartin@redhat.com> 2.6.38.8-33
+- [sgruszka@] iwlwifi: fix general 11n instability (rhbz#648732)
+
+* Wed Jun 15 2011 Kyle McMartin <kmcmartin@redhat.com>
+- crypto: aesni-intel - Merge with fpu.ko (rhbz#589390)
+
* Thu Jun 09 2011 Kyle McMartin <kmcmartin@redhat.com> 2.6.38.8-32
- ath5k-disable-fast-channel-switching-by-default.patch (rhbz#709122)
(korgbz#34992) [a99168ee in wireless-next]
OpenPOWER on IntegriCloud