Lines Matching refs:rtt_status
210 static int dhd_rtt_create_failure_result(rtt_status_info_t *rtt_status,
214 static bool dhd_rtt_get_report_header(rtt_status_info_t *rtt_status,
1300 rtt_status_info_t *rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_nan_is_directed_setup_in_prog() local
1302 setup_in_prog = rtt_status->directed_cfg.directed_setup_status.directed_na_setup_inprog; in dhd_rtt_nan_is_directed_setup_in_prog()
1312 rtt_status_info_t *rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_nan_is_directed_setup_in_prog_with_peer() local
1325 (ranging_inst != rtt_status->directed_cfg.directed_setup_status.rng_inst)) { in dhd_rtt_nan_is_directed_setup_in_prog_with_peer()
1337 rtt_status_info_t *rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_nan_update_directed_setup_inprog() local
1339 rtt_status->directed_cfg.directed_setup_status.directed_na_setup_inprog = inprog; in dhd_rtt_nan_update_directed_setup_inprog()
1342 rtt_status->directed_cfg.directed_setup_status.rng_inst = rng_inst; in dhd_rtt_nan_update_directed_setup_inprog()
1344 rtt_status->directed_cfg.directed_setup_status.rng_inst = NULL; in dhd_rtt_nan_update_directed_setup_inprog()
1353 rtt_status_info_t *rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_nan_directed_sessions_allowed() local
1355 max_sessions = rtt_status->max_nan_rtt_sessions; in dhd_rtt_nan_directed_sessions_allowed()
1361 if (rtt_status->directed_cfg.directed_sessions_cnt >= max_sessions) { in dhd_rtt_nan_directed_sessions_allowed()
1372 rtt_status_info_t *rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_nan_all_directed_sessions_triggered() local
1374 if ((rtt_status->cur_idx + 1) >= rtt_status->rtt_config.rtt_target_cnt) { in dhd_rtt_nan_all_directed_sessions_triggered()
1386 rtt_status_info_t *rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_nan_update_directed_sessions_cnt() local
1389 rtt_status->directed_cfg.directed_sessions_cnt++; in dhd_rtt_nan_update_directed_sessions_cnt()
1391 rtt_status->directed_cfg.directed_sessions_cnt--; in dhd_rtt_nan_update_directed_sessions_cnt()
1427 rtt_status_info_t *rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_nan_start_session() local
1431 if (!rtt_status) { in dhd_rtt_nan_start_session()
1602 rtt_status_info_t *rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_get_cur_target_idx() local
1604 return rtt_status->cur_idx; in dhd_rtt_get_cur_target_idx()
1611 rtt_status_info_t *rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_set_next_target_idx() local
1613 for (idx = start_idx; idx < rtt_status->rtt_config.rtt_target_cnt; idx++) { in dhd_rtt_set_next_target_idx()
1615 if (rtt_status->rtt_config.target_info[idx].disable) { in dhd_rtt_set_next_target_idx()
1619 rtt_status->cur_idx = idx; in dhd_rtt_set_next_target_idx()
1624 if (idx == rtt_status->rtt_config.rtt_target_cnt) { in dhd_rtt_set_next_target_idx()
1626 rtt_status->cur_idx = rtt_status->rtt_config.rtt_target_cnt; in dhd_rtt_set_next_target_idx()
1629 return (int8)rtt_status->cur_idx; in dhd_rtt_set_next_target_idx()
1638 rtt_status_info_t *rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_set_target_list_mode() local
1640 rtt_status->rtt_config.target_list_mode = RNG_TARGET_LIST_MODE_INVALID; in dhd_rtt_set_target_list_mode()
1641 for (idx = rtt_status->start_idx; idx < rtt_status->rtt_config.rtt_target_cnt; idx++) { in dhd_rtt_set_target_list_mode()
1642 rtt_target = &rtt_status->rtt_config.target_info[idx]; in dhd_rtt_set_target_list_mode()
1656 rtt_status->rtt_config.target_list_mode = RNG_TARGET_LIST_MODE_MIX; in dhd_rtt_set_target_list_mode()
1658 rtt_status->rtt_config.target_list_mode = RNG_TARGET_LIST_MODE_NAN; in dhd_rtt_set_target_list_mode()
1660 rtt_status->rtt_config.target_list_mode = RNG_TARGET_LIST_MODE_LEGACY; in dhd_rtt_set_target_list_mode()
1668 rtt_status_info_t *rtt_status = NULL; in dhd_rtt_set_cfg() local
1675 rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_set_cfg()
1676 NULL_CHECK(rtt_status, "rtt_status is NULL", err); in dhd_rtt_set_cfg()
1681 if (!HAS_11MC_CAP(rtt_status->rtt_capa.proto)) { in dhd_rtt_set_cfg()
1692 cancel_work_sync(&rtt_status->work); in dhd_rtt_set_cfg()
1694 mutex_lock(&rtt_status->rtt_mutex); in dhd_rtt_set_cfg()
1696 if (rtt_status->status != RTT_STOPPED) { in dhd_rtt_set_cfg()
1697 DHD_RTT_ERR(("rtt is already started, status : %d\n", rtt_status->status)); in dhd_rtt_set_cfg()
1712 memset(rtt_status->rtt_config.target_info, 0, TARGET_INFO_SIZE(RTT_MAX_TARGET_CNT)); in dhd_rtt_set_cfg()
1713 rtt_status->rtt_config.rtt_target_cnt = params->rtt_target_cnt; in dhd_rtt_set_cfg()
1714 memcpy(rtt_status->rtt_config.target_info, in dhd_rtt_set_cfg()
1716 rtt_status->status = RTT_STARTED; in dhd_rtt_set_cfg()
1720 rtt_status->start_idx = dhd_rtt_set_next_target_idx(dhd, 0); in dhd_rtt_set_cfg()
1724 if (rtt_status->cur_idx < rtt_status->rtt_config.rtt_target_cnt) { in dhd_rtt_set_cfg()
1726 if (rtt_status->rtt_config.target_list_mode == RNG_TARGET_LIST_MODE_NAN) { in dhd_rtt_set_cfg()
1729 rtt_status->directed_cfg.directed_sessions_cnt = 0; in dhd_rtt_set_cfg()
1736 schedule_delayed_work(&rtt_status->proxd_timeout, in dhd_rtt_set_cfg()
1744 mutex_unlock(&rtt_status->rtt_mutex); in dhd_rtt_set_cfg()
1752 rtt_status_info_t *rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_initialize_geofence_cfg() local
1753 if (!rtt_status) { in dhd_rtt_initialize_geofence_cfg()
1757 GEOFENCE_RTT_LOCK(rtt_status); in dhd_rtt_initialize_geofence_cfg()
1758 memset_s(&rtt_status->geofence_cfg, sizeof(rtt_status->geofence_cfg), in dhd_rtt_initialize_geofence_cfg()
1759 0, sizeof(rtt_status->geofence_cfg)); in dhd_rtt_initialize_geofence_cfg()
1762 rtt_status->geofence_cfg.cur_target_idx = DHD_RTT_INVALID_TARGET_INDEX; in dhd_rtt_initialize_geofence_cfg()
1763 rtt_status->geofence_cfg.geofence_rtt_interval = DHD_RTT_RETRY_TIMER_INTERVAL_MS; in dhd_rtt_initialize_geofence_cfg()
1764 rtt_status->geofence_cfg.geofence_sessions_cnt = 0; in dhd_rtt_initialize_geofence_cfg()
1766 rtt_status->geofence_cfg.max_geofence_sessions = in dhd_rtt_initialize_geofence_cfg()
1768 GEOFENCE_RTT_UNLOCK(rtt_status); in dhd_rtt_initialize_geofence_cfg()
1776 rtt_status_info_t *rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_get_geofence_cont_ind() local
1777 if (!rtt_status) { in dhd_rtt_get_geofence_cont_ind()
1780 GEOFENCE_RTT_LOCK(rtt_status); in dhd_rtt_get_geofence_cont_ind()
1781 *geofence_cont = rtt_status->geofence_cfg.geofence_cont; in dhd_rtt_get_geofence_cont_ind()
1782 GEOFENCE_RTT_UNLOCK(rtt_status); in dhd_rtt_get_geofence_cont_ind()
1788 rtt_status_info_t *rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_set_geofence_cont_ind() local
1789 if (!rtt_status) { in dhd_rtt_set_geofence_cont_ind()
1792 GEOFENCE_RTT_LOCK(rtt_status); in dhd_rtt_set_geofence_cont_ind()
1793 rtt_status->geofence_cfg.geofence_cont = geofence_cont; in dhd_rtt_set_geofence_cont_ind()
1795 rtt_status->geofence_cfg.geofence_cont)); in dhd_rtt_set_geofence_cont_ind()
1796 GEOFENCE_RTT_UNLOCK(rtt_status); in dhd_rtt_set_geofence_cont_ind()
1804 rtt_status_info_t *rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_set_geofence_rtt_interval() local
1805 if (!rtt_status) { in dhd_rtt_set_geofence_rtt_interval()
1808 GEOFENCE_RTT_LOCK(rtt_status); in dhd_rtt_set_geofence_rtt_interval()
1809 rtt_status->geofence_cfg.geofence_rtt_interval = interval; in dhd_rtt_set_geofence_rtt_interval()
1811 rtt_status->geofence_cfg.geofence_rtt_interval)); in dhd_rtt_set_geofence_rtt_interval()
1812 GEOFENCE_RTT_UNLOCK(rtt_status); in dhd_rtt_set_geofence_rtt_interval()
1820 rtt_status_info_t *rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_get_geofence_max_sessions() local
1821 rtt_geofence_cfg_t* geofence_cfg = &rtt_status->geofence_cfg; in dhd_rtt_get_geofence_max_sessions()
1839 rtt_status_info_t *rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_geofence_sessions_maxed_out() local
1840 rtt_geofence_cfg_t* geofence_cfg = &rtt_status->geofence_cfg; in dhd_rtt_geofence_sessions_maxed_out()
1855 rtt_status_info_t *rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_get_geofence_sessions_cnt() local
1856 rtt_geofence_cfg_t* geofence_cfg = &rtt_status->geofence_cfg; in dhd_rtt_get_geofence_sessions_cnt()
1865 rtt_status_info_t *rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_update_geofence_sessions_cnt() local
1866 rtt_geofence_cfg_t* geofence_cfg = &rtt_status->geofence_cfg; in dhd_rtt_update_geofence_sessions_cnt()
1907 rtt_status_info_t *rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_get_geofence_target_cnt() local
1908 if (!rtt_status) { in dhd_rtt_get_geofence_target_cnt()
1911 return rtt_status->geofence_cfg.geofence_target_cnt; in dhd_rtt_get_geofence_target_cnt()
1918 rtt_status_info_t *rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_get_geofence_target_head() local
1921 if (!rtt_status) { in dhd_rtt_get_geofence_target_head()
1925 if (rtt_status->geofence_cfg.geofence_target_cnt) { in dhd_rtt_get_geofence_target_head()
1926 head = &rtt_status->geofence_cfg.geofence_target_info[0]; in dhd_rtt_get_geofence_target_head()
1936 rtt_status_info_t *rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_get_geofence_cur_target_idx() local
1938 if (!rtt_status) { in dhd_rtt_get_geofence_cur_target_idx()
1942 target_cnt = rtt_status->geofence_cfg.geofence_target_cnt; in dhd_rtt_get_geofence_cur_target_idx()
1947 cur_idx = rtt_status->geofence_cfg.cur_target_idx; in dhd_rtt_get_geofence_cur_target_idx()
1964 rtt_status_info_t *rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_set_geofence_cur_target_idx() local
1966 target_cnt = rtt_status->geofence_cfg.geofence_target_cnt; in dhd_rtt_set_geofence_cur_target_idx()
1968 rtt_status->geofence_cfg.cur_target_idx = idx; in dhd_rtt_set_geofence_cur_target_idx()
1975 rtt_status_info_t *rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_move_geofence_cur_target_idx_to_next() local
1977 if (!rtt_status) { in dhd_rtt_move_geofence_cur_target_idx_to_next()
1981 if (rtt_status->geofence_cfg.geofence_target_cnt == 0) { in dhd_rtt_move_geofence_cur_target_idx_to_next()
1983 rtt_status->geofence_cfg.cur_target_idx = in dhd_rtt_move_geofence_cur_target_idx_to_next()
1986 if (delayed_work_pending(&rtt_status->rtt_retry_timer)) { in dhd_rtt_move_geofence_cur_target_idx_to_next()
1987 cancel_delayed_work(&rtt_status->rtt_retry_timer); in dhd_rtt_move_geofence_cur_target_idx_to_next()
1991 rtt_status->geofence_cfg.cur_target_idx++; in dhd_rtt_move_geofence_cur_target_idx_to_next()
1993 if (rtt_status->geofence_cfg.cur_target_idx >= in dhd_rtt_move_geofence_cur_target_idx_to_next()
1994 rtt_status->geofence_cfg.geofence_target_cnt) { in dhd_rtt_move_geofence_cur_target_idx_to_next()
1996 rtt_status->geofence_cfg.cur_target_idx = 0; in dhd_rtt_move_geofence_cur_target_idx_to_next()
2004 rtt_status_info_t *rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_get_geofence_current_target() local
2008 if (!rtt_status) { in dhd_rtt_get_geofence_current_target()
2014 cur_target = &rtt_status->geofence_cfg.geofence_target_info[cur_idx]; in dhd_rtt_get_geofence_current_target()
2025 rtt_status_info_t *rtt_status; in dhd_rtt_get_geofence_target() local
2029 rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_get_geofence_target()
2031 if (!rtt_status) { in dhd_rtt_get_geofence_target()
2035 target_cnt = rtt_status->geofence_cfg.geofence_target_cnt; in dhd_rtt_get_geofence_target()
2036 geofence_target_info = rtt_status->geofence_cfg.geofence_target_info; in dhd_rtt_get_geofence_target()
2061 rtt_status_info_t *rtt_status; in dhd_rtt_add_geofence_target() local
2066 rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_add_geofence_target()
2067 NULL_CHECK(rtt_status, "rtt_status is NULL", err); in dhd_rtt_add_geofence_target()
2069 GEOFENCE_RTT_LOCK(rtt_status); in dhd_rtt_add_geofence_target()
2079 geofence_target_cnt = rtt_status->geofence_cfg.geofence_target_cnt; in dhd_rtt_add_geofence_target()
2087 geofence_target_info = rtt_status->geofence_cfg.geofence_target_info; in dhd_rtt_add_geofence_target()
2093 rtt_status->geofence_cfg.geofence_target_cnt++; in dhd_rtt_add_geofence_target()
2094 if (rtt_status->geofence_cfg.geofence_target_cnt == 1) { in dhd_rtt_add_geofence_target()
2096 rtt_status->geofence_cfg.cur_target_idx = 0; in dhd_rtt_add_geofence_target()
2101 rtt_status->geofence_cfg.cur_target_idx, in dhd_rtt_add_geofence_target()
2102 rtt_status->geofence_cfg.geofence_target_cnt)); in dhd_rtt_add_geofence_target()
2105 GEOFENCE_RTT_UNLOCK(rtt_status); in dhd_rtt_add_geofence_target()
2114 rtt_status_info_t *rtt_status; in dhd_rtt_remove_geofence_target() local
2121 rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_remove_geofence_target()
2122 NULL_CHECK(rtt_status, "rtt_status is NULL", err); in dhd_rtt_remove_geofence_target()
2127 GEOFENCE_RTT_LOCK(rtt_status); in dhd_rtt_remove_geofence_target()
2158 rtt_status->geofence_cfg.geofence_target_cnt--; in dhd_rtt_remove_geofence_target()
2159 if (rtt_status->geofence_cfg.geofence_target_cnt == 0) { in dhd_rtt_remove_geofence_target()
2160 rtt_status->geofence_cfg.cur_target_idx = in dhd_rtt_remove_geofence_target()
2163 if (rtt_status->geofence_cfg.geofence_target_cnt == in dhd_rtt_remove_geofence_target()
2164 rtt_status->geofence_cfg.cur_target_idx) { in dhd_rtt_remove_geofence_target()
2170 rtt_status->geofence_cfg.cur_target_idx = 0; in dhd_rtt_remove_geofence_target()
2177 rtt_status->geofence_cfg.cur_target_idx, in dhd_rtt_remove_geofence_target()
2178 rtt_status->geofence_cfg.geofence_target_cnt)); in dhd_rtt_remove_geofence_target()
2181 GEOFENCE_RTT_UNLOCK(rtt_status); in dhd_rtt_remove_geofence_target()
2189 rtt_status_info_t *rtt_status; in dhd_rtt_delete_geofence_target_list() local
2194 rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_delete_geofence_target_list()
2195 NULL_CHECK(rtt_status, "rtt_status is NULL", err); in dhd_rtt_delete_geofence_target_list()
2196 GEOFENCE_RTT_LOCK(rtt_status); in dhd_rtt_delete_geofence_target_list()
2197 memset_s(&rtt_status->geofence_cfg, sizeof(rtt_geofence_cfg_t), in dhd_rtt_delete_geofence_target_list()
2199 GEOFENCE_RTT_UNLOCK(rtt_status); in dhd_rtt_delete_geofence_target_list()
2206 rtt_status_info_t *rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_get_geofence_setup_status() local
2207 rtt_geofence_cfg_t* geofence_cfg = &rtt_status->geofence_cfg; in dhd_rtt_get_geofence_setup_status()
2284 rtt_status_info_t *rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_sched_geofencing_target() local
2285 rtt_geofence_cfg_t* geofence_cfg = &rtt_status->geofence_cfg; in dhd_rtt_sched_geofencing_target()
2297 rtt_status->rtt_sched_reason, geofence_cfg->geofence_sessions_cnt, in dhd_rtt_sched_geofencing_target()
2298 rtt_status->geofence_cfg.cur_target_idx)); in dhd_rtt_sched_geofencing_target()
2378 rtt_status_info_t *rtt_status = NULL; in dhd_rtt_retry_work() local
2390 rtt_status = container_of(work, rtt_status_info_t, rtt_retry_timer.work); in dhd_rtt_retry_work()
2395 dhd = rtt_status->dhd; in dhd_rtt_retry_work()
2453 rtt_status_info_t *rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_schedule_rtt_work_thread() local
2454 if (rtt_status == NULL) { in dhd_rtt_schedule_rtt_work_thread()
2457 rtt_status->rtt_sched_reason = sched_reason; in dhd_rtt_schedule_rtt_work_thread()
2458 rtt_status->rtt_sched = TRUE; in dhd_rtt_schedule_rtt_work_thread()
2459 schedule_work(&rtt_status->work); in dhd_rtt_schedule_rtt_work_thread()
2470 rtt_status_info_t *rtt_status; in dhd_rtt_stop() local
2476 rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_stop()
2477 NULL_CHECK(rtt_status, "rtt_status is NULL", err); in dhd_rtt_stop()
2478 if (rtt_status->status == RTT_STOPPED) { in dhd_rtt_stop()
2483 mutex_lock(&rtt_status->rtt_mutex); in dhd_rtt_stop()
2485 for (j = 0; j < rtt_status->rtt_config.rtt_target_cnt; j++) { in dhd_rtt_stop()
2486 if (!bcmp(&mac_list[i], &rtt_status->rtt_config.target_info[j].addr, in dhd_rtt_stop()
2488 rtt_status->rtt_config.target_info[j].disable = TRUE; in dhd_rtt_stop()
2492 if (rtt_status->all_cancel) { in dhd_rtt_stop()
2494 rtt_status->status = RTT_STOPPED; in dhd_rtt_stop()
2497 if (!list_empty(&rtt_status->rtt_results_cache)) { in dhd_rtt_stop()
2501 &rtt_status->rtt_results_cache, list) { in dhd_rtt_stop()
2516 list_for_each_entry(iter, &rtt_status->noti_fn_list, list) { in dhd_rtt_stop()
2518 iter->noti_fn(iter->ctx, &rtt_status->rtt_results_cache); in dhd_rtt_stop()
2521 INIT_LIST_HEAD(&rtt_status->rtt_results_cache); in dhd_rtt_stop()
2523 rtt_status->rtt_config.rtt_target_cnt = 0; in dhd_rtt_stop()
2524 memset(rtt_status->rtt_config.target_info, 0, in dhd_rtt_stop()
2526 rtt_status->cur_idx = 0; in dhd_rtt_stop()
2528 if (delayed_work_pending(&rtt_status->proxd_timeout)) { in dhd_rtt_stop()
2529 cancel_delayed_work(&rtt_status->proxd_timeout); in dhd_rtt_stop()
2537 mutex_unlock(&rtt_status->rtt_mutex); in dhd_rtt_stop()
2546 rtt_status_info_t *rtt_status; in dhd_rtt_timeout() local
2560 rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_timeout()
2561 if (!rtt_status) { in dhd_rtt_timeout()
2566 if (RTT_IS_STOPPED(rtt_status)) { in dhd_rtt_timeout()
2587 if (rtt_status->rtt_config.target_list_mode == RNG_TARGET_LIST_MODE_NAN) { in dhd_rtt_timeout()
2588 for (idx = rtt_status->start_idx; in dhd_rtt_timeout()
2589 idx < rtt_status->rtt_config.rtt_target_cnt; idx++) { in dhd_rtt_timeout()
2590 rtt_target = &rtt_status->rtt_config.target_info[idx]; in dhd_rtt_timeout()
2592 (!dhd_rtt_get_report_header(rtt_status, in dhd_rtt_timeout()
2606 dhd_rtt_create_failure_result(rtt_status, &rtt_target->addr); in dhd_rtt_timeout()
2611 rtt_status->directed_cfg.directed_setup_status.rng_inst = NULL; in dhd_rtt_timeout()
2612 rtt_status->directed_cfg.directed_setup_status.directed_na_setup_inprog = FALSE; in dhd_rtt_timeout()
2613 rtt_status->directed_cfg.directed_sessions_cnt = 0; in dhd_rtt_timeout()
2618 rtt_target_info = rtt_status->rtt_config.target_info; in dhd_rtt_timeout()
2620 (rtt_status->cur_idx >= rtt_status->rtt_config.rtt_target_cnt)) { in dhd_rtt_timeout()
2623 rtt_target = &rtt_target_info[rtt_status->cur_idx]; in dhd_rtt_timeout()
2628 dhd_rtt_create_failure_result(rtt_status, &rtt_target->addr); in dhd_rtt_timeout()
2639 rtt_status_info_t *rtt_status = NULL; in dhd_rtt_timeout_work() local
2646 rtt_status = container_of(work, rtt_status_info_t, proxd_timeout.work); in dhd_rtt_timeout_work()
2651 dhd = rtt_status->dhd; in dhd_rtt_timeout_work()
2657 mutex_lock(&rtt_status->rtt_mutex); in dhd_rtt_timeout_work()
2659 mutex_unlock(&rtt_status->rtt_mutex); in dhd_rtt_timeout_work()
2885 rtt_status_info_t *rtt_status; in dhd_rtt_start() local
2893 rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_start()
2894 NULL_CHECK(rtt_status, "rtt_status is NULL", err); in dhd_rtt_start()
2898 if (RTT_IS_STOPPED(rtt_status)) { in dhd_rtt_start()
2903 if (rtt_status->cur_idx >= rtt_status->rtt_config.rtt_target_cnt) { in dhd_rtt_start()
2906 DHD_RTT(("%s : idx %d is out of range\n", __FUNCTION__, rtt_status->cur_idx)); in dhd_rtt_start()
2907 if (rtt_status->flags == WL_PROXD_SESSION_FLAG_TARGET) { in dhd_rtt_start()
2915 rtt_target = &rtt_status->rtt_config.target_info[rtt_status->cur_idx]; in dhd_rtt_start()
2942 rtt_status->status = RTT_ENABLED; in dhd_rtt_start()
3062 schedule_delayed_work(&rtt_status->proxd_timeout, in dhd_rtt_start()
3085 rtt_status->rtt_sched_reason)); in dhd_rtt_start()
3086 rtt_status->status = RTT_STOPPED; in dhd_rtt_start()
3090 rtt_status->rtt_sched = FALSE; in dhd_rtt_start()
3100 rtt_status_info_t *rtt_status; in dhd_rtt_register_noti_callback() local
3104 rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_register_noti_callback()
3105 NULL_CHECK(rtt_status, "rtt_status is NULL", err); in dhd_rtt_register_noti_callback()
3108 list_for_each_entry(iter, &rtt_status->noti_fn_list, list) { in dhd_rtt_register_noti_callback()
3121 list_add(&cb->list, &rtt_status->noti_fn_list); in dhd_rtt_register_noti_callback()
3132 rtt_status_info_t *rtt_status; in dhd_rtt_unregister_noti_callback() local
3135 rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_unregister_noti_callback()
3136 NULL_CHECK(rtt_status, "rtt_status is NULL", err); in dhd_rtt_unregister_noti_callback()
3139 list_for_each_entry(iter, &rtt_status->noti_fn_list, list) { in dhd_rtt_unregister_noti_callback()
3680 rtt_status_info_t *rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_all_directed_targets_done() local
3682 for (idx = rtt_status->start_idx; idx < rtt_status->rtt_config.rtt_target_cnt; idx++) { in dhd_rtt_all_directed_targets_done()
3683 if (!rtt_status->rtt_config.target_info[idx].disable) { in dhd_rtt_all_directed_targets_done()
3684 if (!dhd_rtt_get_report_header(rtt_status, in dhd_rtt_all_directed_targets_done()
3685 NULL, &rtt_status->rtt_config.target_info[idx].addr)) { in dhd_rtt_all_directed_targets_done()
3703 rtt_status_info_t *rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_handle_rtt_session_end() local
3713 rtt_status->status = RTT_STOPPED; in dhd_rtt_handle_rtt_session_end()
3716 list_for_each_entry(iter, &rtt_status->noti_fn_list, list) { in dhd_rtt_handle_rtt_session_end()
3717 iter->noti_fn(iter->ctx, &rtt_status->rtt_results_cache); in dhd_rtt_handle_rtt_session_end()
3720 if (!list_empty(&rtt_status->rtt_results_cache)) { in dhd_rtt_handle_rtt_session_end()
3723 &rtt_status->rtt_results_cache, list) { in dhd_rtt_handle_rtt_session_end()
3737 INIT_LIST_HEAD(&rtt_status->rtt_results_cache); in dhd_rtt_handle_rtt_session_end()
3739 rtt_status->rtt_config.rtt_target_cnt = 0; in dhd_rtt_handle_rtt_session_end()
3740 memset_s(rtt_status->rtt_config.target_info, TARGET_INFO_SIZE(RTT_MAX_TARGET_CNT), in dhd_rtt_handle_rtt_session_end()
3742 rtt_status->cur_idx = 0; in dhd_rtt_handle_rtt_session_end()
3745 if (delayed_work_pending(&rtt_status->proxd_timeout)) { in dhd_rtt_handle_rtt_session_end()
3746 cancel_delayed_work(&rtt_status->proxd_timeout); in dhd_rtt_handle_rtt_session_end()
3755 if (rtt_status->rtt_config.target_list_mode == RNG_TARGET_LIST_MODE_LEGACY) { in dhd_rtt_handle_rtt_session_end()
3759 if (delayed_work_pending(&rtt_status->proxd_timeout)) { in dhd_rtt_handle_rtt_session_end()
3760 cancel_delayed_work(&rtt_status->proxd_timeout); in dhd_rtt_handle_rtt_session_end()
3763 dhd_rtt_set_next_target_idx(dhd, (rtt_status->cur_idx + 1)); in dhd_rtt_handle_rtt_session_end()
3764 if (rtt_status->cur_idx < rtt_status->rtt_config.rtt_target_cnt) { in dhd_rtt_handle_rtt_session_end()
3767 rtt_status->rtt_sched = TRUE; in dhd_rtt_handle_rtt_session_end()
3768 schedule_work(&rtt_status->work); in dhd_rtt_handle_rtt_session_end()
3772 else if (rtt_status->rtt_config.target_list_mode == RNG_TARGET_LIST_MODE_NAN) { in dhd_rtt_handle_rtt_session_end()
3783 dhd_rtt_create_failure_result(rtt_status_info_t *rtt_status, in dhd_rtt_create_failure_result() argument
3792 rtt_results_header = (rtt_results_header_t *)MALLOCZ(rtt_status->dhd->osh, in dhd_rtt_create_failure_result()
3798 rtt_target_info = &rtt_status->rtt_config.target_info[rtt_status->cur_idx]; in dhd_rtt_create_failure_result()
3804 list_add_tail(&rtt_results_header->list, &rtt_status->rtt_results_cache); in dhd_rtt_create_failure_result()
3807 rtt_result = (rtt_result_t *)MALLOCZ(rtt_status->dhd->osh, in dhd_rtt_create_failure_result()
3812 MFREE(rtt_status->dhd->osh, rtt_results_header, sizeof(rtt_results_header_t)); in dhd_rtt_create_failure_result()
3833 dhd_rtt_get_report_header(rtt_status_info_t *rtt_status, in dhd_rtt_get_report_header() argument
3839 list_for_each_entry(entry, &rtt_status->rtt_results_cache, list) { in dhd_rtt_get_report_header()
3857 rtt_status_info_t *rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_handle_nan_rtt_session_end() local
3858 mutex_lock(&rtt_status->rtt_mutex); in dhd_rtt_handle_nan_rtt_session_end()
3859 is_new = !dhd_rtt_get_report_header(rtt_status, NULL, peer); in dhd_rtt_handle_nan_rtt_session_end()
3862 dhd_rtt_create_failure_result(rtt_status, peer); in dhd_rtt_handle_nan_rtt_session_end()
3866 mutex_unlock(&rtt_status->rtt_mutex); in dhd_rtt_handle_nan_rtt_session_end()
3930 rtt_status_info_t *rtt_status; in dhd_rtt_handle_directed_rtt_burst_end() local
3936 rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_handle_directed_rtt_burst_end()
3937 is_new = !dhd_rtt_get_report_header(rtt_status, in dhd_rtt_handle_directed_rtt_burst_end()
3943 rtt_results_header = (rtt_results_header_t *)MALLOCZ(rtt_status->dhd->osh, in dhd_rtt_handle_directed_rtt_burst_end()
3955 list_add_tail(&rtt_results_header->list, &rtt_status->rtt_results_cache); in dhd_rtt_handle_directed_rtt_burst_end()
3996 int rtt_status; in dhd_rtt_nan_range_report() local
4003 rtt_status = rtt_result->report.status; in dhd_rtt_nan_range_report()
4009 wl_cfgnan_process_range_report(cfg, &range_res, rtt_status); in dhd_rtt_nan_range_report()
4021 rtt_status_info_t *rtt_status = NULL; in dhd_rtt_handle_nan_burst_end() local
4032 rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_handle_nan_burst_end()
4033 NULL_CHECK(rtt_status, "rtt_status is NULL", ret); in dhd_rtt_handle_nan_burst_end()
4035 mutex_lock(&rtt_status->rtt_mutex); in dhd_rtt_handle_nan_burst_end()
4084 if (RTT_IS_STOPPED(rtt_status)) { in dhd_rtt_handle_nan_burst_end()
4087 if (rtt_status->flags == WL_PROXD_SESSION_FLAG_TARGET) { in dhd_rtt_handle_nan_burst_end()
4109 mutex_unlock(&rtt_status->rtt_mutex); in dhd_rtt_handle_nan_burst_end()
4141 rtt_status_info_t *rtt_status; in dhd_rtt_event_handler() local
4207 rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_event_handler()
4208 NULL_CHECK(rtt_status, "rtt_status is NULL", ret); in dhd_rtt_event_handler()
4209 mutex_lock(&rtt_status->rtt_mutex); in dhd_rtt_event_handler()
4211 if (RTT_IS_STOPPED(rtt_status)) { in dhd_rtt_event_handler()
4214 if (rtt_status->flags == WL_PROXD_SESSION_FLAG_TARGET) { in dhd_rtt_event_handler()
4223 target = &rtt_status->rtt_config.target_info[rtt_status->cur_idx]; in dhd_rtt_event_handler()
4235 is_new = !dhd_rtt_get_report_header(rtt_status, in dhd_rtt_event_handler()
4276 if (!RTT_IS_ENABLED(rtt_status)) { in dhd_rtt_event_handler()
4295 dhd_rtt_create_failure_result(rtt_status, &event->addr); in dhd_rtt_event_handler()
4370 mutex_unlock(&rtt_status->rtt_mutex); in dhd_rtt_event_handler()
4380 rtt_status_info_t *rtt_status; in dhd_rtt_work() local
4384 rtt_status = container_of(work, rtt_status_info_t, work); in dhd_rtt_work()
4387 dhd = rtt_status->dhd; in dhd_rtt_work()
4399 rtt_status_info_t *rtt_status; in dhd_rtt_capability() local
4402 rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_capability()
4403 NULL_CHECK(rtt_status, "rtt_status is NULL", err); in dhd_rtt_capability()
4408 if (rtt_status->rtt_capa.proto & RTT_CAP_ONE_WAY) in dhd_rtt_capability()
4410 if (rtt_status->rtt_capa.proto & RTT_CAP_FTM_WAY) in dhd_rtt_capability()
4413 if (rtt_status->rtt_capa.feature & RTT_FEATURE_LCI) in dhd_rtt_capability()
4415 if (rtt_status->rtt_capa.feature & RTT_FEATURE_LCR) in dhd_rtt_capability()
4417 if (rtt_status->rtt_capa.feature & RTT_FEATURE_PREAMBLE) in dhd_rtt_capability()
4419 if (rtt_status->rtt_capa.feature & RTT_FEATURE_BW) in dhd_rtt_capability()
4423 capa->preamble_support = rtt_status->rtt_capa.preamble; in dhd_rtt_capability()
4424 capa->bw_support = rtt_status->rtt_capa.bw; in dhd_rtt_capability()
4487 rtt_status_info_t *rtt_status; in dhd_rtt_enable_responder() local
4492 rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_enable_responder()
4493 NULL_CHECK(rtt_status, "rtt_status is NULL", err); in dhd_rtt_enable_responder()
4494 if (RTT_IS_STOPPED(rtt_status)) { in dhd_rtt_enable_responder()
4517 rtt_status->pm = PM_OFF; in dhd_rtt_enable_responder()
4518 err = wldev_ioctl_get(dev, WLC_GET_PM, &rtt_status->pm, sizeof(rtt_status->pm)); in dhd_rtt_enable_responder()
4519 DHD_RTT(("Current PM value read %d\n", rtt_status->pm)); in dhd_rtt_enable_responder()
4526 rtt_status->pm_restore = FALSE; in dhd_rtt_enable_responder()
4528 rtt_status->pm_restore = TRUE; in dhd_rtt_enable_responder()
4531 if (!RTT_IS_ENABLED(rtt_status)) { in dhd_rtt_enable_responder()
4539 rtt_status->status = RTT_ENABLED; in dhd_rtt_enable_responder()
4545 rtt_status->flags = WL_PROXD_SESSION_FLAG_TARGET; in dhd_rtt_enable_responder()
4551 rtt_status->status = RTT_STOPPED; in dhd_rtt_enable_responder()
4555 if (rtt_status->pm_restore) { in dhd_rtt_enable_responder()
4561 rtt_status->pm_restore = FALSE; in dhd_rtt_enable_responder()
4572 rtt_status_info_t *rtt_status; in dhd_rtt_cancel_responder() local
4577 rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_cancel_responder()
4578 NULL_CHECK(rtt_status, "rtt_status is NULL", err); in dhd_rtt_cancel_responder()
4584 rtt_status->status = RTT_STOPPED; in dhd_rtt_cancel_responder()
4585 if (rtt_status->pm_restore) { in dhd_rtt_cancel_responder()
4587 DHD_RTT(("pm_restore =%d \n", rtt_status->pm_restore)); in dhd_rtt_cancel_responder()
4592 rtt_status->pm_restore = FALSE; in dhd_rtt_cancel_responder()
4638 rtt_status_info_t *rtt_status = NULL; in dhd_rtt_attach() local
4653 rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_attach()
4654 rtt_status->rtt_config.target_info = in dhd_rtt_attach()
4657 if (rtt_status->rtt_config.target_info == NULL) { in dhd_rtt_attach()
4663 rtt_status->dhd = dhd; in dhd_rtt_attach()
4664 mutex_init(&rtt_status->rtt_mutex); in dhd_rtt_attach()
4665 mutex_init(&rtt_status->geofence_mutex); in dhd_rtt_attach()
4666 INIT_LIST_HEAD(&rtt_status->noti_fn_list); in dhd_rtt_attach()
4667 INIT_LIST_HEAD(&rtt_status->rtt_results_cache); in dhd_rtt_attach()
4668 INIT_WORK(&rtt_status->work, dhd_rtt_work); in dhd_rtt_attach()
4670 INIT_DELAYED_WORK(&rtt_status->proxd_timeout, dhd_rtt_timeout_work); in dhd_rtt_attach()
4673 INIT_DELAYED_WORK(&rtt_status->rtt_retry_timer, dhd_rtt_retry_work); in dhd_rtt_attach()
4677 MFREE(dhd->osh, rtt_status->rtt_config.target_info, in dhd_rtt_attach()
4695 rtt_status_info_t *rtt_status; in dhd_rtt_detach() local
4698 rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_detach()
4699 NULL_CHECK(rtt_status, "rtt_status is NULL", err); in dhd_rtt_detach()
4709 MFREE(dhd->osh, rtt_status->rtt_config.target_info, in dhd_rtt_detach()
4728 rtt_status_info_t *rtt_status; in dhd_rtt_init() local
4731 rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_init()
4732 NULL_CHECK(rtt_status, "rtt_status is NULL", err); in dhd_rtt_init()
4742 rtt_status->rtt_capa.proto |= RTT_CAP_FTM_WAY; in dhd_rtt_init()
4745 rtt_status->rtt_capa.feature |= RTT_FEATURE_LCI; in dhd_rtt_init()
4746 rtt_status->rtt_capa.feature |= RTT_FEATURE_LCR; in dhd_rtt_init()
4747 rtt_status->rtt_capa.feature |= RTT_FEATURE_PREAMBLE; in dhd_rtt_init()
4748 rtt_status->rtt_capa.preamble |= RTT_PREAMBLE_VHT; in dhd_rtt_init()
4749 rtt_status->rtt_capa.preamble |= RTT_PREAMBLE_HT; in dhd_rtt_init()
4752 rtt_status->rtt_capa.feature |= RTT_FEATURE_BW; in dhd_rtt_init()
4753 rtt_status->rtt_capa.bw |= RTT_BW_20; in dhd_rtt_init()
4754 rtt_status->rtt_capa.bw |= RTT_BW_40; in dhd_rtt_init()
4755 rtt_status->rtt_capa.bw |= RTT_BW_80; in dhd_rtt_init()
4767 rtt_status->max_nan_rtt_sessions = dhd_rtt_get_max_nan_rtt_sessions_supported(dhd); in dhd_rtt_init()
4770 rtt_status->all_cancel = TRUE; in dhd_rtt_init()
4787 rtt_status_info_t *rtt_status; in dhd_rtt_deinit() local
4794 rtt_status = GET_RTTSTATE(dhd); in dhd_rtt_deinit()
4795 NULL_CHECK(rtt_status, "rtt_status is NULL", err); in dhd_rtt_deinit()
4800 if (delayed_work_pending(&rtt_status->rtt_retry_timer)) { in dhd_rtt_deinit()
4801 cancel_delayed_work_sync(&rtt_status->rtt_retry_timer); in dhd_rtt_deinit()
4805 if (work_pending(&rtt_status->work)) { in dhd_rtt_deinit()
4806 cancel_work_sync(&rtt_status->work); in dhd_rtt_deinit()
4807 rtt_status->rtt_sched = FALSE; in dhd_rtt_deinit()
4810 if (delayed_work_pending(&rtt_status->proxd_timeout)) { in dhd_rtt_deinit()
4811 cancel_delayed_work_sync(&rtt_status->proxd_timeout); in dhd_rtt_deinit()
4818 if ((!RTT_IS_STOPPED(rtt_status)) && in dhd_rtt_deinit()
4819 rtt_status->rtt_config.rtt_target_cnt && in dhd_rtt_deinit()
4820 (rtt_status->cur_idx < rtt_status->rtt_config.rtt_target_cnt)) { in dhd_rtt_deinit()
4822 rtt_target = &rtt_status->rtt_config.target_info[rtt_status->cur_idx]; in dhd_rtt_deinit()
4829 rtt_status->status = RTT_STOPPED; in dhd_rtt_deinit()
4833 if (!list_empty(&rtt_status->noti_fn_list)) { in dhd_rtt_deinit()
4834 list_for_each_entry_safe(iter, iter2, &rtt_status->noti_fn_list, list) { in dhd_rtt_deinit()
4840 if (!list_empty(&rtt_status->rtt_results_cache)) { in dhd_rtt_deinit()
4841 list_for_each_entry_safe(rtt_header, next, &rtt_status->rtt_results_cache, list) { in dhd_rtt_deinit()