summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@suse.de>2011-09-20 09:56:46 -0700
committerGreg Kroah-Hartman <gregkh@suse.de>2011-09-20 09:56:46 -0700
commit505c6892687f3ffb10703195f076bfef35ce370f (patch)
treedd5b5127b8a8f43af98e219f682557b4be59305b
parent0cce87b4bffa0b9ae509e0408b5c7521619a7602 (diff)
downloadstable-queue-505c6892687f3ffb10703195f076bfef35ce370f.tar.gz
3.0 patches
-rw-r--r--queue-3.0/acpica-acpi_max_sleep-should-be-2-sec-not-20.patch32
-rw-r--r--queue-3.0/asoc-blackfin-bf5xx-ad193x-fix-codec-device-name.patch41
-rw-r--r--queue-3.0/asoc-fix-reporting-of-partial-jack-updates.patch33
-rw-r--r--queue-3.0/asoc-mpc5200-replace-of_device-with-platform_device.patch51
-rw-r--r--queue-3.0/ath9k_hw-fix-calibration-on-5-ghz.patch34
-rw-r--r--queue-3.0/e1000-fix-driver-to-be-used-on-pa-risc-c8000-workstations.patch47
-rw-r--r--queue-3.0/genirq-make-irq_shutdown-symmetric-vs.-irq_startup-again.patch46
-rw-r--r--queue-3.0/hpsa-fix-physical-device-lun-and-target-numbering-problem.patch46
-rw-r--r--queue-3.0/hpsa-fix-problem-that-obdr-devices-are-not-detected.patch147
-rw-r--r--queue-3.0/isci-fix-32-bit-operation-when-config_highmem64g-n.patch49
-rw-r--r--queue-3.0/iwlegacy-fix-bug_on-info-control.rates.idx-0.patch49
-rw-r--r--queue-3.0/mac80211-fix-missing-sta_lock-in-__sta_info_destroy.patch35
-rw-r--r--queue-3.0/mfd-fix-initialisation-of-tps65910-interrupts.patch35
-rw-r--r--queue-3.0/mfd-fix-value-of-wm8994_configure_gpio.patch31
-rw-r--r--queue-3.0/mfd-make-omap-usb-host-tll-mode-work-again.patch33
-rw-r--r--queue-3.0/qla2xxx-correct-inadvertent-loop-state-transitions-during-port-update-handling.patch51
-rw-r--r--queue-3.0/rtlwifi-fix-problem-when-switching-connections.patch45
-rw-r--r--queue-3.0/rtlwifi-rtl8192su-fix-problem-connecting-to-ht-enabled-ap.patch45
-rw-r--r--queue-3.0/series19
-rw-r--r--queue-3.0/x86-iommu-mark-dmar-irq-as-non-threaded.patch33
20 files changed, 902 insertions, 0 deletions
diff --git a/queue-3.0/acpica-acpi_max_sleep-should-be-2-sec-not-20.patch b/queue-3.0/acpica-acpi_max_sleep-should-be-2-sec-not-20.patch
new file mode 100644
index 0000000000..30a8294b15
--- /dev/null
+++ b/queue-3.0/acpica-acpi_max_sleep-should-be-2-sec-not-20.patch
@@ -0,0 +1,32 @@
+From b33c25d6a62ac253caabda2b5f43258abff451c0 Mon Sep 17 00:00:00 2001
+From: Len Brown <len.brown@intel.com>
+Date: Mon, 29 Aug 2011 23:01:58 -0400
+Subject: acpica: ACPI_MAX_SLEEP should be 2 sec, not 20
+
+From: Len Brown <len.brown@intel.com>
+
+commit b33c25d6a62ac253caabda2b5f43258abff451c0 upstream.
+
+This limit is a workaround for AML that sleeps too long,
+but the workaround didn't work b/c of a typo.
+
+https://bugzilla.kernel.org/show_bug.cgi?id=13195
+
+Signed-off-by: Len Brown <len.brown@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/acpi/acpica/acconfig.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/acpi/acpica/acconfig.h
++++ b/drivers/acpi/acpica/acconfig.h
+@@ -121,7 +121,7 @@
+
+ /* Maximum sleep allowed via Sleep() operator */
+
+-#define ACPI_MAX_SLEEP 20000 /* Two seconds */
++#define ACPI_MAX_SLEEP 2000 /* Two seconds */
+
+ /******************************************************************************
+ *
diff --git a/queue-3.0/asoc-blackfin-bf5xx-ad193x-fix-codec-device-name.patch b/queue-3.0/asoc-blackfin-bf5xx-ad193x-fix-codec-device-name.patch
new file mode 100644
index 0000000000..0a3e067379
--- /dev/null
+++ b/queue-3.0/asoc-blackfin-bf5xx-ad193x-fix-codec-device-name.patch
@@ -0,0 +1,41 @@
+From c5d2e650bd805a00ff9af537d5b5dede598a198c Mon Sep 17 00:00:00 2001
+From: Lars-Peter Clausen <lars@metafoo.de>
+Date: Mon, 5 Sep 2011 13:49:57 +0200
+Subject: ASoC: Blackfin: bf5xx-ad193x: Fix codec device name
+
+From: Lars-Peter Clausen <lars@metafoo.de>
+
+commit c5d2e650bd805a00ff9af537d5b5dede598a198c upstream.
+
+Fix the codec_name field of the dai_link to match the actual device name
+of the codec. Otherwise the card won't be instantiated.
+
+Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
+Acked-by: Liam Girdwood <lrg@ti.com>
+Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/soc/blackfin/bf5xx-ad193x.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/sound/soc/blackfin/bf5xx-ad193x.c
++++ b/sound/soc/blackfin/bf5xx-ad193x.c
+@@ -103,7 +103,7 @@ static struct snd_soc_dai_link bf5xx_ad1
+ .cpu_dai_name = "bfin-tdm.0",
+ .codec_dai_name ="ad193x-hifi",
+ .platform_name = "bfin-tdm-pcm-audio",
+- .codec_name = "ad193x.5",
++ .codec_name = "spi0.5",
+ .ops = &bf5xx_ad193x_ops,
+ },
+ {
+@@ -112,7 +112,7 @@ static struct snd_soc_dai_link bf5xx_ad1
+ .cpu_dai_name = "bfin-tdm.1",
+ .codec_dai_name ="ad193x-hifi",
+ .platform_name = "bfin-tdm-pcm-audio",
+- .codec_name = "ad193x.5",
++ .codec_name = "spi0.5",
+ .ops = &bf5xx_ad193x_ops,
+ },
+ };
diff --git a/queue-3.0/asoc-fix-reporting-of-partial-jack-updates.patch b/queue-3.0/asoc-fix-reporting-of-partial-jack-updates.patch
new file mode 100644
index 0000000000..31acc46538
--- /dev/null
+++ b/queue-3.0/asoc-fix-reporting-of-partial-jack-updates.patch
@@ -0,0 +1,33 @@
+From 747da0f80e566500421bd7760b2e050fea3fde5e Mon Sep 17 00:00:00 2001
+From: Mark Brown <broonie@opensource.wolfsonmicro.com>
+Date: Sun, 4 Sep 2011 08:18:18 -0700
+Subject: ASoC: Fix reporting of partial jack updates
+
+From: Mark Brown <broonie@opensource.wolfsonmicro.com>
+
+commit 747da0f80e566500421bd7760b2e050fea3fde5e upstream.
+
+We need to report the entire jack state to the core jack code, not just
+the bits that were being updated by the caller, otherwise the status
+reported by other detection methods will be omitted from the state seen
+by userspace.
+
+Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
+Acked-by: Liam Girdwood <lrg@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/soc/soc-jack.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/sound/soc/soc-jack.c
++++ b/sound/soc/soc-jack.c
+@@ -105,7 +105,7 @@ void snd_soc_jack_report(struct snd_soc_
+
+ snd_soc_dapm_sync(dapm);
+
+- snd_jack_report(jack->jack, status);
++ snd_jack_report(jack->jack, jack->status);
+
+ out:
+ mutex_unlock(&codec->mutex);
diff --git a/queue-3.0/asoc-mpc5200-replace-of_device-with-platform_device.patch b/queue-3.0/asoc-mpc5200-replace-of_device-with-platform_device.patch
new file mode 100644
index 0000000000..2af8bfd57a
--- /dev/null
+++ b/queue-3.0/asoc-mpc5200-replace-of_device-with-platform_device.patch
@@ -0,0 +1,51 @@
+From 3bdf28feafc52864bd7f17b39deec64833a89d19 Mon Sep 17 00:00:00 2001
+From: Timur Tabi <timur@freescale.com>
+Date: Tue, 23 Aug 2011 16:48:26 -0500
+Subject: ASoC: MPC5200: replace of_device with platform_device
+
+From: Timur Tabi <timur@freescale.com>
+
+commit 3bdf28feafc52864bd7f17b39deec64833a89d19 upstream.
+
+'struct of_device' no longer exists, and its functionality has been merged
+into platform_device. Update the MPC5200 audio DMA driver (mpc5200_dma)
+accordingly. This fixes a build break.
+
+Signed-off-by: Timur Tabi <timur@freescale.com>
+Acked-by: Liam Girdwood <lrg@ti.com>
+Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/soc/fsl/mpc5200_dma.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+--- a/sound/soc/fsl/mpc5200_dma.c
++++ b/sound/soc/fsl/mpc5200_dma.c
+@@ -368,7 +368,7 @@ static struct snd_soc_platform_driver mp
+ .pcm_free = &psc_dma_free,
+ };
+
+-static int mpc5200_hpcd_probe(struct of_device *op)
++static int mpc5200_hpcd_probe(struct platform_device *op)
+ {
+ phys_addr_t fifo;
+ struct psc_dma *psc_dma;
+@@ -486,7 +486,7 @@ out_unmap:
+ return ret;
+ }
+
+-static int mpc5200_hpcd_remove(struct of_device *op)
++static int mpc5200_hpcd_remove(struct platform_device *op)
+ {
+ struct psc_dma *psc_dma = dev_get_drvdata(&op->dev);
+
+@@ -518,7 +518,7 @@ MODULE_DEVICE_TABLE(of, mpc5200_hpcd_mat
+ static struct platform_driver mpc5200_hpcd_of_driver = {
+ .probe = mpc5200_hpcd_probe,
+ .remove = mpc5200_hpcd_remove,
+- .dev = {
++ .driver = {
+ .owner = THIS_MODULE,
+ .name = "mpc5200-pcm-audio",
+ .of_match_table = mpc5200_hpcd_match,
diff --git a/queue-3.0/ath9k_hw-fix-calibration-on-5-ghz.patch b/queue-3.0/ath9k_hw-fix-calibration-on-5-ghz.patch
new file mode 100644
index 0000000000..94c503670a
--- /dev/null
+++ b/queue-3.0/ath9k_hw-fix-calibration-on-5-ghz.patch
@@ -0,0 +1,34 @@
+From 0e4660cbe51276e86dbdab17228733dbcdb49249 Mon Sep 17 00:00:00 2001
+From: Felix Fietkau <nbd@openwrt.org>
+Date: Mon, 29 Aug 2011 10:06:14 +0200
+Subject: ath9k_hw: fix calibration on 5 ghz
+
+From: Felix Fietkau <nbd@openwrt.org>
+
+commit 0e4660cbe51276e86dbdab17228733dbcdb49249 upstream.
+
+ADC calibrations cannot run on 5 GHz with fast clock enabled. They
+need to be disabled, otherwise they'll hang and IQ mismatch calibration
+will not be run either.
+
+Signed-off-by: Felix Fietkau <nbd@openwrt.org>
+Reported-by: Adrian Chadd <adrian@freebsd.org>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/wireless/ath/ath9k/ar9002_calib.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/ath/ath9k/ar9002_calib.c
++++ b/drivers/net/wireless/ath/ath9k/ar9002_calib.c
+@@ -41,7 +41,8 @@ static bool ar9002_hw_is_cal_supported(s
+ case ADC_DC_CAL:
+ /* Run ADC Gain Cal for non-CCK & non 2GHz-HT20 only */
+ if (!IS_CHAN_B(chan) &&
+- !(IS_CHAN_2GHZ(chan) && IS_CHAN_HT20(chan)))
++ !((IS_CHAN_2GHZ(chan) || IS_CHAN_A_FAST_CLOCK(ah, chan)) &&
++ IS_CHAN_HT20(chan)))
+ supported = true;
+ break;
+ }
diff --git a/queue-3.0/e1000-fix-driver-to-be-used-on-pa-risc-c8000-workstations.patch b/queue-3.0/e1000-fix-driver-to-be-used-on-pa-risc-c8000-workstations.patch
new file mode 100644
index 0000000000..c73f9c3272
--- /dev/null
+++ b/queue-3.0/e1000-fix-driver-to-be-used-on-pa-risc-c8000-workstations.patch
@@ -0,0 +1,47 @@
+From e2faeec2de9e2c73958e6ea6065dde1e8cd6f3a2 Mon Sep 17 00:00:00 2001
+From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
+Date: Tue, 30 Aug 2011 20:58:56 -0400
+Subject: e1000: Fix driver to be used on PA RISC C8000 workstations
+
+From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
+
+commit e2faeec2de9e2c73958e6ea6065dde1e8cd6f3a2 upstream.
+
+The checksum field in the EEPROM on HPPA is really not a
+checksum but a signature (0x16d6). So allow 0x16d6 as the
+matching checksum on HPPA systems.
+
+This issue is present on longterm/stable kernels, I have
+verified that this patch is applicable back to at least
+2.6.32.y kernels.
+
+v2- changed ifdef to use CONFIG_PARISC instead of __hppa__
+
+CC: Guy Martin <gmsoft@tuxicoman.be>
+CC: Rolf Eike Beer <eike-kernel@sf-tec.de>
+CC: Matt Turner <mattst88@gmail.com>
+Reported-by: Mikulas Patocka <mikulas@artax.kerlin.mff.cuni.cz>
+Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
+Acked-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/e1000/e1000_hw.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+--- a/drivers/net/e1000/e1000_hw.c
++++ b/drivers/net/e1000/e1000_hw.c
+@@ -4028,6 +4028,12 @@ s32 e1000_validate_eeprom_checksum(struc
+ checksum += eeprom_data;
+ }
+
++#ifdef CONFIG_PARISC
++ /* This is a signature and not a checksum on HP c8000 */
++ if ((hw->subsystem_vendor_id == 0x103C) && (eeprom_data == 0x16d6))
++ return E1000_SUCCESS;
++
++#endif
+ if (checksum == (u16) EEPROM_SUM)
+ return E1000_SUCCESS;
+ else {
diff --git a/queue-3.0/genirq-make-irq_shutdown-symmetric-vs.-irq_startup-again.patch b/queue-3.0/genirq-make-irq_shutdown-symmetric-vs.-irq_startup-again.patch
new file mode 100644
index 0000000000..31fffd49ca
--- /dev/null
+++ b/queue-3.0/genirq-make-irq_shutdown-symmetric-vs.-irq_startup-again.patch
@@ -0,0 +1,46 @@
+From ed585a651681e822089087b426e6ebfb6d3d9873 Mon Sep 17 00:00:00 2001
+From: Geert Uytterhoeven <geert@linux-m68k.org>
+Date: Sun, 11 Sep 2011 13:59:27 +0200
+Subject: genirq: Make irq_shutdown() symmetric vs. irq_startup again
+
+From: Geert Uytterhoeven <geert@linux-m68k.org>
+
+commit ed585a651681e822089087b426e6ebfb6d3d9873 upstream.
+
+If an irq_chip provides .irq_shutdown(), but neither of .irq_disable() or
+.irq_mask(), free_irq() crashes when jumping to NULL.
+Fix this by only trying .irq_disable() and .irq_mask() if there's no
+.irq_shutdown() provided.
+
+This revives the symmetry with irq_startup(), which tries .irq_startup(),
+.irq_enable(), and irq_unmask(), and makes it consistent with the comment for
+irq_chip.irq_shutdown() in <linux/irq.h>, which says:
+
+ * @irq_shutdown: shut down the interrupt (defaults to ->disable if NULL)
+
+This is also how __free_irq() behaved before the big overhaul, cfr. e.g.
+3b56f0585fd4c02d047dc406668cb40159b2d340 ("genirq: Remove bogus conditional"),
+where the core interrupt code always overrode .irq_shutdown() to
+.irq_disable() if .irq_shutdown() was NULL.
+
+Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
+Cc: linux-m68k@lists.linux-m68k.org
+Link: http://lkml.kernel.org/r/1315742394-16036-2-git-send-email-geert@linux-m68k.org
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ kernel/irq/chip.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/kernel/irq/chip.c
++++ b/kernel/irq/chip.c
+@@ -178,7 +178,7 @@ void irq_shutdown(struct irq_desc *desc)
+ desc->depth = 1;
+ if (desc->irq_data.chip->irq_shutdown)
+ desc->irq_data.chip->irq_shutdown(&desc->irq_data);
+- if (desc->irq_data.chip->irq_disable)
++ else if (desc->irq_data.chip->irq_disable)
+ desc->irq_data.chip->irq_disable(&desc->irq_data);
+ else
+ desc->irq_data.chip->irq_mask(&desc->irq_data);
diff --git a/queue-3.0/hpsa-fix-physical-device-lun-and-target-numbering-problem.patch b/queue-3.0/hpsa-fix-physical-device-lun-and-target-numbering-problem.patch
new file mode 100644
index 0000000000..069fbeb6fd
--- /dev/null
+++ b/queue-3.0/hpsa-fix-physical-device-lun-and-target-numbering-problem.patch
@@ -0,0 +1,46 @@
+From 01350d05539d1c95ef3568d062d864ab76ae7670 Mon Sep 17 00:00:00 2001
+From: "Stephen M. Cameron" <scameron@beardog.cce.hp.com>
+Date: Tue, 9 Aug 2011 08:18:01 -0500
+Subject: [SCSI] hpsa: fix physical device lun and target numbering problem
+
+From: "Stephen M. Cameron" <scameron@beardog.cce.hp.com>
+
+commit 01350d05539d1c95ef3568d062d864ab76ae7670 upstream.
+
+If a physical device exposed to the OS by hpsa
+is replaced (e.g. one hot plug tape drive is replaced
+by another, or a tape drive is placed into "OBDR" mode
+in which it acts like a CD-ROM device) and a rescan is
+initiated, the replaced device will be added to the
+SCSI midlayer with target and lun numbers set to -1.
+After that, a panic is likely to ensue. When a physical
+device is replaced, the lun and target number should be
+preserved.
+
+Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com>
+Signed-off-by: James Bottomley <JBottomley@Parallels.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/scsi/hpsa.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+--- a/drivers/scsi/hpsa.c
++++ b/drivers/scsi/hpsa.c
+@@ -676,6 +676,16 @@ static void hpsa_scsi_replace_entry(stru
+ BUG_ON(entry < 0 || entry >= HPSA_MAX_SCSI_DEVS_PER_HBA);
+ removed[*nremoved] = h->dev[entry];
+ (*nremoved)++;
++
++ /*
++ * New physical devices won't have target/lun assigned yet
++ * so we need to preserve the values in the slot we are replacing.
++ */
++ if (new_entry->target == -1) {
++ new_entry->target = h->dev[entry]->target;
++ new_entry->lun = h->dev[entry]->lun;
++ }
++
+ h->dev[entry] = new_entry;
+ added[*nadded] = new_entry;
+ (*nadded)++;
diff --git a/queue-3.0/hpsa-fix-problem-that-obdr-devices-are-not-detected.patch b/queue-3.0/hpsa-fix-problem-that-obdr-devices-are-not-detected.patch
new file mode 100644
index 0000000000..35c54a0d7a
--- /dev/null
+++ b/queue-3.0/hpsa-fix-problem-that-obdr-devices-are-not-detected.patch
@@ -0,0 +1,147 @@
+From 0b0e1d6cbcc8627970e0399df8f06edd690ec7d9 Mon Sep 17 00:00:00 2001
+From: "Stephen M. Cameron" <scameron@beardog.cce.hp.com>
+Date: Tue, 9 Aug 2011 08:17:30 -0500
+Subject: [SCSI] hpsa: fix problem that OBDR devices are not detected
+
+From: "Stephen M. Cameron" <scameron@beardog.cce.hp.com>
+
+commit 0b0e1d6cbcc8627970e0399df8f06edd690ec7d9 upstream.
+
+The test to detect OBDR ("One Button Disaster Recovery")
+cd-rom devices was comparing against uninitialized data.
+
+Fixed by moving the test for the device to where the
+inquiry data is collected, and uninitialized variable
+altogether as it wasn't really being used.
+
+Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com>
+Signed-off-by: James Bottomley <JBottomley@Parallels.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/scsi/hpsa.c | 47 +++++++++++++++++++++++++++--------------------
+ 1 file changed, 27 insertions(+), 20 deletions(-)
+
+--- a/drivers/scsi/hpsa.c
++++ b/drivers/scsi/hpsa.c
+@@ -1548,10 +1548,17 @@ static inline void hpsa_set_bus_target_l
+ }
+
+ static int hpsa_update_device_info(struct ctlr_info *h,
+- unsigned char scsi3addr[], struct hpsa_scsi_dev_t *this_device)
++ unsigned char scsi3addr[], struct hpsa_scsi_dev_t *this_device,
++ unsigned char *is_OBDR_device)
+ {
+-#define OBDR_TAPE_INQ_SIZE 49
++
++#define OBDR_SIG_OFFSET 43
++#define OBDR_TAPE_SIG "$DR-10"
++#define OBDR_SIG_LEN (sizeof(OBDR_TAPE_SIG) - 1)
++#define OBDR_TAPE_INQ_SIZE (OBDR_SIG_OFFSET + OBDR_SIG_LEN)
++
+ unsigned char *inq_buff;
++ unsigned char *obdr_sig;
+
+ inq_buff = kzalloc(OBDR_TAPE_INQ_SIZE, GFP_KERNEL);
+ if (!inq_buff)
+@@ -1583,6 +1590,16 @@ static int hpsa_update_device_info(struc
+ else
+ this_device->raid_level = RAID_UNKNOWN;
+
++ if (is_OBDR_device) {
++ /* See if this is a One-Button-Disaster-Recovery device
++ * by looking for "$DR-10" at offset 43 in inquiry data.
++ */
++ obdr_sig = &inq_buff[OBDR_SIG_OFFSET];
++ *is_OBDR_device = (this_device->devtype == TYPE_ROM &&
++ strncmp(obdr_sig, OBDR_TAPE_SIG,
++ OBDR_SIG_LEN) == 0);
++ }
++
+ kfree(inq_buff);
+ return 0;
+
+@@ -1716,7 +1733,7 @@ static int add_msa2xxx_enclosure_device(
+ return 0;
+ }
+
+- if (hpsa_update_device_info(h, scsi3addr, this_device))
++ if (hpsa_update_device_info(h, scsi3addr, this_device, NULL))
+ return 0;
+ (*nmsa2xxx_enclosures)++;
+ hpsa_set_bus_target_lun(this_device, bus, target, 0);
+@@ -1808,7 +1825,6 @@ static void hpsa_update_scsi_devices(str
+ */
+ struct ReportLUNdata *physdev_list = NULL;
+ struct ReportLUNdata *logdev_list = NULL;
+- unsigned char *inq_buff = NULL;
+ u32 nphysicals = 0;
+ u32 nlogicals = 0;
+ u32 ndev_allocated = 0;
+@@ -1824,11 +1840,9 @@ static void hpsa_update_scsi_devices(str
+ GFP_KERNEL);
+ physdev_list = kzalloc(reportlunsize, GFP_KERNEL);
+ logdev_list = kzalloc(reportlunsize, GFP_KERNEL);
+- inq_buff = kmalloc(OBDR_TAPE_INQ_SIZE, GFP_KERNEL);
+ tmpdevice = kzalloc(sizeof(*tmpdevice), GFP_KERNEL);
+
+- if (!currentsd || !physdev_list || !logdev_list ||
+- !inq_buff || !tmpdevice) {
++ if (!currentsd || !physdev_list || !logdev_list || !tmpdevice) {
+ dev_err(&h->pdev->dev, "out of memory\n");
+ goto out;
+ }
+@@ -1863,7 +1877,7 @@ static void hpsa_update_scsi_devices(str
+ /* adjust our table of devices */
+ nmsa2xxx_enclosures = 0;
+ for (i = 0; i < nphysicals + nlogicals + 1; i++) {
+- u8 *lunaddrbytes;
++ u8 *lunaddrbytes, is_OBDR = 0;
+
+ /* Figure out where the LUN ID info is coming from */
+ lunaddrbytes = figure_lunaddrbytes(h, raid_ctlr_position,
+@@ -1874,7 +1888,8 @@ static void hpsa_update_scsi_devices(str
+ continue;
+
+ /* Get device type, vendor, model, device id */
+- if (hpsa_update_device_info(h, lunaddrbytes, tmpdevice))
++ if (hpsa_update_device_info(h, lunaddrbytes, tmpdevice,
++ &is_OBDR))
+ continue; /* skip it if we can't talk to it. */
+ figure_bus_target_lun(h, lunaddrbytes, &bus, &target, &lun,
+ tmpdevice);
+@@ -1898,7 +1913,7 @@ static void hpsa_update_scsi_devices(str
+ hpsa_set_bus_target_lun(this_device, bus, target, lun);
+
+ switch (this_device->devtype) {
+- case TYPE_ROM: {
++ case TYPE_ROM:
+ /* We don't *really* support actual CD-ROM devices,
+ * just "One Button Disaster Recovery" tape drive
+ * which temporarily pretends to be a CD-ROM drive.
+@@ -1906,15 +1921,8 @@ static void hpsa_update_scsi_devices(str
+ * device by checking for "$DR-10" in bytes 43-48 of
+ * the inquiry data.
+ */
+- char obdr_sig[7];
+-#define OBDR_TAPE_SIG "$DR-10"
+- strncpy(obdr_sig, &inq_buff[43], 6);
+- obdr_sig[6] = '\0';
+- if (strncmp(obdr_sig, OBDR_TAPE_SIG, 6) != 0)
+- /* Not OBDR device, ignore it. */
+- break;
+- }
+- ncurrent++;
++ if (is_OBDR)
++ ncurrent++;
+ break;
+ case TYPE_DISK:
+ if (i < nphysicals)
+@@ -1947,7 +1955,6 @@ out:
+ for (i = 0; i < ndev_allocated; i++)
+ kfree(currentsd[i]);
+ kfree(currentsd);
+- kfree(inq_buff);
+ kfree(physdev_list);
+ kfree(logdev_list);
+ }
diff --git a/queue-3.0/isci-fix-32-bit-operation-when-config_highmem64g-n.patch b/queue-3.0/isci-fix-32-bit-operation-when-config_highmem64g-n.patch
new file mode 100644
index 0000000000..b67b527ff8
--- /dev/null
+++ b/queue-3.0/isci-fix-32-bit-operation-when-config_highmem64g-n.patch
@@ -0,0 +1,49 @@
+From ee33e2b771f9e9e4aaba2bb2ace7b727fe451a8b Mon Sep 17 00:00:00 2001
+From: Dan Williams <dan.j.williams@intel.com>
+Date: Fri, 29 Jul 2011 17:16:45 -0700
+Subject: [SCSI] isci: fix 32-bit operation when CONFIG_HIGHMEM64G=n
+
+From: Dan Williams <dan.j.williams@intel.com>
+
+commit ee33e2b771f9e9e4aaba2bb2ace7b727fe451a8b upstream.
+
+The unsolicited frame control infrastructure requires a table of dma
+addresses for the hardware to lookup the frame buffer location by an
+index. The hardware expects the elements of this table to be 64-bit
+quantities, so we cannot reference these elements as dma_addr_t. All
+unsolicited frame protocols are affected, particularly SATA-PIO and SMP
+which prevented direct-attached SATA drives and expander-attached drives
+to not be discovered.
+
+Reported-by: Jacek Danecki <jacek.danecki@intel.com>
+Signed-off-by: Dan Williams <dan.j.williams@intel.com>
+Signed-off-by: James Bottomley <JBottomley@Parallels.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/scsi/isci/unsolicited_frame_control.c | 2 +-
+ drivers/scsi/isci/unsolicited_frame_control.h | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/scsi/isci/unsolicited_frame_control.c
++++ b/drivers/scsi/isci/unsolicited_frame_control.c
+@@ -72,7 +72,7 @@ int sci_unsolicited_frame_control_constr
+ */
+ buf_len = SCU_MAX_UNSOLICITED_FRAMES * SCU_UNSOLICITED_FRAME_BUFFER_SIZE;
+ header_len = SCU_MAX_UNSOLICITED_FRAMES * sizeof(struct scu_unsolicited_frame_header);
+- size = buf_len + header_len + SCU_MAX_UNSOLICITED_FRAMES * sizeof(dma_addr_t);
++ size = buf_len + header_len + SCU_MAX_UNSOLICITED_FRAMES * sizeof(uf_control->address_table.array[0]);
+
+ /*
+ * The Unsolicited Frame buffers are set at the start of the UF
+--- a/drivers/scsi/isci/unsolicited_frame_control.h
++++ b/drivers/scsi/isci/unsolicited_frame_control.h
+@@ -214,7 +214,7 @@ struct sci_uf_address_table_array {
+ * starting address of the UF address table.
+ * 64-bit pointers are required by the hardware.
+ */
+- dma_addr_t *array;
++ u64 *array;
+
+ /**
+ * This field specifies the physical address location for the UF
diff --git a/queue-3.0/iwlegacy-fix-bug_on-info-control.rates.idx-0.patch b/queue-3.0/iwlegacy-fix-bug_on-info-control.rates.idx-0.patch
new file mode 100644
index 0000000000..9902d60acf
--- /dev/null
+++ b/queue-3.0/iwlegacy-fix-bug_on-info-control.rates.idx-0.patch
@@ -0,0 +1,49 @@
+From 7c2510120e9b43b0caf32c3786a6ab831f7d9e87 Mon Sep 17 00:00:00 2001
+From: Stanislaw Gruszka <sgruszka@redhat.com>
+Date: Fri, 26 Aug 2011 17:24:59 +0200
+Subject: iwlegacy: fix BUG_ON(info->control.rates[0].idx < 0)
+
+From: Stanislaw Gruszka <sgruszka@redhat.com>
+
+commit 7c2510120e9b43b0caf32c3786a6ab831f7d9e87 upstream.
+
+When trying to connect to 5GHz we can provide negative index to
+mac80211 what trigger BUG_ON. Reason of iwl-3945-rs malfunction
+on 5GHz is unknown and needs further investigation. For now, to
+do not trigger a bug, correct value and just print WARNING.
+
+Address bug:
+https://bugzilla.redhat.com/show_bug.cgi?id=730653
+
+Reported-and-tested-by: Jan Teichmann <jan.teichmann@gmail.com>
+Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/wireless/iwlegacy/iwl-3945-rs.c | 13 ++++++++-----
+ 1 file changed, 8 insertions(+), 5 deletions(-)
+
+--- a/drivers/net/wireless/iwlegacy/iwl-3945-rs.c
++++ b/drivers/net/wireless/iwlegacy/iwl-3945-rs.c
+@@ -822,12 +822,15 @@ static void iwl3945_rs_get_rate(void *pr
+
+ out:
+
+- rs_sta->last_txrate_idx = index;
+- if (sband->band == IEEE80211_BAND_5GHZ)
+- info->control.rates[0].idx = rs_sta->last_txrate_idx -
+- IWL_FIRST_OFDM_RATE;
+- else
++ if (sband->band == IEEE80211_BAND_5GHZ) {
++ if (WARN_ON_ONCE(index < IWL_FIRST_OFDM_RATE))
++ index = IWL_FIRST_OFDM_RATE;
++ rs_sta->last_txrate_idx = index;
++ info->control.rates[0].idx = index - IWL_FIRST_OFDM_RATE;
++ } else {
++ rs_sta->last_txrate_idx = index;
+ info->control.rates[0].idx = rs_sta->last_txrate_idx;
++ }
+
+ IWL_DEBUG_RATE(priv, "leave: %d\n", index);
+ }
diff --git a/queue-3.0/mac80211-fix-missing-sta_lock-in-__sta_info_destroy.patch b/queue-3.0/mac80211-fix-missing-sta_lock-in-__sta_info_destroy.patch
new file mode 100644
index 0000000000..cd7d0c4c0b
--- /dev/null
+++ b/queue-3.0/mac80211-fix-missing-sta_lock-in-__sta_info_destroy.patch
@@ -0,0 +1,35 @@
+From 4bae7d976976fa52d345805ba686934cd548343e Mon Sep 17 00:00:00 2001
+From: Johannes Berg <johannes.berg@intel.com>
+Date: Tue, 6 Sep 2011 12:47:39 +0200
+Subject: mac80211: fix missing sta_lock in __sta_info_destroy
+
+From: Johannes Berg <johannes.berg@intel.com>
+
+commit 4bae7d976976fa52d345805ba686934cd548343e upstream.
+
+Since my commit 34e895075e21be3e21e71d6317440d1ee7969ad0
+("mac80211: allow station add/remove to sleep") there is
+a race in mac80211 when it clears the TIM bit because a
+sleeping station disconnected, the spinlock isn't held
+around the relevant code any more. Use the right API to
+acquire the spinlock correctly.
+
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/mac80211/sta_info.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/net/mac80211/sta_info.c
++++ b/net/mac80211/sta_info.c
+@@ -669,7 +669,7 @@ static int __must_check __sta_info_destr
+ BUG_ON(!sdata->bss);
+
+ atomic_dec(&sdata->bss->num_sta_ps);
+- __sta_info_clear_tim_bit(sdata->bss, sta);
++ sta_info_clear_tim_bit(sta);
+ }
+
+ local->num_sta--;
diff --git a/queue-3.0/mfd-fix-initialisation-of-tps65910-interrupts.patch b/queue-3.0/mfd-fix-initialisation-of-tps65910-interrupts.patch
new file mode 100644
index 0000000000..823bb0587d
--- /dev/null
+++ b/queue-3.0/mfd-fix-initialisation-of-tps65910-interrupts.patch
@@ -0,0 +1,35 @@
+From fa948761e685fb03823b3029e5b6bdb52229d6ce Mon Sep 17 00:00:00 2001
+From: Johan Hovold <jhovold@gmail.com>
+Date: Mon, 15 Aug 2011 12:42:03 +0200
+Subject: mfd: Fix initialisation of tps65910 interrupts
+
+From: Johan Hovold <jhovold@gmail.com>
+
+commit fa948761e685fb03823b3029e5b6bdb52229d6ce upstream.
+
+Fix regression introduced by commit
+a2974732ca7614aaf0baf9d6dd3ad893d50ce1c5 (TPS65911: Add new irq
+definitions) which caused irq_num to be incorrectly set for tps65910.
+
+Signed-off-by: Johan Hovold <jhovold@gmail.com>
+Acked-by: Graeme Gregory <gg@slimlogic.co.uk>
+Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/mfd/tps65910-irq.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/mfd/tps65910-irq.c
++++ b/drivers/mfd/tps65910-irq.c
+@@ -178,8 +178,10 @@ int tps65910_irq_init(struct tps65910 *t
+ switch (tps65910_chip_id(tps65910)) {
+ case TPS65910:
+ tps65910->irq_num = TPS65910_NUM_IRQ;
++ break;
+ case TPS65911:
+ tps65910->irq_num = TPS65911_NUM_IRQ;
++ break;
+ }
+
+ /* Register with genirq */
diff --git a/queue-3.0/mfd-fix-value-of-wm8994_configure_gpio.patch b/queue-3.0/mfd-fix-value-of-wm8994_configure_gpio.patch
new file mode 100644
index 0000000000..056ccb6378
--- /dev/null
+++ b/queue-3.0/mfd-fix-value-of-wm8994_configure_gpio.patch
@@ -0,0 +1,31 @@
+From 8efcc57dedfebc99c3cd39564e3fc47cd1a24b75 Mon Sep 17 00:00:00 2001
+From: Mark Brown <broonie@opensource.wolfsonmicro.com>
+Date: Wed, 3 Aug 2011 18:04:29 +0900
+Subject: mfd: Fix value of WM8994_CONFIGURE_GPIO
+
+From: Mark Brown <broonie@opensource.wolfsonmicro.com>
+
+commit 8efcc57dedfebc99c3cd39564e3fc47cd1a24b75 upstream.
+
+This needs to be an out of band value for the register and on this device
+registers are 16 bit so we must shift left one to the 17th bit.
+
+Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
+Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ include/linux/mfd/wm8994/pdata.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/include/linux/mfd/wm8994/pdata.h
++++ b/include/linux/mfd/wm8994/pdata.h
+@@ -26,7 +26,7 @@ struct wm8994_ldo_pdata {
+ struct regulator_init_data *init_data;
+ };
+
+-#define WM8994_CONFIGURE_GPIO 0x8000
++#define WM8994_CONFIGURE_GPIO 0x10000
+
+ #define WM8994_DRC_REGS 5
+ #define WM8994_EQ_REGS 20
diff --git a/queue-3.0/mfd-make-omap-usb-host-tll-mode-work-again.patch b/queue-3.0/mfd-make-omap-usb-host-tll-mode-work-again.patch
new file mode 100644
index 0000000000..29686102ac
--- /dev/null
+++ b/queue-3.0/mfd-make-omap-usb-host-tll-mode-work-again.patch
@@ -0,0 +1,33 @@
+From e600cffe618ff0da29ae1f8b8d3824ce0e2409fc Mon Sep 17 00:00:00 2001
+From: Anand Gadiyar <gadiyar@ti.com>
+Date: Thu, 18 Aug 2011 16:14:31 +0530
+Subject: mfd: Make omap-usb-host TLL mode work again
+
+From: Anand Gadiyar <gadiyar@ti.com>
+
+commit e600cffe618ff0da29ae1f8b8d3824ce0e2409fc upstream.
+
+This code section seems to have been accidentally copy pasted.
+It causes incorrect bits to be set up in the TLL_CHANNEL_CONF
+register and prevents the TLL mode from working correctly.
+
+Signed-off-by: Anand Gadiyar <gadiyar@ti.com>
+Cc: Keshava Munegowda <keshava_mgowda@ti.com>
+Acked-by: Felipe Balbi <balbi@ti.com>
+Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/mfd/omap-usb-host.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+--- a/drivers/mfd/omap-usb-host.c
++++ b/drivers/mfd/omap-usb-host.c
+@@ -676,7 +676,6 @@ static void usbhs_omap_tll_init(struct d
+ | OMAP_TLL_CHANNEL_CONF_ULPINOBITSTUFF
+ | OMAP_TLL_CHANNEL_CONF_ULPIDDRMODE);
+
+- reg |= (1 << (i + 1));
+ } else
+ continue;
+
diff --git a/queue-3.0/qla2xxx-correct-inadvertent-loop-state-transitions-during-port-update-handling.patch b/queue-3.0/qla2xxx-correct-inadvertent-loop-state-transitions-during-port-update-handling.patch
new file mode 100644
index 0000000000..e09c55a3ff
--- /dev/null
+++ b/queue-3.0/qla2xxx-correct-inadvertent-loop-state-transitions-during-port-update-handling.patch
@@ -0,0 +1,51 @@
+From 58b48576966ed0afd3f63ef17480ec12748a7119 Mon Sep 17 00:00:00 2001
+From: Andrew Vasquez <andrew.vasquez@qlogic.com>
+Date: Tue, 16 Aug 2011 11:29:28 -0700
+Subject: [SCSI] qla2xxx: Correct inadvertent loop state transitions during port-update handling.
+
+From: Andrew Vasquez <andrew.vasquez@qlogic.com>
+
+commit 58b48576966ed0afd3f63ef17480ec12748a7119 upstream.
+
+Transitioning to a LOOP_UPDATE loop-state could cause the driver
+to miss normal link/target processing. LOOP_UPDATE is a crufty
+artifact leftover from at time the driver performed it's own
+internal command-queuing. Safely remove this state.
+
+Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com>
+Signed-off-by: Chad Dupuis <chad.dupuis@qlogic.com>
+Signed-off-by: James Bottomley <JBottomley@Parallels.com>
+
+---
+ drivers/scsi/qla2xxx/qla_init.c | 3 ---
+ drivers/scsi/qla2xxx/qla_isr.c | 1 -
+ 2 files changed, 4 deletions(-)
+
+--- a/drivers/scsi/qla2xxx/qla_init.c
++++ b/drivers/scsi/qla2xxx/qla_init.c
+@@ -3822,15 +3822,12 @@ qla2x00_loop_resync(scsi_qla_host_t *vha
+ req = vha->req;
+ rsp = req->rsp;
+
+- atomic_set(&vha->loop_state, LOOP_UPDATE);
+ clear_bit(ISP_ABORT_RETRY, &vha->dpc_flags);
+ if (vha->flags.online) {
+ if (!(rval = qla2x00_fw_ready(vha))) {
+ /* Wait at most MAX_TARGET RSCNs for a stable link. */
+ wait_time = 256;
+ do {
+- atomic_set(&vha->loop_state, LOOP_UPDATE);
+-
+ /* Issue a marker after FW becomes ready. */
+ qla2x00_marker(vha, req, rsp, 0, 0,
+ MK_SYNC_ALL);
+--- a/drivers/scsi/qla2xxx/qla_isr.c
++++ b/drivers/scsi/qla2xxx/qla_isr.c
+@@ -736,7 +736,6 @@ skip_rio:
+ vha->flags.rscn_queue_overflow = 1;
+ }
+
+- atomic_set(&vha->loop_state, LOOP_UPDATE);
+ atomic_set(&vha->loop_down_timer, 0);
+ vha->flags.management_server_logged_in = 0;
+
diff --git a/queue-3.0/rtlwifi-fix-problem-when-switching-connections.patch b/queue-3.0/rtlwifi-fix-problem-when-switching-connections.patch
new file mode 100644
index 0000000000..01631bc0d4
--- /dev/null
+++ b/queue-3.0/rtlwifi-fix-problem-when-switching-connections.patch
@@ -0,0 +1,45 @@
+From bac2555c6d86387132930af4d14cb47c4dd3f4f7 Mon Sep 17 00:00:00 2001
+From: George <george0505@realtek.com>
+Date: Sat, 3 Sep 2011 10:58:48 -0500
+Subject: rtlwifi: Fix problem when switching connections
+
+From: George <george0505@realtek.com>
+
+commit bac2555c6d86387132930af4d14cb47c4dd3f4f7 upstream.
+
+The driver fails to clear encryption keys making it impossible
+to switch connections.
+
+Signed-off-by: George <george0505@realtek.com>
+Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/wireless/rtlwifi/core.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+--- a/drivers/net/wireless/rtlwifi/core.c
++++ b/drivers/net/wireless/rtlwifi/core.c
+@@ -610,6 +610,11 @@ static void rtl_op_bss_info_changed(stru
+
+ mac->link_state = MAC80211_NOLINK;
+ memset(mac->bssid, 0, 6);
++
++ /* reset sec info */
++ rtl_cam_reset_sec_info(hw);
++
++ rtl_cam_reset_all_entry(hw);
+ mac->vendor = PEER_UNKNOWN;
+
+ RT_TRACE(rtlpriv, COMP_MAC80211, DBG_DMESG,
+@@ -1063,6 +1068,9 @@ static int rtl_op_set_key(struct ieee802
+ *or clear all entry here.
+ */
+ rtl_cam_delete_one_entry(hw, mac_addr, key_idx);
++
++ rtl_cam_reset_sec_info(hw);
++
+ break;
+ default:
+ RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG,
diff --git a/queue-3.0/rtlwifi-rtl8192su-fix-problem-connecting-to-ht-enabled-ap.patch b/queue-3.0/rtlwifi-rtl8192su-fix-problem-connecting-to-ht-enabled-ap.patch
new file mode 100644
index 0000000000..08036f8fa1
--- /dev/null
+++ b/queue-3.0/rtlwifi-rtl8192su-fix-problem-connecting-to-ht-enabled-ap.patch
@@ -0,0 +1,45 @@
+From 3401dc6eba788ebc7c14ce51018d775b1c263399 Mon Sep 17 00:00:00 2001
+From: George <george0505@realtek.com>
+Date: Sat, 3 Sep 2011 10:58:47 -0500
+Subject: rtlwifi: rtl8192su: Fix problem connecting to HT-enabled AP
+
+From: George <george0505@realtek.com>
+
+commit 3401dc6eba788ebc7c14ce51018d775b1c263399 upstream.
+
+The driver fails to connect to 802.11n-enabled APs. The patch fixes
+Bug #42262.
+
+Signed-off-by: George <george0505@realtek.com>
+Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/wireless/rtlwifi/rtl8192cu/trx.c | 11 ++++++-----
+ 1 file changed, 6 insertions(+), 5 deletions(-)
+
+--- a/drivers/net/wireless/rtlwifi/rtl8192cu/trx.c
++++ b/drivers/net/wireless/rtlwifi/rtl8192cu/trx.c
+@@ -549,15 +549,16 @@ void rtl92cu_tx_fill_desc(struct ieee802
+ (tcb_desc->rts_use_shortpreamble ? 1 : 0)
+ : (tcb_desc->rts_use_shortgi ? 1 : 0)));
+ if (mac->bw_40) {
+- if (tcb_desc->packet_bw) {
++ if (rate_flag & IEEE80211_TX_RC_DUP_DATA) {
+ SET_TX_DESC_DATA_BW(txdesc, 1);
+ SET_TX_DESC_DATA_SC(txdesc, 3);
++ } else if(rate_flag & IEEE80211_TX_RC_40_MHZ_WIDTH){
++ SET_TX_DESC_DATA_BW(txdesc, 1);
++ SET_TX_DESC_DATA_SC(txdesc, mac->cur_40_prime_sc);
+ } else {
+ SET_TX_DESC_DATA_BW(txdesc, 0);
+- if (rate_flag & IEEE80211_TX_RC_DUP_DATA)
+- SET_TX_DESC_DATA_SC(txdesc,
+- mac->cur_40_prime_sc);
+- }
++ SET_TX_DESC_DATA_SC(txdesc, 0);
++ }
+ } else {
+ SET_TX_DESC_DATA_BW(txdesc, 0);
+ SET_TX_DESC_DATA_SC(txdesc, 0);
diff --git a/queue-3.0/series b/queue-3.0/series
index 6e6965eca8..603d7567df 100644
--- a/queue-3.0/series
+++ b/queue-3.0/series
@@ -101,3 +101,22 @@ pci-export-pcie_bus_configure_settings-symbol.patch
pci-remove-mrrs-modification-from-mps-setting-code.patch
isci-fix-sata-response-handling.patch
vfs-automount-should-ignore-lookup_follow.patch
+isci-fix-32-bit-operation-when-config_highmem64g-n.patch
+asoc-mpc5200-replace-of_device-with-platform_device.patch
+hpsa-fix-problem-that-obdr-devices-are-not-detected.patch
+hpsa-fix-physical-device-lun-and-target-numbering-problem.patch
+qla2xxx-correct-inadvertent-loop-state-transitions-during-port-update-handling.patch
+iwlegacy-fix-bug_on-info-control.rates.idx-0.patch
+acpica-acpi_max_sleep-should-be-2-sec-not-20.patch
+ath9k_hw-fix-calibration-on-5-ghz.patch
+e1000-fix-driver-to-be-used-on-pa-risc-c8000-workstations.patch
+asoc-fix-reporting-of-partial-jack-updates.patch
+asoc-blackfin-bf5xx-ad193x-fix-codec-device-name.patch
+mfd-fix-value-of-wm8994_configure_gpio.patch
+mfd-fix-initialisation-of-tps65910-interrupts.patch
+mfd-make-omap-usb-host-tll-mode-work-again.patch
+genirq-make-irq_shutdown-symmetric-vs.-irq_startup-again.patch
+rtlwifi-rtl8192su-fix-problem-connecting-to-ht-enabled-ap.patch
+rtlwifi-fix-problem-when-switching-connections.patch
+mac80211-fix-missing-sta_lock-in-__sta_info_destroy.patch
+x86-iommu-mark-dmar-irq-as-non-threaded.patch
diff --git a/queue-3.0/x86-iommu-mark-dmar-irq-as-non-threaded.patch b/queue-3.0/x86-iommu-mark-dmar-irq-as-non-threaded.patch
new file mode 100644
index 0000000000..53ca0d2e10
--- /dev/null
+++ b/queue-3.0/x86-iommu-mark-dmar-irq-as-non-threaded.patch
@@ -0,0 +1,33 @@
+From 477694e71113fd0694b6bb0bcc2d006b8ac62691 Mon Sep 17 00:00:00 2001
+From: Thomas Gleixner <tglx@linutronix.de>
+Date: Tue, 19 Jul 2011 16:25:42 +0200
+Subject: x86, iommu: Mark DMAR IRQ as non-threaded
+
+From: Thomas Gleixner <tglx@linutronix.de>
+
+commit 477694e71113fd0694b6bb0bcc2d006b8ac62691 upstream.
+
+Mark this lowlevel IRQ handler as non-threaded. This prevents a boot
+crash when "threadirqs" is on the kernel commandline. Also the
+interrupt handler is handling hardware critical events which should
+not be delayed into a thread.
+
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+Signed-off-by: Ingo Molnar <mingo@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/pci/dmar.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/pci/dmar.c
++++ b/drivers/pci/dmar.c
+@@ -1388,7 +1388,7 @@ int dmar_set_interrupt(struct intel_iomm
+ return ret;
+ }
+
+- ret = request_irq(irq, dmar_fault, 0, iommu->name, iommu);
++ ret = request_irq(irq, dmar_fault, IRQF_NO_THREAD, iommu->name, iommu);
+ if (ret)
+ printk(KERN_ERR "IOMMU: can't request irq\n");
+ return ret;