xref: /wlan-dirver/qca-wifi-host-cmn/wmi/src/wmi_unified_p2p_api.c (revision 11f5a63a6cbdda84849a730de22f0a71e635d58c)
1 /*
2  * Copyright (c) 2013-2019 The Linux Foundation. All rights reserved.
3  *
4  * Permission to use, copy, modify, and/or distribute this software for
5  * any purpose with or without fee is hereby granted, provided that the
6  * above copyright notice and this permission notice appear in all
7  * copies.
8  *
9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
10  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
11  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
12  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
13  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
14  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
15  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16  * PERFORMANCE OF THIS SOFTWARE.
17  */
18 /**
19  * DOC: Implement API's specific to P2P component.
20  */
21 
22 #include <wmi_unified_priv.h>
23 #include <wmi_unified_p2p_api.h>
24 
25 QDF_STATUS wmi_unified_set_p2pgo_oppps_req(wmi_unified_t wmi_handle,
26 					   struct p2p_ps_params *oppps)
27 {
28 	if (wmi_handle->ops->send_set_p2pgo_oppps_req_cmd)
29 		return wmi_handle->ops->send_set_p2pgo_oppps_req_cmd(wmi_handle,
30 								     oppps);
31 
32 	return QDF_STATUS_E_FAILURE;
33 }
34 
35 QDF_STATUS wmi_unified_set_p2pgo_noa_req_cmd(wmi_unified_t wmi_handle,
36 					     struct p2p_ps_params *noa)
37 {
38 	if (wmi_handle->ops->send_set_p2pgo_noa_req_cmd)
39 		return wmi_handle->ops->send_set_p2pgo_noa_req_cmd(wmi_handle,
40 								   noa);
41 
42 	return QDF_STATUS_E_FAILURE;
43 }
44 
45 QDF_STATUS wmi_extract_p2p_noa_ev_param(wmi_unified_t wmi_handle,
46 					void *evt_buf,
47 					struct p2p_noa_info *param)
48 {
49 	if (!wmi_handle) {
50 		WMI_LOGE("wmi handle is null");
51 		return QDF_STATUS_E_INVAL;
52 	}
53 
54 	if (wmi_handle->ops->extract_p2p_noa_ev_param)
55 		return wmi_handle->ops->extract_p2p_noa_ev_param(
56 				wmi_handle, evt_buf, param);
57 
58 	return QDF_STATUS_E_FAILURE;
59 }
60 
61 QDF_STATUS
62 wmi_send_set_mac_addr_rx_filter_cmd(wmi_unified_t wmi_handle,
63 				    struct p2p_set_mac_filter *param)
64 {
65 	if (!wmi_handle) {
66 		WMI_LOGE("wmi handle is null");
67 		return QDF_STATUS_E_INVAL;
68 	}
69 
70 	if (wmi_handle->ops->set_mac_addr_rx_filter)
71 		return wmi_handle->ops->set_mac_addr_rx_filter(
72 				wmi_handle, param);
73 
74 	return QDF_STATUS_E_FAILURE;
75 }
76 
77 QDF_STATUS
78 wmi_extract_mac_addr_rx_filter_evt_param(wmi_unified_t wmi_handle,
79 					 void *evt_buf,
80 					 struct p2p_set_mac_filter_evt *param)
81 {
82 	if (!wmi_handle) {
83 		WMI_LOGE("wmi handle is null");
84 		return QDF_STATUS_E_INVAL;
85 	}
86 
87 	if (wmi_handle->ops->extract_mac_addr_rx_filter_evt_param)
88 		return wmi_handle->ops->extract_mac_addr_rx_filter_evt_param(
89 				wmi_handle, evt_buf, param);
90 
91 	return QDF_STATUS_E_FAILURE;
92 }
93 
94 #ifdef FEATURE_P2P_LISTEN_OFFLOAD
95 QDF_STATUS wmi_unified_p2p_lo_start_cmd(wmi_unified_t wmi_handle,
96 					struct p2p_lo_start *param)
97 {
98 	if (!wmi_handle) {
99 		WMI_LOGE("wmi handle is null");
100 		return QDF_STATUS_E_INVAL;
101 	}
102 
103 	if (wmi_handle->ops->send_p2p_lo_start_cmd)
104 		return wmi_handle->ops->send_p2p_lo_start_cmd(wmi_handle,
105 							      param);
106 
107 	return QDF_STATUS_E_FAILURE;
108 }
109 
110 QDF_STATUS wmi_unified_p2p_lo_stop_cmd(wmi_unified_t wmi_handle,
111 				       uint8_t vdev_id)
112 {
113 	if (!wmi_handle) {
114 		WMI_LOGE("wmi handle is null");
115 		return QDF_STATUS_E_INVAL;
116 	}
117 
118 	if (wmi_handle->ops->send_p2p_lo_stop_cmd)
119 		return wmi_handle->ops->send_p2p_lo_stop_cmd(wmi_handle,
120 							     vdev_id);
121 
122 	return QDF_STATUS_E_FAILURE;
123 }
124 
125 QDF_STATUS wmi_extract_p2p_lo_stop_ev_param(wmi_unified_t wmi_handle,
126 					    void *evt_buf,
127 					    struct p2p_lo_event *param)
128 {
129 	if (!wmi_handle) {
130 		WMI_LOGE("wmi handle is null");
131 		return QDF_STATUS_E_INVAL;
132 	}
133 
134 	if (wmi_handle->ops->extract_p2p_lo_stop_ev_param)
135 		return wmi_handle->ops->extract_p2p_lo_stop_ev_param(
136 				wmi_handle, evt_buf, param);
137 
138 	return QDF_STATUS_E_FAILURE;
139 }
140 #endif /* End of FEATURE_P2P_LISTEN_OFFLOAD*/
141 
142