cfg80211.c (d7c44e0ba5003c22a9ff3545fc2f51eaca8a95b1) cfg80211.c (a918fb3cc6a58f918f36348c43c3170bb88bc599)
1/*
2 * Copyright (c) 2004-2011 Atheros Communications Inc.
3 *
4 * Permission to use, copy, modify, and/or distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
7 *
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES

--- 1872 unchanged lines hidden (view full) ---

1881}
1882
1883static int __ath6kl_cfg80211_resume(struct wiphy *wiphy)
1884{
1885 struct ath6kl *ar = wiphy_priv(wiphy);
1886
1887 return ath6kl_hif_resume(ar);
1888}
1/*
2 * Copyright (c) 2004-2011 Atheros Communications Inc.
3 *
4 * Permission to use, copy, modify, and/or distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
7 *
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES

--- 1872 unchanged lines hidden (view full) ---

1881}
1882
1883static int __ath6kl_cfg80211_resume(struct wiphy *wiphy)
1884{
1885 struct ath6kl *ar = wiphy_priv(wiphy);
1886
1887 return ath6kl_hif_resume(ar);
1888}
1889
1890/*
1891 * FIXME: WOW suspend mode is selected if the host sdio controller supports
1892 * both sdio irq wake up and keep power. The target pulls sdio data line to
1893 * wake up the host when WOW pattern matches. This causes sdio irq handler
1894 * is being called in the host side which internally hits ath6kl's RX path.
1895 *
1896 * Since sdio interrupt is not disabled, RX path executes even before
1897 * the host executes the actual resume operation from PM module.
1898 *
1899 * In the current scenario, WOW resume should happen before start processing
1900 * any data from the target. So It's required to perform WOW resume in RX path.
1901 * Ideally we should perform WOW resume only in the actual platform
1902 * resume path. This area needs bit rework to avoid WOW resume in RX path.
1903 *
1904 * ath6kl_check_wow_status() is called from ath6kl_rx().
1905 */
1906void ath6kl_check_wow_status(struct ath6kl *ar)
1907{
1908 if (ar->state == ATH6KL_STATE_WOW)
1909 ath6kl_cfg80211_resume(ar);
1910}
1911
1912#else
1913
1914void ath6kl_check_wow_status(struct ath6kl *ar)
1915{
1916}
1889#endif
1890
1891static int ath6kl_set_channel(struct wiphy *wiphy, struct net_device *dev,
1892 struct ieee80211_channel *chan,
1893 enum nl80211_channel_type channel_type)
1894{
1895 struct ath6kl_vif *vif = netdev_priv(dev);
1896

--- 693 unchanged lines hidden ---
1917#endif
1918
1919static int ath6kl_set_channel(struct wiphy *wiphy, struct net_device *dev,
1920 struct ieee80211_channel *chan,
1921 enum nl80211_channel_type channel_type)
1922{
1923 struct ath6kl_vif *vif = netdev_priv(dev);
1924

--- 693 unchanged lines hidden ---