linux/drivers/net/wireless/ath/ath12k/wow.c

// SPDX-License-Identifier: BSD-3-Clause-Clear
/*
 * Copyright (c) 2020 The Linux Foundation. All rights reserved.
 * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved.
 */

#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)
{}

/* Convert a 802.3 format to a 802.11 format.
 *         +------------+-----------+--------+----------------+
 * 802.3:  |dest mac(6B)|src mac(6B)|type(2B)|     body...    |
 *         +------------+-----------+--------+----------------+
 *                |__         |_______    |____________  |________
 *                   |                |                |          |
 *         +--+------------+----+-----------+---------------+-----------+
 * 802.11: |4B|dest mac(6B)| 6B |src mac(6B)|  8B  |type(2B)|  body...  |
 *         +--+------------+----+-----------+---------------+-----------+
 */
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)
{}