1 /* 2 * Copyright (c) 2017, 2019-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 /** 21 * DOC: wifi_pos_main_i.h 22 * This file prototyps the important functions pertinent to wifi positioning 23 * component. 24 */ 25 26 #ifndef _WIFI_POS_MAIN_H_ 27 #define _WIFI_POS_MAIN_H_ 28 29 #ifdef CNSS_GENL 30 #define ENHNC_FLAGS_LEN 4 31 #define NL_ENABLE_OEM_REQ_RSP 0x00000001 32 #endif 33 34 /* forward reference */ 35 struct wlan_objmgr_psoc; 36 37 #if defined(WIFI_POS_CONVERGED) && defined(WLAN_FEATURE_RTT_11AZ_SUPPORT) 38 /** 39 * wifi_pos_init_11az_context - Initialize 11az context 40 * @vdev_pos_obj: Vdev private object of WIFI Pos component 41 * 42 * Return: None 43 */ 44 void 45 wifi_pos_init_11az_context(struct wifi_pos_vdev_priv_obj *vdev_pos_obj); 46 #else 47 static inline void 48 wifi_pos_init_11az_context(struct wifi_pos_vdev_priv_obj *vdev_pos_obj) 49 {} 50 #endif 51 52 /** 53 * wifi_pos_psoc_obj_created_notification: callback registered to be called when 54 * psoc object is created. 55 * @psoc: pointer to psoc object just created 56 * @arg_list: argument list 57 * 58 * This function will: 59 * create WIFI POS psoc object and attach to psoc 60 * register TLV vs nonTLV callbacks 61 * Return: status of operation 62 */ 63 QDF_STATUS wifi_pos_psoc_obj_created_notification( 64 struct wlan_objmgr_psoc *psoc, void *arg_list); 65 66 /** 67 * wifi_pos_psoc_obj_destroyed_notification: callback registered to be called 68 * when psoc object is destroyed. 69 * @psoc: pointer to psoc object just about to be destroyed 70 * @arg_list: argument list 71 * 72 * This function will: 73 * detach WIFI POS from psoc object and free 74 * Return: status of operation 75 */ 76 QDF_STATUS wifi_pos_psoc_obj_destroyed_notification( 77 struct wlan_objmgr_psoc *psoc, void *arg_list); 78 79 /** 80 * wifi_pos_vdev_created_notification() - Vdev created notification callback 81 * @vdev: Vdev object 82 * @arg_list: argument list 83 * 84 * Return: QDF_STATUS 85 */ 86 QDF_STATUS 87 wifi_pos_vdev_created_notification(struct wlan_objmgr_vdev *vdev, 88 void *arg_list); 89 90 /** 91 * wifi_pos_vdev_destroyed_notification() - Wifi Pos vdev destroyed callback 92 * @vdev: Vdev object 93 * @arg_list: argument list 94 * 95 * This function will detach the Wifi Pos vdev private object and free it 96 * 97 * Return: QDF_STATUS 98 */ 99 QDF_STATUS 100 wifi_pos_vdev_destroyed_notification(struct wlan_objmgr_vdev *vdev, 101 void *arg_list); 102 103 /** 104 * wifi_pos_peer_object_created_notification() - Handle peer object created 105 * notification. 106 * @peer: Objmgr peer 107 * @arg: Argument 108 * 109 * Return: QDF_STATUS 110 */ 111 QDF_STATUS 112 wifi_pos_peer_object_created_notification(struct wlan_objmgr_peer *peer, 113 void *arg); 114 115 /** 116 * wifi_pos_peer_object_destroyed_notification() - Handler for peer object 117 * deleted notification 118 * @peer: Objmgr peer 119 * @arg: Argument 120 * 121 * Return: QDF_STATUS 122 */ 123 QDF_STATUS 124 wifi_pos_peer_object_destroyed_notification(struct wlan_objmgr_peer *peer, 125 void *arg); 126 127 /** 128 * wifi_pos_oem_rsp_handler: lmac rx ops registered 129 * @psoc: pointer to psoc object 130 * @oem_rsp: response from firmware 131 * 132 * Return: status of operation 133 */ 134 int wifi_pos_oem_rsp_handler(struct wlan_objmgr_psoc *psoc, 135 struct oem_data_rsp *oem_rsp); 136 #endif 137