xref: /wlan-driver/qcacld-3.0/components/nan/dispatcher/inc/nan_ucfg_api.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2017-2021 The Linux Foundation. All rights reserved.
3*5113495bSYour Name  * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
4*5113495bSYour Name  *
5*5113495bSYour Name  * Permission to use, copy, modify, and/or distribute this software for
6*5113495bSYour Name  * any purpose with or without fee is hereby granted, provided that the
7*5113495bSYour Name  * above copyright notice and this permission notice appear in all
8*5113495bSYour Name  * copies.
9*5113495bSYour Name  *
10*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11*5113495bSYour Name  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12*5113495bSYour Name  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13*5113495bSYour Name  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14*5113495bSYour Name  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15*5113495bSYour Name  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16*5113495bSYour Name  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17*5113495bSYour Name  * PERFORMANCE OF THIS SOFTWARE.
18*5113495bSYour Name  */
19*5113495bSYour Name 
20*5113495bSYour Name /**
21*5113495bSYour Name  * DOC: contains interface prototypes for OS_IF layer
22*5113495bSYour Name  */
23*5113495bSYour Name 
24*5113495bSYour Name #ifndef _NAN_UCFG_API_H_
25*5113495bSYour Name #define _NAN_UCFG_API_H_
26*5113495bSYour Name 
27*5113495bSYour Name #include "wlan_objmgr_cmn.h"
28*5113495bSYour Name #include "nan_public_structs.h"
29*5113495bSYour Name 
30*5113495bSYour Name #define NAN_CONCURRENCY_SUPPORTED(psoc) \
31*5113495bSYour Name 	(ucfg_is_nan_dbs_supported(psoc) || \
32*5113495bSYour Name 	 ucfg_is_nan_conc_control_supported(psoc))
33*5113495bSYour Name 
34*5113495bSYour Name #define NDI_CONCURRENCY_SUPPORTED(psoc) \
35*5113495bSYour Name 	(ucfg_is_ndi_dbs_supported(psoc) || \
36*5113495bSYour Name 	 ucfg_is_nan_conc_control_supported(psoc))
37*5113495bSYour Name 
38*5113495bSYour Name #ifdef WLAN_FEATURE_NAN
39*5113495bSYour Name /**
40*5113495bSYour Name  * ucfg_nan_set_ndi_state: set ndi state
41*5113495bSYour Name  * @vdev: pointer to vdev object
42*5113495bSYour Name  * @state: value to set
43*5113495bSYour Name  *
44*5113495bSYour Name  * Return: status of operation
45*5113495bSYour Name  */
46*5113495bSYour Name #define ucfg_nan_set_ndi_state(vdev, state) \
47*5113495bSYour Name 	__ucfg_nan_set_ndi_state(vdev, state, __func__)
48*5113495bSYour Name 
49*5113495bSYour Name /**
50*5113495bSYour Name  * __ucfg_nan_set_ndi_state: set ndi state
51*5113495bSYour Name  * @vdev: pointer to vdev object
52*5113495bSYour Name  * @state: value to set
53*5113495bSYour Name  * @func: Caller of this API
54*5113495bSYour Name  *
55*5113495bSYour Name  * Return: status of operation
56*5113495bSYour Name  */
57*5113495bSYour Name QDF_STATUS __ucfg_nan_set_ndi_state(struct wlan_objmgr_vdev *vdev,
58*5113495bSYour Name 				    enum nan_datapath_state state,
59*5113495bSYour Name 				    const char *func);
60*5113495bSYour Name 
61*5113495bSYour Name /**
62*5113495bSYour Name  * ucfg_nan_psoc_open: Setup NAN priv object params on PSOC open
63*5113495bSYour Name  * @psoc: Pointer to PSOC object
64*5113495bSYour Name  *
65*5113495bSYour Name  * Return: QDF Status of operation
66*5113495bSYour Name  */
67*5113495bSYour Name QDF_STATUS ucfg_nan_psoc_open(struct wlan_objmgr_psoc *psoc);
68*5113495bSYour Name 
69*5113495bSYour Name /**
70*5113495bSYour Name  * ucfg_nan_psoc_close: Clean up NAN priv data on PSOC close
71*5113495bSYour Name  * @psoc: Pointer to PSOC object
72*5113495bSYour Name  *
73*5113495bSYour Name  * Return: None
74*5113495bSYour Name  */
75*5113495bSYour Name void ucfg_nan_psoc_close(struct wlan_objmgr_psoc *psoc);
76*5113495bSYour Name 
77*5113495bSYour Name /**
78*5113495bSYour Name  * ucfg_nan_get_ndi_state: get ndi state from vdev obj
79*5113495bSYour Name  * @vdev: pointer to vdev object
80*5113495bSYour Name  *
81*5113495bSYour Name  * Return: ndi state
82*5113495bSYour Name  */
83*5113495bSYour Name enum nan_datapath_state ucfg_nan_get_ndi_state(struct wlan_objmgr_vdev *vdev);
84*5113495bSYour Name 
85*5113495bSYour Name /**
86*5113495bSYour Name  * ucfg_nan_set_active_peers: set active ndi peer
87*5113495bSYour Name  * @vdev: pointer to vdev object
88*5113495bSYour Name  * @val: value to set
89*5113495bSYour Name  *
90*5113495bSYour Name  * Return: status of operation
91*5113495bSYour Name  */
92*5113495bSYour Name QDF_STATUS ucfg_nan_set_active_peers(struct wlan_objmgr_vdev *vdev,
93*5113495bSYour Name 				     uint32_t val);
94*5113495bSYour Name 
95*5113495bSYour Name /**
96*5113495bSYour Name  * ucfg_nan_get_active_peers: get active ndi peer from vdev obj
97*5113495bSYour Name  * @vdev: pointer to vdev object
98*5113495bSYour Name  *
99*5113495bSYour Name  * Return: active ndi peer
100*5113495bSYour Name  */
101*5113495bSYour Name uint32_t ucfg_nan_get_active_peers(struct wlan_objmgr_vdev *vdev);
102*5113495bSYour Name 
103*5113495bSYour Name /**
104*5113495bSYour Name  * ucfg_nan_set_peer_mc_list: API to derive peer multicast address and add it
105*5113495bSYour Name  *                            to the list
106*5113495bSYour Name  * @vdev: pointer to vdev object
107*5113495bSYour Name  * @peer_mac_addr: Peer MAC address
108*5113495bSYour Name  *
109*5113495bSYour Name  * Return: None
110*5113495bSYour Name  */
111*5113495bSYour Name void ucfg_nan_set_peer_mc_list(struct wlan_objmgr_vdev *vdev,
112*5113495bSYour Name 			       struct qdf_mac_addr peer_mac_addr);
113*5113495bSYour Name 
114*5113495bSYour Name /**
115*5113495bSYour Name  * ucfg_nan_get_peer_mc_list: API to get peer multicast address list
116*5113495bSYour Name  * @vdev: pointer to vdev object
117*5113495bSYour Name  * @peer_mc_addr_list: Out pointer to the peer multicast address list
118*5113495bSYour Name  *
119*5113495bSYour Name  * Return: None
120*5113495bSYour Name  */
121*5113495bSYour Name void ucfg_nan_get_peer_mc_list(struct wlan_objmgr_vdev *vdev,
122*5113495bSYour Name 			       struct qdf_mac_addr **peer_mc_addr_list);
123*5113495bSYour Name 
124*5113495bSYour Name /**
125*5113495bSYour Name  * ucfg_nan_clear_peer_mc_list: Clear peer multicast address list
126*5113495bSYour Name  * @psoc: pointer to psoc object
127*5113495bSYour Name  * @vdev: pointer to vdev object
128*5113495bSYour Name  * @peer_mac_addr: Pointer to peer MAC address
129*5113495bSYour Name  *
130*5113495bSYour Name  * Return: None
131*5113495bSYour Name  */
132*5113495bSYour Name void ucfg_nan_clear_peer_mc_list(struct wlan_objmgr_psoc *psoc,
133*5113495bSYour Name 				 struct wlan_objmgr_vdev *vdev,
134*5113495bSYour Name 				 struct qdf_mac_addr *peer_mac_addr);
135*5113495bSYour Name 
136*5113495bSYour Name /**
137*5113495bSYour Name  * ucfg_nan_set_ndp_create_transaction_id: set ndp create transaction id
138*5113495bSYour Name  * @vdev: pointer to vdev object
139*5113495bSYour Name  * @val: value to set
140*5113495bSYour Name  *
141*5113495bSYour Name  * Return: status of operation
142*5113495bSYour Name  */
143*5113495bSYour Name QDF_STATUS ucfg_nan_set_ndp_create_transaction_id(struct wlan_objmgr_vdev *vdev,
144*5113495bSYour Name 						  uint16_t val);
145*5113495bSYour Name 
146*5113495bSYour Name /**
147*5113495bSYour Name  * ucfg_nan_get_ndp_create_transaction_id: get ndp create transaction id
148*5113495bSYour Name  * vdev obj
149*5113495bSYour Name  * @vdev: pointer to vdev object
150*5113495bSYour Name  *
151*5113495bSYour Name  * Return: ndp create transaction_id
152*5113495bSYour Name  */
153*5113495bSYour Name uint16_t ucfg_nan_get_ndp_create_transaction_id(struct wlan_objmgr_vdev *vdev);
154*5113495bSYour Name 
155*5113495bSYour Name /**
156*5113495bSYour Name  * ucfg_nan_set_ndp_delete_transaction_id: set ndp delete transaction id
157*5113495bSYour Name  * @vdev: pointer to vdev object
158*5113495bSYour Name  * @val: value to set
159*5113495bSYour Name  *
160*5113495bSYour Name  * Return: status of operation
161*5113495bSYour Name  */
162*5113495bSYour Name QDF_STATUS ucfg_nan_set_ndp_delete_transaction_id(struct wlan_objmgr_vdev *vdev,
163*5113495bSYour Name 						  uint16_t val);
164*5113495bSYour Name 
165*5113495bSYour Name /**
166*5113495bSYour Name  * ucfg_nan_get_ndp_delete_transaction_id: get ndp delete transaction id from
167*5113495bSYour Name  * vdev obj
168*5113495bSYour Name  * @vdev: pointer to vdev object
169*5113495bSYour Name  *
170*5113495bSYour Name  * Return: ndp delete transaction_id
171*5113495bSYour Name  */
172*5113495bSYour Name uint16_t ucfg_nan_get_ndp_delete_transaction_id(struct wlan_objmgr_vdev *vdev);
173*5113495bSYour Name 
174*5113495bSYour Name /**
175*5113495bSYour Name  * ucfg_nan_set_ndi_delete_rsp_reason: set ndi delete response reason
176*5113495bSYour Name  * @vdev: pointer to vdev object
177*5113495bSYour Name  * @val: value to set
178*5113495bSYour Name  *
179*5113495bSYour Name  * Return: status of operation
180*5113495bSYour Name  */
181*5113495bSYour Name QDF_STATUS ucfg_nan_set_ndi_delete_rsp_reason(struct wlan_objmgr_vdev *vdev,
182*5113495bSYour Name 					      uint32_t val);
183*5113495bSYour Name 
184*5113495bSYour Name /**
185*5113495bSYour Name  * ucfg_nan_get_ndi_delete_rsp_reason: get ndi delete response reason from vdev
186*5113495bSYour Name  * obj
187*5113495bSYour Name  * @vdev: pointer to vdev object
188*5113495bSYour Name  *
189*5113495bSYour Name  * Return: ndi delete rsp reason
190*5113495bSYour Name  */
191*5113495bSYour Name uint32_t ucfg_nan_get_ndi_delete_rsp_reason(struct wlan_objmgr_vdev *vdev);
192*5113495bSYour Name 
193*5113495bSYour Name /**
194*5113495bSYour Name  * ucfg_nan_set_ndi_delete_rsp_status: set ndi delete response reason
195*5113495bSYour Name  * @vdev: pointer to vdev object
196*5113495bSYour Name  * @val: value to set
197*5113495bSYour Name  *
198*5113495bSYour Name  * Return: status of operation
199*5113495bSYour Name  */
200*5113495bSYour Name QDF_STATUS ucfg_nan_set_ndi_delete_rsp_status(struct wlan_objmgr_vdev *vdev,
201*5113495bSYour Name 					      uint32_t val);
202*5113495bSYour Name 
203*5113495bSYour Name /**
204*5113495bSYour Name  * ucfg_nan_get_ndi_delete_rsp_status: get ndi delete response status from vdev
205*5113495bSYour Name  * obj
206*5113495bSYour Name  * @vdev: pointer to vdev object
207*5113495bSYour Name  *
208*5113495bSYour Name  * Return: ndi delete rsp status
209*5113495bSYour Name  */
210*5113495bSYour Name uint32_t ucfg_nan_get_ndi_delete_rsp_status(struct wlan_objmgr_vdev *vdev);
211*5113495bSYour Name 
212*5113495bSYour Name /**
213*5113495bSYour Name  * ucfg_nan_get_callbacks: ucfg API to return callbacks
214*5113495bSYour Name  * @psoc: pointer to psoc object
215*5113495bSYour Name  * @cb_obj: callback struct to populate
216*5113495bSYour Name  *
217*5113495bSYour Name  * Return: callback struct on success, NULL otherwise
218*5113495bSYour Name  */
219*5113495bSYour Name QDF_STATUS ucfg_nan_get_callbacks(struct wlan_objmgr_psoc *psoc,
220*5113495bSYour Name 				  struct nan_callbacks *cb_obj);
221*5113495bSYour Name 
222*5113495bSYour Name /**
223*5113495bSYour Name  * ucfg_nan_req_processor: ucfg API to be called from HDD/OS_IF to
224*5113495bSYour Name  * process nan datapath initiator request from userspace
225*5113495bSYour Name  * @vdev: nan vdev pointer
226*5113495bSYour Name  * @in_req: NDP request
227*5113495bSYour Name  * @req_type: type of request
228*5113495bSYour Name  *
229*5113495bSYour Name  * Return: status of operation
230*5113495bSYour Name  */
231*5113495bSYour Name QDF_STATUS ucfg_nan_req_processor(struct wlan_objmgr_vdev *vdev,
232*5113495bSYour Name 				  void *in_req, uint32_t req_type);
233*5113495bSYour Name 
234*5113495bSYour Name /**
235*5113495bSYour Name  * ucfg_nan_datapath_event_handler: ucfg API to be called from legacy code to
236*5113495bSYour Name  * post events to os_if/hdd layer
237*5113495bSYour Name  * @psoc: pointer to psoc object
238*5113495bSYour Name  * @vdev: pointer to vdev object
239*5113495bSYour Name  * @type: message type
240*5113495bSYour Name  * @msg: msg buffer
241*5113495bSYour Name  *
242*5113495bSYour Name  * Return: None
243*5113495bSYour Name  */
244*5113495bSYour Name void ucfg_nan_datapath_event_handler(struct wlan_objmgr_psoc *psoc,
245*5113495bSYour Name 				     struct wlan_objmgr_vdev *vdev,
246*5113495bSYour Name 				     uint32_t type, void *msg);
247*5113495bSYour Name 
248*5113495bSYour Name /**
249*5113495bSYour Name  * ucfg_nan_register_hdd_callbacks: ucfg API to set hdd callbacks
250*5113495bSYour Name  * @psoc: pointer to psoc object
251*5113495bSYour Name  * @cb_obj: structs containing callbacks
252*5113495bSYour Name  *
253*5113495bSYour Name  * Return: status of operation
254*5113495bSYour Name  */
255*5113495bSYour Name int ucfg_nan_register_hdd_callbacks(struct wlan_objmgr_psoc *psoc,
256*5113495bSYour Name 				    struct nan_callbacks *cb_obj);
257*5113495bSYour Name 
258*5113495bSYour Name /**
259*5113495bSYour Name  * ucfg_nan_register_lim_callbacks: ucfg API to set lim callbacks
260*5113495bSYour Name  * @psoc: pointer to psoc object
261*5113495bSYour Name  * @cb_obj: structs containing callbacks
262*5113495bSYour Name  *
263*5113495bSYour Name  * Return: status of operation
264*5113495bSYour Name  */
265*5113495bSYour Name int ucfg_nan_register_lim_callbacks(struct wlan_objmgr_psoc *psoc,
266*5113495bSYour Name 				    struct nan_callbacks *cb_obj);
267*5113495bSYour Name 
268*5113495bSYour Name /**
269*5113495bSYour Name  * ucfg_nan_get_callbacks: ucfg API to return callbacks
270*5113495bSYour Name  * @psoc: pointer to psoc object
271*5113495bSYour Name  * @cb_obj: callback struct to populate
272*5113495bSYour Name  *
273*5113495bSYour Name  * Return: callback struct on success, NULL otherwise
274*5113495bSYour Name  */
275*5113495bSYour Name QDF_STATUS ucfg_nan_get_callbacks(struct wlan_objmgr_psoc *psoc,
276*5113495bSYour Name 				  struct nan_callbacks *cb_obj);
277*5113495bSYour Name 
278*5113495bSYour Name /**
279*5113495bSYour Name  * ucfg_nan_discovery_req: ucfg API for NAN Discovery related requests
280*5113495bSYour Name  * @in_req: NAN request
281*5113495bSYour Name  * @req_type: Request type
282*5113495bSYour Name  *
283*5113495bSYour Name  * Return: status of operation
284*5113495bSYour Name  */
285*5113495bSYour Name QDF_STATUS ucfg_nan_discovery_req(void *in_req, uint32_t req_type);
286*5113495bSYour Name 
287*5113495bSYour Name /**
288*5113495bSYour Name  * ucfg_is_nan_conc_control_supported() - is NAN concurrency controlled by host
289*5113495bSYour Name  * @psoc: pointer to psoc object
290*5113495bSYour Name  *
291*5113495bSYour Name  * This function returns NAN concurrency support status
292*5113495bSYour Name  *
293*5113495bSYour Name  * Return: True if NAN concurrency is controlled by host, False otherwise
294*5113495bSYour Name  */
295*5113495bSYour Name bool ucfg_is_nan_conc_control_supported(struct wlan_objmgr_psoc *psoc);
296*5113495bSYour Name 
297*5113495bSYour Name /**
298*5113495bSYour Name  * ucfg_is_nan_dbs_supported() - ucfg API to query NAN DBS support
299*5113495bSYour Name  * @psoc: pointer to psoc object
300*5113495bSYour Name  *
301*5113495bSYour Name  * This function returns NAN DBS support status
302*5113495bSYour Name  *
303*5113495bSYour Name  * Return: True if NAN DBS is supported, False otherwise
304*5113495bSYour Name  */
305*5113495bSYour Name bool ucfg_is_nan_dbs_supported(struct wlan_objmgr_psoc *psoc);
306*5113495bSYour Name 
307*5113495bSYour Name /**
308*5113495bSYour Name  * ucfg_is_ndi_dbs_supported() - ucfg API to query NAN Datapath DBS support
309*5113495bSYour Name  * @psoc: pointer to psoc object
310*5113495bSYour Name  *
311*5113495bSYour Name  * This function returns NDI DBS support status
312*5113495bSYour Name  *
313*5113495bSYour Name  * Return: True if NDI DBS is supported, False otherwise
314*5113495bSYour Name  */
315*5113495bSYour Name bool ucfg_is_ndi_dbs_supported(struct wlan_objmgr_psoc *psoc);
316*5113495bSYour Name 
317*5113495bSYour Name /**
318*5113495bSYour Name  * ucfg_is_nan_sap_supported() - ucfg API to query NAN SAP support
319*5113495bSYour Name  * @psoc: pointer to psoc object
320*5113495bSYour Name  *
321*5113495bSYour Name  * This function returns NAN SAP support status
322*5113495bSYour Name  *
323*5113495bSYour Name  * Return: True if NAN SAP is supported, False otherwise
324*5113495bSYour Name  */
325*5113495bSYour Name bool ucfg_is_nan_sap_supported(struct wlan_objmgr_psoc *psoc);
326*5113495bSYour Name 
327*5113495bSYour Name /**
328*5113495bSYour Name  * ucfg_is_nan_enable_allowed() - ucfg API to query if NAN Discovery is
329*5113495bSYour Name  * allowed
330*5113495bSYour Name  * @psoc: pointer to psoc object
331*5113495bSYour Name  * @nan_ch_freq: NAN Discovery primary social channel
332*5113495bSYour Name  * @vdev_id: Vdev Id
333*5113495bSYour Name  *
334*5113495bSYour Name  * Return: True if NAN Discovery enable is allowed, False otherwise
335*5113495bSYour Name  */
336*5113495bSYour Name bool ucfg_is_nan_enable_allowed(struct wlan_objmgr_psoc *psoc,
337*5113495bSYour Name 				uint32_t nan_ch_freq,
338*5113495bSYour Name 				uint8_t vdev_id);
339*5113495bSYour Name 
340*5113495bSYour Name /**
341*5113495bSYour Name  * ucfg_is_nan_disc_active() - ucfg API to query if NAN Discovery is
342*5113495bSYour Name  * active
343*5113495bSYour Name  * @psoc: pointer to psoc object
344*5113495bSYour Name  *
345*5113495bSYour Name  * Return: True if NAN Discovery is active, False otherwise
346*5113495bSYour Name  */
347*5113495bSYour Name bool ucfg_is_nan_disc_active(struct wlan_objmgr_psoc *psoc);
348*5113495bSYour Name 
349*5113495bSYour Name /**
350*5113495bSYour Name  * ucfg_nan_set_tgt_caps: ucfg API to set the NAN capabilities of the Target
351*5113495bSYour Name  * @psoc: pointer to psoc object
352*5113495bSYour Name  * @nan_caps: pointer to the structure of NAN capability bits
353*5113495bSYour Name  *
354*5113495bSYour Name  * Return: status of operation
355*5113495bSYour Name  */
356*5113495bSYour Name void ucfg_nan_set_tgt_caps(struct wlan_objmgr_psoc *psoc,
357*5113495bSYour Name 			   struct nan_tgt_caps *nan_caps);
358*5113495bSYour Name 
359*5113495bSYour Name /**
360*5113495bSYour Name  * ucfg_nan_disable_concurrency: ucfg API to explicitly disable NAN Discovery
361*5113495bSYour Name  * @psoc: pointer to psoc object
362*5113495bSYour Name  *
363*5113495bSYour Name  * Return: None
364*5113495bSYour Name  */
365*5113495bSYour Name void ucfg_nan_disable_concurrency(struct wlan_objmgr_psoc *psoc);
366*5113495bSYour Name 
367*5113495bSYour Name /**
368*5113495bSYour Name  * ucfg_nan_register_wma_callbacks: ucfg API to register WMA callbacks
369*5113495bSYour Name  * @psoc: pointer to psoc object
370*5113495bSYour Name  * @cb_obj: Pointer to NAN callback structure
371*5113495bSYour Name  *
372*5113495bSYour Name  * Return: status of operation
373*5113495bSYour Name  */
374*5113495bSYour Name int ucfg_nan_register_wma_callbacks(struct wlan_objmgr_psoc *psoc,
375*5113495bSYour Name 				    struct nan_callbacks *cb_obj);
376*5113495bSYour Name /**
377*5113495bSYour Name  * ucfg_nan_check_and_disable_unsupported_ndi: ucfg API to check if NAN Datapath
378*5113495bSYour Name  * is active on multiple NDI's and disable the unsupported concurrencies.
379*5113495bSYour Name  * @psoc: pointer to psoc object
380*5113495bSYour Name  * @force: When set forces NDI disable
381*5113495bSYour Name  *
382*5113495bSYour Name  * Return: QDF_STATUS
383*5113495bSYour Name  */
384*5113495bSYour Name QDF_STATUS
385*5113495bSYour Name ucfg_nan_check_and_disable_unsupported_ndi(struct wlan_objmgr_psoc *psoc,
386*5113495bSYour Name 					   bool force);
387*5113495bSYour Name 
388*5113495bSYour Name /**
389*5113495bSYour Name  * ucfg_ndi_remove_entry_from_policy_mgr() - API to remove NDI entry from
390*5113495bSYour Name  *	policy manager.
391*5113495bSYour Name  * @vdev: vdev pointer for NDI interface
392*5113495bSYour Name  *
393*5113495bSYour Name  * Return: QDF_STATUS
394*5113495bSYour Name  */
395*5113495bSYour Name QDF_STATUS ucfg_ndi_remove_entry_from_policy_mgr(struct wlan_objmgr_vdev *vdev);
396*5113495bSYour Name 
397*5113495bSYour Name /**
398*5113495bSYour Name  * ucfg_nan_is_enable_disable_in_progress() - Is NAN enable/disable in progress
399*5113495bSYour Name  * @psoc: Pointer to PSOC object
400*5113495bSYour Name  *
401*5113495bSYour Name  * Return: True if NAN discovery enable/disable is in progress, false otherwise
402*5113495bSYour Name  */
403*5113495bSYour Name bool ucfg_nan_is_enable_disable_in_progress(struct wlan_objmgr_psoc *psoc);
404*5113495bSYour Name 
405*5113495bSYour Name /**
406*5113495bSYour Name  * ucfg_nan_is_sta_ndp_concurrency_allowed() - Indicates if NDP is allowed
407*5113495bSYour Name  * @psoc: pointer to psoc object
408*5113495bSYour Name  * @vdev: pointer to vdev object
409*5113495bSYour Name  *
410*5113495bSYour Name  * If STA+NDI(NDPs) exist and another NDI tries to establish
411*5113495bSYour Name  * NDP, then reject the second NDI(NDP).
412*5113495bSYour Name  *
413*5113495bSYour Name  * Return: true if allowed, false otherwise
414*5113495bSYour Name  */
415*5113495bSYour Name bool ucfg_nan_is_sta_ndp_concurrency_allowed(struct wlan_objmgr_psoc *psoc,
416*5113495bSYour Name 					     struct wlan_objmgr_vdev *vdev);
417*5113495bSYour Name 
418*5113495bSYour Name /**
419*5113495bSYour Name  * ucfg_nan_set_vdev_creation_supp_by_fw()- Set the NAN separate vdev psoc param
420*5113495bSYour Name  * @psoc: pointer to psoc object
421*5113495bSYour Name  * @set: True if firmware supports NAN separate vdev feature
422*5113495bSYour Name  *
423*5113495bSYour Name  * Cache the value of set in NAN psoc object param.
424*5113495bSYour Name  *
425*5113495bSYour Name  * Return: None
426*5113495bSYour Name  */
427*5113495bSYour Name void
428*5113495bSYour Name ucfg_nan_set_vdev_creation_supp_by_fw(struct wlan_objmgr_psoc *psoc, bool set);
429*5113495bSYour Name 
430*5113495bSYour Name /**
431*5113495bSYour Name  * ucfg_nan_is_vdev_creation_allowed()- Get support for NAN vdev creation
432*5113495bSYour Name  * @psoc: pointer to psoc object
433*5113495bSYour Name  *
434*5113495bSYour Name  * Return: True if NAN vdev creation is allowed by host and firmware else false
435*5113495bSYour Name  */
436*5113495bSYour Name bool ucfg_nan_is_vdev_creation_allowed(struct wlan_objmgr_psoc *psoc);
437*5113495bSYour Name 
438*5113495bSYour Name /**
439*5113495bSYour Name  * ucfg_nan_is_sta_nan_ndi_4_port_allowed- Get support for 4 port (STA +
440*5113495bSYour Name  * NAN Disc + NDI + NDI)
441*5113495bSYour Name  * @psoc: pointer to psoc object
442*5113495bSYour Name  *
443*5113495bSYour Name  * Return: True if 4 port concurrency allowed or not.
444*5113495bSYour Name  */
445*5113495bSYour Name bool ucfg_nan_is_sta_nan_ndi_4_port_allowed(struct wlan_objmgr_psoc *psoc);
446*5113495bSYour Name 
447*5113495bSYour Name /**
448*5113495bSYour Name  * ucfg_nan_is_beamforming_supported- Get support for beamforing
449*5113495bSYour Name  * @psoc: pointer to psoc object
450*5113495bSYour Name  *
451*5113495bSYour Name  * Return: True if beamforming is supported, false if not.
452*5113495bSYour Name  */
453*5113495bSYour Name bool ucfg_nan_is_beamforming_supported(struct wlan_objmgr_psoc *psoc);
454*5113495bSYour Name 
455*5113495bSYour Name /**
456*5113495bSYour Name  * ucfg_disable_nan_discovery() - Disable NAN discovery
457*5113495bSYour Name  * @psoc: pointer to psoc object
458*5113495bSYour Name  * @data: Data to be sent to NAN discovery engine, which runs in firmware
459*5113495bSYour Name  * @data_len: Length of the data
460*5113495bSYour Name  *
461*5113495bSYour Name  * Send NAN disable request to firmware by setting the mandatory
462*5113495bSYour Name  * params(disable_2g_discovery, disable_5g_discovery) along
463*5113495bSYour Name  * with the data, if provided.
464*5113495bSYour Name  *
465*5113495bSYour Name  * Return: status of operation
466*5113495bSYour Name  */
467*5113495bSYour Name QDF_STATUS ucfg_disable_nan_discovery(struct wlan_objmgr_psoc *psoc,
468*5113495bSYour Name 				      uint8_t *data, uint32_t data_len);
469*5113495bSYour Name 
470*5113495bSYour Name /**
471*5113495bSYour Name  * ucfg_nan_disable_ndi() - Disable the NDI with given vdev_id
472*5113495bSYour Name  * @psoc: pointer to psoc object
473*5113495bSYour Name  * @ndi_vdev_id: vdev_id of the NDI to be disabled
474*5113495bSYour Name  *
475*5113495bSYour Name  * Disable all the NDPs present on the given NDI by sending NDP_END_ALL
476*5113495bSYour Name  * to firmware. Firmwere sends an immediate response(NDP_HOST_UPDATE) with
477*5113495bSYour Name  * ndp_disable param as 1 followed by NDP_END indication for all the NDPs.
478*5113495bSYour Name  *
479*5113495bSYour Name  * Return: status of operation
480*5113495bSYour Name  */
481*5113495bSYour Name QDF_STATUS
482*5113495bSYour Name ucfg_nan_disable_ndi(struct wlan_objmgr_psoc *psoc, uint32_t ndi_vdev_id);
483*5113495bSYour Name 
484*5113495bSYour Name /**
485*5113495bSYour Name  * ucfg_get_nan_feature_config() - Get NAN feature bitmap
486*5113495bSYour Name  * @psoc: pointer to psoc object
487*5113495bSYour Name  * @nan_feature_config: NAN feature config bitmap to be enabled in firmware
488*5113495bSYour Name  *
489*5113495bSYour Name  * Return: QDF_STATUS
490*5113495bSYour Name  */
491*5113495bSYour Name QDF_STATUS ucfg_get_nan_feature_config(struct wlan_objmgr_psoc *psoc,
492*5113495bSYour Name 				       uint32_t *nan_feature_config);
493*5113495bSYour Name 
494*5113495bSYour Name /**
495*5113495bSYour Name  * ucfg_is_nan_vdev() - Check if the current vdev supports NAN or not
496*5113495bSYour Name  * @vdev: pointer to vdev object
497*5113495bSYour Name  *
498*5113495bSYour Name  * Return true
499*5113495bSYour Name  * 1. If the VDEV type is NAN_DISC or
500*5113495bSYour Name  * 2. If the VDEV type is STA and nan_separate_iface feature is not supported
501*5113495bSYour Name  *
502*5113495bSYour Name  * Return: Bool
503*5113495bSYour Name  */
504*5113495bSYour Name bool ucfg_is_nan_vdev(struct wlan_objmgr_vdev *vdev);
505*5113495bSYour Name 
506*5113495bSYour Name /**
507*5113495bSYour Name  * ucfg_nan_disable_ind_to_userspace() - Send NAN disable ind to userspace
508*5113495bSYour Name  * @psoc: pointer to psoc object
509*5113495bSYour Name  *
510*5113495bSYour Name  * Prepare NAN disable indication and send it to userspace
511*5113495bSYour Name  *
512*5113495bSYour Name  * Return: QDF_STATUS
513*5113495bSYour Name  */
514*5113495bSYour Name QDF_STATUS ucfg_nan_disable_ind_to_userspace(struct wlan_objmgr_psoc *psoc);
515*5113495bSYour Name 
516*5113495bSYour Name /**
517*5113495bSYour Name  * ucfg_is_nan_allowed_on_freq() - Check if NAN is allowed on given freq
518*5113495bSYour Name  * @pdev: pdev context
519*5113495bSYour Name  * @freq: Frequency to be checked
520*5113495bSYour Name  *
521*5113495bSYour Name  * Check if NAN/NDP can be enabled on given frequency.
522*5113495bSYour Name  * Validate SRD channels based on the ini and reg domain. Assume rest of the
523*5113495bSYour Name  * channels support NAN/NDP for now.
524*5113495bSYour Name  *
525*5113495bSYour Name  * Return: True if NAN is allowed on the given frequency
526*5113495bSYour Name  */
527*5113495bSYour Name bool ucfg_is_nan_allowed_on_freq(struct wlan_objmgr_pdev *pdev, uint32_t freq);
528*5113495bSYour Name 
529*5113495bSYour Name /**
530*5113495bSYour Name  * ucfg_get_disable_6g_nan() - Get NAN feature configuration for 6GHz
531*5113495bSYour Name  * @psoc: pointer to psoc object
532*5113495bSYour Name  *
533*5113495bSYour Name  * Return: Boolean flag indicating whether the NAN feature is disabled in
534*5113495bSYour Name  *         6GHz or not
535*5113495bSYour Name  */
536*5113495bSYour Name bool ucfg_get_disable_6g_nan(struct wlan_objmgr_psoc *psoc);
537*5113495bSYour Name 
538*5113495bSYour Name /**
539*5113495bSYour Name  * ucfg_is_mlo_sta_nan_ndi_allowed()- Get support for MLO STA +
540*5113495bSYour Name  * NAN Disc + NDI concurrency
541*5113495bSYour Name  * @psoc: pointer to psoc object
542*5113495bSYour Name  *
543*5113495bSYour Name  * Return: True if mlo sta + nan + ndi concurrency allowed or not.
544*5113495bSYour Name  */
545*5113495bSYour Name bool ucfg_is_mlo_sta_nan_ndi_allowed(struct wlan_objmgr_psoc *psoc);
546*5113495bSYour Name 
547*5113495bSYour Name #else /* WLAN_FEATURE_NAN */
548*5113495bSYour Name 
549*5113495bSYour Name static inline
ucfg_nan_set_tgt_caps(struct wlan_objmgr_psoc * psoc,struct nan_tgt_caps * nan_caps)550*5113495bSYour Name void ucfg_nan_set_tgt_caps(struct wlan_objmgr_psoc *psoc,
551*5113495bSYour Name 			   struct nan_tgt_caps *nan_caps)
552*5113495bSYour Name {
553*5113495bSYour Name }
554*5113495bSYour Name 
ucfg_nan_disable_concurrency(struct wlan_objmgr_psoc * psoc)555*5113495bSYour Name static inline void ucfg_nan_disable_concurrency(struct wlan_objmgr_psoc *psoc)
556*5113495bSYour Name {
557*5113495bSYour Name }
558*5113495bSYour Name 
559*5113495bSYour Name static inline QDF_STATUS
ucfg_nan_check_and_disable_unsupported_ndi(struct wlan_objmgr_psoc * psoc,bool force)560*5113495bSYour Name ucfg_nan_check_and_disable_unsupported_ndi(struct wlan_objmgr_psoc *psoc,
561*5113495bSYour Name 					   bool force)
562*5113495bSYour Name {
563*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
564*5113495bSYour Name }
565*5113495bSYour Name 
ucfg_nan_psoc_open(struct wlan_objmgr_psoc * psoc)566*5113495bSYour Name static inline QDF_STATUS ucfg_nan_psoc_open(struct wlan_objmgr_psoc *psoc)
567*5113495bSYour Name {
568*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
569*5113495bSYour Name }
570*5113495bSYour Name 
ucfg_nan_psoc_close(struct wlan_objmgr_psoc * psoc)571*5113495bSYour Name static inline void ucfg_nan_psoc_close(struct wlan_objmgr_psoc *psoc)
572*5113495bSYour Name {
573*5113495bSYour Name }
574*5113495bSYour Name 
ucfg_is_nan_disc_active(struct wlan_objmgr_psoc * psoc)575*5113495bSYour Name static inline bool ucfg_is_nan_disc_active(struct wlan_objmgr_psoc *psoc)
576*5113495bSYour Name {
577*5113495bSYour Name 	return false;
578*5113495bSYour Name }
579*5113495bSYour Name 
580*5113495bSYour Name static inline
ucfg_nan_get_ndi_state(struct wlan_objmgr_vdev * vdev)581*5113495bSYour Name enum nan_datapath_state ucfg_nan_get_ndi_state(struct wlan_objmgr_vdev *vdev)
582*5113495bSYour Name {
583*5113495bSYour Name 	return NAN_DATA_INVALID_STATE;
584*5113495bSYour Name }
585*5113495bSYour Name 
586*5113495bSYour Name static inline
ucfg_nan_is_enable_disable_in_progress(struct wlan_objmgr_psoc * psoc)587*5113495bSYour Name bool ucfg_nan_is_enable_disable_in_progress(struct wlan_objmgr_psoc *psoc)
588*5113495bSYour Name {
589*5113495bSYour Name 	return false;
590*5113495bSYour Name }
591*5113495bSYour Name 
592*5113495bSYour Name static inline
ucfg_nan_is_sta_ndp_concurrency_allowed(struct wlan_objmgr_psoc * psoc,struct wlan_objmgr_vdev * vdev)593*5113495bSYour Name bool ucfg_nan_is_sta_ndp_concurrency_allowed(struct wlan_objmgr_psoc *psoc,
594*5113495bSYour Name 					     struct wlan_objmgr_vdev *vdev)
595*5113495bSYour Name {
596*5113495bSYour Name 	return false;
597*5113495bSYour Name }
598*5113495bSYour Name 
599*5113495bSYour Name static inline void
ucfg_nan_set_vdev_creation_supp_by_fw(struct wlan_objmgr_psoc * psoc,bool set)600*5113495bSYour Name ucfg_nan_set_vdev_creation_supp_by_fw(struct wlan_objmgr_psoc *psoc, bool set)
601*5113495bSYour Name {
602*5113495bSYour Name }
603*5113495bSYour Name 
604*5113495bSYour Name static inline
ucfg_nan_is_vdev_creation_allowed(struct wlan_objmgr_psoc * psoc)605*5113495bSYour Name bool ucfg_nan_is_vdev_creation_allowed(struct wlan_objmgr_psoc *psoc)
606*5113495bSYour Name {
607*5113495bSYour Name 	return false;
608*5113495bSYour Name }
609*5113495bSYour Name 
610*5113495bSYour Name static inline
ucfg_nan_is_sta_nan_ndi_4_port_allowed(struct wlan_objmgr_psoc * psoc)611*5113495bSYour Name bool ucfg_nan_is_sta_nan_ndi_4_port_allowed(struct wlan_objmgr_psoc *psoc)
612*5113495bSYour Name {
613*5113495bSYour Name 	return false;
614*5113495bSYour Name }
615*5113495bSYour Name 
616*5113495bSYour Name static inline
ucfg_nan_is_beamforming_supported(struct wlan_objmgr_psoc * psoc)617*5113495bSYour Name bool ucfg_nan_is_beamforming_supported(struct wlan_objmgr_psoc *psoc)
618*5113495bSYour Name {
619*5113495bSYour Name 	return false;
620*5113495bSYour Name }
621*5113495bSYour Name 
622*5113495bSYour Name static inline
ucfg_disable_nan_discovery(struct wlan_objmgr_psoc * psoc,uint8_t * data,uint32_t data_len)623*5113495bSYour Name QDF_STATUS ucfg_disable_nan_discovery(struct wlan_objmgr_psoc *psoc,
624*5113495bSYour Name 				      uint8_t *data, uint32_t data_len)
625*5113495bSYour Name {
626*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
627*5113495bSYour Name }
628*5113495bSYour Name 
629*5113495bSYour Name static inline
630*5113495bSYour Name QDF_STATUS
ucfg_nan_disable_ndi(struct wlan_objmgr_psoc * psoc,uint32_t ndi_vdev_id)631*5113495bSYour Name ucfg_nan_disable_ndi(struct wlan_objmgr_psoc *psoc, uint32_t ndi_vdev_id)
632*5113495bSYour Name {
633*5113495bSYour Name 	return QDF_STATUS_E_INVAL;
634*5113495bSYour Name }
635*5113495bSYour Name 
636*5113495bSYour Name static inline
ucfg_is_nan_conc_control_supported(struct wlan_objmgr_psoc * psoc)637*5113495bSYour Name bool ucfg_is_nan_conc_control_supported(struct wlan_objmgr_psoc *psoc)
638*5113495bSYour Name {
639*5113495bSYour Name 	return false;
640*5113495bSYour Name }
641*5113495bSYour Name 
642*5113495bSYour Name static inline
ucfg_get_nan_feature_config(struct wlan_objmgr_psoc * psoc,uint32_t * nan_feature_config)643*5113495bSYour Name QDF_STATUS ucfg_get_nan_feature_config(struct wlan_objmgr_psoc *psoc,
644*5113495bSYour Name 				       uint32_t *nan_feature_config)
645*5113495bSYour Name {
646*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
647*5113495bSYour Name }
648*5113495bSYour Name 
649*5113495bSYour Name static inline
ucfg_is_nan_vdev(struct wlan_objmgr_vdev * vdev)650*5113495bSYour Name bool ucfg_is_nan_vdev(struct wlan_objmgr_vdev *vdev)
651*5113495bSYour Name {
652*5113495bSYour Name 	return false;
653*5113495bSYour Name }
654*5113495bSYour Name 
655*5113495bSYour Name static inline
ucfg_is_nan_dbs_supported(struct wlan_objmgr_psoc * psoc)656*5113495bSYour Name bool ucfg_is_nan_dbs_supported(struct wlan_objmgr_psoc *psoc)
657*5113495bSYour Name {
658*5113495bSYour Name 	return false;
659*5113495bSYour Name }
660*5113495bSYour Name 
661*5113495bSYour Name static inline
ucfg_nan_disable_ind_to_userspace(struct wlan_objmgr_psoc * psoc)662*5113495bSYour Name QDF_STATUS ucfg_nan_disable_ind_to_userspace(struct wlan_objmgr_psoc *psoc)
663*5113495bSYour Name {
664*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
665*5113495bSYour Name }
666*5113495bSYour Name 
667*5113495bSYour Name static inline
ucfg_is_nan_allowed_on_freq(struct wlan_objmgr_pdev * pdev,uint32_t freq)668*5113495bSYour Name bool ucfg_is_nan_allowed_on_freq(struct wlan_objmgr_pdev *pdev, uint32_t freq)
669*5113495bSYour Name {
670*5113495bSYour Name 	return false;
671*5113495bSYour Name }
672*5113495bSYour Name 
ucfg_get_disable_6g_nan(struct wlan_objmgr_psoc * psoc)673*5113495bSYour Name static inline bool ucfg_get_disable_6g_nan(struct wlan_objmgr_psoc *psoc)
674*5113495bSYour Name {
675*5113495bSYour Name 	return true;
676*5113495bSYour Name }
677*5113495bSYour Name 
678*5113495bSYour Name static inline void
ucfg_nan_get_peer_mc_list(struct wlan_objmgr_vdev * vdev,struct qdf_mac_addr ** peer_mc_addr_list)679*5113495bSYour Name ucfg_nan_get_peer_mc_list(struct wlan_objmgr_vdev *vdev,
680*5113495bSYour Name 			  struct qdf_mac_addr **peer_mc_addr_list)
681*5113495bSYour Name {
682*5113495bSYour Name }
683*5113495bSYour Name 
684*5113495bSYour Name static inline bool
ucfg_is_mlo_sta_nan_ndi_allowed(struct wlan_objmgr_psoc * psoc)685*5113495bSYour Name ucfg_is_mlo_sta_nan_ndi_allowed(struct wlan_objmgr_psoc *psoc)
686*5113495bSYour Name {
687*5113495bSYour Name 	return false;
688*5113495bSYour Name }
689*5113495bSYour Name #endif /* WLAN_FEATURE_NAN */
690*5113495bSYour Name #endif /* _NAN_UCFG_API_H_ */
691