All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/7] ath9k patches
@ 2015-02-05  4:52 Sujith Manoharan
  2015-02-05  4:52 ` [PATCH 1/7] ath9k: Fix descriptors for keep-alive frame Sujith Manoharan
                   ` (6 more replies)
  0 siblings, 7 replies; 9+ messages in thread
From: Sujith Manoharan @ 2015-02-05  4:52 UTC (permalink / raw)
  To: linux-wireless

From: Sujith Manoharan <c_manoha@qca.qualcomm.com>

ath9k patches for -next.

Sujith Manoharan (7):
  ath9k: Fix descriptors for keep-alive frame
  ath9k: Set keep awake timer
  ath9k: Add new MCI states
  ath9k: Check MCI PowerSave state
  ath9k: Handle additional patterns on wakeup
  ath9k: Clear additional WoW events
  ath9k: Restart TSF2 timers on wakeup

 drivers/net/wireless/ath/ath9k/ar9003_mci.h | 37 ++++++++++++++++-
 drivers/net/wireless/ath/ath9k/ar9003_wow.c | 61 +++++++++++++++++++++++------
 drivers/net/wireless/ath/ath9k/reg_wow.h    | 10 ++++-
 3 files changed, 94 insertions(+), 14 deletions(-)

-- 
2.2.2


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

* [PATCH 1/7] ath9k: Fix descriptors for keep-alive frame
  2015-02-05  4:52 [PATCH 0/7] ath9k patches Sujith Manoharan
@ 2015-02-05  4:52 ` Sujith Manoharan
  2015-02-26 13:00   ` [1/7] " Kalle Valo
  2015-02-05  4:52 ` [PATCH 2/7] ath9k: Set keep awake timer Sujith Manoharan
                   ` (5 subsequent siblings)
  6 siblings, 1 reply; 9+ messages in thread
From: Sujith Manoharan @ 2015-02-05  4:52 UTC (permalink / raw)
  To: linux-wireless

From: Sujith Manoharan <c_manoha@qca.qualcomm.com>

Along with AR9462, AR9565 also has an extra field
in the TX descriptor which needs to be zeroed out
for the keep alive frame. This makes the earlier
REG_WRITE redundant, so it can be removed.

Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
---
 drivers/net/wireless/ath/ath9k/ar9003_wow.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/ar9003_wow.c b/drivers/net/wireless/ath/ath9k/ar9003_wow.c
index 86bfc96..5e707c8 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_wow.c
+++ b/drivers/net/wireless/ath/ath9k/ar9003_wow.c
@@ -74,8 +74,6 @@ static void ath9k_wow_create_keep_alive_pattern(struct ath_hw *ah)
 	for (i = 0; i < KAL_NUM_DESC_WORDS; i++)
 		REG_WRITE(ah, (AR_WOW_KA_DESC_WORD2 + i * 4), ctl[i]);
 
-	REG_WRITE(ah, (AR_WOW_KA_DESC_WORD2 + i * 4), ctl[i]);
-
 	data_word[0] = (KAL_FRAME_TYPE << 2) | (KAL_FRAME_SUB_TYPE << 4) |
 		       (KAL_TO_DS << 8) | (KAL_DURATION_ID << 16);
 	data_word[1] = (ap_mac_addr[3] << 24) | (ap_mac_addr[2] << 16) |
