linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/3] Patches for compat-drivers/linux-3.6.y
@ 2012-10-15 13:22 Bala Shanmugam
  2012-10-15 13:22 ` [PATCH 1/3] compat-drivers: Update pending stable patches Bala Shanmugam
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Bala Shanmugam @ 2012-10-15 13:22 UTC (permalink / raw)
  To: rodrigue; +Cc: linux-wireless, backports, Bala Shanmugam

Hi,

These patches are for linux-3.6.y branch and has BT coex
fixes for AR9565.

Bala Shanmugam (3):
  compat-drivers: Update pending stable patches.
  compat-drivers: Move next-pending patches to cherry-picks.
  compat-drivers: Add new cherry-pick and next-pending  patches

 ...dle-errors-properly-in-MCI-initialization.patch | 128 ++++++++++++
 ...-debugfs-file-to-adjust-antenna-diversity.patch |  99 ++++++++++
 ...-ath9k-Fix-chainmask-selection-for-AR9462.patch |  43 +++++
 .../0080-ath9k-Enable-MCI-for-AR9565.patch         |  63 ++++++
 ...81-ath9k-Fix-BTCOEX-weight-initialization.patch | 176 +++++++++++++++++
 ...dle-errors-properly-in-MCI-initialization.patch | 128 ------------
 ...01-ath9k_hw-Enable-OSLA-hw-fix-for-AR9565.patch |  34 ++++
 ...-debugfs-file-to-adjust-antenna-diversity.patch |  99 ----------
 ...2-ath9k_hw-Fix-selfgen-chainmask-for-9565.patch |  28 +++
 ...-ath9k-Fix-chainmask-selection-for-AR9462.patch |  43 -----
 ...ppropriate-bit-for-AR9565-in-btc-control-.patch |  33 ++++
 .../0004-ath9k-Enable-MCI-for-AR9565.patch         |  63 ------
 ...off-RXIQ-calibration-while-re-calibrating.patch |  46 +++++
 ...sable-MCI-stat-counter-by-default-for-AR9.patch |  34 ++++
 ...0006-ath9k_hw-Fix-frequent-BT-rx-recovery.patch |  66 +++++++
 ...-ath9k_hw-Fix-max-rx-rate-drop-for-AR9565.patch |  28 +++
 ...nfigure-new-switch-table-for-AR9565-BTCOE.patch |  47 +++++
 ...th9k_hw-Set-default-MCI-config-for-AR9565.patch |  21 ++
 ...ust-duty-cycle-for-FTP-profile-for-AR9565.patch |  21 ++
 ...-ath9k-Add-new-BT-profile-info-A2DP_Voice.patch |  44 +++++
 ...012-cfg80211-Disallow-HT-WEP-in-IBSS-mode.patch |  63 ++++++
 ...h-mgmt-Fix-enabling-SSP-while-powered-off.patch |  43 -----
 ...th-mgmt-Fix-enabling-LE-while-powered-off.patch |  46 -----
 ...h-Fix-not-removing-power_off-delayed-work.patch |  76 --------
 ...x-possible-circular-lock-on-reg_regdb_sea.patch | 129 -------------
 ...-t-double-free-the-interrupt-in-failure-p.patch |  33 ----
 ...gmt-Implement-support-for-passkey-notific.patch | 214 ---------------------
 ...ooth-Update-management-interface-revision.patch |  36 ----
 ...dd-USB_VENDOR_AND_INTERFACE_INFO-for-Broa.patch |  31 ---
 .../0009-ath9k-Disable-ASPM-only-for-AR9285.patch  |  38 ----
 30 files changed, 974 insertions(+), 979 deletions(-)
 create mode 100644 linux-next-cherry-picks/0077-ath9k-Handle-errors-properly-in-MCI-initialization.patch
 create mode 100644 linux-next-cherry-picks/0078-ath9k-Add-a-debugfs-file-to-adjust-antenna-diversity.patch
 create mode 100644 linux-next-cherry-picks/0079-ath9k-Fix-chainmask-selection-for-AR9462.patch
 create mode 100644 linux-next-cherry-picks/0080-ath9k-Enable-MCI-for-AR9565.patch
 create mode 100644 linux-next-cherry-picks/0081-ath9k-Fix-BTCOEX-weight-initialization.patch
 delete mode 100644 linux-next-pending/0001-ath9k-Handle-errors-properly-in-MCI-initialization.patch
 create mode 100644 linux-next-pending/0001-ath9k_hw-Enable-OSLA-hw-fix-for-AR9565.patch
 delete mode 100644 linux-next-pending/0002-ath9k-Add-a-debugfs-file-to-adjust-antenna-diversity.patch
 create mode 100644 linux-next-pending/0002-ath9k_hw-Fix-selfgen-chainmask-for-9565.patch
 delete mode 100644 linux-next-pending/0003-ath9k-Fix-chainmask-selection-for-AR9462.patch
 create mode 100644 linux-next-pending/0003-ath9k-Set-appropriate-bit-for-AR9565-in-btc-control-.patch
 delete mode 100644 linux-next-pending/0004-ath9k-Enable-MCI-for-AR9565.patch
 create mode 100644 linux-next-pending/0004-ath9k-turn-off-RXIQ-calibration-while-re-calibrating.patch
 create mode 100644 linux-next-pending/0005-ath9k_hw-Disable-MCI-stat-counter-by-default-for-AR9.patch
 create mode 100644 linux-next-pending/0006-ath9k_hw-Fix-frequent-BT-rx-recovery.patch
 create mode 100644 linux-next-pending/0007-ath9k_hw-Fix-max-rx-rate-drop-for-AR9565.patch
 create mode 100644 linux-next-pending/0008-ath9k_hw-Configure-new-switch-table-for-AR9565-BTCOE.patch
 create mode 100644 linux-next-pending/0009-ath9k_hw-Set-default-MCI-config-for-AR9565.patch
 create mode 100644 linux-next-pending/0010-ath9k-adjust-duty-cycle-for-FTP-profile-for-AR9565.patch
 create mode 100644 linux-next-pending/0011-ath9k-Add-new-BT-profile-info-A2DP_Voice.patch
 create mode 100644 linux-next-pending/0012-cfg80211-Disallow-HT-WEP-in-IBSS-mode.patch
 delete mode 100644 pending-stable/0001-Bluetooth-mgmt-Fix-enabling-SSP-while-powered-off.patch
 delete mode 100644 pending-stable/0002-Bluetooth-mgmt-Fix-enabling-LE-while-powered-off.patch
 delete mode 100644 pending-stable/0003-Bluetooth-Fix-not-removing-power_off-delayed-work.patch
 delete mode 100644 pending-stable/0004-cfg80211-fix-possible-circular-lock-on-reg_regdb_sea.patch
 delete mode 100644 pending-stable/0005-iwlwifi-don-t-double-free-the-interrupt-in-failure-p.patch
 delete mode 100644 pending-stable/0006-Bluetooth-mgmt-Implement-support-for-passkey-notific.patch
 delete mode 100644 pending-stable/0007-Bluetooth-Update-management-interface-revision.patch
 delete mode 100644 pending-stable/0008-Bluetooth-Add-USB_VENDOR_AND_INTERFACE_INFO-for-Broa.patch
 delete mode 100644 pending-stable/0009-ath9k-Disable-ASPM-only-for-AR9285.patch

-- 
1.7.11.4


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 1/3] compat-drivers: Update pending stable patches.
  2012-10-15 13:22 [PATCH 0/3] Patches for compat-drivers/linux-3.6.y Bala Shanmugam
@ 2012-10-15 13:22 ` Bala Shanmugam
  2012-10-15 13:22 ` [PATCH 2/3] compat-drivers: Move next-pending patches to cherry-picks Bala Shanmugam
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 6+ messages in thread
From: Bala Shanmugam @ 2012-10-15 13:22 UTC (permalink / raw)
  To: rodrigue; +Cc: linux-wireless, backports, Bala Shanmugam

Signed-off-by: Bala Shanmugam <bkamatch@qca.qualcomm.com>
---
 ...h-mgmt-Fix-enabling-SSP-while-powered-off.patch |  43 -----
 ...th-mgmt-Fix-enabling-LE-while-powered-off.patch |  46 -----
 ...h-Fix-not-removing-power_off-delayed-work.patch |  76 --------
 ...x-possible-circular-lock-on-reg_regdb_sea.patch | 129 -------------
 ...-t-double-free-the-interrupt-in-failure-p.patch |  33 ----
 ...gmt-Implement-support-for-passkey-notific.patch | 214 ---------------------
 ...ooth-Update-management-interface-revision.patch |  36 ----
 ...dd-USB_VENDOR_AND_INTERFACE_INFO-for-Broa.patch |  31 ---
 .../0009-ath9k-Disable-ASPM-only-for-AR9285.patch  |  38 ----
 9 files changed, 646 deletions(-)
 delete mode 100644 pending-stable/0001-Bluetooth-mgmt-Fix-enabling-SSP-while-powered-off.patch
 delete mode 100644 pending-stable/0002-Bluetooth-mgmt-Fix-enabling-LE-while-powered-off.patch
 delete mode 100644 pending-stable/0003-Bluetooth-Fix-not-removing-power_off-delayed-work.patch
 delete mode 100644 pending-stable/0004-cfg80211-fix-possible-circular-lock-on-reg_regdb_sea.patch
 delete mode 100644 pending-stable/0005-iwlwifi-don-t-double-free-the-interrupt-in-failure-p.patch
 delete mode 100644 pending-stable/0006-Bluetooth-mgmt-Implement-support-for-passkey-notific.patch
 delete mode 100644 pending-stable/0007-Bluetooth-Update-management-interface-revision.patch
 delete mode 100644 pending-stable/0008-Bluetooth-Add-USB_VENDOR_AND_INTERFACE_INFO-for-Broa.patch
 delete mode 100644 pending-stable/0009-ath9k-Disable-ASPM-only-for-AR9285.patch

diff --git a/pending-stable/0001-Bluetooth-mgmt-Fix-enabling-SSP-while-powered-off.patch b/pending-stable/0001-Bluetooth-mgmt-Fix-enabling-SSP-while-powered-off.patch
deleted file mode 100644
index 636229e..0000000
--- a/pending-stable/0001-Bluetooth-mgmt-Fix-enabling-SSP-while-powered-off.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 3d1cbdd6aefff711bcf389fdabc4af9bc22e8201 Mon Sep 17 00:00:00 2001
-From: Andrzej Kaczmarek <andrzej.kaczmarek@tieto.com>
-Date: Wed, 29 Aug 2012 10:02:08 +0200
-Subject: [PATCH 1/9] Bluetooth: mgmt: Fix enabling SSP while powered off
-
-When new BT USB adapter is plugged in it's configured while still being powered
-off (HCI_AUTO_OFF flag is set), thus Set SSP will only set dev_flags but won't
-write changes to controller. As a result remote devices won't use Secure Simple
-Pairing with our device due to SSP Host Support flag disabled in extended
-features and may also reject SSP attempt from our side (with possible fallback
-to legacy pairing).
-
-This patch ensures HCI Write Simple Pairing Mode is sent when Set Powered is
-called to power on controller and clear HCI_AUTO_OFF flag.
-
-Signed-off-by: Andrzej Kaczmarek <andrzej.kaczmarek@tieto.com>
-Cc: stable@vger.kernel.org
-Acked-by: Johan Hedberg <johan.hedberg@intel.com>
-Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
----
- net/bluetooth/mgmt.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
-index ad6613d..f943bbf 100644
---- a/net/bluetooth/mgmt.c
-+++ b/net/bluetooth/mgmt.c
-@@ -2875,6 +2875,12 @@ int mgmt_powered(struct hci_dev *hdev, u8 powered)
- 		if (scan)
- 			hci_send_cmd(hdev, HCI_OP_WRITE_SCAN_ENABLE, 1, &scan);
- 
-+		if (test_bit(HCI_SSP_ENABLED, &hdev->dev_flags)) {
-+			u8 ssp = 1;
-+
-+			hci_send_cmd(hdev, HCI_OP_WRITE_SSP_MODE, 1, &ssp);
-+		}
-+
- 		update_class(hdev);
- 		update_name(hdev, hdev->dev_name);
- 		update_eir(hdev);
--- 
-1.7.12.1
-
diff --git a/pending-stable/0002-Bluetooth-mgmt-Fix-enabling-LE-while-powered-off.patch b/pending-stable/0002-Bluetooth-mgmt-Fix-enabling-LE-while-powered-off.patch
deleted file mode 100644
index 9c66eee..0000000
--- a/pending-stable/0002-Bluetooth-mgmt-Fix-enabling-LE-while-powered-off.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 562fcc246ebe31ade6e1be08585673b9b2785498 Mon Sep 17 00:00:00 2001
-From: Andrzej Kaczmarek <andrzej.kaczmarek@tieto.com>
-Date: Wed, 29 Aug 2012 10:02:09 +0200
-Subject: [PATCH 2/9] Bluetooth: mgmt: Fix enabling LE while powered off
-
-When new BT USB adapter is plugged in it's configured while still being powered
-off (HCI_AUTO_OFF flag is set), thus Set LE will only set dev_flags but won't
-write changes to controller. As a result it's not possible to start device
-discovery session on LE controller as it uses interleaved discovery which
-requires LE Supported Host flag in extended features.
-
-This patch ensures HCI Write LE Host Supported is sent when Set Powered is
-called to power on controller and clear HCI_AUTO_OFF flag.
-
-Signed-off-by: Andrzej Kaczmarek <andrzej.kaczmarek@tieto.com>
-Cc: stable@vger.kernel.org
-Acked-by: Johan Hedberg <johan.hedberg@intel.com>
-Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
----
- net/bluetooth/mgmt.c | 10 ++++++++++
- 1 file changed, 10 insertions(+)
-
-diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
-index f943bbf..eba022d 100644
---- a/net/bluetooth/mgmt.c
-+++ b/net/bluetooth/mgmt.c
-@@ -2881,6 +2881,16 @@ int mgmt_powered(struct hci_dev *hdev, u8 powered)
- 			hci_send_cmd(hdev, HCI_OP_WRITE_SSP_MODE, 1, &ssp);
- 		}
- 
-+		if (test_bit(HCI_LE_ENABLED, &hdev->dev_flags)) {
-+			struct hci_cp_write_le_host_supported cp;
-+
-+			cp.le = 1;
-+			cp.simul = !!(hdev->features[6] & LMP_SIMUL_LE_BR);
-+
-+			hci_send_cmd(hdev, HCI_OP_WRITE_LE_HOST_SUPPORTED,
-+				     sizeof(cp), &cp);
-+		}
-+
- 		update_class(hdev);
- 		update_name(hdev, hdev->dev_name);
- 		update_eir(hdev);
--- 
-1.7.12.1
-
diff --git a/pending-stable/0003-Bluetooth-Fix-not-removing-power_off-delayed-work.patch b/pending-stable/0003-Bluetooth-Fix-not-removing-power_off-delayed-work.patch
deleted file mode 100644
index 3171104..0000000
--- a/pending-stable/0003-Bluetooth-Fix-not-removing-power_off-delayed-work.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-From 78c04c0bf52360dc2f7185e99c8e9aa05d73ae5a Mon Sep 17 00:00:00 2001
-From: Vinicius Costa Gomes <vinicius.gomes@openbossa.org>
-Date: Fri, 14 Sep 2012 16:34:46 -0300
-Subject: [PATCH 3/9] Bluetooth: Fix not removing power_off delayed work
-
-For example, when a usb reset is received (I could reproduce it
-running something very similar to this[1] in a loop) it could be
-that the device is unregistered while the power_off delayed work
-is still scheduled to run.
-
-Backtrace:
-
-WARNING: at lib/debugobjects.c:261 debug_print_object+0x7c/0x8d()
-Hardware name: To Be Filled By O.E.M.
-ODEBUG: free active (active state 0) object type: timer_list hint: delayed_work_timer_fn+0x0/0x26
-Modules linked in: nouveau mxm_wmi btusb wmi bluetooth ttm coretemp drm_kms_helper
-Pid: 2114, comm: usb-reset Not tainted 3.5.0bt-next #2
-Call Trace:
- [<ffffffff8124cc00>] ? free_obj_work+0x57/0x91
- [<ffffffff81058f88>] warn_slowpath_common+0x7e/0x97
- [<ffffffff81059035>] warn_slowpath_fmt+0x41/0x43
- [<ffffffff8124ccb6>] debug_print_object+0x7c/0x8d
- [<ffffffff8106e3ec>] ? __queue_work+0x259/0x259
- [<ffffffff8124d63e>] ? debug_check_no_obj_freed+0x6f/0x1b5
- [<ffffffff8124d667>] debug_check_no_obj_freed+0x98/0x1b5
- [<ffffffffa00aa031>] ? bt_host_release+0x10/0x1e [bluetooth]
- [<ffffffff810fc035>] kfree+0x90/0xe6
- [<ffffffffa00aa031>] bt_host_release+0x10/0x1e [bluetooth]
- [<ffffffff812ec2f9>] device_release+0x4a/0x7e
- [<ffffffff8123ef57>] kobject_release+0x11d/0x154
- [<ffffffff8123ed98>] kobject_put+0x4a/0x4f
- [<ffffffff812ec0d9>] put_device+0x12/0x14
- [<ffffffffa009472b>] hci_free_dev+0x22/0x26 [bluetooth]
- [<ffffffffa0280dd0>] btusb_disconnect+0x96/0x9f [btusb]
- [<ffffffff813581b4>] usb_unbind_interface+0x57/0x106
- [<ffffffff812ef988>] __device_release_driver+0x83/0xd6
- [<ffffffff812ef9fb>] device_release_driver+0x20/0x2d
- [<ffffffff813582a7>] usb_driver_release_interface+0x44/0x7b
- [<ffffffff81358795>] usb_forced_unbind_intf+0x45/0x4e
- [<ffffffff8134f959>] usb_reset_device+0xa6/0x12e
- [<ffffffff8135df86>] usbdev_do_ioctl+0x319/0xe20
- [<ffffffff81203244>] ? avc_has_perm_flags+0xc9/0x12e
- [<ffffffff812031a0>] ? avc_has_perm_flags+0x25/0x12e
- [<ffffffff81050101>] ? do_page_fault+0x31e/0x3a1
- [<ffffffff8135eaa6>] usbdev_ioctl+0x9/0xd
- [<ffffffff811126b1>] vfs_ioctl+0x21/0x34
- [<ffffffff81112f7b>] do_vfs_ioctl+0x408/0x44b
- [<ffffffff81208d45>] ? file_has_perm+0x76/0x81
- [<ffffffff8111300f>] sys_ioctl+0x51/0x76
- [<ffffffff8158db22>] system_call_fastpath+0x16/0x1b
-
-[1] http://cpansearch.perl.org/src/DPAVLIN/Biblio-RFID-0.03/examples/usbreset.c
-
-Signed-off-by: Vinicius Costa Gomes <vinicius.gomes@openbossa.org>
-Cc: stable@vger.kernel.org
-Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
----
- net/bluetooth/hci_core.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
-index d4de5db..0b997c8 100644
---- a/net/bluetooth/hci_core.c
-+++ b/net/bluetooth/hci_core.c
-@@ -734,6 +734,8 @@ static int hci_dev_do_close(struct hci_dev *hdev)
- 
- 	cancel_work_sync(&hdev->le_scan);
- 
-+	cancel_delayed_work(&hdev->power_off);
-+
- 	hci_req_cancel(hdev, ENODEV);
- 	hci_req_lock(hdev);
- 
--- 
-1.7.12.1
-
diff --git a/pending-stable/0004-cfg80211-fix-possible-circular-lock-on-reg_regdb_sea.patch b/pending-stable/0004-cfg80211-fix-possible-circular-lock-on-reg_regdb_sea.patch
deleted file mode 100644
index 59c05fc..0000000
--- a/pending-stable/0004-cfg80211-fix-possible-circular-lock-on-reg_regdb_sea.patch
+++ /dev/null
@@ -1,129 +0,0 @@
-From a85d0d7f3460b1a123b78e7f7e39bf72c37dfb78 Mon Sep 17 00:00:00 2001
-From: "Luis R. Rodriguez" <mcgrof@do-not-panic.com>
-Date: Fri, 14 Sep 2012 15:36:57 -0700
-Subject: [PATCH 4/9] cfg80211: fix possible circular lock on
- reg_regdb_search()
-
-When call_crda() is called we kick off a witch hunt search
-for the same regulatory domain on our internal regulatory
-database and that work gets kicked off on a workqueue, this
-is done while the cfg80211_mutex is held. If that workqueue
-kicks off it will first lock reg_regdb_search_mutex and
-later cfg80211_mutex but to ensure two CPUs will not contend
-against cfg80211_mutex the right thing to do is to have the
-reg_regdb_search() wait until the cfg80211_mutex is let go.
-
-The lockdep report is pasted below.
-
-cfg80211: Calling CRDA to update world regulatory domain
-
-======================================================
-[ INFO: possible circular locking dependency detected ]
-3.3.8 #3 Tainted: G           O
--------------------------------------------------------
-kworker/0:1/235 is trying to acquire lock:
- (cfg80211_mutex){+.+...}, at: [<816468a4>] set_regdom+0x78c/0x808 [cfg80211]
-
-but task is already holding lock:
- (reg_regdb_search_mutex){+.+...}, at: [<81646828>] set_regdom+0x710/0x808 [cfg80211]
-
-which lock already depends on the new lock.
-
-the existing dependency chain (in reverse order) is:
-
--> #2 (reg_regdb_search_mutex){+.+...}:
-       [<800a8384>] lock_acquire+0x60/0x88
-       [<802950a8>] mutex_lock_nested+0x54/0x31c
-       [<81645778>] is_world_regdom+0x9f8/0xc74 [cfg80211]
-
--> #1 (reg_mutex#2){+.+...}:
-       [<800a8384>] lock_acquire+0x60/0x88
-       [<802950a8>] mutex_lock_nested+0x54/0x31c
-       [<8164539c>] is_world_regdom+0x61c/0xc74 [cfg80211]
-
--> #0 (cfg80211_mutex){+.+...}:
-       [<800a77b8>] __lock_acquire+0x10d4/0x17bc
-       [<800a8384>] lock_acquire+0x60/0x88
-       [<802950a8>] mutex_lock_nested+0x54/0x31c
-       [<816468a4>] set_regdom+0x78c/0x808 [cfg80211]
-
-other info that might help us debug this:
-
-Chain exists of:
-  cfg80211_mutex --> reg_mutex#2 --> reg_regdb_search_mutex
-
- Possible unsafe locking scenario:
-
-       CPU0                    CPU1
-       ----                    ----
-  lock(reg_regdb_search_mutex);
-                               lock(reg_mutex#2);
-                               lock(reg_regdb_search_mutex);
-  lock(cfg80211_mutex);
-
- *** DEADLOCK ***
-
-3 locks held by kworker/0:1/235:
- #0:  (events){.+.+..}, at: [<80089a00>] process_one_work+0x230/0x460
- #1:  (reg_regdb_work){+.+...}, at: [<80089a00>] process_one_work+0x230/0x460
- #2:  (reg_regdb_search_mutex){+.+...}, at: [<81646828>] set_regdom+0x710/0x808 [cfg80211]
-
-stack backtrace:
-Call Trace:
-[<80290fd4>] dump_stack+0x8/0x34
-[<80291bc4>] print_circular_bug+0x2ac/0x2d8
-[<800a77b8>] __lock_acquire+0x10d4/0x17bc
-[<800a8384>] lock_acquire+0x60/0x88
-[<802950a8>] mutex_lock_nested+0x54/0x31c
-[<816468a4>] set_regdom+0x78c/0x808 [cfg80211]
-
-Reported-by: Felix Fietkau <nbd@openwrt.org>
-Tested-by: Felix Fietkau <nbd@openwrt.org>
-Cc: stable@vger.kernel.org
-Signed-off-by: Luis R. Rodriguez <mcgrof@do-not-panic.com>
-Reviewed-by: Johannes Berg <johannes@sipsolutions.net>
-Signed-off-by: John W. Linville <linville@tuxdriver.com>
----
- net/wireless/reg.c | 12 +++++++++---
- 1 file changed, 9 insertions(+), 3 deletions(-)
-
-diff --git a/net/wireless/reg.c b/net/wireless/reg.c
-index 2ded3c7..72d170c 100644
---- a/net/wireless/reg.c
-+++ b/net/wireless/reg.c
-@@ -350,6 +350,9 @@ static void reg_regdb_search(struct work_struct *work)
- 	struct reg_regdb_search_request *request;
- 	const struct ieee80211_regdomain *curdom, *regdom;
- 	int i, r;
-+	bool set_reg = false;
-+
-+	mutex_lock(&cfg80211_mutex);
- 
- 	mutex_lock(&reg_regdb_search_mutex);
- 	while (!list_empty(&reg_regdb_search_list)) {
-@@ -365,9 +368,7 @@ static void reg_regdb_search(struct work_struct *work)
- 				r = reg_copy_regd(&regdom, curdom);
- 				if (r)
- 					break;
--				mutex_lock(&cfg80211_mutex);
--				set_regdom(regdom);
--				mutex_unlock(&cfg80211_mutex);
-+				set_reg = true;
- 				break;
- 			}
- 		}
-@@ -375,6 +376,11 @@ static void reg_regdb_search(struct work_struct *work)
- 		kfree(request);
- 	}
- 	mutex_unlock(&reg_regdb_search_mutex);
-+
-+	if (set_reg)
-+		set_regdom(regdom);
-+
-+	mutex_unlock(&cfg80211_mutex);
- }
- 
- static DECLARE_WORK(reg_regdb_work, reg_regdb_search);
--- 
-1.7.12.1
-
diff --git a/pending-stable/0005-iwlwifi-don-t-double-free-the-interrupt-in-failure-p.patch b/pending-stable/0005-iwlwifi-don-t-double-free-the-interrupt-in-failure-p.patch
deleted file mode 100644
index 16bad35..0000000
--- a/pending-stable/0005-iwlwifi-don-t-double-free-the-interrupt-in-failure-p.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From a7be50b7e30f9d77cb059a7ffdb781bb0fb92eba Mon Sep 17 00:00:00 2001
-From: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
-Date: Tue, 18 Sep 2012 19:48:59 +0200
-Subject: [PATCH 5/9] iwlwifi: don't double free the interrupt in failure path
-
-When the driver can't get the HW ready, we would release
-the interrupt twice which made the kernel complain loudly.
-
-Cc: stable@vger.kernel.org
-Reported-by: Brian Cockrell <brian.cockrell@intel.com>
-Tested-by: Brian Cockrell <brian.cockrell@intel.com>
-Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
-Signed-off-by: Johannes Berg <johannes.berg@intel.com>
-Signed-off-by: John W. Linville <linville@tuxdriver.com>
----
- drivers/net/wireless/iwlwifi/pcie/trans.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/net/wireless/iwlwifi/pcie/trans.c b/drivers/net/wireless/iwlwifi/pcie/trans.c
-index 1e86ea2..dbeebef 100644
---- a/drivers/net/wireless/iwlwifi/pcie/trans.c
-+++ b/drivers/net/wireless/iwlwifi/pcie/trans.c
-@@ -1442,6 +1442,7 @@ static int iwl_trans_pcie_start_hw(struct iwl_trans *trans)
- 	return err;
- 
- err_free_irq:
-+	trans_pcie->irq_requested = false;
- 	free_irq(trans_pcie->irq, trans);
- error:
- 	iwl_free_isr_ict(trans);
--- 
-1.7.12.1
-
diff --git a/pending-stable/0006-Bluetooth-mgmt-Implement-support-for-passkey-notific.patch b/pending-stable/0006-Bluetooth-mgmt-Implement-support-for-passkey-notific.patch
deleted file mode 100644
index 3d6b330..0000000
--- a/pending-stable/0006-Bluetooth-mgmt-Implement-support-for-passkey-notific.patch
+++ /dev/null
@@ -1,214 +0,0 @@
-From 92a25256f142d55e25f9959441cea6ddeabae57e Mon Sep 17 00:00:00 2001
-From: Johan Hedberg <johan.hedberg@intel.com>
-Date: Thu, 6 Sep 2012 18:39:26 +0300
-Subject: [PATCH 6/9] Bluetooth: mgmt: Implement support for passkey
- notification
-
-This patch adds support for Secure Simple Pairing with devices that have
-KeyboardOnly as their IO capability. Such devices will cause a passkey
-notification on our side and optionally also keypress notifications.
-Without this patch some keyboards cannot be paired using the mgmt
-interface.
-
-Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
-Cc: stable@vger.kernel.org
-Acked-by: Marcel Holtmann <marcel@holtmann.org>
-Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
----
- include/net/bluetooth/hci.h      | 18 +++++++++++
- include/net/bluetooth/hci_core.h |  5 +++
- include/net/bluetooth/mgmt.h     |  7 +++++
- net/bluetooth/hci_event.c        | 67 ++++++++++++++++++++++++++++++++++++++++
- net/bluetooth/mgmt.c             | 17 ++++++++++
- 5 files changed, 114 insertions(+)
-
-diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
-index 0f28f70..76b2b6b 100644
---- a/include/net/bluetooth/hci.h
-+++ b/include/net/bluetooth/hci.h
-@@ -1249,6 +1249,24 @@ struct hci_ev_simple_pair_complete {
- 	bdaddr_t bdaddr;
- } __packed;
- 
-+#define HCI_EV_USER_PASSKEY_NOTIFY	0x3b
-+struct hci_ev_user_passkey_notify {
-+	bdaddr_t	bdaddr;
-+	__le32		passkey;
-+} __packed;
-+
-+#define HCI_KEYPRESS_STARTED		0
-+#define HCI_KEYPRESS_ENTERED		1
-+#define HCI_KEYPRESS_ERASED		2
-+#define HCI_KEYPRESS_CLEARED		3
-+#define HCI_KEYPRESS_COMPLETED		4
-+
-+#define HCI_EV_KEYPRESS_NOTIFY		0x3c
-+struct hci_ev_keypress_notify {
-+	bdaddr_t	bdaddr;
-+	__u8		type;
-+} __packed;
-+
- #define HCI_EV_REMOTE_HOST_FEATURES	0x3d
- struct hci_ev_remote_host_features {
- 	bdaddr_t bdaddr;
-diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h
-index 6a3337e..e7d4546 100644
---- a/include/net/bluetooth/hci_core.h
-+++ b/include/net/bluetooth/hci_core.h
-@@ -303,6 +303,8 @@ struct hci_conn {
- 	__u8		pin_length;
- 	__u8		enc_key_size;
- 	__u8		io_capability;
-+	__u32		passkey_notify;
-+	__u8		passkey_entered;
- 	__u16		disc_timeout;
- 	unsigned long	flags;
- 
-@@ -1022,6 +1024,9 @@ int mgmt_user_passkey_reply_complete(struct hci_dev *hdev, bdaddr_t *bdaddr,
- 				     u8 link_type, u8 addr_type, u8 status);
- int mgmt_user_passkey_neg_reply_complete(struct hci_dev *hdev, bdaddr_t *bdaddr,
- 					 u8 link_type, u8 addr_type, u8 status);
-+int mgmt_user_passkey_notify(struct hci_dev *hdev, bdaddr_t *bdaddr,
-+			     u8 link_type, u8 addr_type, u32 passkey,
-+			     u8 entered);
- int mgmt_auth_failed(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 link_type,
- 		     u8 addr_type, u8 status);
- int mgmt_auth_enable_complete(struct hci_dev *hdev, u8 status);
-diff --git a/include/net/bluetooth/mgmt.h b/include/net/bluetooth/mgmt.h
-index 1b48eff..22980a7 100644
---- a/include/net/bluetooth/mgmt.h
-+++ b/include/net/bluetooth/mgmt.h
-@@ -478,3 +478,10 @@ struct mgmt_ev_device_unblocked {
- struct mgmt_ev_device_unpaired {
- 	struct mgmt_addr_info addr;
- } __packed;
-+
-+#define MGMT_EV_PASSKEY_NOTIFY		0x0017
-+struct mgmt_ev_passkey_notify {
-+	struct mgmt_addr_info addr;
-+	__le32	passkey;
-+	__u8	entered;
-+} __packed;
-diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
-index 48d7302..ccca88f 100644
---- a/net/bluetooth/hci_event.c
-+++ b/net/bluetooth/hci_event.c
-@@ -3263,6 +3263,65 @@ static void hci_user_passkey_request_evt(struct hci_dev *hdev,
- 		mgmt_user_passkey_request(hdev, &ev->bdaddr, ACL_LINK, 0);
- }
- 
-+static void hci_user_passkey_notify_evt(struct hci_dev *hdev,
-+					struct sk_buff *skb)
-+{
-+	struct hci_ev_user_passkey_notify *ev = (void *) skb->data;
-+	struct hci_conn *conn;
-+
-+	BT_DBG("%s", hdev->name);
-+
-+	conn = hci_conn_hash_lookup_ba(hdev, ACL_LINK, &ev->bdaddr);
-+	if (!conn)
-+		return;
-+
-+	conn->passkey_notify = __le32_to_cpu(ev->passkey);
-+	conn->passkey_entered = 0;
-+
-+	if (test_bit(HCI_MGMT, &hdev->dev_flags))
-+		mgmt_user_passkey_notify(hdev, &conn->dst, conn->type,
-+					 conn->dst_type, conn->passkey_notify,
-+					 conn->passkey_entered);
-+}
-+
-+static void hci_keypress_notify_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+{
-+	struct hci_ev_keypress_notify *ev = (void *) skb->data;
-+	struct hci_conn *conn;
-+
-+	BT_DBG("%s", hdev->name);
-+
-+	conn = hci_conn_hash_lookup_ba(hdev, ACL_LINK, &ev->bdaddr);
-+	if (!conn)
-+		return;
-+
-+	switch (ev->type) {
-+	case HCI_KEYPRESS_STARTED:
-+		conn->passkey_entered = 0;
-+		return;
-+
-+	case HCI_KEYPRESS_ENTERED:
-+		conn->passkey_entered++;
-+		break;
-+
-+	case HCI_KEYPRESS_ERASED:
-+		conn->passkey_entered--;
-+		break;
-+
-+	case HCI_KEYPRESS_CLEARED:
-+		conn->passkey_entered = 0;
-+		break;
-+
-+	case HCI_KEYPRESS_COMPLETED:
-+		return;
-+	}
-+
-+	if (test_bit(HCI_MGMT, &hdev->dev_flags))
-+		mgmt_user_passkey_notify(hdev, &conn->dst, conn->type,
-+					 conn->dst_type, conn->passkey_notify,
-+					 conn->passkey_entered);
-+}
-+
- static void hci_simple_pair_complete_evt(struct hci_dev *hdev,
- 					 struct sk_buff *skb)
- {
-@@ -3627,6 +3686,14 @@ void hci_event_packet(struct hci_dev *hdev, struct sk_buff *skb)
- 		hci_user_passkey_request_evt(hdev, skb);
- 		break;
- 
-+	case HCI_EV_USER_PASSKEY_NOTIFY:
-+		hci_user_passkey_notify_evt(hdev, skb);
-+		break;
-+
-+	case HCI_EV_KEYPRESS_NOTIFY:
-+		hci_keypress_notify_evt(hdev, skb);
-+		break;
-+
- 	case HCI_EV_SIMPLE_PAIR_COMPLETE:
- 		hci_simple_pair_complete_evt(hdev, skb);
- 		break;
-diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
-index 05d4b83..8e1ab59 100644
---- a/net/bluetooth/mgmt.c
-+++ b/net/bluetooth/mgmt.c
-@@ -99,6 +99,7 @@ static const u16 mgmt_events[] = {
- 	MGMT_EV_DEVICE_BLOCKED,
- 	MGMT_EV_DEVICE_UNBLOCKED,
- 	MGMT_EV_DEVICE_UNPAIRED,
-+	MGMT_EV_PASSKEY_NOTIFY,
- };
- 
- /*
-@@ -3276,6 +3277,22 @@ int mgmt_user_passkey_neg_reply_complete(struct hci_dev *hdev, bdaddr_t *bdaddr,
- 					  MGMT_OP_USER_PASSKEY_NEG_REPLY);
- }
- 
-+int mgmt_user_passkey_notify(struct hci_dev *hdev, bdaddr_t *bdaddr,
-+			     u8 link_type, u8 addr_type, u32 passkey,
-+			     u8 entered)
-+{
-+	struct mgmt_ev_passkey_notify ev;
-+
-+	BT_DBG("%s", hdev->name);
-+
-+	bacpy(&ev.addr.bdaddr, bdaddr);
-+	ev.addr.type = link_to_bdaddr(link_type, addr_type);
-+	ev.passkey = __cpu_to_le32(passkey);
-+	ev.entered = entered;
-+
-+	return mgmt_event(MGMT_EV_PASSKEY_NOTIFY, hdev, &ev, sizeof(ev), NULL);
-+}
-+
- int mgmt_auth_failed(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 link_type,
- 		     u8 addr_type, u8 status)
- {
--- 
-1.7.12.1
-
diff --git a/pending-stable/0007-Bluetooth-Update-management-interface-revision.patch b/pending-stable/0007-Bluetooth-Update-management-interface-revision.patch
deleted file mode 100644
index c8b9f90..0000000
--- a/pending-stable/0007-Bluetooth-Update-management-interface-revision.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 23b3b1330abc643e1fbb7cfffcb6947e2583cff2 Mon Sep 17 00:00:00 2001
-From: Johan Hedberg <johan.hedberg@intel.com>
-Date: Thu, 6 Sep 2012 18:39:27 +0300
-Subject: [PATCH 7/9] Bluetooth: Update management interface revision
-
-For each kernel release where commands or events are added to the
-management interface, the revision field should be increment by one.
-
-The increment should only happen once per kernel release and not
-for every command/event that gets added. The revision value is for
-informational purposes only, but this simple policy would make any
-future debugging a lot simple.
-
-Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
-Cc: stable@vger.kernel.org
-Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
----
- net/bluetooth/mgmt.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
-index 8e1ab59..8934343 100644
---- a/net/bluetooth/mgmt.c
-+++ b/net/bluetooth/mgmt.c
-@@ -35,7 +35,7 @@
- bool enable_hs;
- 
- #define MGMT_VERSION	1
--#define MGMT_REVISION	1
-+#define MGMT_REVISION	2
- 
- static const u16 mgmt_commands[] = {
- 	MGMT_OP_READ_INDEX_LIST,
--- 
-1.7.12.1
-
diff --git a/pending-stable/0008-Bluetooth-Add-USB_VENDOR_AND_INTERFACE_INFO-for-Broa.patch b/pending-stable/0008-Bluetooth-Add-USB_VENDOR_AND_INTERFACE_INFO-for-Broa.patch
deleted file mode 100644
index 3612b46..0000000
--- a/pending-stable/0008-Bluetooth-Add-USB_VENDOR_AND_INTERFACE_INFO-for-Broa.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From ee66401bb94b1f2ce51089c341dcdd25d26ae631 Mon Sep 17 00:00:00 2001
-From: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
-Date: Wed, 15 Aug 2012 01:38:11 -0300
-Subject: [PATCH 8/9] Bluetooth: Add USB_VENDOR_AND_INTERFACE_INFO() for
- Broadcom/Foxconn
-
-Foxconn devices has a vendor specific class of device, we will match them
-differently now.
-
-Cc: stable@vger.kernel.org
-Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
----
- drivers/bluetooth/btusb.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
-index f637c25..f077f4d 100644
---- a/drivers/bluetooth/btusb.c
-+++ b/drivers/bluetooth/btusb.c
-@@ -101,7 +101,7 @@ static struct usb_device_id btusb_table[] = {
- 	{ USB_DEVICE(0x413c, 0x8197) },
- 
- 	/* Foxconn - Hon Hai */
--	{ USB_DEVICE(0x0489, 0xe033) },
-+	{ USB_VENDOR_AND_INTERFACE_INFO(0x0489, 0xff, 0x01, 0x01) },
- 
- 	{ }	/* Terminating entry */
- };
--- 
-1.7.12.1
-
diff --git a/pending-stable/0009-ath9k-Disable-ASPM-only-for-AR9285.patch b/pending-stable/0009-ath9k-Disable-ASPM-only-for-AR9285.patch
deleted file mode 100644
index 86a34ec..0000000
--- a/pending-stable/0009-ath9k-Disable-ASPM-only-for-AR9285.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 046b6802c8d3c8a57448485513bf7291633e0fa3 Mon Sep 17 00:00:00 2001
-From: Sujith Manoharan <c_manoha@qualcomm.com>
-Date: Sat, 22 Sep 2012 00:14:28 +0530
-Subject: [PATCH 9/9] ath9k: Disable ASPM only for AR9285
-
-Currently, ASPM is disabled for all WLAN+BT combo chipsets
-when BTCOEX is enabled. This is incorrect since the workaround
-is required only for WB195, which is a AR9285+AR3011 combo
-solution. Fix this by checking for the HW version when enabling
-the workaround.
-
-Cc: stable@vger.kernel.org
-Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
-Tested-by: Paul Stewart <pstew@chromium.org>
-Signed-off-by: John W. Linville <linville@tuxdriver.com>
----
- drivers/net/wireless/ath/ath9k/pci.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/wireless/ath/ath9k/pci.c b/drivers/net/wireless/ath/ath9k/pci.c
-index a8f6126..c0c5996 100644
---- a/drivers/net/wireless/ath/ath9k/pci.c
-+++ b/drivers/net/wireless/ath/ath9k/pci.c
-@@ -128,8 +128,9 @@ static void ath_pci_aspm_init(struct ath_common *common)
- 	if (!parent)
- 		return;
- 
--	if (ath9k_hw_get_btcoex_scheme(ah) != ATH_BTCOEX_CFG_NONE) {
--		/* Bluetooth coexistance requires disabling ASPM. */
-+	if ((ath9k_hw_get_btcoex_scheme(ah) != ATH_BTCOEX_CFG_NONE) &&
-+	    (AR_SREV_9285(ah))) {
-+		/* Bluetooth coexistance requires disabling ASPM for AR9285. */
- 		pci_read_config_byte(pdev, pos + PCI_EXP_LNKCTL, &aspm);
- 		aspm &= ~(PCIE_LINK_STATE_L0S | PCIE_LINK_STATE_L1);
- 		pci_write_config_byte(pdev, pos + PCI_EXP_LNKCTL, aspm);
--- 
-1.7.12.1
-
-- 
1.7.11.4


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 2/3] compat-drivers: Move next-pending patches to cherry-picks.
  2012-10-15 13:22 [PATCH 0/3] Patches for compat-drivers/linux-3.6.y Bala Shanmugam
  2012-10-15 13:22 ` [PATCH 1/3] compat-drivers: Update pending stable patches Bala Shanmugam
