diff options
author | Kalle Valo <kvalo@qca.qualcomm.com> | 2011-07-22 01:26:20 -0400 |
---|---|---|
committer | Kalle Valo <kvalo@qca.qualcomm.com> | 2011-08-31 03:10:54 -0400 |
commit | abcb344b3b823c8c9eac6e13e45a53eaf1d5d00b (patch) | |
tree | 7748263227daccbb7f3d4de01a9102218ddee1b7 /drivers/net/wireless/ath/ath6kl/cfg80211.c | |
parent | 1df94a8578eb099d9362cc0b84ef85015c47bbc5 (diff) |
ath6kl: implement suspend support
For now this is implemented so that if host supports power is kept in
the chip. If that's not supported, an error is returned and sdio stack
will remove the device during suspend.
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath6kl/cfg80211.c')
-rw-r--r-- | drivers/net/wireless/ath/ath6kl/cfg80211.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath6kl/cfg80211.c b/drivers/net/wireless/ath/ath6kl/cfg80211.c index b2b70e6618f5..9128aa3c2b63 100644 --- a/drivers/net/wireless/ath/ath6kl/cfg80211.c +++ b/drivers/net/wireless/ath/ath6kl/cfg80211.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include "core.h" | 17 | #include "core.h" |
18 | #include "cfg80211.h" | 18 | #include "cfg80211.h" |
19 | #include "debug.h" | 19 | #include "debug.h" |
20 | #include "hif-ops.h" | ||
20 | 21 | ||
21 | #define RATETAB_ENT(_rate, _rateid, _flags) { \ | 22 | #define RATETAB_ENT(_rate, _rateid, _flags) { \ |
22 | .bitrate = (_rate), \ | 23 | .bitrate = (_rate), \ |
@@ -1424,6 +1425,16 @@ static int ath6kl_flush_pmksa(struct wiphy *wiphy, struct net_device *netdev) | |||
1424 | return 0; | 1425 | return 0; |
1425 | } | 1426 | } |
1426 | 1427 | ||
1428 | #ifdef CONFIG_PM | ||
1429 | static int ar6k_cfg80211_suspend(struct wiphy *wiphy, | ||
1430 | struct cfg80211_wowlan *wow) | ||
1431 | { | ||
1432 | struct ath6kl *ar = wiphy_priv(wiphy); | ||
1433 | |||
1434 | return ath6kl_hif_suspend(ar); | ||
1435 | } | ||
1436 | #endif | ||
1437 | |||
1427 | static struct cfg80211_ops ath6kl_cfg80211_ops = { | 1438 | static struct cfg80211_ops ath6kl_cfg80211_ops = { |
1428 | .change_virtual_intf = ath6kl_cfg80211_change_iface, | 1439 | .change_virtual_intf = ath6kl_cfg80211_change_iface, |
1429 | .scan = ath6kl_cfg80211_scan, | 1440 | .scan = ath6kl_cfg80211_scan, |
@@ -1443,6 +1454,9 @@ static struct cfg80211_ops ath6kl_cfg80211_ops = { | |||
1443 | .set_pmksa = ath6kl_set_pmksa, | 1454 | .set_pmksa = ath6kl_set_pmksa, |
1444 | .del_pmksa = ath6kl_del_pmksa, | 1455 | .del_pmksa = ath6kl_del_pmksa, |
1445 | .flush_pmksa = ath6kl_flush_pmksa, | 1456 | .flush_pmksa = ath6kl_flush_pmksa, |
1457 | #ifdef CONFIG_PM | ||
1458 | .suspend = ar6k_cfg80211_suspend, | ||
1459 | #endif | ||
1446 | }; | 1460 | }; |
1447 | 1461 | ||
1448 | struct wireless_dev *ath6kl_cfg80211_init(struct device *dev) | 1462 | struct wireless_dev *ath6kl_cfg80211_init(struct device *dev) |