--- /dev/null
+From 52d6d4ef5e6d1517688e27c11c01ab303ec681dd Mon Sep 17 00:00:00 2001
+From: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
+Date: Thu, 20 Oct 2011 14:22:43 +0530
+Subject: ath9k_hw: Fix regression of register offset for AR9003 chips
+
+From: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
+
+commit 52d6d4ef5e6d1517688e27c11c01ab303ec681dd upstream.
+
+My recent commits (3782c69d, 324c74a) introduced regression
+for register offset selection that based on the macversion.
+Not using parentheses in proper manner for ternary operator
+leads to select wrong offset for the registers.
+
+This issue was observed with AR9462 chip that immediate disconnect
+after the association with the following message
+
+ieee80211 phy3: wlan0: Failed to send nullfunc to AP 00:23:69:12:ea:47
+after 500ms, disconnecting.
+
+Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/wireless/ath/ath9k/ar9003_phy.h | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+--- a/drivers/net/wireless/ath/ath9k/ar9003_phy.h
++++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.h
+@@ -570,12 +570,12 @@
+
+ #define AR_PHY_TXGAIN_TABLE (AR_SM_BASE + 0x300)
+
+-#define AR_PHY_TX_IQCAL_CONTROL_1 (AR_SM_BASE + AR_SREV_9485(ah) ? \
+- 0x3c8 : 0x448)
+-#define AR_PHY_TX_IQCAL_START (AR_SM_BASE + AR_SREV_9485(ah) ? \
+- 0x3c4 : 0x440)
+-#define AR_PHY_TX_IQCAL_STATUS_B0 (AR_SM_BASE + AR_SREV_9485(ah) ? \
+- 0x3f0 : 0x48c)
++#define AR_PHY_TX_IQCAL_CONTROL_1 (AR_SM_BASE + (AR_SREV_9485(ah) ? \
++ 0x3c8 : 0x448))
++#define AR_PHY_TX_IQCAL_START (AR_SM_BASE + (AR_SREV_9485(ah) ? \
++ 0x3c4 : 0x440))
++#define AR_PHY_TX_IQCAL_STATUS_B0 (AR_SM_BASE + (AR_SREV_9485(ah) ? \
++ 0x3f0 : 0x48c))
+ #define AR_PHY_TX_IQCAL_CORR_COEFF_B0(_i) (AR_SM_BASE + \
+ (AR_SREV_9485(ah) ? \
+ 0x3d0 : 0x450) + ((_i) << 2))
--- /dev/null
+From f5ff7cd1a84caa9545d952a37ac872ccb73825fb Mon Sep 17 00:00:00 2001
+From: Richard Cochran <richardcochran@gmail.com>
+Date: Fri, 21 Oct 2011 00:49:16 +0000
+Subject: dp83640: use proper function to free transmit time stamping packets
+
+From: Richard Cochran <richardcochran@gmail.com>
+
+commit f5ff7cd1a84caa9545d952a37ac872ccb73825fb upstream.
+
+The previous commit enforces a new rule for handling the cloned packets
+for transmit time stamping. These packets must not be freed using any other
+function than skb_complete_tx_timestamp. This commit fixes the one and only
+driver using this API.
+
+The driver first appeared in v3.0.
+
+Signed-off-by: Richard Cochran <richard.cochran@omicron.at>
+Acked-by: Eric Dumazet <eric.dumazet@gmail.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/phy/dp83640.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/net/phy/dp83640.c
++++ b/drivers/net/phy/dp83640.c
+@@ -1067,7 +1067,7 @@ static void dp83640_txtstamp(struct phy_
+ struct dp83640_private *dp83640 = phydev->priv;
+
+ if (!dp83640->hwts_tx_en) {
+- kfree_skb(skb);
++ skb_complete_tx_timestamp(skb, NULL);
+ return;
+ }
+ skb_queue_tail(&dp83640->tx_queue, skb);