@ 2012-10-15 13:22 ` Bala Shanmugam
  2012-10-15 13:22 ` [PATCH 3/3] compat-drivers: Add new cherry-pick and next-pending patches Bala Shanmugam
  2012-10-15 21:28 ` [PATCH 0/3] Patches for compat-drivers/linux-3.6.y Luis R. Rodriguez
  3 siblings, 0 replies; 6+ messages in thread
From: Bala Shanmugam @ 2012-10-15 13:22 UTC (permalink / raw)
  To: rodrigue; +Cc: linux-wireless, backports, Bala Shanmugam

Patches in linux-next-pending have been merged to linux-next.
Move those to linux-next-cherry-picks.

Signed-off-by: Bala Shanmugam <bkamatch@qca.qualcomm.com>
---
 ...dle-errors-properly-in-MCI-initialization.patch | 128 +++++++++++++++++++++
 ...-debugfs-file-to-adjust-antenna-diversity.patch |  99 ++++++++++++++++
 ...-ath9k-Fix-chainmask-selection-for-AR9462.patch |  43 +++++++
 .../0080-ath9k-Enable-MCI-for-AR9565.patch         |  63 ++++++++++
 ...dle-errors-properly-in-MCI-initialization.patch | 128 ---------------------
 ...-debugfs-file-to-adjust-antenna-diversity.patch |  99 ----------------
 ...-ath9k-Fix-chainmask-selection-for-AR9462.patch |  43 -------
 .../0004-ath9k-Enable-MCI-for-AR9565.patch         |  63 ----------
 8 files changed, 333 insertions(+), 333 deletions(-)
 create mode 100644 linux-next-cherry-picks/0077-ath9k-Handle-errors-properly-in-MCI-initialization.patch
 create mode 100644 linux-next-cherry-picks/0078-ath9k-Add-a-debugfs-file-to-adjust-antenna-diversity.patch
 create mode 100644 linux-next-cherry-picks/0079-ath9k-Fix-chainmask-selection-for-AR9462.patch
 create mode 100644 linux-next-cherry-picks/0080-ath9k-Enable-MCI-for-AR9565.patch
 delete mode 100644 linux-next-pending/0001-ath9k-Handle-errors-properly-in-MCI-initialization.patch
 delete mode 100644 linux-next-pending/0002-ath9k-Add-a-debugfs-file-to-adjust-antenna-diversity.patch
 delete mode 100644 linux-next-pending/0003-ath9k-Fix-chainmask-selection-for-AR9462.patch
 delete mode 100644 linux-next-pending/0004-ath9k-Enable-MCI-for-AR9565.patch

diff --git a/linux-next-cherry-picks/0077-ath9k-Handle-errors-properly-in-MCI-initialization.patch b/linux-next-cherry-picks/0077-ath9k-Handle-errors-properly-in-MCI-initialization.patch
new file mode 100644
index 0000000..33b9b25
--- /dev/null
+++ b/linux-next-cherry-picks/0077-ath9k-Handle-errors-properly-in-MCI-initialization.patch
@@ -0,0 +1,128 @@
+From 7eb8fcf8b7da8183ca2e0e851b2d22852eed8ef6 Mon Sep 17 00:00:00 2001
+From: Sujith Manoharan <c_manoha@qca.qualcomm.com>
+Date: Fri, 21 Sep 2012 10:37:19 +0530
+Subject: [PATCH 1/4] ath9k: Handle errors properly in MCI initialization
+
+The MCI initialization path has various points of failures,
+handle these to ensure that we bail out correctly in such
+cases.
+
+Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
+---
+ drivers/net/wireless/ath/ath9k/ar9003_mci.c | 21 +++++++++++----------
+ drivers/net/wireless/ath/ath9k/ar9003_mci.h |  8 ++++----
+ drivers/net/wireless/ath/ath9k/mci.c        | 11 ++++++++---
+ 3 files changed, 23 insertions(+), 17 deletions(-)
+
+--- a/drivers/net/wireless/ath/ath9k/ar9003_mci.c
++++ b/drivers/net/wireless/ath/ath9k/ar9003_mci.c
+@@ -813,8 +813,8 @@ static void ar9003_mci_osla_setup(struct
+ 		      AR_BTCOEX_CTRL_ONE_STEP_LOOK_AHEAD_EN, 1);
+ }
+ 
+-void ar9003_mci_reset(struct ath_hw *ah, bool en_int, bool is_2g,
+-		      bool is_full_sleep)
++int ar9003_mci_reset(struct ath_hw *ah, bool en_int, bool is_2g,
++		     bool is_full_sleep)
+ {
+ 	struct ath_common *common = ath9k_hw_common(ah);
+ 	struct ath9k_hw_mci *mci = &ah->btcoex_hw.mci;
+@@ -824,14 +824,13 @@ void ar9003_mci_reset(struct ath_hw *ah,
+ 		is_full_sleep, is_2g);
+ 
+ 	if (!mci->gpm_addr && !mci->sched_addr) {
+-		ath_dbg(common, MCI,
+-			"MCI GPM and schedule buffers are not allocated\n");
+-		return;
++		ath_err(common, "MCI GPM and schedule buffers are not allocated\n");
++		return -ENOMEM;
+ 	}
+ 
+ 	if (REG_READ(ah, AR_BTCOEX_CTRL) == 0xdeadbeef) {
+-		ath_dbg(common, MCI, "BTCOEX control register is dead\n");
+-		return;
++		ath_err(common, "BTCOEX control register is dead\n");
++		return -EINVAL;
+ 	}
+ 
+ 	/* Program MCI DMA related registers */
+@@ -913,6 +912,8 @@ void ar9003_mci_reset(struct ath_hw *ah,
+ 
+ 	if (en_int)
+ 		ar9003_mci_enable_interrupt(ah);
++
++	return 0;
+ }
+ 
+ void ar9003_mci_stop_bt(struct ath_hw *ah, bool save_fullsleep)
+@@ -1144,8 +1145,8 @@ void ar9003_mci_init_cal_done(struct ath
+ 	ar9003_mci_send_message(ah, MCI_GPM, 0, pld, 16, true, false);
+ }
+ 
+-void ar9003_mci_setup(struct ath_hw *ah, u32 gpm_addr, void *gpm_buf,
+-		      u16 len, u32 sched_addr)
++int ar9003_mci_setup(struct ath_hw *ah, u32 gpm_addr, void *gpm_buf,
++		     u16 len, u32 sched_addr)
+ {
+ 	struct ath9k_hw_mci *mci = &ah->btcoex_hw.mci;
+ 
+@@ -1154,7 +1155,7 @@ void ar9003_mci_setup(struct ath_hw *ah,
+ 	mci->gpm_len = len;
+ 	mci->sched_addr = sched_addr;
+ 
+-	ar9003_mci_reset(ah, true, true, true);
++	return ar9003_mci_reset(ah, true, true, true);
+ }
+ EXPORT_SYMBOL(ar9003_mci_setup);
+ 
+--- a/drivers/net/wireless/ath/ath9k/ar9003_mci.h
++++ b/drivers/net/wireless/ath/ath9k/ar9003_mci.h
+@@ -249,8 +249,8 @@ bool ar9003_mci_send_message(struct ath_
+ 			     u32 *payload, u8 len, bool wait_done,
+ 			     bool check_bt);
+ u32 ar9003_mci_state(struct ath_hw *ah, u32 state_type);
+-void ar9003_mci_setup(struct ath_hw *ah, u32 gpm_addr, void *gpm_buf,
+-		      u16 len, u32 sched_addr);
++int ar9003_mci_setup(struct ath_hw *ah, u32 gpm_addr, void *gpm_buf,
++		     u16 len, u32 sched_addr);
+ void ar9003_mci_cleanup(struct ath_hw *ah);
+ void ar9003_mci_get_interrupt(struct ath_hw *ah, u32 *raw_intr,
+ 			      u32 *rx_msg_intr);
+@@ -272,8 +272,8 @@ void ar9003_mci_check_bt(struct ath_hw *
+ bool ar9003_mci_start_reset(struct ath_hw *ah, struct ath9k_channel *chan);
+ int ar9003_mci_end_reset(struct ath_hw *ah, struct ath9k_channel *chan,
+ 			 struct ath9k_hw_cal_data *caldata);
+-void ar9003_mci_reset(struct ath_hw *ah, bool en_int, bool is_2g,
+-		      bool is_full_sleep);
++int ar9003_mci_reset(struct ath_hw *ah, bool en_int, bool is_2g,
++		     bool is_full_sleep);
+ void ar9003_mci_get_isr(struct ath_hw *ah, enum ath9k_int *masked);
+ void ar9003_mci_bt_gain_ctrl(struct ath_hw *ah);
+ void ar9003_mci_set_power_awake(struct ath_hw *ah);
+--- a/drivers/net/wireless/ath/ath9k/mci.c
++++ b/drivers/net/wireless/ath/ath9k/mci.c
+@@ -392,6 +392,7 @@ int ath_mci_setup(struct ath_softc *sc)
+ 	struct ath_common *common = ath9k_hw_common(sc->sc_ah);
+ 	struct ath_mci_coex *mci = &sc->mci_coex;
+ 	struct ath_mci_buf *buf = &mci->sched_buf;
++	int ret;
+ 
+ 	buf->bf_addr = dma_alloc_coherent(sc->dev,
+ 				  ATH_MCI_SCHED_BUF_SIZE + ATH_MCI_GPM_BUF_SIZE,
+@@ -411,9 +412,13 @@ int ath_mci_setup(struct ath_softc *sc)
+ 	mci->gpm_buf.bf_addr = (u8 *)mci->sched_buf.bf_addr + mci->sched_buf.bf_len;
+ 	mci->gpm_buf.bf_paddr = mci->sched_buf.bf_paddr + mci->sched_buf.bf_len;
+ 
+-	ar9003_mci_setup(sc->sc_ah, mci->gpm_buf.bf_paddr,
+-			 mci->gpm_buf.bf_addr, (mci->gpm_buf.bf_len >> 4),
+-			 mci->sched_buf.bf_paddr);
++	ret = ar9003_mci_setup(sc->sc_ah, mci->gpm_buf.bf_paddr,
++			       mci->gpm_buf.bf_addr, (mci->gpm_buf.bf_len >> 4),
++			       mci->sched_buf.bf_paddr);
++	if (ret) {
++		ath_err(common, "Failed to initialize MCI\n");
++		return ret;
++	}
+ 
+ 	INIT_WORK(&sc->mci_work, ath9k_mci_work);
+ 	ath_dbg(common, MCI, "MCI Initialized\n");
diff --git a/linux-next-cherry-picks/0078-ath9k-Add-a-debugfs-file-to-adjust-antenna-diversity.patch b/linux-next-cherry-picks/0078-ath9k-Add-a-debugfs-file-to-adjust-antenna-diversity.patch
new file mode 100644
index 0000000..bd0ee37
--- /dev/null
+++ b/linux-next-cherry-picks/0078-ath9k-Add-a-debugfs-file-to-adjust-antenna-diversity.patch
@@ -0,0 +1,99 @@
+From ee97c9a750b560a889a2ee1716c92e8da19168e6 Mon Sep 17 00:00:00 2001
+From: Sujith Manoharan <c_manoha@qca.qualcomm.com>
+Date: Fri, 21 Sep 2012 12:27:20 +0530
+Subject: [PATCH 2/4] ath9k: Add a debugfs file to adjust antenna diversity
+
+Location: /<debugfs>/ieee80211/phy#/ath9k/diversity
+
+Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
+---
+ drivers/net/wireless/ath/ath9k/ar9003_phy.c |  2 +-
+ drivers/net/wireless/ath/ath9k/debug.c      | 55 +++++++++++++++++++++++++++--
+ 2 files changed, 54 insertions(+), 3 deletions(-)
+
+--- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c
++++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c
+@@ -1360,7 +1360,7 @@ static void ar9003_hw_antctrl_shared_cha
+ 	if (enable) {
+ 		REG_SET_BIT(ah, AR_PHY_MC_GAIN_CTRL,
+ 			    (1 << AR_PHY_ANT_SW_RX_PROT_S));
+-		if (IS_CHAN_2GHZ(ah->curchan))
++		if (ah->curchan && IS_CHAN_2GHZ(ah->curchan))
+ 			REG_SET_BIT(ah, AR_PHY_RESTART,
+ 				    AR_PHY_RESTART_ENABLE_DIV_M2FLAG);
+ 		REG_SET_BIT(ah, AR_BTCOEX_WL_LNADIV,
+--- a/drivers/net/wireless/ath/ath9k/debug.c
++++ b/drivers/net/wireless/ath/ath9k/debug.c
+@@ -222,6 +222,57 @@ static const struct file_operations fops
+ 	.llseek = default_llseek,
+ };
+ 
++static ssize_t read_file_ant_diversity(struct file *file, char __user *user_buf,
++				       size_t count, loff_t *ppos)
++{
++	struct ath_softc *sc = file->private_data;
++	struct ath_common *common = ath9k_hw_common(sc->sc_ah);
++	char buf[32];
++	unsigned int len;
++
++	len = sprintf(buf, "%d\n", common->antenna_diversity);
++	return simple_read_from_buffer(user_buf, count, ppos, buf, len);
++}
++
++static ssize_t write_file_ant_diversity(struct file *file,
++					const char __user *user_buf,
++					size_t count, loff_t *ppos)
++{
++	struct ath_softc *sc = file->private_data;
++	struct ath_common *common = ath9k_hw_common(sc->sc_ah);
++	unsigned long antenna_diversity;
++	char buf[32];
++	ssize_t len;
++
++	len = min(count, sizeof(buf) - 1);
++	if (copy_from_user(buf, user_buf, len))
++		return -EFAULT;
++
++	if (!AR_SREV_9565(sc->sc_ah))
++		goto exit;
++
++	buf[len] = '\0';
++	if (strict_strtoul(buf, 0, &antenna_diversity))
++		return -EINVAL;
++
++	common->antenna_diversity = !!antenna_diversity;
++	ath9k_ps_wakeup(sc);
++	ath_ant_comb_update(sc);
++	ath_dbg(common, CONFIG, "Antenna diversity: %d\n",
++		common->antenna_diversity);
++	ath9k_ps_restore(sc);
++exit:
++	return count;
++}
++
++static const struct file_operations fops_ant_diversity = {
++	.read = read_file_ant_diversity,
++	.write = write_file_ant_diversity,
++	.open = simple_open,
++	.owner = THIS_MODULE,
++	.llseek = default_llseek,
++};
++
+ static ssize_t read_file_dma(struct file *file, char __user *user_buf,
+ 			     size_t count, loff_t *ppos)
+ {
+@@ -1601,12 +1652,12 @@ int ath9k_init_debug(struct ath_hw *ah)
+ 	debugfs_create_file("samples", S_IRUSR, sc->debug.debugfs_phy, sc,
+ 			    &fops_samps);
+ #endif
+-
+ 	debugfs_create_u32("gpio_mask", S_IRUSR | S_IWUSR,
+ 			   sc->debug.debugfs_phy, &sc->sc_ah->gpio_mask);
+-
+ 	debugfs_create_u32("gpio_val", S_IRUSR | S_IWUSR,
+ 			   sc->debug.debugfs_phy, &sc->sc_ah->gpio_val);
++	debugfs_create_file("diversity", S_IRUSR | S_IWUSR,
++			    sc->debug.debugfs_phy, sc, &fops_ant_diversity);
+ 
+ 	return 0;
+ }
diff --git a/linux-next-cherry-picks/0079-ath9k-Fix-chainmask-selection-for-AR9462.patch b/linux-next-cherry-picks/0079-ath9k-Fix-chainmask-selection-for-AR9462.patch
new file mode 100644
index 0000000..b349f9b
--- /dev/null
+++ b/linux-next-cherry-picks/0079-ath9k-Fix-chainmask-selection-for-AR9462.patch
@@ -0,0 +1,43 @@
+From c18c8444655d7c32d11fb7715b81ae02e976ac1d Mon Sep 17 00:00:00 2001
+From: Sujith Manoharan <c_manoha@qca.qualcomm.com>
+Date: Wed, 26 Sep 2012 12:09:40 +0530
+Subject: [PATCH 3/4] ath9k: Fix chainmask selection for AR9462
+
+Force chain 1 to be used for CCK rates since the target power
+table stored in EEPROM is too high to transmit with both chains.
+This is needed to avoid regulatory violation.
+
+Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
+---
+ drivers/net/wireless/ath/ath9k/ath9k.h | 2 ++
+ drivers/net/wireless/ath/ath9k/xmit.c  | 4 ++++
+ 2 files changed, 6 insertions(+)
+
+--- a/drivers/net/wireless/ath/ath9k/ath9k.h
++++ b/drivers/net/wireless/ath/ath9k/ath9k.h
+@@ -173,6 +173,8 @@ void ath_descdma_cleanup(struct ath_soft
+ 
+ #define ATH_AN_2_TID(_an, _tidno)  (&(_an)->tid[(_tidno)])
+ 
++#define IS_CCK_RATE(rate) ((rate >= 0x18) && (rate <= 0x1e))
++
+ #define ATH_TX_COMPLETE_POLL_INT	1000
+ 
+ enum ATH_AGGR_STATUS {
+--- a/drivers/net/wireless/ath/ath9k/xmit.c
++++ b/drivers/net/wireless/ath/ath9k/xmit.c
+@@ -1819,10 +1819,14 @@ u8 ath_txchainmask_reduction(struct ath_
+ {
+ 	struct ath_hw *ah = sc->sc_ah;
+ 	struct ath9k_channel *curchan = ah->curchan;
++
+ 	if ((ah->caps.hw_caps & ATH9K_HW_CAP_APM) &&
+ 	    (curchan->channelFlags & CHANNEL_5GHZ) &&
+ 	    (chainmask == 0x7) && (rate < 0x90))
+ 		return 0x3;
++	else if (AR_SREV_9462(ah) && ath9k_hw_btcoex_is_enabled(ah) &&
++		 IS_CCK_RATE(rate))
++		return 0x2;
+ 	else
+ 		return chainmask;
+ }
diff --git a/linux-next-cherry-picks/0080-ath9k-Enable-MCI-for-AR9565.patch b/linux-next-cherry-picks/0080-ath9k-Enable-MCI-for-AR9565.patch
new file mode 100644
index 0000000..340f42f
--- /dev/null
+++ b/linux-next-cherry-picks/0080-ath9k-Enable-MCI-for-AR9565.patch
@@ -0,0 +1,63 @@
+From 1748b1ebc5e8f7ba9a014766fefab969c45d3142 Mon Sep 17 00:00:00 2001
+From: Bala Shanmugam <bkamatch@qca.qualcomm.com>
+Date: Wed, 26 Sep 2012 11:34:26 +0000
+Subject: [PATCH 4/4] ath9k: Enable MCI for AR9565
+
+Signed-off-by: Bala Shanmugam <bkamatch@qca.qualcomm.com>
+---
+ drivers/net/wireless/ath/ath9k/btcoex.c | 6 +++---
+ drivers/net/wireless/ath/ath9k/gpio.c   | 2 +-
+ drivers/net/wireless/ath/ath9k/wow.c    | 2 +-
+ 3 files changed, 5 insertions(+), 5 deletions(-)
+
+--- a/drivers/net/wireless/ath/ath9k/btcoex.c
++++ b/drivers/net/wireless/ath/ath9k/btcoex.c
+@@ -282,7 +282,7 @@ void ath9k_hw_btcoex_enable(struct ath_h
+ 		ath9k_hw_btcoex_enable_2wire(ah);
+ 		break;
+ 	case ATH_BTCOEX_CFG_3WIRE:
+-		if (AR_SREV_9462(ah)) {
++		if (AR_SREV_9462(ah) || AR_SREV_9565(ah)) {
+ 			ath9k_hw_btcoex_enable_mci(ah);
+ 			return;
+ 		}
+@@ -304,7 +304,7 @@ void ath9k_hw_btcoex_disable(struct ath_
+ 	int i;
+ 
+ 	btcoex_hw->enabled = false;
+-	if (AR_SREV_9462(ah)) {
++	if (AR_SREV_9462(ah) || AR_SREV_9565(ah)) {
+ 		ath9k_hw_btcoex_bt_stomp(ah, ATH_BTCOEX_STOMP_NONE);
+ 		for (i = 0; i < AR9300_NUM_BT_WEIGHTS; i++)
+ 			REG_WRITE(ah, AR_MCI_COEX_WL_WEIGHTS(i),
+@@ -339,7 +339,7 @@ static void ar9003_btcoex_bt_stomp(struc
+ 	const u32 *weight = ar9003_wlan_weights[stomp_type];
+ 	int i;
+ 
+-	if (AR_SREV_9462(ah)) {
++	if (AR_SREV_9462(ah) || AR_SREV_9565(ah)) {
+ 		if ((stomp_type == ATH_BTCOEX_STOMP_LOW) &&
+ 		    btcoex->mci.stomp_ftp)
+ 			stomp_type = ATH_BTCOEX_STOMP_LOW_FTP;
+--- a/drivers/net/wireless/ath/ath9k/gpio.c
++++ b/drivers/net/wireless/ath/ath9k/gpio.c
+@@ -412,7 +412,7 @@ void ath9k_stop_btcoex(struct ath_softc
+ 		if (ath9k_hw_get_btcoex_scheme(ah) == ATH_BTCOEX_CFG_3WIRE)
+ 			ath9k_btcoex_timer_pause(sc);
+ 		ath9k_hw_btcoex_disable(ah);
+-		if (AR_SREV_9462(ah))
++		if (AR_SREV_9462(ah) || AR_SREV_9565(ah))
+ 			ath_mci_flush_profile(&sc->btcoex.mci);
+ 	}
+ }
+--- a/drivers/net/wireless/ath/ath9k/wow.c
++++ b/drivers/net/wireless/ath/ath9k/wow.c
+@@ -497,7 +497,7 @@ void ath9k_hw_wow_enable(struct ath_hw *
+ 
+ 	REG_RMW(ah, AR_PCIE_PM_CTRL, set, clr);
+ 
+-	if (AR_SREV_9462(ah)) {
++	if (AR_SREV_9462(ah) || AR_SREV_9565(ah)) {
+ 		/*
+ 		 * this is needed to prevent the chip waking up
+ 		 * the host within 3-4 seconds with certain
diff --git a/linux-next-pending/0001-ath9k-Handle-errors-properly-in-MCI-initialization.patch b/linux-next-pending/0001-ath9k-Handle-errors-properly-in-MCI-initialization.patch
deleted file mode 100644
index 33b9b25..0000000
--- a/linux-next-pending/0001-ath9k-Handle-errors-properly-in-MCI-initialization.patch
+++ /dev/null
@@ -1,128 +0,0 @@
-From 7eb8fcf8b7da8183ca2e0e851b2d22852eed8ef6 Mon Sep 17 00:00:00 2001
-From: Sujith Manoharan <c_manoha@qca.qualcomm.com>
-Date: Fri, 21 Sep 2012 10:37:19 +0530
-Subject: [PATCH 1/4] ath9k: Handle errors properly in MCI initialization
-
-The MCI initialization path has various points of failures,
-handle these to ensure that we bail out correctly in such
-cases.
-
-Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
----
- drivers/net/wireless/ath/ath9k/ar9003_mci.c | 21 +++++++++++----------
- drivers/net/wireless/ath/ath9k/ar9003_mci.h |  8 ++++----
- drivers/net/wireless/ath/ath9k/mci.c        | 11 ++++++++---
- 3 files changed, 23 insertions(+), 17 deletions(-)
-
---- a/drivers/net/wireless/ath/ath9k/ar9003_mci.c
-+++ b/drivers/net/wireless/ath/ath9k/ar9003_mci.c
-@@ -813,8 +813,8 @@ static void ar9003_mci_osla_setup(struct
- 		      AR_BTCOEX_CTRL_ONE_STEP_LOOK_AHEAD_EN, 1);
- }
- 
--void ar9003_mci_reset(struct ath_hw *ah, bool en_int, bool is_2g,
--		      bool is_full_sleep)
-+int ar9003_mci_reset(struct ath_hw *ah, bool en_int, bool is_2g,
-+		     bool is_full_sleep)
- {
- 	struct ath_common *common = ath9k_hw_common(ah);
- 	struct ath9k_hw_mci *mci = &ah->btcoex_hw.mci;
-@@ -824,14 +824,13 @@ void ar9003_mci_reset(struct ath_hw *ah,
- 		is_full_sleep, is_2g);
- 
- 	if (!mci->gpm_addr && !mci->sched_addr) {
--		ath_dbg(common, MCI,
--			"MCI GPM and schedule buffers are not allocated\n");
--		return;
-+		ath_err(common, "MCI GPM and schedule buffers are not allocated\n");
-+		return -ENOMEM;
- 	}
- 
- 	if (REG_READ(ah, AR_BTCOEX_CTRL) == 0xdeadbeef) {
--		ath_dbg(common, MCI, "BTCOEX control register is dead\n");
--		return;
-+		ath_err(common, "BTCOEX control register is dead\n");
-+		return -EINVAL;
- 	}
- 
- 	/* Program MCI DMA related registers */
-@@ -913,6 +912,8 @@ void ar9003_mci_reset(struct ath_hw *ah,
- 
- 	if (en_int)
- 		ar9003_mci_enable_interrupt(ah);
-+
-+	return 0;
- }
- 
- void ar9003_mci_stop_bt(struct ath_hw *ah, bool save_fullsleep)
-@@ -1144,8 +1145,8 @@ void ar9003_mci_init_cal_done(struct ath
- 	ar9003_mci_send_message(ah, MCI_GPM, 0, pld, 16, true, false);
- }
- 
--void ar9003_mci_setup(struct ath_hw *ah, u32 gpm_addr, void *gpm_buf,
--		      u16 len, u32 sched_addr)
-+int ar9003_mci_setup(struct ath_hw *ah, u32 gpm_addr, void *gpm_buf,
-+		     u16 len, u32 sched_addr)
- {
- 	struct ath9k_hw_mci *mci = &ah->btcoex_hw.mci;
- 
-@@ -1154,7 +1155,7 @@ void ar9003_mci_setup(struct ath_hw *ah,
- 	mci->gpm_len = len;
- 	mci->sched_addr = sched_addr;
- 
--	ar9003_mci_reset(ah, true, true, true);
-+	return ar9003_mci_reset(ah, true, true, true);
- }
- EXPORT_SYMBOL(ar9003_mci_setup);
- 
---- a/drivers/net/wireless/ath/ath9k/ar9003_mci.h
-+++ b/drivers/net/wireless/ath/ath9k/ar9003_mci.h
-@@ -249,8 +249,8 @@ bool ar9003_mci_send_message(struct ath_
- 			     u32 *payload, u8 len, bool wait_done,
- 			     bool check_bt);
- u32 ar9003_mci_state(struct ath_hw *ah, u32 state_type);
--void ar9003_mci_setup(struct ath_hw *ah, u32 gpm_addr, void *gpm_buf,
--		      u16 len, u32 sched_addr);
-+int ar9003_mci_setup(struct ath_hw *ah, u32 gpm_addr, void *gpm_buf,
-+		     u16 len, u32 sched_addr);
- void ar9003_mci_cleanup(struct ath_hw *ah);
- void ar9003_mci_get_interrupt(struct ath_hw *ah, u32 *raw_intr,
- 			      u32 *rx_msg_intr);
-@@ -272,8 +272,8 @@ void ar9003_mci_check_bt(struct ath_hw *
- bool ar9003_mci_start_reset(struct ath_hw *ah, struct ath9k_channel *chan);
- int ar9003_mci_end_reset(struct ath_hw *ah, struct ath9k_channel *chan,
- 			 struct ath9k_hw_cal_data *caldata);
--void ar9003_mci_reset(struct ath_hw *ah, bool en_int, bool is_2g,
--		      bool is_full_sleep);
-+int ar9003_mci_reset(struct ath_hw *ah, bool en_int, bool is_2g,
-+		     bool is_full_sleep);
- void ar9003_mci_get_isr(struct ath_hw *ah, enum ath9k_int *masked);
- void ar9003_mci_bt_gain_ctrl(struct ath_hw *ah);
- void ar9003_mci_set_power_awake(struct ath_hw *ah);
---- a/drivers/net/wireless/ath/ath9k/mci.c
-+++ b/drivers/net/wireless/ath/ath9k/mci.c
-@@ -392,6 +392,7 @@ int ath_mci_setup(struct ath_softc *sc)
- 	struct ath_common *common = ath9k_hw_common(sc->sc_ah);
- 	struct ath_mci_coex *mci = &sc->mci_coex;
- 	struct ath_mci_buf *buf = &mci->sched_buf;
-+	int ret;
- 
- 	buf->bf_addr = dma_alloc_coherent(sc->dev,
- 				  ATH_MCI_SCHED_BUF_SIZE + ATH_MCI_GPM_BUF_SIZE,
-@@ -411,9 +412,13 @@ int ath_mci_setup(struct ath_softc *sc)
- 	mci->gpm_buf.bf_addr = (u8 *)mci->sched_buf.bf_addr + mci->sched_buf.bf_len;
- 	mci->gpm_buf.bf_paddr = mci->sched_buf.bf_paddr + mci->sched_buf.bf_len;
- 
--	ar9003_mci_setup(sc->sc_ah, mci->gpm_buf.bf_paddr,
--			 mci->gpm_buf.bf_addr, (mci->gpm_buf.bf_len >> 4),
--			 mci->sched_buf.bf_paddr);
-+	ret = ar9003_mci_setup(sc->sc_ah, mci->gpm_buf.bf_paddr,
-+			       mci->gpm_buf.bf_addr, (mci->gpm_buf.bf_len >> 4),
-+			       mci->sched_buf.bf_paddr);
-+	if (ret) {
-+		ath_err(common, "Failed to initialize MCI\n");
-+		return ret;
-+	}
- 
- 	INIT_WORK(&sc->mci_work, ath9k_mci_work);
- 	ath_dbg(common, MCI, "MCI Initialized\n");
diff --git a/linux-next-pending/0002-ath9k-Add-a-debugfs-file-to-adjust-antenna-diversity.patch b/linux-next-pending/0002-ath9k-Add-a-debugfs-file-to-adjust-antenna-diversity.patch
deleted file mode 100644
index bd0ee37..0000000
--- a/linux-next-pending/0002-ath9k-Add-a-debugfs-file-to-adjust-antenna-diversity.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-From ee97c9a750b560a889a2ee1716c92e8da19168e6 Mon Sep 17 00:00:00 2001
-From: Sujith Manoharan <c_manoha@qca.qualcomm.com>
-Date: Fri, 21 Sep 2012 12:27:20 +0530
-Subject: [PATCH 2/4] ath9k: Add a debugfs file to adjust antenna diversity
-
-Location: /<debugfs>/ieee80211/phy#/ath9k/diversity
-
-Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
----
- drivers/net/wireless/ath/ath9k/ar9003_phy.c |  2 +-
- drivers/net/wireless/ath/ath9k/debug.c      | 55 +++++++++++++++++++++++++++--
- 2 files changed, 54 insertions(+), 3 deletions(-)
-
---- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c
-+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c
-@@ -1360,7 +1360,7 @@ static void ar9003_hw_antctrl_shared_cha
- 	if (enable) {
- 		REG_SET_BIT(ah, AR_PHY_MC_GAIN_CTRL,
- 			    (1 << AR_PHY_ANT_SW_RX_PROT_S));
--		if (IS_CHAN_2GHZ(ah->curchan))
-+		if (ah->curchan && IS_CHAN_2GHZ(ah->curchan))
- 			REG_SET_BIT(ah, AR_PHY_RESTART,
- 				    AR_PHY_RESTART_ENABLE_DIV_M2FLAG);
- 		REG_SET_BIT(ah, AR_BTCOEX_WL_LNADIV,
---- a/drivers/net/wireless/ath/ath9k/debug.c
-+++ b/drivers/net/wireless/ath/ath9k/debug.c
-@@ -222,6 +222,57 @@ static const struct file_operations fops
- 	.llseek = default_llseek,
- };
- 
-+static ssize_t read_file_ant_diversity(struct file *file, char __user *user_buf,
-+				       size_t count, loff_t *ppos)
-+{
-+	struct ath_softc *sc = file->private_data;
-+	struct ath_common *common = ath9k_hw_common(sc->sc_ah);
-+	char buf[32];
-+	unsigned int len;
-+
-+	len = sprintf(buf, "%d\n", common->antenna_diversity);
-+	return simple_read_from_buffer(user_buf, count, ppos, buf, len);
-+}
-+
-+static ssize_t write_file_ant_diversity(struct file *file,
-+					const char __user *user_buf,
-+					size_t count, loff_t *ppos)
-+{
-+	struct ath_softc *sc = file->private_data;
-+	struct ath_common *common = ath9k_hw_common(sc->sc_ah);
-+	unsigned long antenna_diversity;
-+	char buf[32];
-+	ssize_t len;
-+
-+	len = min(count, sizeof(buf) - 1);
-+	if (copy_from_user(buf, user_buf, len))
-+		return -EFAULT;
-+
-+	if (!AR_SREV_9565(sc->sc_ah))
-+		goto exit;
-+
-+	buf[len] = '\0';
-+	if (strict_strtoul(buf, 0, &antenna_diversity))
-+		return -EINVAL;
-+
-+	common->antenna_diversity = !!antenna_diversity;
-+	ath9k_ps_wakeup(sc);
-+	ath_ant_comb_update(sc);
-+	ath_dbg(common, CONFIG, "Antenna diversity: %d\n",
-+		common->antenna_diversity);
-+	ath9k_ps_restore(sc);
-+exit:
-+	return count;
-+}
-+
-+static const struct file_operations fops_ant_diversity = {
-+	.read = read_file_ant_diversity,
-+	.write = write_file_ant_diversity,
-+	.open = simple_open,
-+	.owner = THIS_MODULE,
-+	.llseek = default_llseek,
-+};
-+
- static ssize_t read_file_dma(struct file *file, char __user *user_buf,
- 			     size_t count, loff_t *ppos)
- {
-@@ -1601,12 +1652,12 @@ int ath9k_init_debug(struct ath_hw *ah)
- 	debugfs_create_file("samples", S_IRUSR, sc->debug.debugfs_phy, sc,
- 			    &fops_samps);
- #endif
--
- 	debugfs_create_u32("gpio_mask", S_IRUSR | S_IWUSR,
- 			   sc->debug.debugfs_phy, &sc->sc_ah->gpio_mask);
--
- 	debugfs_create_u32("gpio_val", S_IRUSR | S_IWUSR,
- 			   sc->debug.debugfs_phy, &sc->sc_ah->gpio_val);
-+	debugfs_create_file("diversity", S_IRUSR | S_IWUSR,
-+			    sc->debug.debugfs_phy, sc, &fops_ant_diversity);
- 
- 	return 0;
- }
diff --git a/linux-next-pending/0003-ath9k-Fix-chainmask-selection-for-AR9462.patch b/linux-next-pending/0003-ath9k-Fix-chainmask-selection-for-AR9462.patch
deleted file mode 100644
index b349f9b..0000000
--- a/linux-next-pending/0003-ath9k-Fix-chainmask-selection-for-AR9462.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From c18c8444655d7c32d11fb7715b81ae02e976ac1d Mon Sep 17 00:00:00 2001
-From: Sujith Manoharan <c_manoha@qca.qualcomm.com>
-Date: Wed, 26 Sep 2012 12:09:40 +0530
-Subject: [PATCH 3/4] ath9k: Fix chainmask selection for AR9462
-
-Force chain 1 to be used for CCK rates since the target power
-table stored in EEPROM is too high to transmit with both chains.
-This is needed to avoid regulatory violation.
-
-Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
----
- drivers/net/wireless/ath/ath9k/ath9k.h | 2 ++
- drivers/net/wireless/ath/ath9k/xmit.c  | 4 ++++
- 2 files changed, 6 insertions(+)
-
---- a/drivers/net/wireless/ath/ath9k/ath9k.h
-+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
-@@ -173,6 +173,8 @@ void ath_descdma_cleanup(struct ath_soft
- 
- #define ATH_AN_2_TID(_an, _tidno)  (&(_an)->tid[(_tidno)])
- 
-+#define IS_CCK_RATE(rate) ((rate >= 0x18) && (rate <= 0x1e))
-+
- #define ATH_TX_COMPLETE_POLL_INT	1000
- 
- enum ATH_AGGR_STATUS {
---- a/drivers/net/wireless/ath/ath9k/xmit.c
-+++ b/drivers/net/wireless/ath/ath9k/xmit.c
-@@ -1819,10 +1819,14 @@ u8 ath_txchainmask_reduction(struct ath_
- {
- 	struct ath_hw *ah = sc->sc_ah;
- 	struct ath9k_channel *curchan = ah->curchan;
-+
- 	if ((ah->caps.hw_caps & ATH9K_HW_CAP_APM) &&
- 	    (curchan->channelFlags & CHANNEL_5GHZ) &&
- 	    (chainmask == 0x7) && (rate < 0x90))
- 		return 0x3;
-+	else if (AR_SREV_9462(ah) && ath9k_hw_btcoex_is_enabled(ah) &&
-+		 IS_CCK_RATE(rate))
-+		return 0x2;
- 	else
- 		return chainmask;
- }
diff --git a/linux-next-pending/0004-ath9k-Enable-MCI-for-AR9565.patch b/linux-next-pending/0004-ath9k-Enable-MCI-for-AR9565.patch
deleted file mode 100644
index 340f42f..0000000
--- a/linux-next-pending/0004-ath9k-Enable-MCI-for-AR9565.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 1748b1ebc5e8f7ba9a014766fefab969c45d3142 Mon Sep 17 00:00:00 2001
-From: Bala Shanmugam <bkamatch@qca.qualcomm.com>
-Date: Wed, 26 Sep 2012 11:34:26 +0000
-Subject: [PATCH 4/4] ath9k: Enable MCI for AR9565
-
-Signed-off-by: Bala Shanmugam <bkamatch@qca.qualcomm.com>
----
- drivers/net/wireless/ath/ath9k/btcoex.c | 6 +++---
- drivers/net/wireless/ath/ath9k/gpio.c   | 2 +-
- drivers/net/wireless/ath/ath9k/wow.c    | 2 +-
- 3 files changed, 5 insertions(+), 5 deletions(-)
-
---- a/drivers/net/wireless/ath/ath9k/btcoex.c
-+++ b/drivers/net/wireless/ath/ath9k/btcoex.c
-@@ -282,7 +282,7 @@ void ath9k_hw_btcoex_enable(struct ath_h
- 		ath9k_hw_btcoex_enable_2wire(ah);
- 		break;
- 	case ATH_BTCOEX_CFG_3WIRE:
--		if (AR_SREV_9462(ah)) {
-+		if (AR_SREV_9462(ah) || AR_SREV_9565(ah)) {
- 			ath9k_hw_btcoex_enable_mci(ah);
- 			return;
- 		}
-@@ -304,7 +304,7 @@ void ath9k_hw_btcoex_disable(struct ath_
- 	int i;
- 
- 	btcoex_hw->enabled = false;
--	if (AR_SREV_9462(ah)) {
-+	if (AR_SREV_9462(ah) || AR_SREV_9565(ah)) {
- 		ath9k_hw_btcoex_bt_stomp(ah, ATH_BTCOEX_STOMP_NONE);
- 		for (i = 0; i < AR9300_NUM_BT_WEIGHTS; i++)
- 			REG_WRITE(ah, AR_MCI_COEX_WL_WEIGHTS(i),
-@@ -339,7 +339,7 @@ static void ar9003_btcoex_bt_stomp(struc
- 	const u32 *weight = ar9003_wlan_weights[stomp_type];
- 	int i;
- 
--	if (AR_SREV_9462(ah)) {
-+	if (AR_SREV_9462(ah) || AR_SREV_9565(ah)) {
- 		if ((stomp_type == ATH_BTCOEX_STOMP_LOW) &&
- 		    btcoex->mci.stomp_ftp)
- 			stomp_type = ATH_BTCOEX_STOMP_LOW_FTP;
---- a/drivers/net/wireless/ath/ath9k/gpio.c
-+++ b/drivers/net/wireless/ath/ath9k/gpio.c
-@@ -412,7 +412,7 @@ void ath9k_stop_btcoex(struct ath_softc
- 		if (ath9k_hw_get_btcoex_scheme(ah) == ATH_BTCOEX_CFG_3WIRE)
- 			ath9k_btcoex_timer_pause(sc);
- 		ath9k_hw_btcoex_disable(ah);
--		if (AR_SREV_9462(ah))
-+		if (AR_SREV_9462(ah) || AR_SREV_9565(ah))
- 			ath_mci_flush_profile(&sc->btcoex.mci);
- 	}
- }
---- a/drivers/net/wireless/ath/ath9k/wow.c
-+++ b/drivers/net/wireless/ath/ath9k/wow.c
-@@ -497,7 +497,7 @@ void ath9k_hw_wow_enable(struct ath_hw *
- 
- 	REG_RMW(ah, AR_PCIE_PM_CTRL, set, clr);
- 
--	if (AR_SREV_9462(ah)) {
-+	if (AR_SREV_9462(ah) || AR_SREV_9565(ah)) {
- 		/*
- 		 * this is needed to prevent the chip waking up
- 		 * the host within 3-4 seconds with certain
-- 
1.7.11.4


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 3/3] compat-drivers: Add new cherry-pick and next-pending  patches
  2012-10-15 13:22 [PATCH 0/3] Patches for compat-drivers/linux-3.6.y Bala Shanmugam
  2012-10-15 13:22 ` [PATCH 1/3] compat-drivers: Update pending stable patches Bala Shanmugam
  2012-10-15 13:22 ` [PATCH 2/3] compat-drivers: Move next-pending patches to cherry-picks Bala Shanmugam
@ 2012-10-15 13:22 ` Bala Shanmugam
  2012-10-15 21:28 ` [PATCH 0/3] Patches for compat-drivers/linux-3.6.y Luis R. Rodriguez
  3 siblings, 0 replies; 6+ messages in thread
From: Bala Shanmugam @ 2012-10-15 13:22 UTC (permalink / raw)
  To: rodrigue; +Cc: linux-wireless, backports, Bala Shanmugam

Signed-off-by: Bala Shanmugam <bkamatch@qca.qualcomm.com>
---
 ...81-ath9k-Fix-BTCOEX-weight-initialization.patch | 176 +++++++++++++++++++++
 ...01-ath9k_hw-Enable-OSLA-hw-fix-for-AR9565.patch |  34 ++++
 ...2-ath9k_hw-Fix-selfgen-chainmask-for-9565.patch |  28 ++++
 ...ppropriate-bit-for-AR9565-in-btc-control-.patch |  33 ++++
 ...off-RXIQ-calibration-while-re-calibrating.patch |  46 ++++++
 ...sable-MCI-stat-counter-by-default-for-AR9.patch |  34 ++++
 ...0006-ath9k_hw-Fix-frequent-BT-rx-recovery.patch |  66 ++++++++
 ...-ath9k_hw-Fix-max-rx-rate-drop-for-AR9565.patch |  28 ++++
 ...nfigure-new-switch-table-for-AR9565-BTCOE.patch |  47 ++++++
 ...th9k_hw-Set-default-MCI-config-for-AR9565.patch |  21 +++
 ...ust-duty-cycle-for-FTP-profile-for-AR9565.patch |  21 +++
 ...-ath9k-Add-new-BT-profile-info-A2DP_Voice.patch |  44 ++++++
 ...012-cfg80211-Disallow-HT-WEP-in-IBSS-mode.patch |  63 ++++++++
 13 files changed, 641 insertions(+)
 create mode 100644 linux-next-cherry-picks/0081-ath9k-Fix-BTCOEX-weight-initialization.patch
 create mode 100644 linux-next-pending/0001-ath9k_hw-Enable-OSLA-hw-fix-for-AR9565.patch
 create mode 100644 linux-next-pending/0002-ath9k_hw-Fix-selfgen-chainmask-for-9565.patch
 create mode 100644 linux-next-pending/0003-ath9k-Set-appropriate-bit-for-AR9565-in-btc-control-.patch
 create mode 100644 linux-next-pending/0004-ath9k-turn-off-RXIQ-calibration-while-re-calibrating.patch
 create mode 100644 linux-next-pending/0005-ath9k_hw-Disable-MCI-stat-counter-by-default-for-AR9.patch
 create mode 100644 linux-next-pending/0006-ath9k_hw-Fix-frequent-BT-rx-recovery.patch
 create mode 100644 linux-next-pending/0007-ath9k_hw-Fix-max-rx-rate-drop-for-AR9565.patch
 create mode 100644 linux-next-pending/0008-ath9k_hw-Configure-new-switch-table-for-AR9565-BTCOE.patch
 create mode 100644 linux-next-pending/0009-ath9k_hw-Set-default-MCI-config-for-AR9565.patch
 create mode 100644 linux-next-pending/0010-ath9k-adjust-duty-cycle-for-FTP-profile-for-AR9565.patch
 create mode 100644 linux-next-pending/0011-ath9k-Add-new-BT-profile-info-A2DP_Voice.patch
 create mode 100644 linux-next-pending/0012-cfg80211-Disallow-HT-WEP-in-IBSS-mode.patch

diff --git a/linux-next-cherry-picks/0081-ath9k-Fix-BTCOEX-weight-initialization.patch b/linux-next-cherry-picks/0081-ath9k-Fix-BTCOEX-weight-initialization.patch
new file mode 100644
index 0000000..037da36
--- /dev/null
+++ b/linux-next-cherry-picks/0081-ath9k-Fix-BTCOEX-weight-initialization.patch
@@ -0,0 +1,176 @@
+From 5160b46f3e53c41c4c6b9e7cdbe0401d3afbfb63 Mon Sep 17 00:00:00 2001
+From: Sujith Manoharan <c_manoha@qualcomm.com>
+Date: Fri, 28 Sep 2012 11:13:51 +0530
+Subject: [PATCH] ath9k: Fix BTCOEX weight initialization
+
+The WLAN/BT weights have to set correctly before BTCOEX
+is initialized. Currently, this is not done for all chips
+in the AR9003 family. This patch fixes this issue by setting
+the weights in the init path. While at it, rename ar9462_wlan_weights
+to mci_wlan_weights since it is common to both AR9462 and AR9565.
+
+Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+---
+ drivers/net/wireless/ath/ath9k/btcoex.c       | 61 ++++++++++++++-------------
+ drivers/net/wireless/ath/ath9k/btcoex.h       |  3 +-
+ drivers/net/wireless/ath/ath9k/gpio.c         |  5 ++-
+ drivers/net/wireless/ath/ath9k/htc_drv_gpio.c |  2 +-
+ 4 files changed, 39 insertions(+), 32 deletions(-)
+
+diff --git a/drivers/net/wireless/ath/ath9k/btcoex.c b/drivers/net/wireless/ath/ath9k/btcoex.c
+index 4ef610e..419e9a3 100644
+--- a/drivers/net/wireless/ath/ath9k/btcoex.c
++++ b/drivers/net/wireless/ath/ath9k/btcoex.c
+@@ -43,8 +43,8 @@ static const u32 ar9003_wlan_weights[ATH_BTCOEX_STOMP_MAX]
+ 	{ 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, /* STOMP_NONE */
+ };
+ 
+-static const u32 ar9462_wlan_weights[ATH_BTCOEX_STOMP_MAX]
+-				    [AR9300_NUM_WLAN_WEIGHTS] = {
++static const u32 mci_wlan_weights[ATH_BTCOEX_STOMP_MAX]
++				 [AR9300_NUM_WLAN_WEIGHTS] = {
+ 	{ 0x01017d01, 0x41414101, 0x41414101, 0x41414141 }, /* STOMP_ALL */
+ 	{ 0x01017d01, 0x3b3b3b01, 0x3b3b3b01, 0x3b3b3b3b }, /* STOMP_LOW */
+ 	{ 0x01017d01, 0x01010101, 0x01010101, 0x01010101 }, /* STOMP_NONE */
+@@ -208,14 +208,37 @@ static void ath9k_hw_btcoex_enable_2wire(struct ath_hw *ah)
+ 			    AR_GPIO_OUTPUT_MUX_AS_TX_FRAME);
+ }
+ 
++/*
++ * For AR9002, bt_weight/wlan_weight are used.
++ * For AR9003 and above, stomp_type is used.
++ */
+ void ath9k_hw_btcoex_set_weight(struct ath_hw *ah,
+ 				u32 bt_weight,
+-				u32 wlan_weight)
++				u32 wlan_weight,
++				enum ath_stomp_type stomp_type)
+ {
+ 	struct ath_btcoex_hw *btcoex_hw = &ah->btcoex_hw;
+ 
+-	btcoex_hw->bt_coex_weights = SM(bt_weight, AR_BTCOEX_BT_WGHT) |
+-				     SM(wlan_weight, AR_BTCOEX_WL_WGHT);
++	if (AR_SREV_9300_20_OR_LATER(ah)) {
++		const u32 *weight = ar9003_wlan_weights[stomp_type];
++		int i;
++
++		if (AR_SREV_9462(ah) || AR_SREV_9565(ah)) {
++			if ((stomp_type == ATH_BTCOEX_STOMP_LOW) &&
++			    btcoex_hw->mci.stomp_ftp)
++				stomp_type = ATH_BTCOEX_STOMP_LOW_FTP;
++			weight = mci_wlan_weights[stomp_type];
++		}
++
++		for (i = 0; i < AR9300_NUM_WLAN_WEIGHTS; i++) {
++			btcoex_hw->bt_weight[i] = AR9300_BT_WGHT;
++			btcoex_hw->wlan_weight[i] = weight[i];
++		}
++	} else {
++		btcoex_hw->bt_coex_weights =
++			SM(bt_weight, AR_BTCOEX_BT_WGHT) |
++			SM(wlan_weight, AR_BTCOEX_WL_WGHT);
++	}
+ }
+ EXPORT_SYMBOL(ath9k_hw_btcoex_set_weight);
+ 
+@@ -332,26 +355,6 @@ void ath9k_hw_btcoex_disable(struct ath_hw *ah)
+ }
+ EXPORT_SYMBOL(ath9k_hw_btcoex_disable);
+ 
+-static void ar9003_btcoex_bt_stomp(struct ath_hw *ah,
+-			 enum ath_stomp_type stomp_type)
+-{
+-	struct ath_btcoex_hw *btcoex = &ah->btcoex_hw;
+-	const u32 *weight = ar9003_wlan_weights[stomp_type];
+-	int i;
+-
+-	if (AR_SREV_9462(ah) || AR_SREV_9565(ah)) {
+-		if ((stomp_type == ATH_BTCOEX_STOMP_LOW) &&
+-		    btcoex->mci.stomp_ftp)
+-			stomp_type = ATH_BTCOEX_STOMP_LOW_FTP;
+-		weight = ar9462_wlan_weights[stomp_type];
+-	}
+-
+-	for (i = 0; i < AR9300_NUM_WLAN_WEIGHTS; i++) {
+-		btcoex->bt_weight[i] = AR9300_BT_WGHT;
+-		btcoex->wlan_weight[i] = weight[i];
+-	}
+-}
+-
+ /*
+  * Configures appropriate weight based on stomp type.
+  */
+@@ -359,22 +362,22 @@ void ath9k_hw_btcoex_bt_stomp(struct ath_hw *ah,
+ 			      enum ath_stomp_type stomp_type)
+ {
+ 	if (AR_SREV_9300_20_OR_LATER(ah)) {
+-		ar9003_btcoex_bt_stomp(ah, stomp_type);
++		ath9k_hw_btcoex_set_weight(ah, 0, 0, stomp_type);
+ 		return;
+ 	}
+ 
+ 	switch (stomp_type) {
+ 	case ATH_BTCOEX_STOMP_ALL:
+ 		ath9k_hw_btcoex_set_weight(ah, AR_BT_COEX_WGHT,
+-				AR_STOMP_ALL_WLAN_WGHT);
++					   AR_STOMP_ALL_WLAN_WGHT, 0);
+ 		break;
+ 	case ATH_BTCOEX_STOMP_LOW:
+ 		ath9k_hw_btcoex_set_weight(ah, AR_BT_COEX_WGHT,
+-				AR_STOMP_LOW_WLAN_WGHT);
++					   AR_STOMP_LOW_WLAN_WGHT, 0);
+ 		break;
+ 	case ATH_BTCOEX_STOMP_NONE:
+ 		ath9k_hw_btcoex_set_weight(ah, AR_BT_COEX_WGHT,
+-				AR_STOMP_NONE_WLAN_WGHT);
++					   AR_STOMP_NONE_WLAN_WGHT, 0);
+ 		break;
+ 	default:
+ 		ath_dbg(ath9k_hw_common(ah), BTCOEX, "Invalid Stomptype\n");
+diff --git a/drivers/net/wireless/ath/ath9k/btcoex.h b/drivers/net/wireless/ath/ath9k/btcoex.h
+index 20092f9..385197a 100644
+--- a/drivers/net/wireless/ath/ath9k/btcoex.h
++++ b/drivers/net/wireless/ath/ath9k/btcoex.h
+@@ -107,7 +107,8 @@ void ath9k_hw_btcoex_init_mci(struct ath_hw *ah);
+ void ath9k_hw_init_btcoex_hw(struct ath_hw *ah, int qnum);
+ void ath9k_hw_btcoex_set_weight(struct ath_hw *ah,
+ 				u32 bt_weight,
+-				u32 wlan_weight);
++				u32 wlan_weight,
++				enum ath_stomp_type stomp_type);
+ void ath9k_hw_btcoex_disable(struct ath_hw *ah);
+ void ath9k_hw_btcoex_bt_stomp(struct ath_hw *ah,
+ 			      enum ath_stomp_type stomp_type);
+diff --git a/drivers/net/wireless/ath/ath9k/gpio.c b/drivers/net/wireless/ath/ath9k/gpio.c
+index 5faa4f7..d9ed141 100644
+--- a/drivers/net/wireless/ath/ath9k/gpio.c
++++ b/drivers/net/wireless/ath/ath9k/gpio.c
+@@ -395,7 +395,10 @@ void ath9k_start_btcoex(struct ath_softc *sc)
+ 	    !ah->btcoex_hw.enabled) {
+ 		if (!(sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_MCI))
+ 			ath9k_hw_btcoex_set_weight(ah, AR_BT_COEX_WGHT,
+-						   AR_STOMP_LOW_WLAN_WGHT);
++						   AR_STOMP_LOW_WLAN_WGHT, 0);
++		else
++			ath9k_hw_btcoex_set_weight(ah, 0, 0,
++						   ATH_BTCOEX_STOMP_NONE);
+ 		ath9k_hw_btcoex_enable(ah);
+ 
+ 		if (ath9k_hw_get_btcoex_scheme(ah) == ATH_BTCOEX_CFG_3WIRE)
+diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_gpio.c b/drivers/net/wireless/ath/ath9k/htc_drv_gpio.c
+index 8fd64a6..0eacfc1 100644
+--- a/drivers/net/wireless/ath/ath9k/htc_drv_gpio.c
++++ b/drivers/net/wireless/ath/ath9k/htc_drv_gpio.c
+@@ -161,7 +161,7 @@ void ath9k_htc_start_btcoex(struct ath9k_htc_priv *priv)
+ 
+ 	if (ath9k_hw_get_btcoex_scheme(ah) == ATH_BTCOEX_CFG_3WIRE) {
+ 		ath9k_hw_btcoex_set_weight(ah, AR_BT_COEX_WGHT,
+-					   AR_STOMP_LOW_WLAN_WGHT);
++					   AR_STOMP_LOW_WLAN_WGHT, 0);
+ 		ath9k_hw_btcoex_enable(ah);
+ 		ath_htc_resume_btcoex_work(priv);
+ 	}
+-- 
+1.7.11.4
+
diff --git a/linux-next-pending/0001-ath9k_hw-Enable-OSLA-hw-fix-for-AR9565.patch b/linux-next-pending/0001-ath9k_hw-Enable-OSLA-hw-fix-for-AR9565.patch
new file mode 100644
index 0000000..8f3e87c
--- /dev/null
+++ b/linux-next-pending/0001-ath9k_hw-Enable-OSLA-hw-fix-for-AR9565.patch
@@ -0,0 +1,34 @@
+From 09504f1ccb52e865e1be861db9c7c1adbf206614 Mon Sep 17 00:00:00 2001
+From: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
+Date: Mon, 15 Oct 2012 15:29:45 +0530
+Subject: [PATCH 01/11] ath9k_hw: Enable OSLA hw fix for AR9565
+
+Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
+---
+ drivers/net/wireless/ath/ath9k/ar9003_mci.c |    3 +++
+ drivers/net/wireless/ath/ath9k/reg.h        |    4 ++++
+ 2 files changed, 7 insertions(+), 0 deletions(-)
+
+--- a/drivers/net/wireless/ath/ath9k/ar9003_mci.c
++++ b/drivers/net/wireless/ath/ath9k/ar9003_mci.c
+@@ -799,6 +799,9 @@ static void ar9003_mci_osla_setup(struct
+ 	REG_RMW_FIELD(ah, AR_MCI_SCHD_TABLE_2,
+ 		      AR_MCI_SCHD_TABLE_2_MEM_BASED, 1);
+ 
++	if (AR_SREV_9565(ah))
++		REG_RMW_FIELD(ah, AR_MCI_MISC, AR_MCI_MISC_HW_FIX_EN, 1);
++
+ 	if (!(mci->config & ATH_MCI_CONFIG_DISABLE_AGGR_THRESH)) {
+ 		thresh = MS(mci->config, ATH_MCI_CONFIG_AGGR_THRESH);
+ 		REG_RMW_FIELD(ah, AR_BTCOEX_CTRL,
+--- a/drivers/net/wireless/ath/ath9k/reg.h
++++ b/drivers/net/wireless/ath/ath9k/reg.h
+@@ -2360,4 +2360,8 @@ enum {
+ #define AR_GLB_SWREG_DISCONT_MODE         0x2002c
+ #define AR_GLB_SWREG_DISCONT_EN_BT_WLAN   0x3
+ 
++#define AR_MCI_MISC                    0x1a74
++#define AR_MCI_MISC_HW_FIX_EN          0x00000001
++#define AR_MCI_MISC_HW_FIX_EN_S        0
++
+ #endif
diff --git a/linux-next-pending/0002-ath9k_hw-Fix-selfgen-chainmask-for-9565.patch b/linux-next-pending/0002-ath9k_hw-Fix-selfgen-chainmask-for-9565.patch
new file mode 100644
index 0000000..84f3447
--- /dev/null
+++ b/linux-next-pending/0002-ath9k_hw-Fix-selfgen-chainmask-for-9565.patch
@@ -0,0 +1,28 @@
+From 9f477777f199e21ecdeea4df1244f55495827ffe Mon Sep 17 00:00:00 2001
+From: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
+Date: Mon, 15 Oct 2012 15:29:46 +0530
+Subject: [PATCH 02/11] ath9k_hw: Fix selfgen chainmask for 9565
+
+Self generated MCI messages is configured to use chain 1. As
+ar9565 is 1x1 solution, It can not use Chain 1. Hence fix
+Chain 1 for ar9462 alone. Not doing so, could affect WLAN
+connectivity in ar9565 as LNA sharing is not informed by BT.
+
+Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
+---
+ drivers/net/wireless/ath/ath9k/ar9003_mci.c |    4 +++-
+ 1 files changed, 3 insertions(+), 1 deletions(-)
+
+--- a/drivers/net/wireless/ath/ath9k/ar9003_mci.c
++++ b/drivers/net/wireless/ath/ath9k/ar9003_mci.c
+@@ -1031,7 +1031,9 @@ void ar9003_mci_2g5g_switch(struct ath_h
+ 
+ 		if (!(mci->config & ATH_MCI_CONFIG_DISABLE_OSLA))
+ 			ar9003_mci_osla_setup(ah, true);
+-		REG_WRITE(ah, AR_SELFGEN_MASK, 0x02);
++
++		if (AR_SREV_9462(ah))
++			REG_WRITE(ah, AR_SELFGEN_MASK, 0x02);
+ 	} else {
+ 		ar9003_mci_send_lna_take(ah, true);
+ 		udelay(5);
diff --git a/linux-next-pending/0003-ath9k-Set-appropriate-bit-for-AR9565-in-btc-control-.patch b/linux-next-pending/0003-ath9k-Set-appropriate-bit-for-AR9565-in-btc-control-.patch
new file mode 100644
index 0000000..329a901
--- /dev/null
+++ b/linux-next-pending/0003-ath9k-Set-appropriate-bit-for-AR9565-in-btc-control-.patch
@@ -0,0 +1,33 @@
+From cd8098a5ee084ea3b41f2891e0a5340271988f0d Mon Sep 17 00:00:00 2001
+From: Bala Shanmugam <bkamatch@qca.qualcomm.com>
+Date: Mon, 15 Oct 2012 15:29:47 +0530
+Subject: [PATCH 03/11] ath9k: Set appropriate bit for AR9565 in btc control register
+
+Signed-off-by: Bala Shanmugam <bkamatch@qca.qualcomm.com>
+---
+ drivers/net/wireless/ath/ath9k/ar9003_mci.c |   11 +++++++++--
+ 1 files changed, 9 insertions(+), 2 deletions(-)
+
+--- a/drivers/net/wireless/ath/ath9k/ar9003_mci.c
++++ b/drivers/net/wireless/ath/ath9k/ar9003_mci.c
+@@ -850,11 +850,18 @@ int ar9003_mci_reset(struct ath_hw *ah,
+ 		 SM(1, AR_BTCOEX_CTRL_WBTIMER_EN) |
+ 		 SM(1, AR_BTCOEX_CTRL_PA_SHARED) |
+ 		 SM(1, AR_BTCOEX_CTRL_LNA_SHARED) |
+-		 SM(2, AR_BTCOEX_CTRL_NUM_ANTENNAS) |
+-		 SM(3, AR_BTCOEX_CTRL_RX_CHAIN_MASK) |
+ 		 SM(0, AR_BTCOEX_CTRL_1_CHAIN_ACK) |
+ 		 SM(0, AR_BTCOEX_CTRL_1_CHAIN_BCN) |
+ 		 SM(0, AR_BTCOEX_CTRL_ONE_STEP_LOOK_AHEAD_EN);
++	if (AR_SREV_9565(ah)) {
++		regval |= SM(1, AR_BTCOEX_CTRL_NUM_ANTENNAS) |
++			  SM(1, AR_BTCOEX_CTRL_RX_CHAIN_MASK);
++		REG_RMW_FIELD(ah, AR_BTCOEX_CTRL2,
++			      AR_BTCOEX_CTRL2_TX_CHAIN_MASK, 0x1);
++	} else {
++		regval |= SM(2, AR_BTCOEX_CTRL_NUM_ANTENNAS) |
++			  SM(3, AR_BTCOEX_CTRL_RX_CHAIN_MASK);
++	}
+ 
+ 	REG_WRITE(ah, AR_BTCOEX_CTRL, regval);
+ 
diff --git a/linux-next-pending/0004-ath9k-turn-off-RXIQ-calibration-while-re-calibrating.patch b/linux-next-pending/0004-ath9k-turn-off-RXIQ-calibration-while-re-calibrating.patch
new file mode 100644
index 0000000..9e9819a
--- /dev/null
+++ b/linux-next-pending/0004-ath9k-turn-off-RXIQ-calibration-while-re-calibrating.patch
@@ -0,0 +1,46 @@
+From f090327eec6875ce4302173f1638a37b9a5d47b8 Mon Sep 17 00:00:00 2001
+From: Bala Shanmugam <bkamatch@qca.qualcomm.com>
+Date: Mon, 15 Oct 2012 15:29:48 +0530
+Subject: [PATCH 04/11] ath9k: turn off RXIQ calibration while re-calibrating radio
+
+TXIQ and RXIQ share the same data path to upload the measurement
+result, we should turn off RXIQ calibration while re-calibrating radio
+
+Signed-off-by: Bala Shanmugam <bkamatch@qca.qualcomm.com>
+---
+ drivers/net/wireless/ath/ath9k/ar9003_mci.c |    6 ++++++
+ drivers/net/wireless/ath/ath9k/ar9003_phy.h |    1 +
+ 2 files changed, 7 insertions(+), 0 deletions(-)
+
+--- a/drivers/net/wireless/ath/ath9k/ar9003_mci.c
++++ b/drivers/net/wireless/ath/ath9k/ar9003_mci.c
+@@ -750,6 +750,9 @@ int ar9003_mci_end_reset(struct ath_hw *
+ 
+ 	mci_hw->bt_state = MCI_BT_AWAKE;
+ 
++	REG_CLR_BIT(ah, AR_PHY_TIMING4,
++		    1 << AR_PHY_TIMING_CONTROL4_DO_GAIN_DC_IQ_CAL_SHIFT);
++
+ 	if (caldata) {
+ 		caldata->done_txiqcal_once = false;
+ 		caldata->done_txclcal_once = false;
+@@ -759,6 +762,9 @@ int ar9003_mci_end_reset(struct ath_hw *
+ 	if (!ath9k_hw_init_cal(ah, chan))
+ 		return -EIO;
+ 
++	REG_SET_BIT(ah, AR_PHY_TIMING4,
++		    1 << AR_PHY_TIMING_CONTROL4_DO_GAIN_DC_IQ_CAL_SHIFT);
++
+ exit:
+ 	ar9003_mci_enable_interrupt(ah);
+ 	return 0;
+--- a/drivers/net/wireless/ath/ath9k/ar9003_phy.h
++++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.h
+@@ -32,6 +32,7 @@
+ #define AR_PHY_SPUR_REG     (AR_CHAN_BASE + 0x1c)
+ #define AR_PHY_RX_IQCAL_CORR_B0    (AR_CHAN_BASE + 0xdc)
+ #define AR_PHY_TX_IQCAL_CONTROL_3  (AR_CHAN_BASE + 0xb0)
++#define AR_PHY_TIMING_CONTROL4_DO_GAIN_DC_IQ_CAL_SHIFT 16
+ 
+ #define AR_PHY_TIMING11_SPUR_FREQ_SD    0x3FF00000
+ #define AR_PHY_TIMING11_SPUR_FREQ_SD_S  20
diff --git a/linux-next-pending/0005-ath9k_hw-Disable-MCI-stat-counter-by-default-for-AR9.patch b/linux-next-pending/0005-ath9k_hw-Disable-MCI-stat-counter-by-default-for-AR9.patch
new file mode 100644
index 0000000..1d59f1f
--- /dev/null
+++ b/linux-next-pending/0005-ath9k_hw-Disable-MCI-stat-counter-by-default-for-AR9.patch
@@ -0,0 +1,34 @@
+From 7b608d7a012d967f08e8500c3e38b94d28daa4c6 Mon Sep 17 00:00:00 2001
+From: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
+Date: Mon, 15 Oct 2012 15:29:49 +0530
+Subject: [PATCH 05/11] ath9k_hw: Disable MCI stat counter by default for AR9565
+
+Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
+---
+ drivers/net/wireless/ath/ath9k/ar9003_mci.c |    3 +++
+ drivers/net/wireless/ath/ath9k/reg.h        |    3 +++
+ 2 files changed, 6 insertions(+), 0 deletions(-)
+
+--- a/drivers/net/wireless/ath/ath9k/ar9003_mci.c
++++ b/drivers/net/wireless/ath/ath9k/ar9003_mci.c
+@@ -926,6 +926,9 @@ int ar9003_mci_reset(struct ath_hw *ah,
+ 	mci->ready = true;
+ 	ar9003_mci_prep_interface(ah);
+ 
++	if (AR_SREV_9565(ah))
++		REG_RMW_FIELD(ah, AR_MCI_DBG_CNT_CTRL,
++			      AR_MCI_DBG_CNT_CTRL_ENABLE, 0);
+ 	if (en_int)
+ 		ar9003_mci_enable_interrupt(ah);
+ 
+--- a/drivers/net/wireless/ath/ath9k/reg.h
++++ b/drivers/net/wireless/ath/ath9k/reg.h
+@@ -2363,5 +2363,8 @@ enum {
+ #define AR_MCI_MISC                    0x1a74
+ #define AR_MCI_MISC_HW_FIX_EN          0x00000001
+ #define AR_MCI_MISC_HW_FIX_EN_S        0
++#define AR_MCI_DBG_CNT_CTRL            0x1a78
++#define AR_MCI_DBG_CNT_CTRL_ENABLE     0x00000001
++#define AR_MCI_DBG_CNT_CTRL_ENABLE_S   0
+ 
+ #endif
diff --git a/linux-next-pending/0006-ath9k_hw-Fix-frequent-BT-rx-recovery.patch b/linux-next-pending/0006-ath9k_hw-Fix-frequent-BT-rx-recovery.patch
new file mode 100644
index 0000000..0067334
--- /dev/null
+++ b/linux-next-pending/0006-ath9k_hw-Fix-frequent-BT-rx-recovery.patch
@@ -0,0 +1,66 @@
+From 56e95424248ae3a3f5dd92bdd7ae0446ea3776ba Mon Sep 17 00:00:00 2001
+From: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
+Date: Mon, 15 Oct 2012 17:31:41 +0530
+Subject: [PATCH 06/11] ath9k_hw: Fix frequent BT rx recovery
+
+While resuming from S3, BT host issues HCI reset command and it
+causes BT firmware to busy with security key calculation. At this
+movement, WLAN detects MCI hardware error of MCI_CONT_INFO_TIMEOUT
+and then it starts the recovery sequence repeatedly. Too many
+recovery sequences would exhaust the BT kernel message pool. This
+patch imposes a duration between consecutive BT recovery procedure.
+Thus it solves BT firmware panic issue reported in AR9565.
+
+Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
+---
+ drivers/net/wireless/ath/ath9k/ar9003_mci.c |   10 +++++++++-
+ drivers/net/wireless/ath/ath9k/ar9003_mci.h |    1 +
+ drivers/net/wireless/ath/ath9k/btcoex.h     |    1 +
+ 3 files changed, 11 insertions(+), 1 deletions(-)
+
+--- a/drivers/net/wireless/ath/ath9k/ar9003_mci.c
++++ b/drivers/net/wireless/ath/ath9k/ar9003_mci.c
+@@ -1191,7 +1191,7 @@ EXPORT_SYMBOL(ar9003_mci_cleanup);
+ u32 ar9003_mci_state(struct ath_hw *ah, u32 state_type)
+ {
+ 	struct ath9k_hw_mci *mci = &ah->btcoex_hw.mci;
+-	u32 value = 0;
++	u32 value = 0, tsf;
+ 	u8 query_type;
+ 
+ 	switch (state_type) {
+@@ -1249,6 +1249,14 @@ u32 ar9003_mci_state(struct ath_hw *ah,
+ 		ar9003_mci_send_coex_bt_status_query(ah, true, query_type);
+ 		break;
+ 	case MCI_STATE_RECOVER_RX:
++		tsf = ath9k_hw_gettsf32(ah);
++		if ((tsf - mci->last_recovery) <= MCI_RECOVERY_DUR_TSF) {
++			ath_dbg(ath9k_hw_common(ah), MCI,
++				"(MCI) ignore Rx recovery\n");
++			break;
++		}
++		ath_dbg(ath9k_hw_common(ah), MCI, "(MCI) RECOVER RX\n");
++		mci->last_recovery = tsf;
+ 		ar9003_mci_prep_interface(ah);
+ 		mci->query_bt = true;
+ 		mci->need_flush_btinfo = true;
+--- a/drivers/net/wireless/ath/ath9k/ar9003_mci.h
++++ b/drivers/net/wireless/ath/ath9k/ar9003_mci.h
+@@ -18,6 +18,7 @@
+ #define AR9003_MCI_H
+ 
+ #define MCI_FLAG_DISABLE_TIMESTAMP      0x00000001      /* Disable time stamp */
++#define MCI_RECOVERY_DUR_TSF		(100 * 1000)    /* 100 ms */
+ 
+ /* Default remote BT device MCI COEX version */
+ #define MCI_GPM_COEX_MAJOR_VERSION_DEFAULT  3
+--- a/drivers/net/wireless/ath/ath9k/btcoex.h
++++ b/drivers/net/wireless/ath/ath9k/btcoex.h
+@@ -84,6 +84,7 @@ struct ath9k_hw_mci {
+ 	u8 bt_ver_minor;
+ 	u8 bt_state;
+ 	u8 stomp_ftp;
++	u32 last_recovery;
+ };
+ 
+ struct ath_btcoex_hw {
diff --git a/linux-next-pending/0007-ath9k_hw-Fix-max-rx-rate-drop-for-AR9565.patch b/linux-next-pending/0007-ath9k_hw-Fix-max-rx-rate-drop-for-AR9565.patch
new file mode 100644
index 0000000..1ac6f84
--- /dev/null
+++ b/linux-next-pending/0007-ath9k_hw-Fix-max-rx-rate-drop-for-AR9565.patch
@@ -0,0 +1,28 @@
+From f02b45dc2aa6022765a18cea7ce6acff31f59897 Mon Sep 17 00:00:00 2001
+From: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
+Date: Mon, 15 Oct 2012 15:29:51 +0530
+Subject: [PATCH 07/11] ath9k_hw: Fix max rx rate drop for AR9565
+
+Whenever i_coff of IQ calibration is too high, AR9565 drops max
+rx rate to MCS4. Skipping IQ update at this time can avoid this
+problem for AR9565.
+
+Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
+---
+ drivers/net/wireless/ath/ath9k/ar9003_calib.c |    5 +++++
+ 1 files changed, 5 insertions(+), 0 deletions(-)
+
+--- a/drivers/net/wireless/ath/ath9k/ar9003_calib.c
++++ b/drivers/net/wireless/ath/ath9k/ar9003_calib.c
+@@ -276,6 +276,11 @@ static void ar9003_hw_iqcalibrate(struct
+ 				offset_array[i],
+ 				REG_READ(ah, offset_array[i]));
+ 
++			if (AR_SREV_9565(ah) &&
++			    (iCoff == 63 || qCoff == 63 ||
++			     iCoff == -63 || qCoff == -63))
++				return;
++
+ 			REG_RMW_FIELD(ah, offset_array[i],
+ 				      AR_PHY_RX_IQCAL_CORR_IQCORR_Q_I_COFF,
+ 				      iCoff);
diff --git a/linux-next-pending/0008-ath9k_hw-Configure-new-switch-table-for-AR9565-BTCOE.patch b/linux-next-pending/0008-ath9k_hw-Configure-new-switch-table-for-AR9565-BTCOE.patch
new file mode 100644
index 0000000..2ae2a1d
--- /dev/null
+++ b/linux-next-pending/0008-ath9k_hw-Configure-new-switch-table-for-AR9565-BTCOE.patch
@@ -0,0 +1,47 @@
+From 2413be8ff29842ba6404dc69e353f481aa7e6f87 Mon Sep 17 00:00:00 2001
+From: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
+Date: Mon, 15 Oct 2012 15:29:52 +0530
+Subject: [PATCH 08/11] ath9k_hw: Configure new switch table for AR9565 BTCOEX
+
+Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
+---
+ drivers/net/wireless/ath/ath9k/ar9003_eeprom.c |    2 +-
+ drivers/net/wireless/ath/ath9k/reg.h           |    4 ----
+ drivers/net/wireless/ath/ath9k/wow.c           |    2 +-
+ 3 files changed, 2 insertions(+), 6 deletions(-)
+
+--- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
++++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
+@@ -3601,7 +3601,7 @@ static void ar9003_hw_ant_ctrl_apply(str
+ 	 *   7:4 R/W  SWITCH_TABLE_COM_SPDT_WLAN_IDLE
+ 	 * SWITCH_TABLE_COM_SPDT_WLAN_IDLE
+ 	 */
+-	if (AR_SREV_9462_20_OR_LATER(ah)) {
++	if (AR_SREV_9462_20(ah) || AR_SREV_9565(ah)) {
+ 		value = ar9003_switch_com_spdt_get(ah, is2ghz);
+ 		REG_RMW_FIELD(ah, AR_PHY_GLB_CONTROL,
+ 				AR_SWITCH_TABLE_COM_SPDT_ALL, value);
+--- a/drivers/net/wireless/ath/ath9k/reg.h
++++ b/drivers/net/wireless/ath/ath9k/reg.h
+@@ -907,10 +907,6 @@
+ 	(((_ah)->hw_version.macVersion == AR_SREV_VERSION_9462) && \
+ 	((_ah)->hw_version.macRev == AR_SREV_REVISION_9462_20))
+ 
+-#define AR_SREV_9462_20_OR_LATER(_ah) \
+-	(((_ah)->hw_version.macVersion == AR_SREV_VERSION_9462) && \
+-	((_ah)->hw_version.macRev >= AR_SREV_REVISION_9462_20))
+-
+ #define AR_SREV_9565(_ah) \
+ 	(((_ah)->hw_version.macVersion == AR_SREV_VERSION_9565))
+ 
+--- a/drivers/net/wireless/ath/ath9k/wow.c
++++ b/drivers/net/wireless/ath/ath9k/wow.c
+@@ -118,7 +118,7 @@ static void ath9k_wow_create_keep_alive_
+ 		       (ap_mac_addr[1] << 8) | (ap_mac_addr[0]);
+ 	data_word[5] = (ap_mac_addr[5] << 8) | (ap_mac_addr[4]);
+ 
+-	if (AR_SREV_9462_20_OR_LATER(ah)) {
++	if (AR_SREV_9462_20(ah)) {
+ 		/* AR9462 2.0 has an extra descriptor word (time based
+ 		 * discard) compared to other chips */
+ 		REG_WRITE(ah, (AR_WOW_KA_DESC_WORD2 + (12 * 4)), 0);
diff --git a/linux-next-pending/0009-ath9k_hw-Set-default-MCI-config-for-AR9565.patch b/linux-next-pending/0009-ath9k_hw-Set-default-MCI-config-for-AR9565.patch
new file mode 100644
index 0000000..687c8db
--- /dev/null
+++ b/linux-next-pending/0009-ath9k_hw-Set-default-MCI-config-for-AR9565.patch
@@ -0,0 +1,21 @@
+From 1e902624bc2de514eb4931950fb0533010246ae8 Mon Sep 17 00:00:00 2001
+From: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
+Date: Mon, 15 Oct 2012 15:29:53 +0530
+Subject: [PATCH 09/11] ath9k_hw: Set default MCI config for AR9565
+
+Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
+---
+ drivers/net/wireless/ath/ath9k/btcoex.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+--- a/drivers/net/wireless/ath/ath9k/btcoex.c
++++ b/drivers/net/wireless/ath/ath9k/btcoex.c
+@@ -195,7 +195,7 @@ void ath9k_hw_btcoex_init_mci(struct ath
+ 	ah->btcoex_hw.mci.need_flush_btinfo = false;
+ 	ah->btcoex_hw.mci.wlan_cal_seq = 0;
+ 	ah->btcoex_hw.mci.wlan_cal_done = 0;
+-	ah->btcoex_hw.mci.config = 0x2201;
++	ah->btcoex_hw.mci.config = (AR_SREV_9462(ah)) ? 0x2201 : 0xa4c1;
+ }
+ EXPORT_SYMBOL(ath9k_hw_btcoex_init_mci);
+ 
diff --git a/linux-next-pending/0010-ath9k-adjust-duty-cycle-for-FTP-profile-for-AR9565.patch b/linux-next-pending/0010-ath9k-adjust-duty-cycle-for-FTP-profile-for-AR9565.patch
new file mode 100644
index 0000000..24bfd02
--- /dev/null
+++ b/linux-next-pending/0010-ath9k-adjust-duty-cycle-for-FTP-profile-for-AR9565.patch
@@ -0,0 +1,21 @@
+From 31a829f68f4d5f36ea5513b3d4924c5ba372dfc8 Mon Sep 17 00:00:00 2001
+From: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
+Date: Mon, 15 Oct 2012 15:29:54 +0530
+Subject: [PATCH 10/11] ath9k: adjust duty cycle for FTP profile for AR9565
+
+Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
+---
+ drivers/net/wireless/ath/ath9k/mci.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+--- a/drivers/net/wireless/ath/ath9k/mci.c
++++ b/drivers/net/wireless/ath/ath9k/mci.c
+@@ -150,7 +150,7 @@ static void ath_mci_update_scheme(struct
+ 			 * For single PAN/FTP profile, allocate 35% for BT
+ 			 * to improve WLAN throughput.
+ 			 */
+-			btcoex->duty_cycle = 35;
++			btcoex->duty_cycle = AR_SREV_9565(sc->sc_ah) ? 40 : 35;
+ 			btcoex->btcoex_period = 53;
+ 			ath_dbg(common, MCI,
+ 				"Single PAN/FTP bt period %d ms dutycycle %d\n",
diff --git a/linux-next-pending/0011-ath9k-Add-new-BT-profile-info-A2DP_Voice.patch b/linux-next-pending/0011-ath9k-Add-new-BT-profile-info-A2DP_Voice.patch
new file mode 100644
index 0000000..2d4d4f1
--- /dev/null
+++ b/linux-next-pending/0011-ath9k-Add-new-BT-profile-info-A2DP_Voice.patch
@@ -0,0 +1,44 @@
+From 2b175a64f5daa777c6509542e38a48dd15f8e1b4 Mon Sep 17 00:00:00 2001
+From: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
+Date: Mon, 15 Oct 2012 15:29:55 +0530
+Subject: [PATCH 11/11] ath9k: Add new BT profile info A2DP_Voice
+
+When the BT connection is initiated by headset, it's possible that headset
+requests to make one A2DP and one Voice connection over the same link.
+BT firmware will send a new profile A2DP_Voice in this case. So WLAN
+has to take care of this new profile for tuning BTCOEX parameters.
+
+Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
+---
+ drivers/net/wireless/ath/ath9k/ar9003_mci.h |    1 +
+ drivers/net/wireless/ath/ath9k/mci.h        |    2 ++
+ 2 files changed, 3 insertions(+), 0 deletions(-)
+
+--- a/drivers/net/wireless/ath/ath9k/ar9003_mci.h
++++ b/drivers/net/wireless/ath/ath9k/ar9003_mci.h
+@@ -126,6 +126,7 @@ enum ath_mci_gpm_coex_profile_type {
+ 	MCI_GPM_COEX_PROFILE_HID,
+ 	MCI_GPM_COEX_PROFILE_BNEP,
+ 	MCI_GPM_COEX_PROFILE_VOICE,
++	MCI_GPM_COEX_PROFILE_A2DPVO,
+ 	MCI_GPM_COEX_PROFILE_MAX
+ };
+ 
+--- a/drivers/net/wireless/ath/ath9k/mci.h
++++ b/drivers/net/wireless/ath/ath9k/mci.h
+@@ -49,6 +49,7 @@
+ 			_mci->num_pan++;	 \
+ 			break;			 \
+ 		case MCI_GPM_COEX_PROFILE_VOICE: \
++		case MCI_GPM_COEX_PROFILE_A2DPVO:\
+ 			_mci->num_sco++;	 \
+ 			break;			 \
+ 		default:			 \
+@@ -73,6 +74,7 @@
+ 			_mci->num_pan--;	 \
+ 			break;			 \
+ 		case MCI_GPM_COEX_PROFILE_VOICE: \
++		case MCI_GPM_COEX_PROFILE_A2DPVO:\
+ 			_mci->num_sco--;	 \
+ 			break;			 \
+ 		default:			 \
diff --git a/linux-next-pending/0012-cfg80211-Disallow-HT-WEP-in-IBSS-mode.patch b/linux-next-pending/0012-cfg80211-Disallow-HT-WEP-in-IBSS-mode.patch
new file mode 100644
index 0000000..e4a39e9
--- /dev/null
+++ b/linux-next-pending/0012-cfg80211-Disallow-HT-WEP-in-IBSS-mode.patch
@@ -0,0 +1,63 @@
+From 19888b7ee52ffee74a874ad622f44ed5f9706e51 Mon Sep 17 00:00:00 2001
+From: Sujith Manoharan <c_manoha@qti.qualcomm.com>
+Date: Mon, 15 Oct 2012 16:43:41 +0530
+Subject: [PATCH] cfg80211: Disallow HT/WEP in IBSS mode
+
+Signed-off-by: Sujith Manoharan <c_manoha@qti.qualcomm.com>
+---
+ net/wireless/nl80211.c | 20 +++++++++++++++++---
+ 1 file changed, 17 insertions(+), 3 deletions(-)
+
+--- a/net/wireless/nl80211.c
++++ b/net/wireless/nl80211.c
+@@ -690,7 +690,7 @@ static int nl80211_parse_key(struct genl
+ 
+ static struct cfg80211_cached_keys *
+ nl80211_parse_connkeys(struct cfg80211_registered_device *rdev,
+-		       struct nlattr *keys)
++		       struct nlattr *keys, bool *no_ht)
+ {
+ 	struct key_parse parse;
+ 	struct nlattr *key;
+@@ -733,6 +733,12 @@ nl80211_parse_connkeys(struct cfg80211_r
+ 		result->params[parse.idx].key_len = parse.p.key_len;
+ 		result->params[parse.idx].key = result->data[parse.idx];
+ 		memcpy(result->data[parse.idx], parse.p.key, parse.p.key_len);
++
++		if (result->params[parse.idx].cipher == WLAN_CIPHER_SUITE_WEP40 ||
++		    result->params[parse.idx].cipher == WLAN_CIPHER_SUITE_WEP104) {
++			if (no_ht)
++				*no_ht = true;
++		}
+ 	}
+ 
+ 	return result;
+@@ -5318,10 +5324,18 @@ static int nl80211_join_ibss(struct sk_b
+ 		return -EINVAL;
+ 
+ 	if (ibss.privacy && info->attrs[NL80211_ATTR_KEYS]) {
++		bool no_ht = false;
++
+ 		connkeys = nl80211_parse_connkeys(rdev,
+-					info->attrs[NL80211_ATTR_KEYS]);
++					  info->attrs[NL80211_ATTR_KEYS],
++					  &no_ht);
+ 		if (IS_ERR(connkeys))
+ 			return PTR_ERR(connkeys);
++
++		if ((ibss.channel_type != NL80211_CHAN_NO_HT) && no_ht) {
++			kfree(connkeys);
++			return -EINVAL;
++		}
+ 	}
+ 
+ 	ibss.control_port =
+@@ -5621,7 +5635,7 @@ static int nl80211_connect(struct sk_buf
+ 
+ 	if (connect.privacy && info->attrs[NL80211_ATTR_KEYS]) {
+ 		connkeys = nl80211_parse_connkeys(rdev,
+-					info->attrs[NL80211_ATTR_KEYS]);
++					  info->attrs[NL80211_ATTR_KEYS], NULL);
+ 		if (IS_ERR(connkeys))
+ 			return PTR_ERR(connkeys);
+ 	}
-- 
1.7.11.4


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 1/3] compat-drivers: Update pending stable patches.
  2012-10-15 13:23 Bala Shanmugam
@ 2012-10-15 13:23 ` Bala Shanmugam
  0 siblings, 0 replies; 6+ messages in thread
