diff options
author | Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com> | 2012-07-10 05:24:34 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-07-12 15:27:15 -0400 |
commit | 01c785338e57f913f750409ee434c64e4c6eaa8c (patch) | |
tree | 4c2e00c30de4f9112380a0ee8188be8d10e34dfb /drivers/net/wireless/ath | |
parent | 900902986c5f46f7f26d49d4084254f0b76da44e (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/net/wireless/ath')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/ath9k.h | 12 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath9k/hw.h | 34 |
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 79840d6deef2..f9c88dc0ef96 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 | ||
513 | struct 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 | ||
716 | void ath9k_tasklet(unsigned long data); | 728 | void ath9k_tasklet(unsigned long data); |
diff --git a/drivers/net/wireless/ath/ath9k/hw.h b/drivers/net/wireless/ath/ath9k/hw.h index 26da1732978d..912f340a4e74 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 | |||
183 | enum ath_hw_txq_subtype { | 214 | enum 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); |