xref: /wlan-driver/qcacld-3.0/core/hdd/src/wlan_hdd_p2p_listen_offload.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1 /*
2  * Copyright (c) 2012-2020 The Linux Foundation. All rights reserved.
3  * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
4  *
5  * Permission to use, copy, modify, and/or distribute this software for
6  * any purpose with or without fee is hereby granted, provided that the
7  * above copyright notice and this permission notice appear in all
8  * copies.
9  *
10  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17  * PERFORMANCE OF THIS SOFTWARE.
18  */
19 
20 #ifndef __WLAN_HDD_P2P_LISTEN_OFFLOAD_H
21 #define __WLAN_HDD_P2P_LISTEN_OFFLOAD_H
22 
23 /**
24  * DOC: wlan_hdd_p2p_listen_offload_h
25  *
26  * WLAN Host Device Driver p2p listen offload API specification
27  */
28 
29 #ifdef FEATURE_P2P_LISTEN_OFFLOAD
30 /**
31  * wlan_hdd_cfg80211_p2p_lo_start() - start P2P Listen Offload
32  * @wiphy: Pointer to wireless phy
33  * @wdev: Pointer to wireless device
34  * @data: Pointer to data
35  * @data_len: Data length
36  *
37  * This function is to process the p2p listen offload start vendor
38  * command. It parses the input parameters and invoke WMA API to
39  * send the command to firmware.
40  *
41  * Return: 0 on success, negative errno on failure
42  */
43 int wlan_hdd_cfg80211_p2p_lo_start(struct wiphy *wiphy,
44 				   struct wireless_dev *wdev,
45 				   const void *data,
46 				   int data_len);
47 
48 /**
49  * wlan_hdd_cfg80211_p2p_lo_stop() - stop P2P Listen Offload
50  * @wiphy: Pointer to wireless phy
51  * @wdev: Pointer to wireless device
52  * @data: Pointer to data
53  * @data_len: Data length
54  *
55  * This function inovkes internal __wlan_hdd_cfg80211_p2p_lo_stop()
56  * to process p2p listen offload stop vendor command.
57  *
58  * Return: 0 on success, negative errno on failure
59  */
60 int wlan_hdd_cfg80211_p2p_lo_stop(struct wiphy *wiphy,
61 				  struct wireless_dev *wdev,
62 				  const void *data,
63 				  int data_len);
64 
65 extern const struct nla_policy
66 p2p_listen_offload_policy[QCA_WLAN_VENDOR_ATTR_P2P_LISTEN_OFFLOAD_MAX + 1];
67 
68 #define FEATURE_P2P_LISTEN_OFFLOAD_VENDOR_COMMANDS			\
69 {									\
70 	.info.vendor_id = QCA_NL80211_VENDOR_ID,			\
71 	.info.subcmd =							\
72 		QCA_NL80211_VENDOR_SUBCMD_P2P_LISTEN_OFFLOAD_START,	\
73 	.flags = WIPHY_VENDOR_CMD_NEED_WDEV |				\
74 			WIPHY_VENDOR_CMD_NEED_NETDEV |			\
75 			WIPHY_VENDOR_CMD_NEED_RUNNING,			\
76 	.doit = wlan_hdd_cfg80211_p2p_lo_start,				\
77 	vendor_command_policy(p2p_listen_offload_policy,		\
78 			      QCA_WLAN_VENDOR_ATTR_P2P_LISTEN_OFFLOAD_MAX)\
79 },									\
80 {									\
81 	.info.vendor_id = QCA_NL80211_VENDOR_ID,			\
82 	.info.subcmd =							\
83 		QCA_NL80211_VENDOR_SUBCMD_P2P_LISTEN_OFFLOAD_STOP,	\
84 	.flags = WIPHY_VENDOR_CMD_NEED_WDEV |				\
85 			WIPHY_VENDOR_CMD_NEED_NETDEV |			\
86 			WIPHY_VENDOR_CMD_NEED_RUNNING,			\
87 	.doit = wlan_hdd_cfg80211_p2p_lo_stop,				\
88 	vendor_command_policy(p2p_listen_offload_policy,		\
89 			      QCA_WLAN_VENDOR_ATTR_P2P_LISTEN_OFFLOAD_MAX)\
90 },
91 #else /* FEATURE_P2P_LISTEN_OFFLOAD */
92 #define FEATURE_P2P_LISTEN_OFFLOAD_VENDOR_COMMANDS
93 #endif /* FEATURE_P2P_LISTEN_OFFLOAD */
94 
95 #endif /* __WLAN_HDD_P2P_LISTEN_OFFLOAD_H */
96 
97