From: Bala Shanmugam @ 2012-10-15 13:23 UTC (permalink / raw)
  To: rodrigue; +Cc: linux-wireless, backports

Signed-off-by: Bala Shanmugam <bkamatch@qca.qualcomm.com>
---
 ...h-mgmt-Fix-enabling-SSP-while-powered-off.patch |  43 -----
 ...th-mgmt-Fix-enabling-LE-while-powered-off.patch |  46 -----
 ...h-Fix-not-removing-power_off-delayed-work.patch |  76 --------
 ...x-possible-circular-lock-on-reg_regdb_sea.patch | 129 -------------
 ...-t-double-free-the-interrupt-in-failure-p.patch |  33 ----
 ...gmt-Implement-support-for-passkey-notific.patch | 214 ---------------------
 ...ooth-Update-management-interface-revision.patch |  36 ----
 ...dd-USB_VENDOR_AND_INTERFACE_INFO-for-Broa.patch |  31 ---
 .../0009-ath9k-Disable-ASPM-only-for-AR9285.patch  |  38 ----
 9 files changed, 646 deletions(-)
 delete mode 100644 pending-stable/0001-Bluetooth-mgmt-Fix-enabling-SSP-while-powered-off.patch
 delete mode 100644 pending-stable/0002-Bluetooth-mgmt-Fix-enabling-LE-while-powered-off.patch
 delete mode 100644 pending-stable/0003-Bluetooth-Fix-not-removing-power_off-delayed-work.patch
 delete mode 100644 pending-stable/0004-cfg80211-fix-possible-circular-lock-on-reg_regdb_sea.patch
 delete mode 100644 pending-stable/0005-iwlwifi-don-t-double-free-the-interrupt-in-failure-p.patch
 delete mode 100644 pending-stable/0006-Bluetooth-mgmt-Implement-support-for-passkey-notific.patch
 delete mode 100644 pending-stable/0007-Bluetooth-Update-management-interface-revision.patch
 delete mode 100644 pending-stable/0008-Bluetooth-Add-USB_VENDOR_AND_INTERFACE_INFO-for-Broa.patch
 delete mode 100644 pending-stable/0009-ath9k-Disable-ASPM-only-for-AR9285.patch

