.. | .. |
---|
1 | | -/* SPDX-License-Identifier: GPL-2.0 */ |
---|
2 | 1 | /* |
---|
3 | 2 | * Broadcom Dongle Host Driver (DHD), RTT |
---|
4 | 3 | * |
---|
5 | | - * Copyright (C) 1999-2019, Broadcom Corporation |
---|
6 | | - * |
---|
| 4 | + * Portions of this code are copyright (c) 2022 Cypress Semiconductor Corporation |
---|
| 5 | + * |
---|
| 6 | + * Copyright (C) 1999-2017, Broadcom Corporation |
---|
| 7 | + * |
---|
7 | 8 | * Unless you and Broadcom execute a separate written software license |
---|
8 | 9 | * agreement governing use of this software, this software is licensed to you |
---|
9 | 10 | * under the terms of the GNU General Public License version 2 (the "GPL"), |
---|
10 | 11 | * available at http://www.broadcom.com/licenses/GPLv2.php, with the |
---|
11 | 12 | * following added to such license: |
---|
12 | | - * |
---|
| 13 | + * |
---|
13 | 14 | * As a special exception, the copyright holders of this software give you |
---|
14 | 15 | * permission to link this software with independent modules, and to copy and |
---|
15 | 16 | * distribute the resulting executable under terms of your choice, provided that |
---|
.. | .. |
---|
17 | 18 | * the license of that module. An independent module is a module which is not |
---|
18 | 19 | * derived from this software. The special exception does not apply to any |
---|
19 | 20 | * modifications of the software. |
---|
20 | | - * |
---|
| 21 | + * |
---|
21 | 22 | * Notwithstanding the above, under no circumstances may you combine this |
---|
22 | 23 | * software in any way with any other Broadcom software provided under a license |
---|
23 | 24 | * other than the GPL, without Broadcom's express prior written consent. |
---|
24 | 25 | * |
---|
25 | | - * $Id: dhd_rtt.h 578013 2015-08-10 05:56:41Z $ |
---|
| 26 | + * |
---|
| 27 | + * <<Broadcom-WL-IPTag/Open:>> |
---|
| 28 | + * |
---|
| 29 | + * $Id$ |
---|
26 | 30 | */ |
---|
27 | 31 | #ifndef __DHD_RTT_H__ |
---|
28 | 32 | #define __DHD_RTT_H__ |
---|
29 | 33 | |
---|
30 | 34 | #include "dngl_stats.h" |
---|
31 | 35 | |
---|
32 | | -#define RTT_MAX_TARGET_CNT 50 |
---|
33 | | -#define RTT_MAX_FRAME_CNT 25 |
---|
34 | | -#define RTT_MAX_RETRY_CNT 10 |
---|
35 | | -#define DEFAULT_FTM_CNT 6 |
---|
36 | | -#define DEFAULT_RETRY_CNT 6 |
---|
| 36 | +#define RTT_MAX_TARGET_CNT 50 |
---|
| 37 | +#define RTT_MAX_FRAME_CNT 25 |
---|
| 38 | +#define RTT_MAX_RETRY_CNT 10 |
---|
| 39 | +#define DEFAULT_FTM_CNT 6 |
---|
| 40 | +#define DEFAULT_RETRY_CNT 6 |
---|
| 41 | +#define DEFAULT_FTM_FREQ 5180 |
---|
| 42 | +#define DEFAULT_FTM_CNTR_FREQ0 5210 |
---|
| 43 | +#define RTT_MAX_GEOFENCE_TARGET_CNT 8 |
---|
| 44 | + |
---|
37 | 45 | #define TARGET_INFO_SIZE(count) (sizeof(rtt_target_info_t) * count) |
---|
38 | 46 | |
---|
39 | 47 | #define TARGET_TYPE(target) (target->type) |
---|
40 | 48 | |
---|
| 49 | +#define RTT_IS_ENABLED(rtt_status) (rtt_status->status == RTT_ENABLED) |
---|
| 50 | +#define RTT_IS_STOPPED(rtt_status) (rtt_status->status == RTT_STOPPED) |
---|
| 51 | + |
---|
41 | 52 | #ifndef BIT |
---|
42 | 53 | #define BIT(x) (1 << (x)) |
---|
43 | | -#endif |
---|
| 54 | +#endif // endif |
---|
44 | 55 | |
---|
45 | 56 | /* DSSS, CCK and 802.11n rates in [500kbps] units */ |
---|
46 | 57 | #define WL_MAXRATE 108 /* in 500kbps units */ |
---|
.. | .. |
---|
56 | 67 | #define WL_RATE_36M 72 /* in 500kbps units */ |
---|
57 | 68 | #define WL_RATE_48M 96 /* in 500kbps units */ |
---|
58 | 69 | #define WL_RATE_54M 108 /* in 500kbps units */ |
---|
| 70 | +#define GET_RTTSTATE(dhd) ((rtt_status_info_t *)dhd->rtt_state) |
---|
59 | 71 | |
---|
| 72 | +/* RTT Retry Timer Interval */ |
---|
| 73 | +#define DHD_RTT_RETRY_TIMER_INTERVAL_MS 3000u |
---|
| 74 | + |
---|
| 75 | +#define DHD_RTT_INVALID_TARGET_INDEX -1 |
---|
60 | 76 | |
---|
61 | 77 | enum rtt_role { |
---|
62 | 78 | RTT_INITIATOR = 0, |
---|
63 | 79 | RTT_TARGET = 1 |
---|
64 | 80 | }; |
---|
65 | | - |
---|
66 | 81 | enum rtt_status { |
---|
67 | 82 | RTT_STOPPED = 0, |
---|
68 | 83 | RTT_STARTED = 1, |
---|
69 | 84 | RTT_ENABLED = 2 |
---|
70 | 85 | }; |
---|
71 | | - |
---|
72 | 86 | typedef int64_t wifi_timestamp; /* In microseconds (us) */ |
---|
73 | 87 | typedef int64_t wifi_timespan; |
---|
74 | | -typedef int32 wifi_rssi; |
---|
| 88 | +typedef int32 wifi_rssi_rtt; |
---|
75 | 89 | |
---|
76 | 90 | typedef enum { |
---|
77 | 91 | RTT_INVALID, |
---|
.. | .. |
---|
80 | 94 | RTT_AUTO |
---|
81 | 95 | } rtt_type_t; |
---|
82 | 96 | |
---|
| 97 | +/* RTT peer type */ |
---|
83 | 98 | typedef enum { |
---|
84 | | - RTT_PEER_STA, |
---|
85 | | - RTT_PEER_AP, |
---|
86 | | - RTT_PEER_P2P, |
---|
87 | | - RTT_PEER_NAN, |
---|
88 | | - RTT_PEER_INVALID |
---|
| 99 | + RTT_PEER_AP = 0x1, |
---|
| 100 | + RTT_PEER_STA = 0x2, |
---|
| 101 | + RTT_PEER_P2P_GO = 0x3, |
---|
| 102 | + RTT_PEER_P2P_CLIENT = 0x4, |
---|
| 103 | + RTT_PEER_NAN = 0x5, |
---|
| 104 | + RTT_PEER_INVALID = 0x6 |
---|
89 | 105 | } rtt_peer_type_t; |
---|
90 | 106 | |
---|
| 107 | +/* Ranging status */ |
---|
91 | 108 | typedef enum rtt_reason { |
---|
92 | | - RTT_REASON_SUCCESS, |
---|
93 | | - RTT_REASON_FAILURE, |
---|
94 | | - RTT_REASON_FAIL_NO_RSP, |
---|
95 | | - RTT_REASON_FAIL_INVALID_TS, /* Invalid timestamp */ |
---|
96 | | - RTT_REASON_FAIL_PROTOCOL, /* 11mc protocol failed */ |
---|
97 | | - RTT_REASON_FAIL_REJECTED, |
---|
98 | | - RTT_REASON_FAIL_NOT_SCHEDULED_YET, |
---|
99 | | - RTT_REASON_FAIL_SCHEDULE, /* schedule failed */ |
---|
100 | | - RTT_REASON_FAIL_TM_TIMEOUT, |
---|
101 | | - RTT_REASON_FAIL_AP_ON_DIFF_CHANNEL, |
---|
102 | | - RTT_REASON_FAIL_NO_CAPABILITY, |
---|
103 | | - RTT_REASON_FAIL_BUSY_TRY_LATER, |
---|
104 | | - RTT_REASON_ABORTED |
---|
| 109 | + RTT_STATUS_SUCCESS = 0, |
---|
| 110 | + RTT_STATUS_FAILURE = 1, // general failure status |
---|
| 111 | + RTT_STATUS_FAIL_NO_RSP = 2, // target STA does not respond to request |
---|
| 112 | + RTT_STATUS_FAIL_REJECTED = 3, // request rejected. Applies to 2-sided RTT only |
---|
| 113 | + RTT_STATUS_FAIL_NOT_SCHEDULED_YET = 4, |
---|
| 114 | + RTT_STATUS_FAIL_TM_TIMEOUT = 5, // timing measurement times out |
---|
| 115 | + RTT_STATUS_FAIL_AP_ON_DIFF_CHANNEL = 6, // Target on different channel, cannot range |
---|
| 116 | + RTT_STATUS_FAIL_NO_CAPABILITY = 7, // ranging not supported |
---|
| 117 | + RTT_STATUS_ABORTED = 8, // request aborted for unknown reason |
---|
| 118 | + RTT_STATUS_FAIL_INVALID_TS = 9, // Invalid T1-T4 timestamp |
---|
| 119 | + RTT_STATUS_FAIL_PROTOCOL = 10, // 11mc protocol failed |
---|
| 120 | + RTT_STATUS_FAIL_SCHEDULE = 11, // request could not be scheduled |
---|
| 121 | + RTT_STATUS_FAIL_BUSY_TRY_LATER = 12, // responder cannot collaborate at time of request |
---|
| 122 | + RTT_STATUS_INVALID_REQ = 13, // bad request args |
---|
| 123 | + RTT_STATUS_NO_WIFI = 14, // WiFi not enabled Responder overrides param info |
---|
| 124 | + // cannot range with new params |
---|
| 125 | + RTT_STATUS_FAIL_FTM_PARAM_OVERRIDE = 15 |
---|
105 | 126 | } rtt_reason_t; |
---|
106 | 127 | |
---|
107 | 128 | enum { |
---|
.. | .. |
---|
132 | 153 | RTT_BW_160 = BIT(5) |
---|
133 | 154 | }; |
---|
134 | 155 | |
---|
| 156 | +enum rtt_rate_bw { |
---|
| 157 | + RTT_RATE_20M, |
---|
| 158 | + RTT_RATE_40M, |
---|
| 159 | + RTT_RATE_80M, |
---|
| 160 | + RTT_RATE_160M |
---|
| 161 | +}; |
---|
| 162 | + |
---|
| 163 | +typedef enum ranging_type { |
---|
| 164 | + RTT_TYPE_INVALID = 0, |
---|
| 165 | + RTT_TYPE_LEGACY = 1, |
---|
| 166 | + RTT_TYPE_NAN_DIRECTED = 2, |
---|
| 167 | + RTT_TYPE_NAN_GEOFENCE = 3 |
---|
| 168 | +} ranging_type_t; |
---|
| 169 | + |
---|
135 | 170 | #define FTM_MAX_NUM_BURST_EXP 14 |
---|
136 | 171 | #define HAS_11MC_CAP(cap) (cap & RTT_CAP_FTM_WAY) |
---|
137 | 172 | #define HAS_ONEWAY_CAP(cap) (cap & RTT_CAP_ONE_WAY) |
---|
.. | .. |
---|
145 | 180 | } wifi_channel_info_t; |
---|
146 | 181 | |
---|
147 | 182 | typedef struct wifi_rate { |
---|
148 | | - uint32 preamble :3; /* 0: OFDM, 1: CCK, 2 : HT, 3: VHT, 4..7 reserved */ |
---|
| 183 | + uint32 preamble :3; /* 0: OFDM, 1: CCK, 2 : HT, 3: VHT, 4..7 reserved */ |
---|
149 | 184 | uint32 nss :2; /* 1 : 1x1, 2: 2x2, 3: 3x3, 4: 4x4 */ |
---|
150 | 185 | uint32 bw :3; /* 0: 20Mhz, 1: 40Mhz, 2: 80Mhz, 3: 160Mhz */ |
---|
151 | 186 | /* OFDM/CCK rate code would be as per IEEE std in the unit of 0.5 mb |
---|
.. | .. |
---|
158 | 193 | |
---|
159 | 194 | typedef struct rtt_target_info { |
---|
160 | 195 | struct ether_addr addr; |
---|
| 196 | + struct ether_addr local_addr; |
---|
161 | 197 | rtt_type_t type; /* rtt_type */ |
---|
162 | 198 | rtt_peer_type_t peer; /* peer type */ |
---|
163 | 199 | wifi_channel_info_t channel; /* channel information */ |
---|
.. | .. |
---|
192 | 228 | * in a single frame |
---|
193 | 229 | */ |
---|
194 | 230 | uint32 num_frames_per_burst; |
---|
195 | | - /* num of frames in each RTT burst |
---|
| 231 | + /* |
---|
| 232 | + * num of frames in each RTT burst |
---|
196 | 233 | * for single side, measurement result num = frame number |
---|
197 | 234 | * for 2 side RTT, measurement result num = frame number - 1 |
---|
198 | 235 | */ |
---|
.. | .. |
---|
212 | 249 | * at the end of the burst_duration it requested. |
---|
213 | 250 | */ |
---|
214 | 251 | uint32 burst_duration; |
---|
| 252 | + uint32 burst_timeout; |
---|
215 | 253 | uint8 preamble; /* 1 - Legacy, 2 - HT, 4 - VHT */ |
---|
216 | 254 | uint8 bw; /* 5, 10, 20, 40, 80, 160 */ |
---|
217 | 255 | } rtt_target_info_t; |
---|
| 256 | + |
---|
| 257 | +typedef struct rtt_goefence_target_info { |
---|
| 258 | + bool valid; |
---|
| 259 | + struct ether_addr peer_addr; |
---|
| 260 | +} rtt_geofence_target_info_t; |
---|
| 261 | + |
---|
| 262 | +typedef struct rtt_config_params { |
---|
| 263 | + int8 rtt_target_cnt; |
---|
| 264 | + rtt_target_info_t *target_info; |
---|
| 265 | +} rtt_config_params_t; |
---|
| 266 | + |
---|
| 267 | +typedef struct rtt_geofence_cfg { |
---|
| 268 | + int8 geofence_target_cnt; |
---|
| 269 | + bool rtt_in_progress; |
---|
| 270 | + bool role_concurr_state; |
---|
| 271 | + int8 cur_target_idx; |
---|
| 272 | + rtt_geofence_target_info_t geofence_target_info[RTT_MAX_GEOFENCE_TARGET_CNT]; |
---|
| 273 | +} rtt_geofence_cfg_t; |
---|
| 274 | + |
---|
| 275 | +/* |
---|
| 276 | + * Keep Adding more reasons |
---|
| 277 | + * going forward if needed |
---|
| 278 | + */ |
---|
| 279 | +enum rtt_schedule_reason { |
---|
| 280 | + RTT_SCHED_HOST_TRIGGER = 1, /* On host command for directed RTT */ |
---|
| 281 | + RTT_SCHED_SUB_MATCH = 2, /* on Sub Match for svc with range req */ |
---|
| 282 | + RTT_SCHED_DIR_TRIGGER_FAIL = 3, /* On failure of Directed RTT Trigger */ |
---|
| 283 | + RTT_SCHED_DP_END = 4, /* ON NDP End event from fw */ |
---|
| 284 | + RTT_SCHED_DP_REJECTED = 5, /* On receving reject dp event from fw */ |
---|
| 285 | + RTT_SCHED_RNG_RPT_DIRECTED = 6, /* On Ranging report for directed RTT */ |
---|
| 286 | + RTT_SCHED_RNG_TERM = 7, /* On Range Term Indicator */ |
---|
| 287 | + RTT_SHCED_HOST_DIRECTED_TERM = 8, /* On host terminating directed RTT sessions */ |
---|
| 288 | + RTT_SCHED_RNG_RPT_GEOFENCE = 9, /* On Ranging report for geofence RTT */ |
---|
| 289 | + RTT_SCHED_RTT_RETRY_GEOFENCE = 10 /* On Geofence Retry */ |
---|
| 290 | +}; |
---|
| 291 | + |
---|
| 292 | +/* |
---|
| 293 | + * Keep Adding more invalid RTT states |
---|
| 294 | + * going forward if needed |
---|
| 295 | + */ |
---|
| 296 | +enum rtt_invalid_state { |
---|
| 297 | + RTT_STATE_VALID = 0, /* RTT state is valid */ |
---|
| 298 | + RTT_STATE_INV_REASON_NDP_EXIST = 1 /* RTT state invalid as ndp exists */ |
---|
| 299 | +}; |
---|
| 300 | + |
---|
| 301 | +typedef struct rtt_status_info { |
---|
| 302 | + dhd_pub_t *dhd; |
---|
| 303 | + int8 status; /* current status for the current entry */ |
---|
| 304 | + int8 txchain; /* current device tx chain */ |
---|
| 305 | + int pm; /* to save current value of pm */ |
---|
| 306 | + int8 pm_restore; /* flag to reset the old value of pm */ |
---|
| 307 | + int8 cur_idx; /* current entry to do RTT */ |
---|
| 308 | + bool all_cancel; /* cancel all request once we got the cancel requet */ |
---|
| 309 | + uint32 flags; /* indicate whether device is configured as initiator or target */ |
---|
| 310 | + struct capability { |
---|
| 311 | + int32 proto :8; |
---|
| 312 | + int32 feature :8; |
---|
| 313 | + int32 preamble :8; |
---|
| 314 | + int32 bw :8; |
---|
| 315 | + } rtt_capa; /* rtt capability */ |
---|
| 316 | + struct mutex rtt_mutex; |
---|
| 317 | + struct mutex geofence_mutex; |
---|
| 318 | + rtt_config_params_t rtt_config; |
---|
| 319 | + rtt_geofence_cfg_t geofence_cfg; |
---|
| 320 | + struct work_struct work; |
---|
| 321 | + struct list_head noti_fn_list; |
---|
| 322 | + struct list_head rtt_results_cache; /* store results for RTT */ |
---|
| 323 | + int rtt_sched_reason; /* rtt_schedule_reason: what scheduled RTT */ |
---|
| 324 | + struct delayed_work proxd_timeout; /* Proxd Timeout work */ |
---|
| 325 | + struct delayed_work rtt_retry_timer; /* Timer for retry RTT after all targets done */ |
---|
| 326 | +} rtt_status_info_t; |
---|
218 | 327 | |
---|
219 | 328 | typedef struct rtt_report { |
---|
220 | 329 | struct ether_addr addr; |
---|
.. | .. |
---|
226 | 335 | /* in s, 11mc only, only for RTT_REASON_FAIL_BUSY_TRY_LATER, 1- 31s */ |
---|
227 | 336 | uint8 retry_after_duration; |
---|
228 | 337 | rtt_type_t type; /* rtt type */ |
---|
229 | | - wifi_rssi rssi; /* average rssi in 0.5 dB steps e.g. 143 implies -71.5 dB */ |
---|
230 | | - wifi_rssi rssi_spread; /* rssi spread in 0.5 db steps e.g. 5 implies 2.5 spread */ |
---|
| 338 | + wifi_rssi_rtt rssi; /* average rssi in 0.5 dB steps e.g. 143 implies -71.5 dB */ |
---|
| 339 | + wifi_rssi_rtt rssi_spread; /* rssi spread in 0.5 db steps e.g. 5 implies 2.5 spread */ |
---|
231 | 340 | /* |
---|
232 | 341 | * 1-sided RTT: TX rate of RTT frame. |
---|
233 | 342 | * 2-sided RTT: TX rate of initiator's Ack in response to FTM frame. |
---|
.. | .. |
---|
250 | 359 | bcm_tlv_t *LCI; /* LCI Report */ |
---|
251 | 360 | bcm_tlv_t *LCR; /* Location Civic Report */ |
---|
252 | 361 | } rtt_report_t; |
---|
253 | | - |
---|
254 | 362 | #define RTT_REPORT_SIZE (sizeof(rtt_report_t)) |
---|
255 | 363 | |
---|
256 | 364 | /* rtt_results_header to maintain rtt result list per mac address */ |
---|
.. | .. |
---|
261 | 369 | struct list_head list; |
---|
262 | 370 | struct list_head result_list; |
---|
263 | 371 | } rtt_results_header_t; |
---|
264 | | - |
---|
| 372 | +struct rtt_result_detail { |
---|
| 373 | + uint8 num_ota_meas; |
---|
| 374 | + uint32 result_flags; |
---|
| 375 | +}; |
---|
265 | 376 | /* rtt_result to link all of rtt_report */ |
---|
266 | 377 | typedef struct rtt_result { |
---|
267 | 378 | struct list_head list; |
---|
268 | 379 | struct rtt_report report; |
---|
269 | 380 | int32 report_len; /* total length of rtt_report */ |
---|
| 381 | + struct rtt_result_detail rtt_detail; |
---|
| 382 | + int32 detail_len; |
---|
270 | 383 | } rtt_result_t; |
---|
271 | 384 | |
---|
272 | 385 | /* RTT Capabilities */ |
---|
.. | .. |
---|
279 | 392 | uint8 bw_support; /* bit mask indicate what BW is supported */ |
---|
280 | 393 | } rtt_capabilities_t; |
---|
281 | 394 | |
---|
282 | | -typedef struct rtt_config_params { |
---|
283 | | - int8 rtt_target_cnt; |
---|
284 | | - rtt_target_info_t *target_info; |
---|
285 | | -} rtt_config_params_t; |
---|
| 395 | +/* RTT responder information */ |
---|
| 396 | +typedef struct wifi_rtt_responder { |
---|
| 397 | + wifi_channel_info channel; /* channel of responder */ |
---|
| 398 | + uint8 preamble; /* preamble supported by responder */ |
---|
| 399 | +} wifi_rtt_responder_t; |
---|
286 | 400 | |
---|
287 | 401 | typedef void (*dhd_rtt_compl_noti_fn)(void *ctx, void *rtt_data); |
---|
288 | | - |
---|
289 | | -#ifdef RTT_SUPPORT |
---|
290 | 402 | /* Linux wrapper to call common dhd_rtt_set_cfg */ |
---|
291 | 403 | int |
---|
292 | 404 | dhd_dev_rtt_set_cfg(struct net_device *dev, void *buf); |
---|
.. | .. |
---|
304 | 416 | int |
---|
305 | 417 | dhd_dev_rtt_capability(struct net_device *dev, rtt_capabilities_t *capa); |
---|
306 | 418 | |
---|
| 419 | +int |
---|
| 420 | +dhd_dev_rtt_avail_channel(struct net_device *dev, wifi_channel_info *channel_info); |
---|
| 421 | + |
---|
| 422 | +int |
---|
| 423 | +dhd_dev_rtt_enable_responder(struct net_device *dev, wifi_channel_info *channel_info); |
---|
| 424 | + |
---|
| 425 | +int |
---|
| 426 | +dhd_dev_rtt_cancel_responder(struct net_device *dev); |
---|
307 | 427 | /* export to upper layer */ |
---|
308 | 428 | chanspec_t |
---|
309 | 429 | dhd_rtt_convert_to_chspec(wifi_channel_info_t channel); |
---|
.. | .. |
---|
314 | 434 | int |
---|
315 | 435 | dhd_rtt_set_cfg(dhd_pub_t *dhd, rtt_config_params_t *params); |
---|
316 | 436 | |
---|
| 437 | +void dhd_rtt_set_role_concurrency_state(dhd_pub_t *dhd, bool state); |
---|
| 438 | + |
---|
| 439 | +bool dhd_rtt_get_role_concurrency_state(dhd_pub_t *dhd); |
---|
| 440 | + |
---|
| 441 | +int8 dhd_rtt_get_geofence_target_cnt(dhd_pub_t *dhd); |
---|
| 442 | + |
---|
| 443 | +#ifdef WL_NAN |
---|
| 444 | +void dhd_rtt_set_geofence_rtt_state(dhd_pub_t *dhd, bool state); |
---|
| 445 | + |
---|
| 446 | +bool dhd_rtt_get_geofence_rtt_state(dhd_pub_t *dhd); |
---|
| 447 | + |
---|
| 448 | +rtt_geofence_target_info_t* |
---|
| 449 | +dhd_rtt_get_geofence_target_head(dhd_pub_t *dhd); |
---|
| 450 | + |
---|
| 451 | +rtt_geofence_target_info_t* |
---|
| 452 | +dhd_rtt_get_geofence_current_target(dhd_pub_t *dhd); |
---|
| 453 | + |
---|
| 454 | +rtt_geofence_target_info_t* |
---|
| 455 | +dhd_rtt_get_geofence_target(dhd_pub_t *dhd, struct ether_addr* peer_addr, |
---|
| 456 | + int8 *index); |
---|
| 457 | + |
---|
| 458 | +int |
---|
| 459 | +dhd_rtt_add_geofence_target(dhd_pub_t *dhd, rtt_geofence_target_info_t *target); |
---|
| 460 | + |
---|
| 461 | +int |
---|
| 462 | +dhd_rtt_remove_geofence_target(dhd_pub_t *dhd, struct ether_addr *peer_addr); |
---|
| 463 | + |
---|
| 464 | +int |
---|
| 465 | +dhd_rtt_delete_geofence_target_list(dhd_pub_t *dhd); |
---|
| 466 | + |
---|
| 467 | +int |
---|
| 468 | +dhd_rtt_delete_nan_session(dhd_pub_t *dhd); |
---|
| 469 | +#endif /* WL_NAN */ |
---|
| 470 | + |
---|
| 471 | +uint8 |
---|
| 472 | +dhd_rtt_invalid_states(struct net_device *ndev, struct ether_addr *peer_addr); |
---|
| 473 | + |
---|
| 474 | +void |
---|
| 475 | +dhd_rtt_schedule_rtt_work_thread(dhd_pub_t *dhd, int sched_reason); |
---|
| 476 | + |
---|
317 | 477 | int |
---|
318 | 478 | dhd_rtt_stop(dhd_pub_t *dhd, struct ether_addr *mac_list, int mac_cnt); |
---|
319 | | - |
---|
320 | 479 | |
---|
321 | 480 | int |
---|
322 | 481 | dhd_rtt_register_noti_callback(dhd_pub_t *dhd, void *ctx, dhd_rtt_compl_noti_fn noti_fn); |
---|
.. | .. |
---|
331 | 490 | dhd_rtt_capability(dhd_pub_t *dhd, rtt_capabilities_t *capa); |
---|
332 | 491 | |
---|
333 | 492 | int |
---|
| 493 | +dhd_rtt_avail_channel(dhd_pub_t *dhd, wifi_channel_info *channel_info); |
---|
| 494 | + |
---|
| 495 | +int |
---|
| 496 | +dhd_rtt_enable_responder(dhd_pub_t *dhd, wifi_channel_info *channel_info); |
---|
| 497 | + |
---|
| 498 | +int |
---|
| 499 | +dhd_rtt_cancel_responder(dhd_pub_t *dhd); |
---|
| 500 | + |
---|
| 501 | +int |
---|
334 | 502 | dhd_rtt_init(dhd_pub_t *dhd); |
---|
335 | 503 | |
---|
336 | 504 | int |
---|
337 | 505 | dhd_rtt_deinit(dhd_pub_t *dhd); |
---|
338 | | -#endif /* RTT_SUPPORT */ |
---|
| 506 | + |
---|
| 507 | +#ifdef WL_CFG80211 |
---|
| 508 | +int dhd_rtt_handle_nan_rtt_session_end(dhd_pub_t *dhd, |
---|
| 509 | + struct ether_addr *peer); |
---|
| 510 | + |
---|
| 511 | +void dhd_rtt_move_geofence_cur_target_idx_to_next(dhd_pub_t *dhd); |
---|
| 512 | + |
---|
| 513 | +int8 dhd_rtt_get_geofence_cur_target_idx(dhd_pub_t *dhd); |
---|
| 514 | +#endif /* WL_CFG80211 */ |
---|
| 515 | + |
---|
339 | 516 | #endif /* __DHD_RTT_H__ */ |
---|