xref: /wlan-dirver/qca-wifi-host-cmn/wmi/src/wmi_unified_p2p_api.c (revision 901120c066e139c7f8a2c8e4820561fdd83c67ef)
1 /*
2  * Copyright (c) 2013-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  * DOC: Implement API's specific to P2P component.
21  */
22 
23 #include <wmi_unified_priv.h>
24 #include <wmi_unified_p2p_api.h>
25 
26 QDF_STATUS wmi_unified_set_p2pgo_oppps_req(wmi_unified_t wmi_handle,
27 					   struct p2p_ps_params *oppps)
28 {
29 	if (wmi_handle->ops->send_set_p2pgo_oppps_req_cmd)
30 		return wmi_handle->ops->send_set_p2pgo_oppps_req_cmd(wmi_handle,
31 								     oppps);
32 
33 	return QDF_STATUS_E_FAILURE;
34 }
35 
36 QDF_STATUS wmi_unified_set_p2pgo_noa_req_cmd(wmi_unified_t wmi_handle,
37 					     struct p2p_ps_params *noa)
38 {
39 	if (wmi_handle->ops->send_set_p2pgo_noa_req_cmd)
40 		return wmi_handle->ops->send_set_p2pgo_noa_req_cmd(wmi_handle,
41 								   noa);
42 
43 	return QDF_STATUS_E_FAILURE;
44 }
45 
46 QDF_STATUS wmi_extract_p2p_noa_ev_param(wmi_unified_t wmi_handle,
47 					void *evt_buf,
48 					struct p2p_noa_info *param)
49 {
50 	if (!wmi_handle) {
51 		wmi_err("wmi handle is null");
52 		return QDF_STATUS_E_INVAL;
53 	}
54 
55 	if (wmi_handle->ops->extract_p2p_noa_ev_param)
56 		return wmi_handle->ops->extract_p2p_noa_ev_param(
57 				wmi_handle, evt_buf, param);
58 
59 	return QDF_STATUS_E_FAILURE;
60 }
61 
62 QDF_STATUS
63 wmi_extract_mac_addr_rx_filter_evt_param(wmi_unified_t wmi_handle,
64 					 void *evt_buf,
65 					 struct p2p_set_mac_filter_evt *param)
66 {
67 	if (!wmi_handle) {
68 		wmi_err("wmi handle is null");
69 		return QDF_STATUS_E_INVAL;
70 	}
71 
72 	if (wmi_handle->ops->extract_mac_addr_rx_filter_evt_param)
73 		return wmi_handle->ops->extract_mac_addr_rx_filter_evt_param(
74 				wmi_handle, evt_buf, param);
75 
76 	return QDF_STATUS_E_FAILURE;
77 }
78 
79 #ifdef FEATURE_P2P_LISTEN_OFFLOAD
80 QDF_STATUS wmi_unified_p2p_lo_start_cmd(wmi_unified_t wmi_handle,
81 					struct p2p_lo_start *param)
82 {
83 	if (!wmi_handle) {
84 		wmi_err("wmi handle is null");
85 		return QDF_STATUS_E_INVAL;
86 	}
87 
88 	if (wmi_handle->ops->send_p2p_lo_start_cmd)
89 		return wmi_handle->ops->send_p2p_lo_start_cmd(wmi_handle,
90 							      param);
91 
92 	return QDF_STATUS_E_FAILURE;
93 }
94 
95 QDF_STATUS wmi_unified_p2p_lo_stop_cmd(wmi_unified_t wmi_handle,
96 				       uint8_t vdev_id)
97 {
98 	if (!wmi_handle) {
99 		wmi_err("wmi handle is null");
100 		return QDF_STATUS_E_INVAL;
101 	}
102 
103 	if (wmi_handle->ops->send_p2p_lo_stop_cmd)
104 		return wmi_handle->ops->send_p2p_lo_stop_cmd(wmi_handle,
105 							     vdev_id);
106 
107 	return QDF_STATUS_E_FAILURE;
108 }
109 
110 QDF_STATUS wmi_extract_p2p_lo_stop_ev_param(wmi_unified_t wmi_handle,
111 					    void *evt_buf,
112 					    struct p2p_lo_event *param)
113 {
114 	if (!wmi_handle) {
115 		wmi_err("wmi handle is null");
116 		return QDF_STATUS_E_INVAL;
117 	}
118 
119 	if (wmi_handle->ops->extract_p2p_lo_stop_ev_param)
120 		return wmi_handle->ops->extract_p2p_lo_stop_ev_param(
121 				wmi_handle, evt_buf, param);
122 
123 	return QDF_STATUS_E_FAILURE;
124 }
125 #endif /* End of FEATURE_P2P_LISTEN_OFFLOAD*/
126 
127