--- /dev/null
+From bc466e678d0a98f445bf3f9c76fedf18e7dcc6b0 Mon Sep 17 00:00:00 2001
+From: Marek Vasut <marek.vasut@gmail.com>
+Date: Tue, 26 Jul 2011 16:44:46 +0000
+Subject: ASIX: Simplify condition in rx_fixup()
+
+From: Marek Vasut <marek.vasut@gmail.com>
+
+commit bc466e678d0a98f445bf3f9c76fedf18e7dcc6b0 upstream.
+
+Signed-off-by: Marek Vasut <marek.vasut@gmail.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/usb/asix.c | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+--- a/drivers/net/usb/asix.c
++++ b/drivers/net/usb/asix.c
+@@ -314,10 +314,9 @@ static int asix_rx_fixup(struct usbnet *
+ skb_pull(skb, 4);
+
+ while (skb->len > 0) {
+- if ((short)(header & 0x0000ffff) !=
+- ~((short)((header & 0xffff0000) >> 16))) {
++ if ((header & 0xffff) != ((~header >> 16) & 0xffff))
+ netdev_err(dev->net, "asix_rx_fixup() Bad Header Length\n");
+- }
++
+ /* get the packet length */
+ size = (u16) (header & 0x0000ffff);
+
--- /dev/null
+From bca0beb9363f8487ac902931a50eb00180a2d14a Mon Sep 17 00:00:00 2001
+From: Marek Vasut <marek.vasut@gmail.com>
+Date: Tue, 26 Jul 2011 16:44:47 +0000
+Subject: ASIX: Use only 11 bits of header for data size
+
+From: Marek Vasut <marek.vasut@gmail.com>
+
+commit bca0beb9363f8487ac902931a50eb00180a2d14a upstream.
+
+The AX88772B uses only 11 bits of the header for the actual size. The other bits
+are used for something else. This causes dmesg full of messages:
+
+ asix_rx_fixup() Bad Header Length
+
+This patch trims the check to only 11 bits. I believe on older chips, the
+remaining 5 top bits are unused.
+
+Signed-off-by: Marek Vasut <marek.vasut@gmail.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/usb/asix.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/net/usb/asix.c
++++ b/drivers/net/usb/asix.c
+@@ -314,11 +314,11 @@ static int asix_rx_fixup(struct usbnet *
+ skb_pull(skb, 4);
+
+ while (skb->len > 0) {
+- if ((header & 0xffff) != ((~header >> 16) & 0xffff))
++ if ((header & 0x07ff) != ((~header >> 16) & 0x07ff))
+ netdev_err(dev->net, "asix_rx_fixup() Bad Header Length\n");
+
+ /* get the packet length */
+- size = (u16) (header & 0x0000ffff);
++ size = (u16) (header & 0x000007ff);
+
+ if ((skb->len) - ((size + 1) & 0xfffe) == 0) {
+ u8 alignment = (unsigned long)skb->data & 0x3;
Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/net/wireless/ath/ath9k/ar9003_mac.c | 4 ++--
--- /dev/null
+From 2d25f8b462f3b849d8913d02978657ef06e67dd8 Mon Sep 17 00:00:00 2001
+From: "Steven.Li" <Steven.Li@Atheros.com>
+Date: Fri, 1 Jul 2011 14:02:36 +0800
+Subject: Bluetooth: Add Atheros AR3012 one PID/VID supported
+
+From: "Steven.Li" <Steven.Li@Atheros.com>
+
+commit 2d25f8b462f3b849d8913d02978657ef06e67dd8 upstream.
+
+The new Ath3k needs to download patch and radio table,
+and it keeps same PID/VID even after downloading the patch and radio
+table. This patch is to use the bcdDevice (Device Release Number) to
+judge whether the chip has been patched or not. The init bcdDevice
+value of the chip is 0x0001, this value increases after patch and
+radio table downloading.
+
+Signed-off-by: Steven.Li <yongli@qca.qualcomm.com>
+Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/bluetooth/ath3k.c | 5 +++++
+ drivers/bluetooth/btusb.c | 12 +++++++++++-
+ 2 files changed, 16 insertions(+), 1 deletion(-)
+
+--- a/drivers/bluetooth/ath3k.c
++++ b/drivers/bluetooth/ath3k.c
+@@ -376,6 +376,11 @@ static int ath3k_probe(struct usb_interf
+
+ /* load patch and sysconfig files for AR3012 */
+ if (id->driver_info & BTUSB_ATH3012) {
++
++ /* New firmware with patch and sysconfig files already loaded */
++ if (le16_to_cpu(udev->descriptor.bcdDevice) > 0x0001)
++ return -ENODEV;
++
+ ret = ath3k_load_patch(udev);
+ if (ret < 0) {
+ BT_ERR("Loading patch file failed");
+--- a/drivers/bluetooth/btusb.c
++++ b/drivers/bluetooth/btusb.c
+@@ -54,6 +54,7 @@ static struct usb_driver btusb_driver;
+ #define BTUSB_BCM92035 0x10
+ #define BTUSB_BROKEN_ISOC 0x20
+ #define BTUSB_WRONG_SCO_MTU 0x40
++#define BTUSB_ATH3012 0x80
+
+ static struct usb_device_id btusb_table[] = {
+ /* Generic Bluetooth USB device */
+@@ -114,7 +115,7 @@ static struct usb_device_id blacklist_ta
+ { USB_DEVICE(0x03f0, 0x311d), .driver_info = BTUSB_IGNORE },
+
+ /* Atheros 3012 with sflash firmware */
+- { USB_DEVICE(0x0cf3, 0x3004), .driver_info = BTUSB_IGNORE },
++ { USB_DEVICE(0x0cf3, 0x3004), .driver_info = BTUSB_ATH3012 },
+
+ /* Atheros AR5BBU12 with sflash firmware */
+ { USB_DEVICE(0x0489, 0xe02c), .driver_info = BTUSB_IGNORE },
+@@ -918,6 +919,15 @@ static int btusb_probe(struct usb_interf
+ if (ignore_sniffer && id->driver_info & BTUSB_SNIFFER)
+ return -ENODEV;
+
++ if (id->driver_info & BTUSB_ATH3012) {
++ struct usb_device *udev = interface_to_usbdev(intf);
++
++ /* Old firmware would otherwise let ath3k driver load
++ * patch and sysconfig files */
++ if (le16_to_cpu(udev->descriptor.bcdDevice) <= 0x0001)
++ return -ENODEV;
++ }
++
+ data = kzalloc(sizeof(*data), GFP_KERNEL);
+ if (!data)
+ return -ENOMEM;
--- /dev/null
+From a63b723d02531f7add0b2b8a0e6a77ee176f1626 Mon Sep 17 00:00:00 2001
+From: Pieter-Augustijn Van Malleghem <p-a@scarlet.be>
+Date: Wed, 7 Sep 2011 02:28:10 -0400
+Subject: Bluetooth: Add MacBookAir4,1 support
+
+From: Pieter-Augustijn Van Malleghem <p-a@scarlet.be>
+
+commit a63b723d02531f7add0b2b8a0e6a77ee176f1626 upstream.
+
+This patch against current git adds the hardware ID for the Apple
+MacBookAir4,1, released in July 2011. The device features a BCM2046
+USB chip. The patch was inspired by the previous modifications adding
+support for the MacBookAir3,x.
+
+Signed-off-by: Pieter-Augustijn Van Malleghem <p-a@scarlet.be>
+Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/bluetooth/btusb.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/bluetooth/btusb.c
++++ b/drivers/bluetooth/btusb.c
+@@ -71,6 +71,9 @@ static struct usb_device_id btusb_table[
+ /* Apple MacBookAir3,1, MacBookAir3,2 */
+ { USB_DEVICE(0x05ac, 0x821b) },
+
++ /* Apple MacBookAir4,1 */
++ { USB_DEVICE(0x05ac, 0x821f) },
++
+ /* Apple MacBookPro8,2 */
+ { USB_DEVICE(0x05ac, 0x821a) },
+
--- /dev/null
+From f78b68261e80899f81a21dfdf91e2a1456ea8175 Mon Sep 17 00:00:00 2001
+From: Jurgen Kramer <gtmkramer@xs4all.nl>
+Date: Sun, 4 Sep 2011 18:01:42 +0200
+Subject: Bluetooth: add support for 2011 mac mini
+
+From: Jurgen Kramer <gtmkramer@xs4all.nl>
+
+commit f78b68261e80899f81a21dfdf91e2a1456ea8175 upstream.
+
+Today I noticed that the usb bluetooth adapter (BCM2046B1) on my 2011
+mac mini was not working. I've created a patch to get it going.
+
+Signed-off-by: Jurgen Kramer <gtmkramer@xs4all.nl>
+Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/bluetooth/btusb.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/bluetooth/btusb.c
++++ b/drivers/bluetooth/btusb.c
+@@ -78,6 +78,9 @@ static struct usb_device_id btusb_table[
+ /* Apple MacBookPro8,2 */
+ { USB_DEVICE(0x05ac, 0x821a) },
+
++ /* Apple MacMini5,1 */
++ { USB_DEVICE(0x05ac, 0x8281) },
++
+ /* AVM BlueFRITZ! USB v2.0 */
+ { USB_DEVICE(0x057c, 0x3800) },
+
--- /dev/null
+From 8e7c3d2e4ba18ee4cdcc1f89aec944fbff4ce735 Mon Sep 17 00:00:00 2001
+From: Ricardo Mendoza <ricmm@gentoo.org>
+Date: Wed, 13 Jul 2011 16:04:29 +0100
+Subject: Bluetooth: Add Toshiba laptops AR30XX device ID
+
+From: Ricardo Mendoza <ricmm@gentoo.org>
+
+commit 8e7c3d2e4ba18ee4cdcc1f89aec944fbff4ce735 upstream.
+
+Blacklist Toshiba-branded AR3011 based AR5B195 [0930:0215] and add to
+ath3k.c for firmware loading.
+
+Signed-off-by: Ricardo Mendoza <ricmm@gentoo.org>
+Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/bluetooth/ath3k.c | 1 +
+ drivers/bluetooth/btusb.c | 1 +
+ 2 files changed, 2 insertions(+)
+
+--- a/drivers/bluetooth/ath3k.c
++++ b/drivers/bluetooth/ath3k.c
+@@ -63,6 +63,7 @@ static struct usb_device_id ath3k_table[
+ /* Atheros AR3011 with sflash firmware*/
+ { USB_DEVICE(0x0CF3, 0x3002) },
+ { USB_DEVICE(0x13d3, 0x3304) },
++ { USB_DEVICE(0x0930, 0x0215) },
+
+ /* Atheros AR9285 Malbec with sflash firmware */
+ { USB_DEVICE(0x03F0, 0x311D) },
+--- a/drivers/bluetooth/btusb.c
++++ b/drivers/bluetooth/btusb.c
+@@ -108,6 +108,7 @@ static struct usb_device_id blacklist_ta
+ /* Atheros 3011 with sflash firmware */
+ { USB_DEVICE(0x0cf3, 0x3002), .driver_info = BTUSB_IGNORE },
+ { USB_DEVICE(0x13d3, 0x3304), .driver_info = BTUSB_IGNORE },
++ { USB_DEVICE(0x0930, 0x0215), .driver_info = BTUSB_IGNORE },
+
+ /* Atheros AR9285 Malbec with sflash firmware */
+ { USB_DEVICE(0x03f0, 0x311d), .driver_info = BTUSB_IGNORE },
--- /dev/null
+From c510eae377c773241ff0b6369a8f3581da941a51 Mon Sep 17 00:00:00 2001
+From: Oliver Neukum <oneukum@suse.de>
+Date: Wed, 21 Sep 2011 11:41:45 +0200
+Subject: btusb: add device entry for Broadcom SoftSailing
+
+From: Oliver Neukum <oneukum@suse.de>
+
+commit c510eae377c773241ff0b6369a8f3581da941a51 upstream.
+
+
+This device declares itself to be vendor specific
+It therefore needs to be added to the device table
+to make btusb bind.
+
+Signed-off-by: Oliver Neukum <oneukum@suse.de>
+Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/bluetooth/btusb.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/bluetooth/btusb.c
++++ b/drivers/bluetooth/btusb.c
+@@ -60,6 +60,9 @@ static struct usb_device_id btusb_table[
+ /* Generic Bluetooth USB device */
+ { USB_DEVICE_INFO(0xe0, 0x01, 0x01) },
+
++ /* Broadcom SoftSailing reporting vendor specific */
++ { USB_DEVICE(0x05ac, 0x21e1) },
++
+ /* Apple MacBookPro 7,1 */
+ { USB_DEVICE(0x05ac, 0x8213) },
+
--- /dev/null
+From 02009afc223aae43b8e18918fc816e4520791537 Mon Sep 17 00:00:00 2001
+From: Kavan Smith <kavansmith82@gmail.com>
+Date: Wed, 31 Aug 2011 05:12:05 +0000
+Subject: ipheth: iPhone 4 Verizon CDMA USB Product ID add
+
+From: Kavan Smith <kavansmith82@gmail.com>
+
+commit 02009afc223aae43b8e18918fc816e4520791537 upstream.
+
+Add USB product ID for iPhone 4 CDMA Verizon
+Tested on at least 2 devices
+
+Signed-off-by: Kavan Smith <kavansmith82@gmail.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/usb/ipheth.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/drivers/net/usb/ipheth.c
++++ b/drivers/net/usb/ipheth.c
+@@ -59,6 +59,7 @@
+ #define USB_PRODUCT_IPHONE_3G 0x1292
+ #define USB_PRODUCT_IPHONE_3GS 0x1294
+ #define USB_PRODUCT_IPHONE_4 0x1297
++#define USB_PRODUCT_IPHONE_4_VZW 0x129c
+
+ #define IPHETH_USBINTF_CLASS 255
+ #define IPHETH_USBINTF_SUBCLASS 253
+@@ -98,6 +99,10 @@ static struct usb_device_id ipheth_table
+ USB_VENDOR_APPLE, USB_PRODUCT_IPHONE_4,
+ IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS,
+ IPHETH_USBINTF_PROTO) },
++ { USB_DEVICE_AND_INTERFACE_INFO(
++ USB_VENDOR_APPLE, USB_PRODUCT_IPHONE_4_VZW,
++ IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS,
++ IPHETH_USBINTF_PROTO) },
+ { }
+ };
+ MODULE_DEVICE_TABLE(usb, ipheth_table);
--- /dev/null
+From c2e2a313ff8fdc25cedef5e63da712a6a0d35dfe Mon Sep 17 00:00:00 2001
+From: huajun li <huajun.li.lee@gmail.com>
+Date: Sun, 7 Aug 2011 03:03:31 +0000
+Subject: rtl8150: rtl8150_disconnect(...) does not need tasklet_disable(...)
+
+From: huajun li <huajun.li.lee@gmail.com>
+
+commit c2e2a313ff8fdc25cedef5e63da712a6a0d35dfe upstream.
+
+Executing cmd 'rmmod rtl8150' does not return(if your device connects
+to host), the root cause is tasklet_disable() causes tasklet_kill()
+block, remove it from rtl8150_disconnect().
+
+Signed-off-by: Huajun Li <huajun.li.lee@gmail.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/usb/rtl8150.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+--- a/drivers/net/usb/rtl8150.c
++++ b/drivers/net/usb/rtl8150.c
+@@ -977,7 +977,6 @@ static void rtl8150_disconnect(struct us
+ usb_set_intfdata(intf, NULL);
+ if (dev) {
+ set_bit(RTL8150_UNPLUG, &dev->flags);
+- tasklet_disable(&dev->tl);
+ tasklet_kill(&dev->tl);
+ unregister_netdev(dev->netdev);
+ unlink_all_urbs(dev);
ext4-call-ext4_handle_dirty_metadata-with-correct-inode-in-ext4_dx_add_entry.patch
ext4-fix-race-in-xattr-block-allocation-path.patch
enic-bug-fix-fix-hardware-transmit-queue-indexing-in-enic_poll_controller.patch
+rtl8150-rtl8150_disconnect-...-does-not-need-tasklet_disable.patch
+usb-ehci-fix-test-mode-sequence.patch
+usb-isp1760-added-missing-call-to-usb_hcd_check_unlink_urb-during-unlink.patch
+usb-serial-add-device-id-for-sierra-wireless-mc8305.patch
+usb-serial-add-pid-0xf7c0-to-ftdi-sio-driver-for-a-zeitcontrol-device.patch
+usbnet-cdc_ncm-don-t-use-stack-variables-for-dma.patch
+usb-avoid-null-pointer-deref-in-usb_hcd_alloc_bandwidth.patch
+ipheth-iphone-4-verizon-cdma-usb-product-id-add.patch
+usb-xhci-prevent-infinite-loop-when-processing-mse-event.patch
+asix-simplify-condition-in-rx_fixup.patch
+asix-use-only-11-bits-of-header-for-data-size.patch
+bluetooth-add-macbookair4-1-support.patch
+bluetooth-add-toshiba-laptops-ar30xx-device-id.patch
+bluetooth-add-atheros-ar3012-one-pid-vid-supported.patch
+bluetooth-add-support-for-2011-mac-mini.patch
+btusb-add-device-entry-for-broadcom-softsailing.patch
--- /dev/null
+From 8a9af4fdf6d5eeb3200a088354d266a87e8260b0 Mon Sep 17 00:00:00 2001
+From: Sarah Sharp <sarah.a.sharp@linux.intel.com>
+Date: Tue, 9 Aug 2011 16:31:54 -0700
+Subject: USB: Avoid NULL pointer deref in usb_hcd_alloc_bandwidth.
+
+From: Sarah Sharp <sarah.a.sharp@linux.intel.com>
+
+commit 8a9af4fdf6d5eeb3200a088354d266a87e8260b0 upstream.
+
+usb_ifnum_to_if() can return NULL if the USB device does not have a
+configuration installed (usb_device->actconfig == NULL), or if we can't
+find the interface number in the installed configuration. Return an
+error instead of crashing.
+
+Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/core/hcd.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/usb/core/hcd.c
++++ b/drivers/usb/core/hcd.c
+@@ -1764,6 +1764,8 @@ int usb_hcd_alloc_bandwidth(struct usb_d
+ struct usb_interface *iface = usb_ifnum_to_if(udev,
+ cur_alt->desc.bInterfaceNumber);
+
++ if (!iface)
++ return -EINVAL;
+ if (iface->resetting_device) {
+ /*
+ * The USB core just reset the device, so the xHCI host
--- /dev/null
+From 77636c86a600b83de01719efad83567e46d7e8ce Mon Sep 17 00:00:00 2001
+From: Boris Todorov <boris.st.todorov@gmail.com>
+Date: Mon, 11 Jul 2011 12:03:33 +0300
+Subject: USB: EHCI: Fix test mode sequence
+
+From: Boris Todorov <boris.st.todorov@gmail.com>
+
+commit 77636c86a600b83de01719efad83567e46d7e8ce upstream.
+
+The sequence to put port in test mode is not complete.
+According EHCI specification all enabled ports must be
+put in suspend.
+
+Signed-off-by: Boris Todorov <boris.st.todorov@gmail.com>
+Acked-by: Alan Stern <stern@rowland.harvard.edu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/host/ehci-hub.c | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+--- a/drivers/usb/host/ehci-hub.c
++++ b/drivers/usb/host/ehci-hub.c
+@@ -1120,7 +1120,19 @@ static int ehci_hub_control (
+ if (!selector || selector > 5)
+ goto error;
+ ehci_quiesce(ehci);
++
++ /* Put all enabled ports into suspend */
++ while (ports--) {
++ u32 __iomem *sreg =
++ &ehci->regs->port_status[ports];
++
++ temp = ehci_readl(ehci, sreg) & ~PORT_RWC_BITS;
++ if (temp & PORT_PE)
++ ehci_writel(ehci, temp | PORT_SUSPEND,
++ sreg);
++ }
+ ehci_halt(ehci);
++ temp = ehci_readl(ehci, status_reg);
+ temp |= selector << 16;
+ ehci_writel(ehci, temp, status_reg);
+ break;
--- /dev/null
+From 17d3e145a4ad680b3d1b1c30d0696a5bbb2b65c4 Mon Sep 17 00:00:00 2001
+From: Arvid Brodin <arvid.brodin@enea.com>
+Date: Wed, 20 Jul 2011 03:13:46 +0200
+Subject: usb/isp1760: Added missing call to usb_hcd_check_unlink_urb() during unlink
+
+From: Arvid Brodin <arvid.brodin@enea.com>
+
+commit 17d3e145a4ad680b3d1b1c30d0696a5bbb2b65c4 upstream.
+
+Signed-off-by: Arvid Brodin <arvid.brodin@enea.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/host/isp1760-hcd.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/usb/host/isp1760-hcd.c
++++ b/drivers/usb/host/isp1760-hcd.c
+@@ -1583,6 +1583,9 @@ static int isp1760_urb_dequeue(struct us
+ int retval = 0;
+
+ spin_lock_irqsave(&priv->lock, spinflags);
++ retval = usb_hcd_check_unlink_urb(hcd, urb, status);
++ if (retval)
++ goto out;
+
+ qh = urb->ep->hcpriv;
+ if (!qh) {
--- /dev/null
+From 2f1def2695c223b2aa325e5e47d0d64200a45d23 Mon Sep 17 00:00:00 2001
+From: Florian Echtler <floe@butterbrot.org>
+Date: Tue, 9 Aug 2011 13:37:49 +0200
+Subject: USB: Serial: Add device ID for Sierra Wireless MC8305
+
+From: Florian Echtler <floe@butterbrot.org>
+
+commit 2f1def2695c223b2aa325e5e47d0d64200a45d23 upstream.
+
+A new device ID pair is added for Sierra Wireless MC8305.
+
+Signed-off-by: Florian Echtler <floe@butterbrot.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/qcserial.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/usb/serial/qcserial.c
++++ b/drivers/usb/serial/qcserial.c
+@@ -80,6 +80,7 @@ static const struct usb_device_id id_tab
+ {USB_DEVICE(0x1199, 0x9008)}, /* Sierra Wireless Gobi 2000 Modem device (VT773) */
+ {USB_DEVICE(0x1199, 0x9009)}, /* Sierra Wireless Gobi 2000 Modem device (VT773) */
+ {USB_DEVICE(0x1199, 0x900a)}, /* Sierra Wireless Gobi 2000 Modem device (VT773) */
++ {USB_DEVICE(0x1199, 0x9011)}, /* Sierra Wireless Gobi 2000 Modem device (MC8305) */
+ {USB_DEVICE(0x16d8, 0x8001)}, /* CMDTech Gobi 2000 QDL device (VU922) */
+ {USB_DEVICE(0x16d8, 0x8002)}, /* CMDTech Gobi 2000 Modem device (VU922) */
+ {USB_DEVICE(0x05c6, 0x9204)}, /* Gobi 2000 QDL device */
--- /dev/null
+From ce7e9065958191e6b7ca49d7ed0e1099c486d198 Mon Sep 17 00:00:00 2001
+From: Artur Zimmer <artur128@3dzimmer.de>
+Date: Wed, 10 Aug 2011 03:51:28 +0200
+Subject: USB: Serial: Add PID(0xF7C0) to FTDI SIO driver for a zeitcontrol-device
+
+From: Artur Zimmer <artur128@3dzimmer.de>
+
+commit ce7e9065958191e6b7ca49d7ed0e1099c486d198 upstream.
+
+Here is a patch for a new PID (zeitcontrol-device mifare-reader FT232BL(like FT232BM but lead free)).
+
+Signed-off-by: Artur Zimmer <artur128@3dzimmer.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/ftdi_sio.c | 1 +
+ drivers/usb/serial/ftdi_sio_ids.h | 6 +++++-
+ 2 files changed, 6 insertions(+), 1 deletion(-)
+
+--- a/drivers/usb/serial/ftdi_sio.c
++++ b/drivers/usb/serial/ftdi_sio.c
+@@ -156,6 +156,7 @@ static struct ftdi_sio_quirk ftdi_8u2232
+ * /sys/bus/usb/ftdi_sio/new_id, then send patch/report!
+ */
+ static struct usb_device_id id_table_combined [] = {
++ { USB_DEVICE(FTDI_VID, FTDI_ZEITCONTROL_TAGTRACE_MIFARE_PID) },
+ { USB_DEVICE(FTDI_VID, FTDI_CTI_MINI_PID) },
+ { USB_DEVICE(FTDI_VID, FTDI_CTI_NANO_PID) },
+ { USB_DEVICE(FTDI_VID, FTDI_AMC232_PID) },
+--- a/drivers/usb/serial/ftdi_sio_ids.h
++++ b/drivers/usb/serial/ftdi_sio_ids.h
+@@ -1162,4 +1162,8 @@
+ /* USB-Nano-485*/
+ #define FTDI_CTI_NANO_PID 0xF60B
+
+-
++/*
++ * ZeitControl cardsystems GmbH rfid-readers http://zeitconrol.de
++ */
++/* TagTracer MIFARE*/
++#define FTDI_ZEITCONTROL_TAGTRACE_MIFARE_PID 0xF7C0
--- /dev/null
+From c2d7b49f42f50d7fc5cbfd195b785a128723fdf4 Mon Sep 17 00:00:00 2001
+From: Andiry Xu <andiry.xu@amd.com>
+Date: Mon, 19 Sep 2011 16:05:12 -0700
+Subject: USB: xHCI: prevent infinite loop when processing MSE event
+
+From: Andiry Xu <andiry.xu@amd.com>
+
+commit c2d7b49f42f50d7fc5cbfd195b785a128723fdf4 upstream.
+
+When a xHC host is unable to handle isochronous transfer in the
+interval, it reports a Missed Service Error event and skips some tds.
+
+Currently xhci driver handles MSE event in the following ways:
+
+1. When encounter a MSE event, set ep->skip flag, update event ring
+ dequeue pointer and return.
+
+2. When encounter the next event on this ep, the driver will run the
+ do-while loop, fetch td from ep's td_list to find the td
+ corresponding to this event. All tds missed are marked as short
+ transfer(-EXDEV).
+
+The do-while loop will end in two ways:
+
+1. If the td pointed by the event trb is found;
+
+2. If the ep ring's td_list is empty.
+
+However, if a buggy HW reports some unpredicted event (for example, an
+overrun event following a MSE event while the ep ring is actually not
+empty), the driver will never find the td, and it will loop until the
+td_list is empty.
+
+Unfortunately, the spinlock is dropped when give back a urb in the
+do-while loop. During the spinlock released period, the class driver
+may still submit urbs and add tds to the td_list. This may cause
+disaster, since the td_list will never be empty and the loop never ends,
+and the system hangs.
+
+To fix this, count the number of TDs on the ep ring before skipping TDs,
+and quit the loop when skipped that number of tds. This guarantees the
+do-while loop will end after certain number of cycles, and driver will
+not be trapped in an infinite loop.
+
+Signed-off-by: Andiry Xu <andiry.xu@amd.com>
+Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+
+---
+ drivers/usb/host/xhci-ring.c | 19 +++++++++++++++++++
+ 1 file changed, 19 insertions(+)
+
+--- a/drivers/usb/host/xhci-ring.c
++++ b/drivers/usb/host/xhci-ring.c
+@@ -1942,8 +1942,10 @@ static int handle_tx_event(struct xhci_h
+ int status = -EINPROGRESS;
+ struct urb_priv *urb_priv;
+ struct xhci_ep_ctx *ep_ctx;
++ struct list_head *tmp;
+ u32 trb_comp_code;
+ int ret = 0;
++ int td_num = 0;
+
+ slot_id = TRB_TO_SLOT_ID(le32_to_cpu(event->flags));
+ xdev = xhci->devs[slot_id];
+@@ -1965,6 +1967,12 @@ static int handle_tx_event(struct xhci_h
+ return -ENODEV;
+ }
+
++ /* Count current td numbers if ep->skip is set */
++ if (ep->skip) {
++ list_for_each(tmp, &ep_ring->td_list)
++ td_num++;
++ }
++
+ event_dma = le64_to_cpu(event->buffer);
+ trb_comp_code = GET_COMP_CODE(le32_to_cpu(event->transfer_len));
+ /* Look for common error cases */
+@@ -2076,7 +2084,18 @@ static int handle_tx_event(struct xhci_h
+ goto cleanup;
+ }
+
++ /* We've skipped all the TDs on the ep ring when ep->skip set */
++ if (ep->skip && td_num == 0) {
++ ep->skip = false;
++ xhci_dbg(xhci, "All tds on the ep_ring skipped. "
++ "Clear skip flag.\n");
++ ret = 0;
++ goto cleanup;
++ }
++
+ td = list_entry(ep_ring->td_list.next, struct xhci_td, td_list);
++ if (ep->skip)
++ td_num--;
+
+ /* Is this a TRB in the currently executing TD? */
+ event_seg = trb_in_td(ep_ring->deq_seg, ep_ring->dequeue,
--- /dev/null
+From 75bc8ef528f7c4ea7e80384c5593487b6b3b535e Mon Sep 17 00:00:00 2001
+From: Josh Boyer <jwboyer@redhat.com>
+Date: Mon, 8 Aug 2011 02:34:07 +0000
+Subject: usbnet/cdc_ncm: Don't use stack variables for DMA
+
+From: Josh Boyer <jwboyer@redhat.com>
+
+commit 75bc8ef528f7c4ea7e80384c5593487b6b3b535e upstream.
+
+The cdc_ncm driver still has a few places where stack variables are
+passed to the cdc_ncm_do_request function. This triggers a stack trace in
+lib/dma-debug.c if the CONFIG_DEBUG_DMA_API option is set.
+
+Adjust these calls to pass parameters that have been allocated with
+kzalloc.
+
+Signed-off-by: Josh Boyer <jwboyer@redhat.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/usb/cdc_ncm.c | 47 +++++++++++++++++++++++++++++++++++++---------
+ 1 file changed, 38 insertions(+), 9 deletions(-)
+
+--- a/drivers/net/usb/cdc_ncm.c
++++ b/drivers/net/usb/cdc_ncm.c
+@@ -229,23 +229,40 @@ static u8 cdc_ncm_setup(struct cdc_ncm_c
+ if (ctx->rx_max != le32_to_cpu(ctx->ncm_parm.dwNtbInMaxSize)) {
+
+ if (flags & USB_CDC_NCM_NCAP_NTB_INPUT_SIZE) {
+- struct usb_cdc_ncm_ndp_input_size ndp_in_sz;
++ struct usb_cdc_ncm_ndp_input_size *ndp_in_sz;
++
++ ndp_in_sz = kzalloc(sizeof(*ndp_in_sz), GFP_KERNEL);
++ if (!ndp_in_sz) {
++ err = -ENOMEM;
++ goto size_err;
++ }
++
+ err = usb_control_msg(ctx->udev,
+ usb_sndctrlpipe(ctx->udev, 0),
+ USB_CDC_SET_NTB_INPUT_SIZE,
+ USB_TYPE_CLASS | USB_DIR_OUT
+ | USB_RECIP_INTERFACE,
+- 0, iface_no, &ndp_in_sz, 8, 1000);
++ 0, iface_no, ndp_in_sz, 8, 1000);
++ kfree(ndp_in_sz);
+ } else {
+- __le32 dwNtbInMaxSize = cpu_to_le32(ctx->rx_max);
++ __le32 *dwNtbInMaxSize;
++ dwNtbInMaxSize = kzalloc(sizeof(*dwNtbInMaxSize),
++ GFP_KERNEL);
++ if (!dwNtbInMaxSize) {
++ err = -ENOMEM;
++ goto size_err;
++ }
++ *dwNtbInMaxSize = cpu_to_le32(ctx->rx_max);
++
+ err = usb_control_msg(ctx->udev,
+ usb_sndctrlpipe(ctx->udev, 0),
+ USB_CDC_SET_NTB_INPUT_SIZE,
+ USB_TYPE_CLASS | USB_DIR_OUT
+ | USB_RECIP_INTERFACE,
+- 0, iface_no, &dwNtbInMaxSize, 4, 1000);
++ 0, iface_no, dwNtbInMaxSize, 4, 1000);
++ kfree(dwNtbInMaxSize);
+ }
+-
++size_err:
+ if (err < 0)
+ pr_debug("Setting NTB Input Size failed\n");
+ }
+@@ -326,19 +343,29 @@ static u8 cdc_ncm_setup(struct cdc_ncm_c
+
+ /* set Max Datagram Size (MTU) */
+ if (flags & USB_CDC_NCM_NCAP_MAX_DATAGRAM_SIZE) {
+- __le16 max_datagram_size;
++ __le16 *max_datagram_size;
+ u16 eth_max_sz = le16_to_cpu(ctx->ether_desc->wMaxSegmentSize);
++
++ max_datagram_size = kzalloc(sizeof(*max_datagram_size),
++ GFP_KERNEL);
++ if (!max_datagram_size) {
++ err = -ENOMEM;
++ goto max_dgram_err;
++ }
++
+ err = usb_control_msg(ctx->udev, usb_rcvctrlpipe(ctx->udev, 0),
+ USB_CDC_GET_MAX_DATAGRAM_SIZE,
+ USB_TYPE_CLASS | USB_DIR_IN
+ | USB_RECIP_INTERFACE,
+- 0, iface_no, &max_datagram_size,
++ 0, iface_no, max_datagram_size,
+ 2, 1000);
+ if (err < 0) {
+ pr_debug("GET_MAX_DATAGRAM_SIZE failed, use size=%u\n",
+ CDC_NCM_MIN_DATAGRAM_SIZE);
++ kfree(max_datagram_size);
+ } else {
+- ctx->max_datagram_size = le16_to_cpu(max_datagram_size);
++ ctx->max_datagram_size =
++ le16_to_cpu(*max_datagram_size);
+ /* Check Eth descriptor value */
+ if (eth_max_sz < CDC_NCM_MAX_DATAGRAM_SIZE) {
+ if (ctx->max_datagram_size > eth_max_sz)
+@@ -361,8 +388,10 @@ static u8 cdc_ncm_setup(struct cdc_ncm_c
+ USB_TYPE_CLASS | USB_DIR_OUT
+ | USB_RECIP_INTERFACE,
+ 0,
+- iface_no, &max_datagram_size,
++ iface_no, max_datagram_size,
+ 2, 1000);
++ kfree(max_datagram_size);
++max_dgram_err:
+ if (err < 0)
+ pr_debug("SET_MAX_DATAGRAM_SIZE failed\n");
+ }