1 /* 2 * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. 3 * 4 * Permission to use, copy, modify, and/or distribute this software for any 5 * purpose with or without fee is hereby granted, provided that the above 6 * copyright notice and this permission notice appear in all copies. 7 * 8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15 */ 16 17 /** 18 * DOC: wifi_pos_pasn_api.h 19 * This file declares public APIs of wifi positioning component 20 */ 21 #ifndef _WIFI_POS_PASN_API_H_ 22 #define _WIFI_POS_PASN_API_H_ 23 24 /* Include files */ 25 #include "wlan_objmgr_cmn.h" 26 #include "wifi_pos_utils_pub.h" 27 #include "wifi_pos_public_struct.h" 28 29 #if defined(WIFI_POS_CONVERGED) && defined(WLAN_FEATURE_RTT_11AZ_SUPPORT) 30 /** 31 * wifi_pos_set_peer_ltf_keyseed_required() - Set LTF keyseed required 32 * for the peer 33 * @peer: Peer object 34 * @value: Value to set 35 * 36 * Return: QDF_STATUS 37 */ 38 QDF_STATUS 39 wifi_pos_set_peer_ltf_keyseed_required(struct wlan_objmgr_peer *peer, 40 bool value); 41 /** 42 * wifi_pos_is_ltf_keyseed_required_for_peer() - Is LTF keyseed required for 43 * the given peer 44 * @peer: Peer object 45 * 46 * Return: true or false 47 */ 48 bool wifi_pos_is_ltf_keyseed_required_for_peer(struct wlan_objmgr_peer *peer); 49 50 /** 51 * wifi_pos_handle_ranging_peer_create() - Handle ranging peer create 52 * @psoc: Pointer to PSOC 53 * @req: PASN request 54 * @vdev_id: vdev id 55 * @total_entries: Total entries 56 * 57 * Return: QDF_STATUS 58 */ 59 QDF_STATUS wifi_pos_handle_ranging_peer_create(struct wlan_objmgr_psoc *psoc, 60 struct wlan_pasn_request *req, 61 uint8_t vdev_id, 62 uint8_t total_entries); 63 64 /** 65 * wifi_pos_set_11az_failed_peers() - Update the 11az failed peers to the 66 * context 67 * @vdev: Objmgr vdev pointer 68 * @mac_addr: mac address 69 */ 70 void wifi_pos_set_11az_failed_peers(struct wlan_objmgr_vdev *vdev, 71 struct qdf_mac_addr *mac_addr); 72 73 /** 74 * wifi_pos_add_peer_to_list() - Add the peer mac to the secure/unsecure 75 * peer list in the 11az context 76 * @vdev: Pointer to vdev object 77 * @req: PASN peer create request pointer 78 * @is_peer_create_required: True if we need to send peer create command to 79 * firmware 80 */ 81 void wifi_pos_add_peer_to_list(struct wlan_objmgr_vdev *vdev, 82 struct wlan_pasn_request *req, 83 bool is_peer_create_required); 84 85 /** 86 * wifi_pos_handle_ranging_peer_create_rsp - Ranging peer create response 87 * handler 88 * @psoc: Pointer to PSOC object 89 * @vdev_id: vdev id 90 * @peer_mac: Peer mac address 91 * @status: Status 92 * 93 * Return: QDF_STATUS 94 */ 95 QDF_STATUS 96 wifi_pos_handle_ranging_peer_create_rsp(struct wlan_objmgr_psoc *psoc, 97 uint8_t vdev_id, 98 struct qdf_mac_addr *peer_mac, 99 uint8_t status); 100 101 /** 102 * wifi_pos_handle_ranging_peer_delete() - Handle ranging PASN peer delete 103 * @psoc: Pointer to PSOC object 104 * @vdev_id: vdev id 105 * @peer_data: PASN peer data 106 * @total_entries: Total number of peers 107 * 108 * Return: QDF_STATUS 109 */ 110 QDF_STATUS 111 wifi_pos_handle_ranging_peer_delete(struct wlan_objmgr_psoc *psoc, 112 struct wlan_pasn_request *req, 113 uint8_t vdev_id, 114 uint8_t total_entries); 115 116 /** 117 * wifi_pos_send_pasn_auth_status - Send PASN auth status to firmware 118 * @psoc: Pointer to PSOC object 119 * @data: pointer to auth status data 120 * 121 * Return: QDF_STATUS 122 */ 123 QDF_STATUS 124 wifi_pos_send_pasn_auth_status(struct wlan_objmgr_psoc *psoc, 125 struct wlan_pasn_auth_status *data); 126 127 /** 128 * wifi_pos_send_pasn_peer_deauth - Send PASN peer deauth 129 * @psoc: Pointer to PSOC object 130 * @peer_mac: Peer mac address 131 * 132 * Return: QDF_STATUS 133 */ 134 QDF_STATUS 135 wifi_pos_send_pasn_peer_deauth(struct wlan_objmgr_psoc *psoc, 136 struct qdf_mac_addr *peer_mac); 137 138 /** 139 * wifi_pos_get_pasn_peer_count() - Wifi POS get total pasn peer count 140 * @vdev: Pointer to vdev object 141 * 142 * Return: Total number of pasn peers 143 */ 144 uint8_t 145 wifi_pos_get_pasn_peer_count(struct wlan_objmgr_vdev *vdev); 146 147 /** 148 * wifi_pos_update_pasn_peer_count() - Increment pasn peer count 149 * @vdev: Pointer to vdev object 150 * @is_increment: flag to indicate if peer count needs to be incremented 151 * 152 * Return: None 153 */ 154 void wifi_pos_update_pasn_peer_count(struct wlan_objmgr_vdev *vdev, 155 bool is_increment); 156 157 /** 158 * wifi_pos_cleanup_pasn_peers - Delete all PASN peer objects for 159 * given vdev 160 * @vdev: Pointer to vdev object 161 * 162 * Return: QDF_STATUS 163 */ 164 QDF_STATUS 165 wifi_pos_cleanup_pasn_peers(struct wlan_objmgr_psoc *psoc, 166 struct wlan_objmgr_vdev *vdev); 167 168 /** 169 * wifi_pos_vdev_delete_all_ranging_peers() - Delete all ranging peers 170 * associated with given vdev id 171 * @psoc: Psoc pointer 172 * @vdev_id: vdev id 173 * 174 * Return: QDF_STATUS 175 */ 176 QDF_STATUS 177 wifi_pos_vdev_delete_all_ranging_peers(struct wlan_objmgr_vdev *vdev); 178 179 /** 180 * wifi_pos_vdev_delete_all_ranging_peers_rsp() - Delete all vdev peers response 181 * handler 182 * @psoc: Psoc pointer 183 * @vdev_id: vdev id 184 * 185 * Return: QDF_STATUS 186 */ 187 QDF_STATUS 188 wifi_pos_vdev_delete_all_ranging_peers_rsp(struct wlan_objmgr_psoc *psoc, 189 uint8_t vdev_id); 190 191 /** 192 * wifi_pos_is_delete_all_peer_in_progress() - Check if delete all 193 * pasn peers command is already in progress for a given vdev 194 * @vdev: Vdev object pointer 195 * 196 * Return: True if delete all pasn peer is in progress 197 */ 198 bool wifi_pos_is_delete_all_peer_in_progress(struct wlan_objmgr_vdev *vdev); 199 200 /** 201 * wifi_pos_set_delete_all_peer_in_progress() - API to set/unset delete all 202 * ranging peers is in progress 203 * @vdev: Pointer to vdev object 204 * @flag: value to indicate set or unset the flag 205 * 206 * Return: None 207 */ 208 void wifi_pos_set_delete_all_peer_in_progress(struct wlan_objmgr_vdev *vdev, 209 bool flag); 210 #else 211 static inline 212 QDF_STATUS wifi_pos_handle_ranging_peer_create(struct wlan_objmgr_psoc *psoc, 213 struct wlan_pasn_request *req, 214 uint8_t vdev_id, 215 uint8_t total_entries) 216 { 217 return QDF_STATUS_SUCCESS; 218 } 219 220 static inline 221 void wifi_pos_set_11az_failed_peers(struct wlan_objmgr_vdev *vdev, 222 struct qdf_mac_addr *mac_addr) 223 {} 224 225 static inline 226 void wifi_pos_add_peer_to_list(struct wlan_objmgr_vdev *vdev, 227 struct wlan_pasn_request *req, 228 bool is_peer_create_required) 229 {} 230 231 static inline QDF_STATUS 232 wifi_pos_handle_ranging_peer_create_rsp(struct wlan_objmgr_psoc *psoc, 233 uint8_t vdev_id, 234 struct qdf_mac_addr *peer_mac, 235 uint8_t status) 236 { 237 return QDF_STATUS_SUCCESS; 238 } 239 240 static inline QDF_STATUS 241 wifi_pos_handle_ranging_peer_delete(struct wlan_objmgr_psoc *psoc, 242 struct wlan_pasn_request *req, 243 uint8_t vdev_id, 244 uint8_t total_entries) 245 { 246 return QDF_STATUS_SUCCESS; 247 } 248 249 static inline QDF_STATUS 250 wifi_pos_send_pasn_peer_deauth(struct wlan_objmgr_psoc *psoc, 251 struct qdf_mac_addr *peer_mac) 252 { 253 return QDF_STATUS_SUCCESS; 254 } 255 256 static inline void 257 wifi_pos_update_pasn_peer_count(struct wlan_objmgr_vdev *vdev, 258 bool is_increment) 259 {} 260 261 static inline uint8_t 262 wifi_pos_get_pasn_peer_count(struct wlan_objmgr_vdev *vdev) 263 { 264 return 0; 265 } 266 267 static inline QDF_STATUS 268 wifi_pos_vdev_delete_all_ranging_peers(struct wlan_objmgr_vdev *vdev) 269 { 270 return QDF_STATUS_SUCCESS; 271 } 272 273 static inline 274 bool wifi_pos_is_delete_all_peer_in_progress(struct wlan_objmgr_vdev *vdev) 275 { 276 return false; 277 } 278 279 static inline QDF_STATUS 280 wifi_pos_cleanup_pasn_peers(struct wlan_objmgr_psoc *psoc, 281 struct wlan_objmgr_vdev *vdev) 282 { 283 return QDF_STATUS_SUCCESS; 284 } 285 286 static inline 287 void wifi_pos_set_delete_all_peer_in_progress(struct wlan_objmgr_vdev *vdev, 288 bool flag) 289 {} 290 #endif /* WIFI_POS_CONVERGED && WLAN_FEATURE_RTT_11AZ_SUPPORT */ 291 #endif /* _WIFI_POS_PASN_API_H_ */ 292