提交 0f60e9f4 编写于 作者: R Raja Mani 提交者: Kalle Valo

ath6kl: Include new parameter in suspend path for wowlan

cfg80211 layer provides user defined wow parameters like Filter options, Patterns,
Pattern's mask, etc via "struct cfg80211_wowlan *wow" to suspend function.

Right now, this wowlan parameter is not handled in __ath6kl_cfg80211_suspend func.
This parameter has to be passed to HIF layer, So that it can be passed back to
ath6kl's cfg interface layer when WOW mode is selected.

In case of deep sleep and cut power mode, it's not handled.
Signed-off-by: NRaja Mani <rmani@qca.qualcomm.com>
Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
上级 6cb3c714
...@@ -1754,7 +1754,8 @@ static int ath6kl_wow_resume(struct ath6kl *ar) ...@@ -1754,7 +1754,8 @@ static int ath6kl_wow_resume(struct ath6kl *ar)
} }
int ath6kl_cfg80211_suspend(struct ath6kl *ar, int ath6kl_cfg80211_suspend(struct ath6kl *ar,
enum ath6kl_cfg_suspend_mode mode) enum ath6kl_cfg_suspend_mode mode,
struct cfg80211_wowlan *wow)
{ {
int ret; int ret;
...@@ -1844,7 +1845,7 @@ static int __ath6kl_cfg80211_suspend(struct wiphy *wiphy, ...@@ -1844,7 +1845,7 @@ static int __ath6kl_cfg80211_suspend(struct wiphy *wiphy,
{ {
struct ath6kl *ar = wiphy_priv(wiphy); struct ath6kl *ar = wiphy_priv(wiphy);
return ath6kl_hif_suspend(ar); return ath6kl_hif_suspend(ar, wow);
} }
static int __ath6kl_cfg80211_resume(struct wiphy *wiphy) static int __ath6kl_cfg80211_resume(struct wiphy *wiphy)
......
...@@ -46,7 +46,9 @@ void ath6kl_cfg80211_tkip_micerr_event(struct ath6kl_vif *vif, u8 keyid, ...@@ -46,7 +46,9 @@ void ath6kl_cfg80211_tkip_micerr_event(struct ath6kl_vif *vif, u8 keyid,
bool ismcast); bool ismcast);
int ath6kl_cfg80211_suspend(struct ath6kl *ar, int ath6kl_cfg80211_suspend(struct ath6kl *ar,
enum ath6kl_cfg_suspend_mode mode); enum ath6kl_cfg_suspend_mode mode,
struct cfg80211_wowlan *wow);
int ath6kl_cfg80211_resume(struct ath6kl *ar); int ath6kl_cfg80211_resume(struct ath6kl *ar);
void ath6kl_cfg80211_stop(struct ath6kl *ar); void ath6kl_cfg80211_stop(struct ath6kl *ar);
......
...@@ -83,11 +83,12 @@ static inline void ath6kl_hif_cleanup_scatter(struct ath6kl *ar) ...@@ -83,11 +83,12 @@ static inline void ath6kl_hif_cleanup_scatter(struct ath6kl *ar)
return ar->hif_ops->cleanup_scatter(ar); return ar->hif_ops->cleanup_scatter(ar);
} }
static inline int ath6kl_hif_suspend(struct ath6kl *ar) static inline int ath6kl_hif_suspend(struct ath6kl *ar,
struct cfg80211_wowlan *wow)
{ {
ath6kl_dbg(ATH6KL_DBG_HIF, "hif suspend\n"); ath6kl_dbg(ATH6KL_DBG_HIF, "hif suspend\n");
return ar->hif_ops->suspend(ar); return ar->hif_ops->suspend(ar, wow);
} }
static inline int ath6kl_hif_resume(struct ath6kl *ar) static inline int ath6kl_hif_resume(struct ath6kl *ar)
......
...@@ -242,7 +242,7 @@ struct ath6kl_hif_ops { ...@@ -242,7 +242,7 @@ struct ath6kl_hif_ops {
int (*scat_req_rw) (struct ath6kl *ar, int (*scat_req_rw) (struct ath6kl *ar,
struct hif_scatter_req *scat_req); struct hif_scatter_req *scat_req);
void (*cleanup_scatter)(struct ath6kl *ar); void (*cleanup_scatter)(struct ath6kl *ar);
int (*suspend)(struct ath6kl *ar); int (*suspend)(struct ath6kl *ar, struct cfg80211_wowlan *wow);
int (*resume)(struct ath6kl *ar); int (*resume)(struct ath6kl *ar);
int (*power_on)(struct ath6kl *ar); int (*power_on)(struct ath6kl *ar);
int (*power_off)(struct ath6kl *ar); int (*power_off)(struct ath6kl *ar);
......
...@@ -773,7 +773,7 @@ static int ath6kl_sdio_config(struct ath6kl *ar) ...@@ -773,7 +773,7 @@ static int ath6kl_sdio_config(struct ath6kl *ar)
return ret; return ret;
} }
static int ath6kl_sdio_suspend(struct ath6kl *ar) static int ath6kl_sdio_suspend(struct ath6kl *ar, struct cfg80211_wowlan *wow)
{ {
struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar);
struct sdio_func *func = ar_sdio->func; struct sdio_func *func = ar_sdio->func;
...@@ -787,7 +787,8 @@ static int ath6kl_sdio_suspend(struct ath6kl *ar) ...@@ -787,7 +787,8 @@ static int ath6kl_sdio_suspend(struct ath6kl *ar)
if (!(flags & MMC_PM_KEEP_POWER) || if (!(flags & MMC_PM_KEEP_POWER) ||
(ar->conf_flags & ATH6KL_CONF_SUSPEND_CUTPOWER)) { (ar->conf_flags & ATH6KL_CONF_SUSPEND_CUTPOWER)) {
/* as host doesn't support keep power we need to cut power */ /* as host doesn't support keep power we need to cut power */
return ath6kl_cfg80211_suspend(ar, ATH6KL_CFG_SUSPEND_CUTPOWER); return ath6kl_cfg80211_suspend(ar, ATH6KL_CFG_SUSPEND_CUTPOWER,
NULL);
} }
ret = sdio_set_host_pm_flags(func, MMC_PM_KEEP_POWER); ret = sdio_set_host_pm_flags(func, MMC_PM_KEEP_POWER);
...@@ -797,7 +798,7 @@ static int ath6kl_sdio_suspend(struct ath6kl *ar) ...@@ -797,7 +798,7 @@ static int ath6kl_sdio_suspend(struct ath6kl *ar)
return ret; return ret;
} }
return ath6kl_cfg80211_suspend(ar, ATH6KL_CFG_SUSPEND_DEEPSLEEP); return ath6kl_cfg80211_suspend(ar, ATH6KL_CFG_SUSPEND_DEEPSLEEP, NULL);
} }
static int ath6kl_sdio_resume(struct ath6kl *ar) static int ath6kl_sdio_resume(struct ath6kl *ar)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册