Merge branch 'master' into rawhide/user/myoung/xendom0
Conflicts: kernel.spec
This commit is contained in:
commit
685bfa9afb
|
@ -0,0 +1,213 @@
|
|||
From sgruszka@redhat.com Thu Feb 3 07:58:52 2011
|
||||
Date: Thu, 3 Feb 2011 13:58:51 +0100
|
||||
From: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
To: kernel@lists.fedoraproject.org
|
||||
Cc: Kyle McMartin <kmcmartin@redhat.com>
|
||||
Subject: [PATCH F-15] ath5k: fix fast channel change
|
||||
Message-ID: <20110203125134.GA4515@redhat.com>
|
||||
|
||||
From: Nick Kossifidis <mickflemm@gmail.com>
|
||||
|
||||
Fast channel change fixes:
|
||||
|
||||
a) Always set OFDM timings
|
||||
b) Don't re-activate PHY
|
||||
c) Enable only NF calibration, not AGC
|
||||
|
||||
Resolves:
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=672778
|
||||
|
||||
---
|
||||
drivers/net/wireless/ath/ath5k/phy.c | 142 +++++++++++++++++++++-------------
|
||||
1 files changed, 87 insertions(+), 55 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/ath/ath5k/phy.c b/drivers/net/wireless/ath/ath5k/phy.c
|
||||
index 78c26fd..d673ab2 100644
|
||||
--- a/drivers/net/wireless/ath/ath5k/phy.c
|
||||
+++ b/drivers/net/wireless/ath/ath5k/phy.c
|
||||
@@ -282,6 +282,34 @@ int ath5k_hw_phy_disable(struct ath5k_hw *ah)
|
||||
return 0;
|
||||
}
|
||||
|
||||
+/*
|
||||
+ * Wait for synth to settle
|
||||
+ */
|
||||
+static void ath5k_hw_wait_for_synth(struct ath5k_hw *ah,
|
||||
+ struct ieee80211_channel *channel)
|
||||
+{
|
||||
+ /*
|
||||
+ * On 5211+ read activation -> rx delay
|
||||
+ * and use it (100ns steps).
|
||||
+ */
|
||||
+ if (ah->ah_version != AR5K_AR5210) {
|
||||
+ u32 delay;
|
||||
+ delay = ath5k_hw_reg_read(ah, AR5K_PHY_RX_DELAY) &
|
||||
+ AR5K_PHY_RX_DELAY_M;
|
||||
+ delay = (channel->hw_value & CHANNEL_CCK) ?
|
||||
+ ((delay << 2) / 22) : (delay / 10);
|
||||
+ if (ah->ah_bwmode == AR5K_BWMODE_10MHZ)
|
||||
+ delay = delay << 1;
|
||||
+ if (ah->ah_bwmode == AR5K_BWMODE_5MHZ)
|
||||
+ delay = delay << 2;
|
||||
+ /* XXX: /2 on turbo ? Let's be safe
|
||||
+ * for now */
|
||||
+ udelay(100 + delay);
|
||||
+ } else {
|
||||
+ mdelay(1);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
|
||||
/**********************\
|
||||
* RF Gain optimization *
|
||||
@@ -3237,6 +3265,13 @@ int ath5k_hw_phy_init(struct ath5k_hw *ah, struct ieee80211_channel *channel,
|
||||
/* Failed */
|
||||
if (i >= 100)
|
||||
return -EIO;
|
||||
+
|
||||
+ /* Set channel and wait for synth */
|
||||
+ ret = ath5k_hw_channel(ah, channel);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+
|
||||
+ ath5k_hw_wait_for_synth(ah, channel);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -3251,13 +3286,53 @@ int ath5k_hw_phy_init(struct ath5k_hw *ah, struct ieee80211_channel *channel,
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
+ /* Write OFDM timings on 5212*/
|
||||
+ if (ah->ah_version == AR5K_AR5212 &&
|
||||
+ channel->hw_value & CHANNEL_OFDM) {
|
||||
+
|
||||
+ ret = ath5k_hw_write_ofdm_timings(ah, channel);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+
|
||||
+ /* Spur info is available only from EEPROM versions
|
||||
+ * greater than 5.3, but the EEPROM routines will use
|
||||
+ * static values for older versions */
|
||||
+ if (ah->ah_mac_srev >= AR5K_SREV_AR5424)
|
||||
+ ath5k_hw_set_spur_mitigation_filter(ah,
|
||||
+ channel);
|
||||
+ }
|
||||
+
|
||||
+ /* If we used fast channel switching
|
||||
+ * we are done, release RF bus and
|
||||
+ * fire up NF calibration.
|
||||
+ *
|
||||
+ * Note: Only NF calibration due to
|
||||
+ * channel change, not AGC calibration
|
||||
+ * since AGC is still running !
|
||||
+ */
|
||||
+ if (fast) {
|
||||
+ /*
|
||||
+ * Release RF Bus grant
|
||||
+ */
|
||||
+ AR5K_REG_DISABLE_BITS(ah, AR5K_PHY_RFBUS_REQ,
|
||||
+ AR5K_PHY_RFBUS_REQ_REQUEST);
|
||||
+
|
||||
+ /*
|
||||
+ * Start NF calibration
|
||||
+ */
|
||||
+ AR5K_REG_ENABLE_BITS(ah, AR5K_PHY_AGCCTL,
|
||||
+ AR5K_PHY_AGCCTL_NF);
|
||||
+
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
/*
|
||||
* For 5210 we do all initialization using
|
||||
* initvals, so we don't have to modify
|
||||
* any settings (5210 also only supports
|
||||
* a/aturbo modes)
|
||||
*/
|
||||
- if ((ah->ah_version != AR5K_AR5210) && !fast) {
|
||||
+ if (ah->ah_version != AR5K_AR5210) {
|
||||
|
||||
/*
|
||||
* Write initial RF gain settings
|
||||
@@ -3276,22 +3351,6 @@ int ath5k_hw_phy_init(struct ath5k_hw *ah, struct ieee80211_channel *channel,
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
- /* Write OFDM timings on 5212*/
|
||||
- if (ah->ah_version == AR5K_AR5212 &&
|
||||
- channel->hw_value & CHANNEL_OFDM) {
|
||||
-
|
||||
- ret = ath5k_hw_write_ofdm_timings(ah, channel);
|
||||
- if (ret)
|
||||
- return ret;
|
||||
-
|
||||
- /* Spur info is available only from EEPROM versions
|
||||
- * greater than 5.3, but the EEPROM routines will use
|
||||
- * static values for older versions */
|
||||
- if (ah->ah_mac_srev >= AR5K_SREV_AR5424)
|
||||
- ath5k_hw_set_spur_mitigation_filter(ah,
|
||||
- channel);
|
||||
- }
|
||||
-
|
||||
/*Enable/disable 802.11b mode on 5111
|
||||
(enable 2111 frequency converter + CCK)*/
|
||||
if (ah->ah_radio == AR5K_RF5111) {
|
||||
@@ -3322,47 +3381,20 @@ int ath5k_hw_phy_init(struct ath5k_hw *ah, struct ieee80211_channel *channel,
|
||||
*/
|
||||
ath5k_hw_reg_write(ah, AR5K_PHY_ACT_ENABLE, AR5K_PHY_ACT);
|
||||
|
||||
+ ath5k_hw_wait_for_synth(ah, channel);
|
||||
+
|
||||
/*
|
||||
- * On 5211+ read activation -> rx delay
|
||||
- * and use it.
|
||||
+ * Perform ADC test to see if baseband is ready
|
||||
+ * Set tx hold and check adc test register
|
||||
*/
|
||||
- if (ah->ah_version != AR5K_AR5210) {
|
||||
- u32 delay;
|
||||
- delay = ath5k_hw_reg_read(ah, AR5K_PHY_RX_DELAY) &
|
||||
- AR5K_PHY_RX_DELAY_M;
|
||||
- delay = (channel->hw_value & CHANNEL_CCK) ?
|
||||
- ((delay << 2) / 22) : (delay / 10);
|
||||
- if (ah->ah_bwmode == AR5K_BWMODE_10MHZ)
|
||||
- delay = delay << 1;
|
||||
- if (ah->ah_bwmode == AR5K_BWMODE_5MHZ)
|
||||
- delay = delay << 2;
|
||||
- /* XXX: /2 on turbo ? Let's be safe
|
||||
- * for now */
|
||||
- udelay(100 + delay);
|
||||
- } else {
|
||||
- mdelay(1);
|
||||
- }
|
||||
-
|
||||
- if (fast)
|
||||
- /*
|
||||
- * Release RF Bus grant
|
||||
- */
|
||||
- AR5K_REG_DISABLE_BITS(ah, AR5K_PHY_RFBUS_REQ,
|
||||
- AR5K_PHY_RFBUS_REQ_REQUEST);
|
||||
- else {
|
||||
- /*
|
||||
- * Perform ADC test to see if baseband is ready
|
||||
- * Set tx hold and check adc test register
|
||||
- */
|
||||
- phy_tst1 = ath5k_hw_reg_read(ah, AR5K_PHY_TST1);
|
||||
- ath5k_hw_reg_write(ah, AR5K_PHY_TST1_TXHOLD, AR5K_PHY_TST1);
|
||||
- for (i = 0; i <= 20; i++) {
|
||||
- if (!(ath5k_hw_reg_read(ah, AR5K_PHY_ADC_TEST) & 0x10))
|
||||
- break;
|
||||
- udelay(200);
|
||||
- }
|
||||
- ath5k_hw_reg_write(ah, phy_tst1, AR5K_PHY_TST1);
|
||||
+ phy_tst1 = ath5k_hw_reg_read(ah, AR5K_PHY_TST1);
|
||||
+ ath5k_hw_reg_write(ah, AR5K_PHY_TST1_TXHOLD, AR5K_PHY_TST1);
|
||||
+ for (i = 0; i <= 20; i++) {
|
||||
+ if (!(ath5k_hw_reg_read(ah, AR5K_PHY_ADC_TEST) & 0x10))
|
||||
+ break;
|
||||
+ udelay(200);
|
||||
}
|
||||
+ ath5k_hw_reg_write(ah, phy_tst1, AR5K_PHY_TST1);
|
||||
|
||||
/*
|
||||
* Start automatic gain control calibration
|
|
@ -1,17 +0,0 @@
|
|||
CAN: softing driver needs IOMEM
|
||||
|
||||
Without this dependency the softing driver will be buildable on s390,
|
||||
where it fails.
|
||||
|
||||
Signed-Off-By: Chuck Ebbert <cebbert@redhat.com>
|
||||
|
||||
--- a/drivers/net/can/softing/Kconfig
|
||||
+++ b/drivers/net/can/softing/Kconfig
|
||||
@@ -1,6 +1,6 @@
|
||||
config CAN_SOFTING
|
||||
tristate "Softing Gmbh CAN generic support"
|
||||
- depends on CAN_DEV
|
||||
+ depends on CAN_DEV && HAS_IOMEM
|
||||
---help---
|
||||
Support for CAN cards from Softing Gmbh & some cards
|
||||
from Vector Gmbh.
|
|
@ -44,6 +44,8 @@ CONFIG_EFI_VARS=y
|
|||
CONFIG_EFI_PCDP=y
|
||||
CONFIG_FB_EFI=y
|
||||
|
||||
CONFIG_SCSI_ADVANSYS=m
|
||||
|
||||
CONFIG_SECCOMP=y
|
||||
|
||||
CONFIG_CAPI_EICON=y
|
||||
|
|
|
@ -1,24 +0,0 @@
|
|||
hfsplus: Don't leak buffer on error
|
||||
|
||||
Signed-Off-By: Chuck Ebbert <cebbert@redhat.com>
|
||||
|
||||
--- vanilla-2.6.38-rc2-git9.orig/fs/hfsplus/part_tbl.c
|
||||
+++ vanilla-2.6.38-rc2-git9/fs/hfsplus/part_tbl.c
|
||||
@@ -134,7 +134,7 @@ int hfs_part_find(struct super_block *sb
|
||||
res = hfsplus_submit_bio(sb->s_bdev, *part_start + HFS_PMAP_BLK,
|
||||
data, READ);
|
||||
if (res)
|
||||
- return res;
|
||||
+ goto out;
|
||||
|
||||
switch (be16_to_cpu(*((__be16 *)data))) {
|
||||
case HFS_OLD_PMAP_MAGIC:
|
||||
@@ -147,7 +147,7 @@ int hfs_part_find(struct super_block *sb
|
||||
res = -ENOENT;
|
||||
break;
|
||||
}
|
||||
-
|
||||
+out:
|
||||
kfree(data);
|
||||
return res;
|
||||
}
|
|
@ -1,38 +0,0 @@
|
|||
hfsplus: Skip cleanup on early failures
|
||||
|
||||
Signed-Off-By: Chuck Ebbert <cebbert@redhat.com>
|
||||
|
||||
--- vanilla-2.6.38-rc2-git9.orig/fs/hfsplus/super.c
|
||||
+++ vanilla-2.6.38-rc2-git9/fs/hfsplus/super.c
|
||||
@@ -344,14 +344,13 @@ static int hfsplus_fill_super(struct sup
|
||||
if (!sbi)
|
||||
return -ENOMEM;
|
||||
|
||||
- sb->s_fs_info = sbi;
|
||||
mutex_init(&sbi->alloc_mutex);
|
||||
mutex_init(&sbi->vh_mutex);
|
||||
hfsplus_fill_defaults(sbi);
|
||||
if (!hfsplus_parse_options(data, sbi)) {
|
||||
printk(KERN_ERR "hfs: unable to parse mount options\n");
|
||||
- err = -EINVAL;
|
||||
- goto cleanup;
|
||||
+ kfree(sbi);
|
||||
+ return -EINVAL;
|
||||
}
|
||||
|
||||
/* temporarily use utf8 to correctly find the hidden dir below */
|
||||
@@ -359,10 +358,12 @@ static int hfsplus_fill_super(struct sup
|
||||
sbi->nls = load_nls("utf8");
|
||||
if (!sbi->nls) {
|
||||
printk(KERN_ERR "hfs: unable to load nls for utf8\n");
|
||||
- err = -EINVAL;
|
||||
- goto cleanup;
|
||||
+ kfree(sbi);
|
||||
+ return -EINVAL;
|
||||
}
|
||||
|
||||
+ sb->s_fs_info = sbi;
|
||||
+
|
||||
/* Grab the volume header */
|
||||
if (hfsplus_read_wrapper(sb)) {
|
||||
if (!silent)
|
|
@ -1,39 +0,0 @@
|
|||
hfsplus: Clear volume header pointers on failure
|
||||
|
||||
The next patch will use NULL volume header to determine whether
|
||||
to flush the superblock. Also fix two failure cases so they
|
||||
clear the headers before exiting.
|
||||
|
||||
Signed-Off-By: Chuck Ebbert <cebbert@redhat.com>
|
||||
|
||||
--- vanilla-2.6.38-rc2-git9.orig/fs/hfsplus/wrapper.c
|
||||
+++ vanilla-2.6.38-rc2-git9/fs/hfsplus/wrapper.c
|
||||
@@ -167,7 +167,7 @@ reread:
|
||||
break;
|
||||
case cpu_to_be16(HFSP_WRAP_MAGIC):
|
||||
if (!hfsplus_read_mdb(sbi->s_vhdr, &wd))
|
||||
- goto out;
|
||||
+ goto out_free_backup_vhdr;
|
||||
wd.ablk_size >>= HFSPLUS_SECTOR_SHIFT;
|
||||
part_start += wd.ablk_start + wd.embed_start * wd.ablk_size;
|
||||
part_size = wd.embed_count * wd.ablk_size;
|
||||
@@ -179,7 +179,7 @@ reread:
|
||||
* (should do this only for cdrom/loop though)
|
||||
*/
|
||||
if (hfs_part_find(sb, &part_start, &part_size))
|
||||
- goto out;
|
||||
+ goto out_free_backup_vhdr;
|
||||
goto reread;
|
||||
}
|
||||
|
||||
@@ -230,8 +230,10 @@ reread:
|
||||
|
||||
out_free_backup_vhdr:
|
||||
kfree(sbi->s_backup_vhdr);
|
||||
+ sbi->s_backup_vhdr = NULL;
|
||||
out_free_vhdr:
|
||||
kfree(sbi->s_vhdr);
|
||||
+ sbi->s_vhdr = NULL;
|
||||
out:
|
||||
return error;
|
||||
}
|
|
@ -1,28 +0,0 @@
|
|||
hfsplus: Check for NULL volume header
|
||||
|
||||
If volume header is null there is not much to do in put_super().
|
||||
|
||||
Signed-Off-By: Chuck Ebbert <cebbert@redhat.com>
|
||||
|
||||
--- vanilla-2.6.38-rc2-git9.orig/fs/hfsplus/super.c
|
||||
+++ vanilla-2.6.38-rc2-git9/fs/hfsplus/super.c
|
||||
@@ -237,7 +237,10 @@ static void hfsplus_put_super(struct sup
|
||||
if (!sb->s_fs_info)
|
||||
return;
|
||||
|
||||
- if (!(sb->s_flags & MS_RDONLY) && sbi->s_vhdr) {
|
||||
+ if (!sbi->s_vhdr)
|
||||
+ goto out_unload_nls;
|
||||
+
|
||||
+ if (!(sb->s_flags & MS_RDONLY)) {
|
||||
struct hfsplus_vh *vhdr = sbi->s_vhdr;
|
||||
|
||||
vhdr->modify_date = hfsp_now2mt();
|
||||
@@ -253,6 +256,7 @@ static void hfsplus_put_super(struct sup
|
||||
iput(sbi->hidden_dir);
|
||||
kfree(sbi->s_vhdr);
|
||||
kfree(sbi->s_backup_vhdr);
|
||||
+out_unload_nls:
|
||||
unload_nls(sbi->nls);
|
||||
kfree(sb->s_fs_info);
|
||||
sb->s_fs_info = NULL;
|
48
kernel.spec
48
kernel.spec
|
@ -52,7 +52,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 1
|
||||
%global baserelease 2
|
||||
%global fedora_build %{baserelease}
|
||||
|
||||
# base_sublevel is the kernel version we're starting with and patching
|
||||
|
@ -83,7 +83,7 @@ Summary: The Linux kernel
|
|||
# The next upstream release sublevel (base_sublevel+1)
|
||||
%define upstream_sublevel %(echo $((%{base_sublevel} + 1)))
|
||||
# The rc snapshot level
|
||||
%define rcrev 3
|
||||
%define rcrev 4
|
||||
# The git snapshot level
|
||||
%define gitrev 0
|
||||
# Set rpm version accordingly
|
||||
|
@ -737,13 +737,7 @@ Patch12303: dmar-disable-when-ricoh-multifunction.patch
|
|||
|
||||
Patch12421: fs-call-security_d_instantiate-in-d_obtain_alias.patch
|
||||
|
||||
Patch12430: can-softing-depend-on-iomem.patch
|
||||
|
||||
# rhbz#673857
|
||||
Patch12432: hfsplus-01-dont-leak-buffer.patch
|
||||
Patch12433: hfsplus-02-fill-super-skip-cleanup.patch
|
||||
Patch12434: hfsplus-03-zero-vhdr-on-free.patch
|
||||
Patch12435: hfsplus-04-check-for-vhdr.patch
|
||||
Patch12438: ath5k-fix-fast-channel-change.patch
|
||||
|
||||
# Xen patches
|
||||
# git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen.git branches
|
||||
|
@ -1366,15 +1360,8 @@ ApplyPatch dmar-disable-when-ricoh-multifunction.patch
|
|||
# rhbz#662344,600690
|
||||
ApplyPatch fs-call-security_d_instantiate-in-d_obtain_alias.patch
|
||||
|
||||
# Fix build failure on s390
|
||||
# accepted upstream
|
||||
ApplyPatch can-softing-depend-on-iomem.patch
|
||||
|
||||
# rhbz#673857
|
||||
ApplyPatch hfsplus-01-dont-leak-buffer.patch
|
||||
ApplyPatch hfsplus-02-fill-super-skip-cleanup.patch
|
||||
ApplyPatch hfsplus-03-zero-vhdr-on-free.patch
|
||||
ApplyPatch hfsplus-04-check-for-vhdr.patch
|
||||
# rhbz#672778
|
||||
ApplyPatch ath5k-fix-fast-channel-change.patch
|
||||
|
||||
# Xen patches
|
||||
ApplyPatch xen.next-2.6.38.patch
|
||||
|
@ -1994,10 +1981,33 @@ fi
|
|||
# ||----w |
|
||||
# || ||
|
||||
%changelog
|
||||
* Mon Feb 07 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.6.38-0.rc4.git0.2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
|
||||
|
||||
* Mon Feb 07 2011 Kyle McMartin <kmcmartin@redhat.com> 2.6.38-0.rc4.git0.1
|
||||
- Linux 2.6.38-rc4
|
||||
|
||||
* Fri Feb 04 2011 Chuck Ebbert <cebbert@redhat.com> 2.6.38-0.rc3.git4.1
|
||||
- Linux 2.6.38-rc3-git4
|
||||
|
||||
* Thu Feb 03 2011 Chuck Ebbert <cebbert@redhat.com>
|
||||
- Linux 2.6.38-rc3-git3
|
||||
- Enable Advansys SCSI driver on x86_64 (#589115)
|
||||
|
||||
* Thu Feb 03 2011 Kyle McMartin <kmcmartin@redhat.com> 2.6.38-0.rc3.git2.1
|
||||
- Linux 2.6.38-rc3-git2 snapshot
|
||||
- [sgruszka] ath5k: fix fast channel change (#672778)
|
||||
|
||||
* Wed Feb 02 2011 Kyle McMartin <kmcmartin@redhat.com> 2.6.38-0.rc3.git1.1
|
||||
- Linux 2.6.38-rc3-git1 snapshot.
|
||||
|
||||
* Wed Feb 02 2011 Chuck Ebbert <cebbert@redhat.com>
|
||||
- Fix autoload of atl1c driver for latest hardware (#607499)
|
||||
|
||||
* Tue Feb 02 2011 Michael Young <m.a.young@durham.ac.uk>
|
||||
- Update xen.next-2.6.38 and xen.pvhvm.fixes patches
|
||||
|
||||
* Mon Feb 01 2011 Chuck Ebbert <cebbert@redhat.com>
|
||||
* Tue Feb 01 2011 Chuck Ebbert <cebbert@redhat.com> 2.6.38-0.rc3.git0.1
|
||||
- Linux 2.6.38-rc3
|
||||
- Try to fix some obvious bugs in hfsplus mount failure handling (#673857)
|
||||
|
||||
|
|
Loading…
Reference in New Issue