diff --git a/pending-stable/0001-Bluetooth-mgmt-Fix-enabling-SSP-while-powered-off.patch b/pending-stable/0001-Bluetooth-mgmt-Fix-enabling-SSP-while-powered-off.patch
deleted file mode 100644
index 636229e..0000000
--- a/pending-stable/0001-Bluetooth-mgmt-Fix-enabling-SSP-while-powered-off.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 3d1cbdd6aefff711bcf389fdabc4af9bc22e8201 Mon Sep 17 00:00:00 2001
-From: Andrzej Kaczmarek <andrzej.kaczmarek@tieto.com>
-Date: Wed, 29 Aug 2012 10:02:08 +0200
-Subject: [PATCH 1/9] Bluetooth: mgmt: Fix enabling SSP while powered off
-
-When new BT USB adapter is plugged in it's configured while still being powered
-off (HCI_AUTO_OFF flag is set), thus Set SSP will only set dev_flags but won't
-write changes to controller. As a result remote devices won't use Secure Simple
-Pairing with our device due to SSP Host Support flag disabled in extended
-features and may also reject SSP attempt from our side (with possible fallback
-to legacy pairing).
-
-This patch ensures HCI Write Simple Pairing Mode is sent when Set Powered is
-called to power on controller and clear HCI_AUTO_OFF flag.
-
-Signed-off-by: Andrzej Kaczmarek <andrzej.kaczmarek@tieto.com>
-Cc: stable@vger.kernel.org
-Acked-by: Johan Hedberg <johan.hedberg@intel.com>
-Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
----
- net/bluetooth/mgmt.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
-index ad6613d..f943bbf 100644
---- a/net/bluetooth/mgmt.c
-+++ b/net/bluetooth/mgmt.c
-@@ -2875,6 +2875,12 @@ int mgmt_powered(struct hci_dev *hdev, u8 powered)
- 		if (scan)
- 			hci_send_cmd(hdev, HCI_OP_WRITE_SCAN_ENABLE, 1, &scan);
- 
-+		if (test_bit(HCI_SSP_ENABLED, &hdev->dev_flags)) {
-+			u8 ssp = 1;
-+
-+			hci_send_cmd(hdev, HCI_OP_WRITE_SSP_MODE, 1, &ssp);
-+		}
-+
- 		update_class(hdev);
- 		update_name(hdev, hdev->dev_name);
- 		update_eir(hdev);
--- 
-1.7.12.1
-
diff --git a/pending-stable/0002-Bluetooth-mgmt-Fix-enabling-LE-while-powered-off.patch b/pending-stable/0002-Bluetooth-mgmt-Fix-enabling-LE-while-powered-off.patch
deleted file mode 100644
index 9c66eee..0000000
--- a/pending-stable/0002-Bluetooth-mgmt-Fix-enabling-LE-while-powered-off.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 562fcc246ebe31ade6e1be08585673b9b2785498 Mon Sep 17 00:00:00 2001
-From: Andrzej Kaczmarek <andrzej.kaczmarek@tieto.com>
-Date: Wed, 29 Aug 2012 10:02:09 +0200
-Subject: [PATCH 2/9] Bluetooth: mgmt: Fix enabling LE while powered off
-
-When new BT USB adapter is plugged in it's configured while still being powered
-off (HCI_AUTO_OFF flag is set), thus Set LE will only set dev_flags but won't
-write changes to controller. As a result it's not possible to start device
-discovery session on LE controller as it uses interleaved discovery which
-requires LE Supported Host flag in extended features.
-
-This patch ensures HCI Write LE Host Supported is sent when Set Powered is
-called to power on controller and clear HCI_AUTO_OFF flag.
-
-Signed-off-by: Andrzej Kaczmarek <andrzej.kaczmarek@tieto.com>
-Cc: stable@vger.kernel.org
-Acked-by: Johan Hedberg <johan.hedberg@intel.com>
-Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
----
- net/bluetooth/mgmt.c | 10 ++++++++++
- 1 file changed, 10 insertions(+)
-
-diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
-index f943bbf..eba022d 100644
---- a/net/bluetooth/mgmt.c
-+++ b/net/bluetooth/mgmt.c
-@@ -2881,6 +2881,16 @@ int mgmt_powered(struct hci_dev *hdev, u8 powered)
- 			hci_send_cmd(hdev, HCI_OP_WRITE_SSP_MODE, 1, &ssp);
- 		}
- 
-+		if (test_bit(HCI_LE_ENABLED, &hdev->dev_flags)) {
-+			struct hci_cp_write_le_host_supported cp;
-+
-+			cp.le = 1;
-+			cp.simul = !!(hdev->features[6] & LMP_SIMUL_LE_BR);
-+
-+			hci_send_cmd(hdev, HCI_OP_WRITE_LE_HOST_SUPPORTED,
-+				     sizeof(cp), &cp);
-+		}
-+
- 		update_class(hdev);
- 		update_name(hdev, hdev->dev_name);
- 		update_eir(hdev);
--- 
-1.7.12.1
-
diff --git a/pending-stable/0003-Bluetooth-Fix-not-removing-power_off-delayed-work.patch b/pending-stable/0003-Bluetooth-Fix-not-removing-power_off-delayed-work.patch
deleted file mode 100644
index 3171104..0000000
--- a/pending-stable/0003-Bluetooth-Fix-not-removing-power_off-delayed-work.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-From 78c04c0bf52360dc2f7185e99c8e9aa05d73ae5a Mon Sep 17 00:00:00 2001
-From: Vinicius Costa Gomes <vinicius.gomes@openbossa.org>
-Date: Fri, 14 Sep 2012 16:34:46 -0300
-Subject: [PATCH 3/9] Bluetooth: Fix not removing power_off delayed work
-
-For example, when a usb reset is received (I could reproduce it
-running something very similar to this[1] in a loop) it could be
-that the device is unregistered while the power_off delayed work
-is still scheduled to run.
-
-Backtrace:
-
-WARNING: at lib/debugobjects.c:261 debug_print_object+0x7c/0x8d()
-Hardware name: To Be Filled By O.E.M.
-ODEBUG: free active (active state 0) object type: timer_list hint: delayed_work_timer_fn+0x0/0x26
-Modules linked in: nouveau mxm_wmi btusb wmi bluetooth ttm coretemp drm_kms_helper
-Pid: 2114, comm: usb-reset Not tainted 3.5.0bt-next #2
-Call Trace:
- [<ffffffff8124cc00>] ? free_obj_work+0x57/0x91
- [<ffffffff81058f88>] warn_slowpath_common+0x7e/0x97
- [<ffffffff81059035>] warn_slowpath_fmt+0x41/0x43
- [<ffffffff8124ccb6>] debug_print_object+0x7c/0x8d
- [<ffffffff8106e3ec>] ? __queue_work+0x259/0x259
- [<ffffffff8124d63e>] ? debug_check_no_obj_freed+0x6f/0x1b5
- [<ffffffff8124d667>] debug_check_no_obj_freed+0x98/0x1b5
- [<ffffffffa00aa031>] ? bt_host_release+0x10/0x1e [bluetooth]
- [<ffffffff810fc035>] kfree+0x90/0xe6
- [<ffffffffa00aa031>] bt_host_release+0x10/0x1e [bluetooth]
- [<ffffffff812ec2f9>] device_release+0x4a/0x7e
- [<ffffffff8123ef57>] kobject_release+0x11d/0x154
- [<ffffffff8123ed98>] kobject_put+0x4a/0x4f
- [<ffffffff812ec0d9>] put_device+0x12/0x14
- [<ffffffffa009472b>] hci_free_dev+0x22/0x26 [bluetooth]
- [<ffffffffa0280dd0>] btusb_disconnect+0x96/0x9f [btusb]
- [<ffffffff813581b4>] usb_unbind_interface+0x57/0x106
- [<ffffffff812ef988>] __device_release_driver+0x83/0xd6
- [<ffffffff812ef9fb>] device_release_driver+0x20/0x2d
- [<ffffffff813582a7>] usb_driver_release_interface+0x44/0x7b
- [<ffffffff81358795>] usb_forced_unbind_intf+0x45/0x4e
- [<ffffffff8134f959>] usb_reset_device+0xa6/0x12e
- [<ffffffff8135df86>] usbdev_do_ioctl+0x319/0xe20
- [<ffffffff81203244>] ? avc_has_perm_flags+0xc9/0x12e
- [<ffffffff812031a0>] ? avc_has_perm_flags+0x25/0x12e
- [<ffffffff81050101>] ? do_page_fault+0x31e/0x3a1
- [<ffffffff8135eaa6>] usbdev_ioctl+0x9/0xd
- [<ffffffff811126b1>] vfs_ioctl+0x21/0x34
- [<ffffffff81112f7b>] do_vfs_ioctl+0x408/0x44b
- [<ffffffff81208d45>] ? file_has_perm+0x76/0x81
- [<ffffffff8111300f>] sys_ioctl+0x51/0x76
- [<ffffffff8158db22>] system_call_fastpath+0x16/0x1b
-
-[1] http://cpansearch.perl.org/src/DPAVLIN/Biblio-RFID-0.03/examples/usbreset.c
-
-Signed-off-by: Vinicius Costa Gomes <vinicius.gomes@openbossa.org>
-Cc: stable@vger.kernel.org
-Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
----
- net/bluetooth/hci_core.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
-index d4de5db..0b997c8 100644
---- a/net/bluetooth/hci_core.c
-+++ b/net/bluetooth/hci_core.c
-@@ -734,6 +734,8 @@ static int hci_dev_do_close(struct hci_dev *hdev)
- 
- 	cancel_work_sync(&hdev->le_scan);
- 
-+	cancel_delayed_work(&hdev->power_off);
-+
- 	hci_req_cancel(hdev, ENODEV);
- 	hci_req_lock(hdev);
- 
--- 
-1.7.12.1
-
diff --git a/pending-stable/0004-cfg80211-fix-possible-circular-lock-on-reg_regdb_sea.patch b/pending-stable/0004-cfg80211-fix-possible-circular-lock-on-reg_regdb_sea.patch
deleted file mode 100644
index 59c05fc..0000000
--- a/pending-stable/0004-cfg80211-fix-possible-circular-lock-on-reg_regdb_sea.patch
+++ /dev/null
@@ -1,129 +0,0 @@
-From a85d0d7f3460b1a123b78e7f7e39bf72c37dfb78 Mon Sep 17 00:00:00 2001
-From: "Luis R. Rodriguez" <mcgrof@do-not-panic.com>
-Date: Fri, 14 Sep 2012 15:36:57 -0700
-Subject: [PATCH 4/9] cfg80211: fix possible circular lock on
- reg_regdb_search()
-
-When call_crda() is called we kick off a witch hunt search
-for the same regulatory domain on our internal regulatory
-database and that work gets kicked off on a workqueue, this
-is done while the cfg80211_mutex is held. If that workqueue
-kicks off it will first lock reg_regdb_search_mutex and
-later cfg80211_mutex but to ensure two CPUs will not contend
-against cfg80211_mutex the right thing to do is to have the
-reg_regdb_search() wait until the cfg80211_mutex is let go.
-
-The lockdep report is pasted below.
-
-cfg80211: Calling CRDA to update world regulatory domain
-
-======================================================
-[ INFO: possible circular locking dependency detected ]
-3.3.8 #3 Tainted: G           O
--------------------------------------------------------
-kworker/0:1/235 is trying to acquire lock:
- (cfg80211_mutex){+.+...}, at: [<816468a4>] set_regdom+0x78c/0x808 [cfg80211]
-
-but task is already holding lock:
- (reg_regdb_search_mutex){+.+...}, at: [<81646828>] set_regdom+0x710/0x808 [cfg80211]
-
-which lock already depends on the new lock.
-
-the existing dependency chain (in reverse order) is:
-
--> #2 (reg_regdb_search_mutex){+.+...}:
-       [<800a8384>] lock_acquire+0x60/0x88
-       [<802950a8>] mutex_lock_nested+0x54/0x31c
-       [<81645778>] is_world_regdom+0x9f8/0xc74 [cfg80211]
-
--> #1 (reg_mutex#2){+.+...}:
-       [<800a8384>] lock_acquire+0x60/0x88
-       [<802950a8>] mutex_lock_nested+0x54/0x31c
-       [<8164539c>] is_world_regdom+0x61c/0xc74 [cfg80211]
-
--> #0 (cfg80211_mutex){+.+...}:
-       [<800a77b8>] __lock_acquire+0x10d4/0x17bc
-       [<800a8384>] lock_acquire+0x60/0x88
-       [<802950a8>] mutex_lock_nested+0x54/0x31c
-       [<816468a4>] set_regdom+0x78c/0x808 [cfg80211]
-
-other info that might help us debug this:
-
-Chain exists of:
-  cfg80211_mutex --> reg_mutex#2 --> reg_regdb_search_mutex
-
- Possible unsafe locking scenario:
-
-       CPU0                    CPU1
-       ----                    ----
-  lock(reg_regdb_search_mutex);
-                               lock(reg_mutex#2);
-                               lock(reg_regdb_search_mutex);
-  lock(cfg80211_mutex);
-
- *** DEADLOCK ***
-
-3 locks held by kworker/0:1/235:
- #0:  (events){.+.+..}, at: [<80089a00>] process_one_work+0x230/0x460
- #1:  (reg_regdb_work){+.+...}, at: [<80089a00>] process_one_work+0x230/0x460
- #2:  (reg_regdb_search_mutex){+.+...}, at: [<81646828>] set_regdom+0x710/0x808 [cfg80211]
-
-stack backtrace:
-Call Trace:
-[<80290fd4>] dump_stack+0x8/0x34
-[<80291bc4>] print_circular_bug+0x2ac/0x2d8
-[<800a77b8>] __lock_acquire+0x10d4/0x17bc
-[<800a8384>] lock_acquire+0x60/0x88
-[<802950a8>] mutex_lock_nested+0x54/0x31c
-[<816468a4>] set_regdom+0x78c/0x808 [cfg80211]
-
-Reported-by: Felix Fietkau <nbd@openwrt.org>
-Tested-by: Felix Fietkau <nbd@openwrt.org>
-Cc: stable@vger.kernel.org
-Signed-off-by: Luis R. Rodriguez <mcgrof@do-not-panic.com>
-Reviewed-by: Johannes Berg <johannes@sipsolutions.net>
-Signed-off-by: John W. Linville <linville@tuxdriver.com>
----
- net/wireless/reg.c | 12 +++++++++---
- 1 file changed, 9 insertions(+), 3 deletions(-)
-
-diff --git a/net/wireless/reg.c b/net/wireless/reg.c
-index 2ded3c7..72d170c 100644
---- a/net/wireless/reg.c
-+++ b/net/wireless/reg.c
-@@ -350,6 +350,9 @@ static void reg_regdb_search(struct work_struct *work)
- 	struct reg_regdb_search_request *request;
- 	const struct ieee80211_regdomain *curdom, *regdom;
- 	int i, r;
-+	bool set_reg = false;
-+
-+	mutex_lock(&cfg80211_mutex);
- 
- 	mutex_lock(&reg_regdb_search_mutex);
- 	while (!list_empty(&reg_regdb_search_list)) {
-@@ -365,9 +368,7 @@ static void reg_regdb_search(struct work_struct *work)
- 				r = reg_copy_regd(&regdom, curdom);
- 				if (r)
- 					break;
--				mutex_lock(&cfg80211_mutex);
--				set_regdom(regdom);
--				mutex_unlock(&cfg80211_mutex);
-+				set_reg = true;
- 				break;
- 			}
- 		}
-@@ -375,6 +376,11 @@ static void reg_regdb_search(struct work_struct *work)
- 		kfree(request);
- 	}
- 	mutex_unlock(&reg_regdb_search_mutex);
-+
-+	if (set_reg)
-+		set_regdom(regdom);
-+
-+	mutex_unlock(&cfg80211_mutex);
- }
- 
- static DECLARE_WORK(reg_regdb_work, reg_regdb_search);
--- 
-1.7.12.1
-
diff --git a/pending-stable/0005-iwlwifi-don-t-double-free-the-interrupt-in-failure-p.patch b/pending-stable/0005-iwlwifi-don-t-double-free-the-interrupt-in-failure-p.patch
deleted file mode 100644
index 16bad35..0000000
--- a/pending-stable/0005-iwlwifi-don-t-double-free-the-interrupt-in-failure-p.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From a7be50b7e30f9d77cb059a7ffdb781bb0fb92eba Mon Sep 17 00:00:00 2001
-From: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
-Date: Tue, 18 Sep 2012 19:48:59 +0200
-Subject: [PATCH 5/9] iwlwifi: don't double free the interrupt in failure path
-
-When the driver can't get the HW ready, we would release
-the interrupt twice which made the kernel complain loudly.
-
-Cc: stable@vger.kernel.org
-Reported-by: Brian Cockrell <brian.cockrell@intel.com>
-Tested-by: Brian Cockrell <brian.cockrell@intel.com>
-Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
-Signed-off-by: Johannes Berg <johannes.berg@intel.com>
-Signed-off-by: John W. Linville <linville@tuxdriver.com>
----
- drivers/net/wireless/iwlwifi/pcie/trans.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/net/wireless/iwlwifi/pcie/trans.c b/drivers/net/wireless/iwlwifi/pcie/trans.c
-index 1e86ea2..dbeebef 100644
---- a/drivers/net/wireless/iwlwifi/pcie/trans.c
-+++ b/drivers/net/wireless/iwlwifi/pcie/trans.c
-@@ -1442,6 +1442,7 @@ static int iwl_trans_pcie_start_hw(struct iwl_trans *trans)
- 	return err;
- 
- err_free_irq:
-+	trans_pcie->irq_requested = false;
- 	free_irq(trans_pcie->irq, trans);
- error:
- 	iwl_free_isr_ict(trans);
--- 
-1.7.12.1
-
diff --git a/pending-stable/0006-Bluetooth-mgmt-Implement-support-for-passkey-notific.patch b/pending-stable/0006-Bluetooth-mgmt-Implement-support-for-passkey-notific.patch
deleted file mode 100644
index 3d6b330..0000000
--- a/pending-stable/0006-Bluetooth-mgmt-Implement-support-for-passkey-notific.patch
+++ /dev/null
@@ -1,214 +0,0 @@
-From 92a25256f142d55e25f9959441cea6ddeabae57e Mon Sep 17 00:00:00 2001
-From: Johan Hedberg <johan.hedberg@intel.com>
-Date: Thu, 6 Sep 2012 18:39:26 +0300
-Subject: [PATCH 6/9] Bluetooth: mgmt: Implement support for passkey
- notification
-
-This patch adds support for Secure Simple Pairing with devices that have
-KeyboardOnly as their IO capability. Such devices will cause a passkey
-notification on our side and optionally also keypress notifications.
-Without this patch some keyboards cannot be paired using the mgmt
-interface.
-
-Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
-Cc: stable@vger.kernel.org
-Acked-by: Marcel Holtmann <marcel@holtmann.org>
-Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
----
- include/net/bluetooth/hci.h      | 18 +++++++++++
- include/net/bluetooth/hci_core.h |  5 +++
- include/net/bluetooth/mgmt.h     |  7 +++++
- net/bluetooth/hci_event.c        | 67 ++++++++++++++++++++++++++++++++++++++++
- net/bluetooth/mgmt.c             | 17 ++++++++++
- 5 files changed, 114 insertions(+)
-
-diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
-index 0f28f70..76b2b6b 100644
---- a/include/net/bluetooth/hci.h
-+++ b/include/net/bluetooth/hci.h
-@@ -1249,6 +1249,24 @@ struct hci_ev_simple_pair_complete {
- 	bdaddr_t bdaddr;
- } __packed;
- 
-+#define HCI_EV_USER_PASSKEY_NOTIFY	0x3b
-+struct hci_ev_user_passkey_notify {
-+	bdaddr_t	bdaddr;
-+	__le32		passkey;
-+} __packed;
-+
-+#define HCI_KEYPRESS_STARTED		0
-+#define HCI_KEYPRESS_ENTERED		1
-+#define HCI_KEYPRESS_ERASED		2
-+#define HCI_KEYPRESS_CLEARED		3
-+#define HCI_KEYPRESS_COMPLETED		4
-+
-+#define HCI_EV_KEYPRESS_NOTIFY		0x3c
-+struct hci_ev_keypress_notify {
-+	bdaddr_t	bdaddr;
-+	__u8		type;
-+} __packed;
-+
- #define HCI_EV_REMOTE_HOST_FEATURES	0x3d
- struct hci_ev_remote_host_features {
- 	bdaddr_t bdaddr;
-diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h
-index 6a3337e..e7d4546 100644
---- a/include/net/bluetooth/hci_core.h
-+++ b/include/net/bluetooth/hci_core.h
-@@ -303,6 +303,8 @@ struct hci_conn {
- 	__u8		pin_length;
- 	__u8		enc_key_size;
- 	__u8		io_capability;
-+	__u32		passkey_notify;
-+	__u8		passkey_entered;
- 	__u16		disc_timeout;
- 	unsigned long	flags;
- 
-@@ -1022,6 +1024,9 @@ int mgmt_user_passkey_reply_complete(struct hci_dev *hdev, bdaddr_t *bdaddr,
- 				     u8 link_type, u8 addr_type, u8 status);
- int mgmt_user_passkey_neg_reply_complete(struct hci_dev *hdev, bdaddr_t *bdaddr,
- 					 u8 link_type, u8 addr_type, u8 status);
-+int mgmt_user_passkey_notify(struct hci_dev *hdev, bdaddr_t *bdaddr,
-+			     u8 link_type, u8 addr_type, u32 passkey,
-+			     u8 entered);
- int mgmt_auth_failed(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 link_type,
- 		     u8 addr_type, u8 status);
- int mgmt_auth_enable_complete(struct hci_dev *hdev, u8 status);
-diff --git a/include/net/bluetooth/mgmt.h b/include/net/bluetooth/mgmt.h
-index 1b48eff..22980a7 100644
---- a/include/net/bluetooth/mgmt.h
-+++ b/include/net/bluetooth/mgmt.h
-@@ -478,3 +478,10 @@ struct mgmt_ev_device_unblocked {
- struct mgmt_ev_device_unpaired {
- 	struct mgmt_addr_info addr;
- } __packed;
-+
-+#define MGMT_EV_PASSKEY_NOTIFY		0x0017
-+struct mgmt_ev_passkey_notify {
-+	struct mgmt_addr_info addr;
-+	__le32	passkey;
-+	__u8	entered;
-+} __packed;
-diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
-index 48d7302..ccca88f 100644
---- a/net/bluetooth/hci_event.c
-+++ b/net/bluetooth/hci_event.c
-@@ -3263,6 +3263,65 @@ static void hci_user_passkey_request_evt(struct hci_dev *hdev,
- 		mgmt_user_passkey_request(hdev, &ev->bdaddr, ACL_LINK, 0);
- }
- 
-+static void hci_user_passkey_notify_evt(struct hci_dev *hdev,
-+					struct sk_buff *skb)
-+{
-+	struct hci_ev_user_passkey_notify *ev = (void *) skb->data;
-+	struct hci_conn *conn;
-+
-+	BT_DBG("%s", hdev->name);
-+
-+	conn = hci_conn_hash_lookup_ba(hdev, ACL_LINK, &ev->bdaddr);
-+	if (!conn)
-+		return;
-+
-+	conn->passkey_notify = __le32_to_cpu(ev->passkey);
-+	conn->passkey_entered = 0;
-+
-+	if (test_bit(HCI_MGMT, &hdev->dev_flags))
-+		mgmt_user_passkey_notify(hdev, &conn->dst, conn->type,
-+					 conn->dst_type, conn->passkey_notify,
-+					 conn->passkey_entered);
-+}
-+
-+static void hci_keypress_notify_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+{
-+	struct hci_ev_keypress_notify *ev = (void *) skb->data;
-+	struct hci_conn *conn;
-+
-+	BT_DBG("%s", hdev->name);
-+
-+	conn = hci_conn_hash_lookup_ba(hdev, ACL_LINK, &ev->bdaddr);
-+	if (!conn)
-+		return;
-+
-+	switch (ev->type) {
-+	case HCI_KEYPRESS_STARTED:
-+		conn->passkey_entered = 0;
-+		return;
-+
-+	case HCI_KEYPRESS_ENTERED:
-+		conn->passkey_entered++;
-+		break;
-+
-+	case HCI_KEYPRESS_ERASED:
-+		conn->passkey_entered--;
-+		break;
-+
-+	case HCI_KEYPRESS_CLEARED:
-+		conn->passkey_entered = 0;
-+		break;
-+
-+	case HCI_KEYPRESS_COMPLETED:
-+		return;
-+	}
-+
-+	if (test_bit(HCI_MGMT, &hdev->dev_flags))
-+		mgmt_user_passkey_notify(hdev, &conn->dst, conn->type,
-+					 conn->dst_type, conn->passkey_notify,
-+					 conn->passkey_entered);
-+}
-+
- static void hci_simple_pair_complete_evt(struct hci_dev *hdev,
- 					 struct sk_buff *skb)
- {
-@@ -3627,6 +3686,14 @@ void hci_event_packet(struct hci_dev *hdev, struct sk_buff *skb)
- 		hci_user_passkey_request_evt(hdev, skb);
- 		break;
- 
-+	case HCI_EV_USER_PASSKEY_NOTIFY:
-+		hci_user_passkey_notify_evt(hdev, skb);
-+		break;
-+
-+	case HCI_EV_KEYPRESS_NOTIFY:
-+		hci_keypress_notify_evt(hdev, skb);
-+		break;
-+
- 	case HCI_EV_SIMPLE_PAIR_COMPLETE:
- 		hci_simple_pair_complete_evt(hdev, skb);
- 		break;
-diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
-index 05d4b83..8e1ab59 100644
---- a/net/bluetooth/mgmt.c
-+++ b/net/bluetooth/mgmt.c
-@@ -99,6 +99,7 @@ static const u16 mgmt_events[] = {
- 	MGMT_EV_DEVICE_BLOCKED,
- 	MGMT_EV_DEVICE_UNBLOCKED,
- 	MGMT_EV_DEVICE_UNPAIRED,
-+	MGMT_EV_PASSKEY_NOTIFY,
- };
- 
- /*
-@@ -3276,6 +3277,22 @@ int mgmt_user_passkey_neg_reply_complete(struct hci_dev *hdev, bdaddr_t *bdaddr,
- 					  MGMT_OP_USER_PASSKEY_NEG_REPLY);
- }
- 
-+int mgmt_user_passkey_notify(struct hci_dev *hdev, bdaddr_t *bdaddr,
-+			     u8 link_type, u8 addr_type, u32 passkey,
-+			     u8 entered)
-+{
-+	struct mgmt_ev_passkey_notify ev;
-+
-+	BT_DBG("%s", hdev->name);
-+
-+	bacpy(&ev.addr.bdaddr, bdaddr);
-+	ev.addr.type = link_to_bdaddr(link_type, addr_type);
-+	ev.passkey = __cpu_to_le32(passkey);
-+	ev.entered = entered;
-+
-+	return mgmt_event(MGMT_EV_PASSKEY_NOTIFY, hdev, &ev, sizeof(ev), NULL);
-+}
-+
- int mgmt_auth_failed(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 link_type,
- 		     u8 addr_type, u8 status)
- {
--- 
-1.7.12.1
-
diff --git a/pending-stable/0007-Bluetooth-Update-management-interface-revision.patch b/pending-stable/0007-Bluetooth-Update-management-interface-revision.patch
deleted file mode 100644
index c8b9f90..0000000
--- a/pending-stable/0007-Bluetooth-Update-management-interface-revision.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 23b3b1330abc643e1fbb7cfffcb6947e2583cff2 Mon Sep 17 00:00:00 2001
-From: Johan Hedberg <johan.hedberg@intel.com>
-Date: Thu, 6 Sep 2012 18:39:27 +0300
-Subject: [PATCH 7/9] Bluetooth: Update management interface revision
-
-For each kernel release where commands or events are added to the
-management interface, the revision field should be increment by one.
-
-The increment should only happen once per kernel release and not
-for every command/event that gets added. The revision value is for
-informational purposes only, but this simple policy would make any
-future debugging a lot simple.
-
-Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
-Cc: stable@vger.kernel.org
-Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
----
- net/bluetooth/mgmt.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
-index 8e1ab59..8934343 100644
---- a/net/bluetooth/mgmt.c
-+++ b/net/bluetooth/mgmt.c
-@@ -35,7 +35,7 @@
- bool enable_hs;
- 
- #define MGMT_VERSION	1
--#define MGMT_REVISION	1
-+#define MGMT_REVISION	2
- 
- static const u16 mgmt_commands[] = {
- 	MGMT_OP_READ_INDEX_LIST,
--- 
-1.7.12.1
-
diff --git a/pending-stable/0008-Bluetooth-Add-USB_VENDOR_AND_INTERFACE_INFO-for-Broa.patch b/pending-stable/0008-Bluetooth-Add-USB_VENDOR_AND_INTERFACE_INFO-for-Broa.patch
deleted file mode 100644
index 3612b46..0000000
--- a/pending-stable/0008-Bluetooth-Add-USB_VENDOR_AND_INTERFACE_INFO-for-Broa.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From ee66401bb94b1f2ce51089c341dcdd25d26ae631 Mon Sep 17 00:00:00 2001
-From: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
-Date: Wed, 15 Aug 2012 01:38:11 -0300
-Subject: [PATCH 8/9] Bluetooth: Add USB_VENDOR_AND_INTERFACE_INFO() for
- Broadcom/Foxconn
-
-Foxconn devices has a vendor specific class of device, we will match them
-differently now.
-
-Cc: stable@vger.kernel.org
-Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
----
- drivers/bluetooth/btusb.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
-index f637c25..f077f4d 100644
---- a/drivers/bluetooth/btusb.c
-+++ b/drivers/bluetooth/btusb.c
-@@ -101,7 +101,7 @@ static struct usb_device_id btusb_table[] = {
- 	{ USB_DEVICE(0x413c, 0x8197) },
- 
- 	/* Foxconn - Hon Hai */
--	{ USB_DEVICE(0x0489, 0xe033) },
-+	{ USB_VENDOR_AND_INTERFACE_INFO(0x0489, 0xff, 0x01, 0x01) },
- 
- 	{ }	/* Terminating entry */
- };
--- 
-1.7.12.1
-
diff --git a/pending-stable/0009-ath9k-Disable-ASPM-only-for-AR9285.patch b/pending-stable/0009-ath9k-Disable-ASPM-only-for-AR9285.patch
deleted file mode 100644
index 86a34ec..0000000
--- a/pending-stable/0009-ath9k-Disable-ASPM-only-for-AR9285.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 046b6802c8d3c8a57448485513bf7291633e0fa3 Mon Sep 17 00:00:00 2001
-From: Sujith Manoharan <c_manoha@qualcomm.com>
-Date: Sat, 22 Sep 2012 00:14:28 +0530
-Subject: [PATCH 9/9] ath9k: Disable ASPM only for AR9285
-
-Currently, ASPM is disabled for all WLAN+BT combo chipsets
-when BTCOEX is enabled. This is incorrect since the workaround
-is required only for WB195, which is a AR9285+AR3011 combo
-solution. Fix this by checking for the HW version when enabling
-the workaround.
-
-Cc: stable@vger.kernel.org
-Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
-Tested-by: Paul Stewart <pstew@chromium.org>
-Signed-off-by: John W. Linville <linville@tuxdriver.com>
----
- drivers/net/wireless/ath/ath9k/pci.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/wireless/ath/ath9k/pci.c b/drivers/net/wireless/ath/ath9k/pci.c
-index a8f6126..c0c5996 100644
---- a/drivers/net/wireless/ath/ath9k/pci.c
-+++ b/drivers/net/wireless/ath/ath9k/pci.c
-@@ -128,8 +128,9 @@ static void ath_pci_aspm_init(struct ath_common *common)
- 	if (!parent)
- 		return;
- 
--	if (ath9k_hw_get_btcoex_scheme(ah) != ATH_BTCOEX_CFG_NONE) {
--		/* Bluetooth coexistance requires disabling ASPM. */
-+	if ((ath9k_hw_get_btcoex_scheme(ah) != ATH_BTCOEX_CFG_NONE) &&
-+	    (AR_SREV_9285(ah))) {
-+		/* Bluetooth coexistance requires disabling ASPM for AR9285. */
- 		pci_read_config_byte(pdev, pos + PCI_EXP_LNKCTL, &aspm);
- 		aspm &= ~(PCIE_LINK_STATE_L0S | PCIE_LINK_STATE_L1);
- 		pci_write_config_byte(pdev, pos + PCI_EXP_LNKCTL, aspm);
--- 
-1.7.12.1
-
-- 
1.7.11.4


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH 0/3] Patches for compat-drivers/linux-3.6.y
  2012-10-15 13:22 [PATCH 0/3] Patches for compat-drivers/linux-3.6.y Bala Shanmugam
                   ` (2 preceding siblings ...)
  2012-10-15 13:22 ` [PATCH 3/3] compat-drivers: Add new cherry-pick and next-pending patches Bala Shanmugam
@ 2012-10-15 21:28 ` Luis R. Rodriguez
  3 siblings, 0 replies; 6+ messages in thread
From: Luis R. Rodriguez @ 2012-10-15 21:28 UTC (permalink / raw)
  To: Bala Shanmugam
  Cc: linux-wireless, backports, Senthil Balasubramanian,
	Sujith Manoharan, Rajkumar Manoharan

On Mon, Oct 15, 2012 at 6:22 AM, Bala Shanmugam
<bkamatch@qca.qualcomm.com> wrote:
> Hi,
>
> These patches are for linux-3.6.y branch and has BT coex
> fixes for AR9565.
>
> Bala Shanmugam (3):
>   compat-drivers: Update pending stable patches.
>   compat-drivers: Move next-pending patches to cherry-picks.
>   compat-drivers: Add new cherry-pick and next-pending  patches

Thanks, I've applied this, made a few changes to adapt to v3.6.2 and
have made 5 tarballs for this release:

http://wireless.kernel.org/en/users/Download/stable#compat-wireless_3.6_stable_releases

http://www.orbit-lab.org/kernel/compat-wireless-3-stable/v3.6/compat-wireless-3.6.2-1-snpc.tar.bz2
http://www.orbit-lab.org/kernel/compat-wireless-3-stable/v3.6/compat-wireless-3.6.2-1-snp.tar.bz2
http://www.orbit-lab.org/kernel/compat-wireless-3-stable/v3.6/compat-wireless-3.6.2-1-sn.tar.bz2
http://www.orbit-lab.org/kernel/compat-wireless-3-stable/v3.6/compat-wireless-3.6.2-1-s.tar.bz2
http://www.orbit-lab.org/kernel/compat-wireless-3-stable/v3.6/compat-wireless-3.6.2-1.tar.bz2

  Luis

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2012-10-15 21:28 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-10-15 13:22 [PATCH 0/3] Patches for compat-drivers/linux-3.6.y Bala Shanmugam
2012-10-15 13:22 ` [PATCH 1/3] compat-drivers: Update pending stable patches Bala Shanmugam
2012-10-15 13:22 ` [PATCH 2/3] compat-drivers: Move next-pending patches to cherry-picks Bala Shanmugam
2012-10-15 13:22 ` [PATCH 3/3] compat-drivers: Add new cherry-pick and next-pending patches Bala Shanmugam
2012-10-15 21:28 ` [PATCH 0/3] Patches for compat-drivers/linux-3.6.y Luis R. Rodriguez
  -- strict thread matches above, loose matches on Subject: below --
2012-10-15 13:23 Bala Shanmugam
2012-10-15 13:23 ` [PATCH 1/3] compat-drivers: Update pending stable patches Bala Shanmugam

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).