aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorMohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>2012-07-10 05:24:34 -0400
committerJohn W. Linville <linville@tuxdriver.com>2012-07-12 15:27:15 -0400
commit01c785338e57f913f750409ee434c64e4c6eaa8c (patch)
tree4c2e00c30de4f9112380a0ee8188be8d10e34dfb /drivers
parent900902986c5f46f7f26d49d4084254f0b76da44e (diff)
ath9k: Add definitions and structures to support WoW
*add structures, macros and variables for WoW, so that the driver can make use of it. *maintain a list for user enabled patterns and masks *track pattern slots for the hardware limitation on the maximum number of patterns that can be stored. *track interrupts enabled before WoW suspend, so that can be reconfigured after resume *have macros to parse user defined wow configurations to hardware code Cc: Senthil Balasubramanian <senthilb@qca.qualcomm.com> Cc: Rajkumar Manoharan <rmanohar@qca.qualcomm.com> Cc: vadivel@qca.qualcomm.com Signed-off-by: Luis R. Rodriguez <mcgrof@qca.qualcomm.com> Signed-off-by: Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/ath/ath9k/ath9k.h12
-rw-r--r--drivers/net/wireless/ath/ath9k/hw.h34
2 files changed, 46 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath9k/ath9k.h b/drivers/net/wireless/ath/ath9k/ath9k.h
index 79840d6deef..f9c88dc0ef9 100644
--- a/drivers/net/wireless/ath/ath9k/ath9k.h
+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
@@ -510,6 +510,12 @@ static inline void ath9k_btcoex_stop_gen_timer(struct ath_softc *sc)
510} 510}
511#endif /* CONFIG_ATH9K_BTCOEX_SUPPORT */ 511#endif /* CONFIG_ATH9K_BTCOEX_SUPPORT */
512 512
513struct ath9k_wow_pattern {
514 u8 pattern_bytes[MAX_PATTERN_SIZE];
515 u8 mask_bytes[MAX_PATTERN_SIZE];
516 u32 pattern_len;
517};
518
513/********************/ 519/********************/
514/* LED Control */ 520/* LED Control */
515/********************/ 521/********************/
@@ -711,6 +717,12 @@ struct ath_softc {
711 struct ath_ant_comb ant_comb; 717 struct ath_ant_comb ant_comb;
712 u8 ant_tx, ant_rx; 718 u8 ant_tx, ant_rx;
713 struct dfs_pattern_detector *dfs_detector; 719 struct dfs_pattern_detector *dfs_detector;
720
721#ifdef CONFIG_PM_SLEEP
722 atomic_t wow_got_bmiss_intr;
723 atomic_t wow_sleep_proc_intr; /* in the middle of WoW sleep ? */
724 u32 wow_intr_before_sleep;
725#endif
714}; 726};
715 727
716void ath9k_tasklet(unsigned long data); 728void ath9k_tasklet(unsigned long data);
diff --git a/drivers/net/wireless/ath/ath9k/hw.h b/drivers/net/wireless/ath/ath9k/hw.h
index 26da1732978..912f340a4e7 100644
--- a/drivers/net/wireless/ath/ath9k/hw.h
+++ b/drivers/net/wireless/ath/ath9k/hw.h
@@ -180,6 +180,37 @@
180#define PAPRD_TABLE_SZ 24 180#define PAPRD_TABLE_SZ 24
181#define PAPRD_IDEAL_AGC2_PWR_RANGE 0xe0 181#define PAPRD_IDEAL_AGC2_PWR_RANGE 0xe0
182 182
183/*
184 * Wake on Wireless
185 */
186
187/* Keep Alive Frame */
188#define KAL_FRAME_LEN 28
189#define KAL_FRAME_TYPE 0x2 /* data frame */
190#define KAL_FRAME_SUB_TYPE 0x4 /* null data frame */
191#define KAL_DURATION_ID 0x3d
192#define KAL_NUM_DATA_WORDS 6
193#define KAL_NUM_DESC_WORDS 12
194#define KAL_ANTENNA_MODE 1
195#define KAL_TO_DS 1
196#define KAL_DELAY 4 /*delay of 4ms between 2 KAL frames */
197#define KAL_TIMEOUT 900
198
199#define MAX_PATTERN_SIZE 256
200#define MAX_PATTERN_MASK_SIZE 32
201#define MAX_NUM_PATTERN 8
202#define MAX_NUM_USER_PATTERN 6 /* deducting the disassociate and
203 deauthenticate packets */
204
205/*
206 * WoW trigger mapping to hardware code
207 */
208
209#define AH_WOW_USER_PATTERN_EN BIT(0)
210#define AH_WOW_MAGIC_PATTERN_EN BIT(1)
211#define AH_WOW_LINK_CHANGE BIT(2)
212#define AH_WOW_BEACON_MISS BIT(3)
213
183enum ath_hw_txq_subtype { 214enum ath_hw_txq_subtype {
184 ATH_TXQ_AC_BE = 0, 215 ATH_TXQ_AC_BE = 0,
185 ATH_TXQ_AC_BK = 1, 216 ATH_TXQ_AC_BK = 1,
@@ -863,6 +894,9 @@ struct ath_hw {
863 /* Enterprise mode cap */ 894 /* Enterprise mode cap */
864 u32 ent_mode; 895 u32 ent_mode;
865 896
897#ifdef CONFIG_PM_SLEEP
898 u32 wow_event_mask;
899#endif
866 bool is_clk_25mhz; 900 bool is_clk_25mhz;
867 int (*get_mac_revision)(void); 901 int (*get_mac_revision)(void);
868 int (*external_reset)(void); 902 int (*external_reset)(void);