Return-path: Received: from wolverine02.qualcomm.com ([199.106.114.251]:21405 "EHLO wolverine02.qualcomm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752913Ab2FSRhA (ORCPT ); Tue, 19 Jun 2012 13:37:00 -0400 Cc: "John W. Linville" , , Rodriguez Luis , , Sujith Manoharan , , , , Senthil Balasubramanian , "Luis R. Rodriguez" Date: Tue, 19 Jun 2012 23:08:13 +0530 From: Rajkumar Manoharan To: Mohammed Shafi Shajakhan Subject: Re: [PATCH 02/10] ath9k: Add definitions and structures to support WoW Message-ID: <20120619173810.GA7191@vmraj-lnx.qca.qualcomm.com> (sfid-20120619_193711_263059_EDE9252C) References: <1340120850-9155-1-git-send-email-mohammed@qca.qualcomm.com> <1340120850-9155-3-git-send-email-mohammed@qca.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" In-Reply-To: <1340120850-9155-3-git-send-email-mohammed@qca.qualcomm.com> Sender: linux-wireless-owner@vger.kernel.org List-ID: On Tue, Jun 19, 2012 at 09:17:22PM +0530, Mohammed Shafi Shajakhan wrote: > From: Mohammed Shafi Shajakhan > > *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 > Cc: Rajkumar Manoharan > Cc: vadivel@qca.qualcomm.com > Tested-by: Mohammed Shafi Shajakhan > Signed-off-by: Luis R. Rodriguez > Signed-off-by: Mohammed Shafi Shajakhan > --- > drivers/net/wireless/ath/ath9k/ath9k.h | 20 ++++++++++++++++++++ > drivers/net/wireless/ath/ath9k/hw.h | 21 +++++++++++++++++++++ > 2 files changed, 41 insertions(+), 0 deletions(-) > > diff --git a/drivers/net/wireless/ath/ath9k/ath9k.h b/drivers/net/wireless/ath/ath9k/ath9k.h > index a8c0500..264c25b 100644 > --- a/drivers/net/wireless/ath/ath9k/ath9k.h > +++ b/drivers/net/wireless/ath/ath9k/ath9k.h > @@ -505,6 +505,19 @@ static inline u16 ath9k_btcoex_aggr_limit(struct ath_softc *sc, > } > #endif /* CONFIG_ATH9K_BTCOEX_SUPPORT */ > > +struct ath9k_wow_pattern { > + bool slot; > + u8 pattern_bytes[MAX_PATTERN_SIZE]; > + u8 mask_bytes[MAX_PATTERN_SIZE]; > + u32 pattern_len; > + struct list_head list; > +}; > + > +struct ath9k_wow_info { > + u32 num_of_patterns; > + struct list_head wow_patterns; > +}; > + > /********************/ > /* LED Control */ > /********************/ > @@ -706,6 +719,13 @@ struct ath_softc { > struct ath_ant_comb ant_comb; > u8 ant_tx, ant_rx; > struct dfs_pattern_detector *dfs_detector; > + > +#ifdef CONFIG_PM_SLEEP > + bool wow_got_bmiss_intr; > + bool wow_sleep_proc_intr; /* in the middle of WoW sleep ? */ > + u32 wow_intr_before_sleep; > + struct ath9k_wow_info wow_info; > +#endif > }; > > 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 03d5909..d0e14a3 100644 > --- a/drivers/net/wireless/ath/ath9k/hw.h > +++ b/drivers/net/wireless/ath/ath9k/hw.h > @@ -179,6 +179,24 @@ > #define PAPRD_TABLE_SZ 24 > #define PAPRD_IDEAL_AGC2_PWR_RANGE 0xe0 > > +/* Wake on Wireless */ > + > +#define MAX_PATTERN_SIZE 256 > +#define MAX_PATTERN_MASK_SIZE 32 > +#define MAX_NUM_PATTERN 8 > +#define MAX_NUM_USER_PATTERN 6 /* deducting the disassociate and > + deauthenticate packets */ > + > +/* > + * WoW trigger mapping to hardware code > + */ > + > +#define AH_WOW_USER_PATTERN_EN BIT(0) > +#define AH_WOW_MAGIC_PATTERN_EN BIT(1) > +#define AH_WOW_LINK_CHANGE BIT(2) > +#define AH_WOW_BEACON_MISS BIT(3) > +#define AH_WOW_MAX_EVENTS 4 Why do you need AH_WOW_MAX_EVENT? It looks like out of sync and also it is never be used. -Rajkumar