#include <linux/delay.h>
#include <linux/inetdevice.h>
#include <net/addrconf.h>
#include <net/if_inet6.h>
#include <net/ipv6.h>
#include "mac.h"
#include <net/mac80211.h>
#include "core.h"
#include "hif.h"
#include "debug.h"
#include "wmi.h"
#include "wow.h"
static const struct wiphy_wowlan_support ath12k_wowlan_support = …;
static inline bool ath12k_wow_is_p2p_vdev(struct ath12k_vif *arvif)
{ … }
int ath12k_wow_enable(struct ath12k *ar)
{ … }
int ath12k_wow_wakeup(struct ath12k *ar)
{ … }
static int ath12k_wow_vif_cleanup(struct ath12k_vif *arvif)
{ … }
static int ath12k_wow_cleanup(struct ath12k *ar)
{ … }
static void
ath12k_wow_convert_8023_to_80211(struct ath12k *ar,
const struct cfg80211_pkt_pattern *eth_pattern,
struct ath12k_pkt_pattern *i80211_pattern)
{ … }
static int
ath12k_wow_pno_check_and_convert(struct ath12k *ar, u32 vdev_id,
const struct cfg80211_sched_scan_request *nd_config,
struct wmi_pno_scan_req_arg *pno)
{ … }
static int ath12k_wow_vif_set_wakeups(struct ath12k_vif *arvif,
struct cfg80211_wowlan *wowlan)
{ … }
static int ath12k_wow_set_wakeups(struct ath12k *ar,
struct cfg80211_wowlan *wowlan)
{ … }
static int ath12k_wow_vdev_clean_nlo(struct ath12k *ar, u32 vdev_id)
{ … }
static int ath12k_wow_vif_clean_nlo(struct ath12k_vif *arvif)
{ … }
static int ath12k_wow_nlo_cleanup(struct ath12k *ar)
{ … }
static int ath12k_wow_set_hw_filter(struct ath12k *ar)
{ … }
static int ath12k_wow_clear_hw_filter(struct ath12k *ar)
{ … }
static void ath12k_wow_generate_ns_mc_addr(struct ath12k_base *ab,
struct wmi_arp_ns_offload_arg *offload)
{ … }
static void ath12k_wow_prepare_ns_offload(struct ath12k_vif *arvif,
struct wmi_arp_ns_offload_arg *offload)
{ … }
static void ath12k_wow_prepare_arp_offload(struct ath12k_vif *arvif,
struct wmi_arp_ns_offload_arg *offload)
{ … }
static int ath12k_wow_arp_ns_offload(struct ath12k *ar, bool enable)
{ … }
static int ath12k_gtk_rekey_offload(struct ath12k *ar, bool enable)
{ … }
static int ath12k_wow_protocol_offload(struct ath12k *ar, bool enable)
{ … }
static int ath12k_wow_set_keepalive(struct ath12k *ar,
enum wmi_sta_keepalive_method method,
u32 interval)
{ … }
int ath12k_wow_op_suspend(struct ieee80211_hw *hw,
struct cfg80211_wowlan *wowlan)
{ … }
void ath12k_wow_op_set_wakeup(struct ieee80211_hw *hw, bool enabled)
{ … }
int ath12k_wow_op_resume(struct ieee80211_hw *hw)
{ … }
int ath12k_wow_init(struct ath12k *ar)
{ … }