Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 278115
b: refs/heads/master
c: a918fb3
h: refs/heads/master
i:
  278113: f6226f7
  278111: 5513293
v: v3
  • Loading branch information
Raja Mani authored and Kalle Valo committed Nov 11, 2011
1 parent 4784d6f commit e14fc9c
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: d7c44e0ba5003c22a9ff3545fc2f51eaca8a95b1
refs/heads/master: a918fb3cc6a58f918f36348c43c3170bb88bc599
28 changes: 28 additions & 0 deletions trunk/drivers/net/wireless/ath/ath6kl/cfg80211.c
Original file line number Diff line number Diff line change
Expand Up @@ -1886,6 +1886,34 @@ static int __ath6kl_cfg80211_resume(struct wiphy *wiphy)

return ath6kl_hif_resume(ar);
}

/*
* FIXME: WOW suspend mode is selected if the host sdio controller supports
* both sdio irq wake up and keep power. The target pulls sdio data line to
* wake up the host when WOW pattern matches. This causes sdio irq handler
* is being called in the host side which internally hits ath6kl's RX path.
*
* Since sdio interrupt is not disabled, RX path executes even before
* the host executes the actual resume operation from PM module.
*
* In the current scenario, WOW resume should happen before start processing
* any data from the target. So It's required to perform WOW resume in RX path.
* Ideally we should perform WOW resume only in the actual platform
* resume path. This area needs bit rework to avoid WOW resume in RX path.
*
* ath6kl_check_wow_status() is called from ath6kl_rx().
*/
void ath6kl_check_wow_status(struct ath6kl *ar)
{
if (ar->state == ATH6KL_STATE_WOW)
ath6kl_cfg80211_resume(ar);
}

#else

void ath6kl_check_wow_status(struct ath6kl *ar)
{
}
#endif

static int ath6kl_set_channel(struct wiphy *wiphy, struct net_device *dev,
Expand Down
1 change: 1 addition & 0 deletions trunk/drivers/net/wireless/ath/ath6kl/core.h
Original file line number Diff line number Diff line change
Expand Up @@ -678,5 +678,6 @@ struct ath6kl_vif *ath6kl_vif_first(struct ath6kl *ar);
void ath6kl_cleanup_vif(struct ath6kl_vif *vif, bool wmi_ready);
int ath6kl_init_hw_start(struct ath6kl *ar);
int ath6kl_init_hw_stop(struct ath6kl *ar);
void ath6kl_check_wow_status(struct ath6kl *ar);

#endif /* CORE_H */
2 changes: 2 additions & 0 deletions trunk/drivers/net/wireless/ath/ath6kl/txrx.c
Original file line number Diff line number Diff line change
Expand Up @@ -1134,6 +1134,8 @@ void ath6kl_rx(struct htc_target *target, struct htc_packet *packet)
return;
}

ath6kl_check_wow_status(ar);

if (ept == ar->ctrl_ep) {
ath6kl_wmi_control_rx(ar->wmi, skb);
return;
Expand Down

0 comments on commit e14fc9c

Please sign in to comment.