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