@@ -88,9 +86,11 @@ static void ath9k_wow_create_keep_alive_pattern(struct ath_hw *ah)
 		       (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(ah)) {
-		/* AR9462 2.0 has an extra descriptor word (time based
-		 * discard) compared to other chips */
+	if (AR_SREV_9462_20_OR_LATER(ah) || AR_SREV_9565(ah)) {
+		/*
+		 * AR9462 2.0 and AR9565 have an extra descriptor word
+		 * (time based discard) compared to other chips.
+		 */
 		REG_WRITE(ah, (AR_WOW_KA_DESC_WORD2 + (12 * 4)), 0);
 		wow_ka_data_word0 = AR_WOW_TXBUF(13);
 	} else {
@@ -99,7 +99,6 @@ static void ath9k_wow_create_keep_alive_pattern(struct ath_hw *ah)
 
 	for (i = 0; i < KAL_NUM_DATA_WORDS; i++)
 		REG_WRITE(ah, (wow_ka_data_word0 + i*4), data_word[i]);
-
 }
 
 int ath9k_hw_wow_apply_pattern(struct ath_hw *ah, u8 *user_pattern,
-- 
2.2.2


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

* [PATCH 2/7] ath9k: Set keep awake timer
  2015-02-05  4:52 [PATCH 0/7] ath9k patches Sujith Manoharan
  2015-02-05  4:52 ` [PATCH 1/7] ath9k: Fix descriptors for keep-alive frame Sujith Manoharan
@ 2015-02-05  4:52 ` Sujith Manoharan
  2015-02-05  4:52 ` [PATCH 3/7] ath9k: Add new MCI states Sujith Manoharan
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 9+ messages in thread
From: Sujith Manoharan @ 2015-02-05  4:52 UTC (permalink / raw)
  To: linux-wireless

From: Sujith Manoharan <c_manoha@qca.qualcomm.com>

When MCI is enabled and WoW sleep is enabled,
make sure that the RTC keep awake timer is set
with the required value. This is also required
when the AR_WA is programmed.

Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
---
 drivers/net/wireless/ath/ath9k/ar9003_wow.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/net/wireless/ath/ath9k/ar9003_wow.c b/drivers/net/wireless/ath/ath9k/ar9003_wow.c
index 5e707c8..721caf3 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_wow.c
+++ b/drivers/net/wireless/ath/ath9k/ar9003_wow.c
@@ -44,6 +44,9 @@ static void ath9k_hw_set_powermode_wow_sleep(struct ath_hw *ah)
 			REG_CLR_BIT(ah, AR_DIRECT_CONNECT, AR_DC_TSF2_ENABLE);
 	}
 
+	if (ath9k_hw_mci_is_enabled(ah))
+		REG_WRITE(ah, AR_RTC_KEEP_AWAKE, 0x2);
+
 	REG_WRITE(ah, AR_RTC_FORCE_WAKE, AR_RTC_FORCE_WAKE_ON_INT);
 }
 
@@ -407,6 +410,9 @@ void ath9k_hw_wow_enable(struct ath_hw *ah, u32 pattern_enable)
 
 	ath9k_hw_wow_set_arwr_reg(ah);
 
+	if (ath9k_hw_mci_is_enabled(ah))
+		REG_WRITE(ah, AR_RTC_KEEP_AWAKE, 0x2);
+
 	/* HW WoW */
 	REG_CLR_BIT(ah, AR_PCU_MISC_MODE3, BIT(5));
 
-- 
2.2.2


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

* [PATCH 3/7] ath9k: Add new MCI states
  2015-02-05  4:52 [PATCH 0/7] ath9k patches Sujith Manoharan
  2015-02-05  4:52 ` [PATCH 1/7] ath9k: Fix descriptors for keep-alive frame Sujith Manoharan
  2015-02-05  4:52 ` [PATCH 2/7] ath9k: Set keep awake timer Sujith Manoharan
@ 2015-02-05  4:52 ` Sujith Manoharan
  2015-02-05  4:52 ` [PATCH 4/7] ath9k: Check MCI PowerSave state Sujith Manoharan
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 9+ messages in thread
From: Sujith Manoharan @ 2015-02-05  4:52 UTC (permalink / raw)
  To: linux-wireless

From: Sujith Manoharan <c_manoha@qca.qualcomm.com>

Several new MCI states have to handled,
add them to the list.

Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
---
 drivers/net/wireless/ath/ath9k/ar9003_mci.h | 30 ++++++++++++++++++++++++++++-
 1 file changed, 29 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/ath/ath9k/ar9003_mci.h b/drivers/net/wireless/ath/ath9k/ar9003_mci.h
index 66d7ab9..19800af 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_mci.h
+++ b/drivers/net/wireless/ath/ath9k/ar9003_mci.h
@@ -191,17 +191,45 @@ enum mci_bt_state {
 /* Type of state query */
 enum mci_state_type {
 	MCI_STATE_ENABLE,
+	MCI_STATE_INIT_GPM_OFFSET,
+	MCI_STATE_CHECK_GPM_OFFSET,
+	MCI_STATE_NEXT_GPM_OFFSET,
+	MCI_STATE_LAST_GPM_OFFSET,
+	MCI_STATE_BT,
+	MCI_STATE_SET_BT_SLEEP,
 	MCI_STATE_SET_BT_AWAKE,
+	MCI_STATE_SET_BT_CAL_START,
+	MCI_STATE_SET_BT_CAL,
 	MCI_STATE_LAST_SCHD_MSG_OFFSET,
 	MCI_STATE_REMOTE_SLEEP,
+	MCI_STATE_CONT_STATUS,
 	MCI_STATE_RESET_REQ_WAKE,
 	MCI_STATE_SEND_WLAN_COEX_VERSION,
+	MCI_STATE_SET_BT_COEX_VERSION,
+	MCI_STATE_SEND_WLAN_CHANNELS,
 	MCI_STATE_SEND_VERSION_QUERY,
 	MCI_STATE_SEND_STATUS_QUERY,
+	MCI_STATE_NEED_FLUSH_BT_INFO,
+	MCI_STATE_SET_CONCUR_TX_PRI,
 	MCI_STATE_RECOVER_RX,
 	MCI_STATE_NEED_FTP_STOMP,
+	MCI_STATE_NEED_TUNING,
+	MCI_STATE_NEED_STAT_DEBUG,
+	MCI_STATE_SHARED_CHAIN_CONCUR_TX,
+	MCI_STATE_AIC_CAL,
+	MCI_STATE_AIC_START,
+	MCI_STATE_AIC_CAL_RESET,
+	MCI_STATE_AIC_CAL_SINGLE,
+	MCI_STATE_IS_AR9462,
+	MCI_STATE_IS_AR9565_1ANT,
+	MCI_STATE_IS_AR9565_2ANT,
+	MCI_STATE_WLAN_WEAK_SIGNAL,
+	MCI_STATE_SET_WLAN_PS_STATE,
+	MCI_STATE_GET_WLAN_PS_STATE,
 	MCI_STATE_DEBUG,
-	MCI_STATE_NEED_FLUSH_BT_INFO,
+	MCI_STATE_STAT_DEBUG,
+	MCI_STATE_ALLOW_FCS,
+	MCI_STATE_SET_2G_CONTENTION,
 	MCI_STATE_MAX
 };
 
-- 
2.2.2


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

* [PATCH 4/7] ath9k: Check MCI PowerSave state
  2015-02-05  4:52 [PATCH 0/7] ath9k patches Sujith Manoharan
                   ` (2 preceding siblings ...)
  2015-02-05  4:52 ` [PATCH 3/7] ath9k: Add new MCI states Sujith Manoharan
@ 2015-02-05  4:52 ` Sujith Manoharan
  2015-02-05  4:52 ` [PATCH 5/7] ath9k: Handle additional patterns on wakeup Sujith Manoharan
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 9+ messages in thread
From: Sujith Manoharan @ 2015-02-05  4:52 UTC (permalink / raw)
  To: linux-wireless

From: Sujith Manoharan <c_manoha@qca.qualcomm.com>

The power save state of MCI has to be disabled
when enabling WoW sleep, check this properly.
ar9003_mci_state() doesn't handle MCI_STATE_GET_WLAN_PS_STATE
right now, but this will be done later when proper
support for MCI/PS is added.

Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
---
 drivers/net/wireless/ath/ath9k/ar9003_mci.h |  7 +++++++
 drivers/net/wireless/ath/ath9k/ar9003_wow.c | 16 +++++++++++++++-
 2 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/ath/ath9k/ar9003_mci.h b/drivers/net/wireless/ath/ath9k/ar9003_mci.h
index 19800af..cef2010 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_mci.h
+++ b/drivers/net/wireless/ath/ath9k/ar9003_mci.h
@@ -188,6 +188,13 @@ enum mci_bt_state {
 	MCI_BT_CAL
 };
 
+enum mci_ps_state {
+	MCI_PS_DISABLE,
+	MCI_PS_ENABLE,
+	MCI_PS_ENABLE_OFF,
+	MCI_PS_ENABLE_ON
+};
+
 /* Type of state query */
 enum mci_state_type {
 	MCI_STATE_ENABLE,
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_wow.c b/drivers/net/wireless/ath/ath9k/ar9003_wow.c
index 721caf3..bf3378f0 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_wow.c
+++ b/drivers/net/wireless/ath/ath9k/ar9003_wow.c
@@ -20,11 +20,25 @@
 #include "reg_wow.h"
 #include "hw-ops.h"
 
+static void ath9k_hw_set_sta_powersave(struct ath_hw *ah)
+{
+	if (!ath9k_hw_mci_is_enabled(ah))
+		goto set;
+	/*
+	 * If MCI is being used, set PWR_SAV only when MCI's
+	 * PS state is disabled.
+	 */
+	if (ar9003_mci_state(ah, MCI_STATE_GET_WLAN_PS_STATE) != MCI_PS_DISABLE)
+		return;
+set:
+	REG_SET_BIT(ah, AR_STA_ID1, AR_STA_ID1_PWR_SAV);
+}
+
 static void ath9k_hw_set_powermode_wow_sleep(struct ath_hw *ah)
 {
 	struct ath_common *common = ath9k_hw_common(ah);
 
-	REG_SET_BIT(ah, AR_STA_ID1, AR_STA_ID1_PWR_SAV);
+	ath9k_hw_set_sta_powersave(ah);
 
 	/* set rx disable bit */
 	REG_WRITE(ah, AR_CR, AR_CR_RXD);
-- 
2.2.2


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

* [PATCH 5/7] ath9k: Handle additional patterns on wakeup
  2015-02-05  4:52 [PATCH 0/7] ath9k patches Sujith Manoharan
                   ` (3 preceding siblings ...)
  2015-02-05  4:52 ` [PATCH 4/7] ath9k: Check MCI PowerSave state Sujith Manoharan
@ 2015-02-05  4:52 ` Sujith Manoharan
  2015-02-05  4:52 ` [PATCH 6/7] ath9k: Clear additional WoW events Sujith Manoharan
  2015-02-05  4:52 ` [PATCH 7/7] ath9k: Restart TSF2 timers on wakeup Sujith Manoharan
  6 siblings, 0 replies; 9+ messages in thread
From: Sujith Manoharan @ 2015-02-05  4:52 UTC (permalink / raw)
  To: linux-wireless

From: Sujith Manoharan <c_manoha@qca.qualcomm.com>

Handle the user-configured patterns in the range 8..15
when waking up and update wow_status correctly.

Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
---
 drivers/net/wireless/ath/ath9k/ar9003_wow.c | 16 ++++++++++++----
 drivers/net/wireless/ath/ath9k/reg_wow.h    |  8 +++++++-
 2 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/ar9003_wow.c b/drivers/net/wireless/ath/ath9k/ar9003_wow.c
index bf3378f0..34763c4 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_wow.c
+++ b/drivers/net/wireless/ath/ath9k/ar9003_wow.c
@@ -186,18 +186,17 @@ u32 ath9k_hw_wow_wakeup(struct ath_hw *ah)
 	u32 val = 0, rval;
 
 	/*
-	 * read the WoW status register to know
-	 * the wakeup reason
+	 * Read the WoW status register to know
+	 * the wakeup reason.
 	 */
 	rval = REG_READ(ah, AR_WOW_PATTERN);
 	val = AR_WOW_STATUS(rval);
 
 	/*
-	 * mask only the WoW events that we have enabled. Sometimes
+	 * Mask only the WoW events that we have enabled. Sometimes
 	 * we have spurious WoW events from the AR_WOW_PATTERN
 	 * register. This mask will clean it up.
 	 */
-
 	val &= ah->wow.wow_event_mask;
 
 	if (val) {
@@ -211,6 +210,15 @@ u32 ath9k_hw_wow_wakeup(struct ath_hw *ah)
 			wow_status |= AH_WOW_BEACON_MISS;
 	}
 
+	rval = REG_READ(ah, AR_MAC_PCU_WOW4);
+	val = AR_WOW_STATUS2(rval);
+	val &= ah->wow.wow_event_mask2;
+
+	if (val) {
+		if (AR_WOW2_PATTERN_FOUND(val))
+			wow_status |= AH_WOW_USER_PATTERN_EN;
+	}
+
 	/*
 	 * set and clear WOW_PME_CLEAR registers for the chip to
 	 * generate next wow signal.
diff --git a/drivers/net/wireless/ath/ath9k/reg_wow.h b/drivers/net/wireless/ath/ath9k/reg_wow.h
index 3abfca5..42ed4ee 100644
--- a/drivers/net/wireless/ath/ath9k/reg_wow.h
+++ b/drivers/net/wireless/ath/ath9k/reg_wow.h
@@ -72,7 +72,7 @@
 #define AR_WOW_MAC_INTR_EN              0x00040000
 #define AR_WOW_MAGIC_EN                 0x00010000
 #define AR_WOW_PATTERN_EN(x)            (x & 0xff)
-#define AR_WOW_PAT_FOUND_SHIFT  8
+#define AR_WOW_PAT_FOUND_SHIFT          8
 #define AR_WOW_PATTERN_FOUND(x)         (x & (0xff << AR_WOW_PAT_FOUND_SHIFT))
 #define AR_WOW_PATTERN_FOUND_MASK       ((0xff) << AR_WOW_PAT_FOUND_SHIFT)
 #define AR_WOW_MAGIC_PAT_FOUND          0x00020000
@@ -90,6 +90,12 @@
                                                AR_WOW_BEACON_FAIL |	\
                                                AR_WOW_KEEP_ALIVE_FAIL))
 
+#define AR_WOW2_PATTERN_FOUND_SHIFT     8
+#define AR_WOW2_PATTERN_FOUND(x)        (x & (0xff << AR_WOW2_PATTERN_FOUND_SHIFT))
+#define AR_WOW2_PATTERN_FOUND_MASK      ((0xff) << AR_WOW2_PATTERN_FOUND_SHIFT)
+
+#define AR_WOW_STATUS2(x)               (x & AR_WOW2_PATTERN_FOUND_MASK)
+
 #define AR_WOW_AIFS_CNT(x)              (x & 0xff)
 #define AR_WOW_SLOT_CNT(x)              ((x & 0xff) << 8)
 #define AR_WOW_KEEP_ALIVE_CNT(x)        ((x & 0xff) << 16)
-- 
2.2.2


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

* [PATCH 6/7] ath9k: Clear additional WoW events
  2015-02-05  4:52 [PATCH 0/7] ath9k patches Sujith Manoharan
                   ` (4 preceding siblings ...)
  2015-02-05  4:52 ` [PATCH 5/7] ath9k: Handle additional patterns on wakeup Sujith Manoharan
@ 2015-02-05  4:52 ` Sujith Manoharan
  2015-02-05  4:52 ` [PATCH 7/7] ath9k: Restart TSF2 timers on wakeup Sujith Manoharan
  6 siblings, 0 replies; 9+ messages in thread
From: Sujith Manoharan @ 2015-02-05  4:52 UTC (permalink / raw)
  To: linux-wireless

From: Sujith Manoharan <c_manoha@qca.qualcomm.com>

The events for patterns 8..15 need to be
cleared on wakeup.

Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
---
 drivers/net/wireless/ath/ath9k/ar9003_wow.c | 5 ++++-
 drivers/net/wireless/ath/ath9k/reg_wow.h    | 2 ++
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/ath/ath9k/ar9003_wow.c b/drivers/net/wireless/ath/ath9k/ar9003_wow.c
index 34763c4..efeb9d7 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_wow.c
+++ b/drivers/net/wireless/ath/ath9k/ar9003_wow.c
@@ -230,10 +230,12 @@ u32 ath9k_hw_wow_wakeup(struct ath_hw *ah)
 		AR_PMCTRL_PWR_STATE_D1D3);
 
 	/*
-	 * clear all events
+	 * Clear all events.
 	 */
 	REG_WRITE(ah, AR_WOW_PATTERN,
 		  AR_WOW_CLEAR_EVENTS(REG_READ(ah, AR_WOW_PATTERN)));
+	REG_WRITE(ah, AR_MAC_PCU_WOW4,
+		  AR_WOW_CLEAR_EVENTS2(REG_READ(ah, AR_MAC_PCU_WOW4)));
 
 	/*
 	 * restore the beacon threshold to init value
@@ -251,6 +253,7 @@ u32 ath9k_hw_wow_wakeup(struct ath_hw *ah)
 		ath9k_hw_configpcipowersave(ah, false);
 
 	ah->wow.wow_event_mask = 0;
+	ah->wow.wow_event_mask2 = 0;
 
 	return wow_status;
 }
diff --git a/drivers/net/wireless/ath/ath9k/reg_wow.h b/drivers/net/wireless/ath/ath9k/reg_wow.h
index 42ed4ee..4530540 100644
--- a/drivers/net/wireless/ath/ath9k/reg_wow.h
+++ b/drivers/net/wireless/ath/ath9k/reg_wow.h
@@ -90,11 +90,13 @@
                                                AR_WOW_BEACON_FAIL |	\
                                                AR_WOW_KEEP_ALIVE_FAIL))
 
+#define AR_WOW2_PATTERN_EN(x)           ((x & 0xff) << 0)
 #define AR_WOW2_PATTERN_FOUND_SHIFT     8
 #define AR_WOW2_PATTERN_FOUND(x)        (x & (0xff << AR_WOW2_PATTERN_FOUND_SHIFT))
 #define AR_WOW2_PATTERN_FOUND_MASK      ((0xff) << AR_WOW2_PATTERN_FOUND_SHIFT)
 
 #define AR_WOW_STATUS2(x)               (x & AR_WOW2_PATTERN_FOUND_MASK)
+#define AR_WOW_CLEAR_EVENTS2(x)         (x & ~(AR_WOW2_PATTERN_EN(0xff)))
 
 #define AR_WOW_AIFS_CNT(x)              (x & 0xff)
 #define AR_WOW_SLOT_CNT(x)              ((x & 0xff) << 8)
-- 
2.2.2


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

* [PATCH 7/7] ath9k: Restart TSF2 timers on wakeup
  2015-02-05  4:52 [PATCH 0/7] ath9k patches Sujith Manoharan
                   ` (5 preceding siblings ...)
  2015-02-05  4:52 ` [PATCH 6/7] ath9k: Clear additional WoW events Sujith Manoharan
@ 2015-02-05  4:52 ` Sujith Manoharan
  6 siblings, 0 replies; 9+ messages in thread
From: Sujith Manoharan @ 2015-02-05  4:52 UTC (permalink / raw)
  To: linux-wireless

From: Sujith Manoharan <c_manoha@qca.qualcomm.com>

When coming out of WoW sleep, check and restart
timers based on TSF2.

Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
---
 drivers/net/wireless/ath/ath9k/ar9003_wow.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/net/wireless/ath/ath9k/ar9003_wow.c b/drivers/net/wireless/ath/ath9k/ar9003_wow.c
index efeb9d7..bea41df9 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_wow.c
+++ b/drivers/net/wireless/ath/ath9k/ar9003_wow.c
@@ -252,6 +252,13 @@ u32 ath9k_hw_wow_wakeup(struct ath_hw *ah)
 	if (ah->is_pciexpress)
 		ath9k_hw_configpcipowersave(ah, false);
 
+	if (AR_SREV_9462(ah) || AR_SREV_9565(ah) || AR_SREV_9485(ah)) {
+		u32 dc = REG_READ(ah, AR_DIRECT_CONNECT);
+
+		if (!(dc & AR_DC_TSF2_ENABLE))
+			ath9k_hw_gen_timer_start_tsf2(ah);
+	}
+
 	ah->wow.wow_event_mask = 0;
 	ah->wow.wow_event_mask2 = 0;
 
-- 
2.2.2


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

* Re: [1/7] ath9k: Fix descriptors for keep-alive frame
  2015-02-05  4:52 ` [PATCH 1/7] ath9k: Fix descriptors for keep-alive frame Sujith Manoharan
@ 2015-02-26 13:00   ` Kalle Valo
  0 siblings, 0 replies; 9+ messages in thread
From: Kalle Valo @ 2015-02-26 13:00 UTC (permalink / raw)
  To: Sujith Manoharan; +Cc: linux-wireless


> From: Sujith Manoharan <c_manoha@qca.qualcomm.com>
> 
> Along with AR9462, AR9565 also has an extra field
> in the TX descriptor which needs to be zeroed out
> for the keep alive frame. This makes the earlier
> REG_WRITE redundant, so it can be removed.
> 
> Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>

Thanks, 7 patches applied to wireless-drivers-next.git:

2a0eef1ac629 ath9k: Fix descriptors for keep-alive frame
0d35024cad0f ath9k: Set keep awake timer
ff6f0c036b32 ath9k: Add new MCI states
b39adc63bf0c ath9k: Check MCI PowerSave state
6aaefab6cfe8 ath9k: Handle additional patterns on wakeup
3277b20270ee ath9k: Clear additional WoW events
aa96af82b873 ath9k: Restart TSF2 timers on wakeup

Kalle Valo

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

end of thread, other threads:[~2015-02-26 13:00 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-02-05  4:52 [PATCH 0/7] ath9k patches Sujith Manoharan
2015-02-05  4:52 ` [PATCH 1/7] ath9k: Fix descriptors for keep-alive frame Sujith Manoharan
2015-02-26 13:00   ` [1/7] " Kalle Valo
2015-02-05  4:52 ` [PATCH 2/7] ath9k: Set keep awake timer Sujith Manoharan
2015-02-05  4:52 ` [PATCH 3/7] ath9k: Add new MCI states Sujith Manoharan
2015-02-05  4:52 ` [PATCH 4/7] ath9k: Check MCI PowerSave state Sujith Manoharan
2015-02-05  4:52 ` [PATCH 5/7] ath9k: Handle additional patterns on wakeup Sujith Manoharan
2015-02-05  4:52 ` [PATCH 6/7] ath9k: Clear additional WoW events Sujith Manoharan
2015-02-05  4:52 ` [PATCH 7/7] ath9k: Restart TSF2 timers on wakeup Sujith Manoharan

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.