xref: /wlan-dirver/qca-wifi-host-cmn/umac/wifi_pos/inc/wifi_pos_pasn_api.h (revision d0c05845839e5f2ba5a8dcebe0cd3e4cd4e8dfcf)
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