blob: ec32f8295aec0081c6f7c5b611980cf0c9b8d33b [file] [log] [blame]
Om Prakash Tripathi7e3f45d2016-12-28 16:58:54 +05301/*
2 * Copyright (c) 2017 The Linux Foundation. All rights reserved.
3 *
4 * Permission to use, copy, modify, and/or distribute this software for
5 * any purpose with or without fee is hereby granted, provided that the
6 * above copyright notice and this permission notice appear in all
7 * copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
10 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
11 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
12 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
13 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
14 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
15 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16 * PERFORMANCE OF THIS SOFTWARE.
17 */
18
19/*
20 * DOC: Defines scan utility functions
21 */
Om Prakash Tripathi22f95dc2016-12-19 10:45:59 +053022
23#include <wlan_scan_ucfg_api.h>
24#include <wlan_scan_utils_api.h>
25#include <../../core/src/wlan_scan_cache_db.h>
26#include <../../core/src/wlan_scan_main.h>
27
28const char*
29util_scan_get_ev_type_name(enum scan_event_type type)
30{
31 static const char * const event_name[] = {
32 [SCAN_EVENT_TYPE_STARTED] = "STARTED",
33 [SCAN_EVENT_TYPE_COMPLETED] = "COMPLETED",
34 [SCAN_EVENT_TYPE_BSS_CHANNEL] = "HOME_CHANNEL",
35 [SCAN_EVENT_TYPE_FOREIGN_CHANNEL] = "FOREIGN_CHANNEL",
36 [SCAN_EVENT_TYPE_DEQUEUED] = "DEQUEUED",
37 [SCAN_EVENT_TYPE_PREEMPTED] = "PREEMPTED",
38 [SCAN_EVENT_TYPE_START_FAILED] = "START_FAILED",
39 [SCAN_EVENT_TYPE_RESTARTED] = "RESTARTED",
40 [SCAN_EVENT_TYPE_FOREIGN_CHANNEL_EXIT] = "FOREIGN_CHANNEL_EXIT",
41 [SCAN_EVENT_TYPE_SUSPENDED] = "SUSPENDED",
42 [SCAN_EVENT_TYPE_RESUMED] = "RESUMED",
43 [SCAN_EVENT_TYPE_NLO_COMPLETE] = "NLO_COMPLETE",
44 [SCAN_EVENT_TYPE_INVALID] = "INVALID",
45 [SCAN_EVENT_TYPE_GPIO_TIMEOUT] = "GPIO_TIMEOUT",
46 [SCAN_EVENT_TYPE_RADIO_MEASUREMENT_START] =
47 "RADIO_MEASUREMENT_START",
48 [SCAN_EVENT_TYPE_RADIO_MEASUREMENT_END] =
49 "RADIO_MEASUREMENT_END",
50 [SCAN_EVENT_TYPE_BSSID_MATCH] = "BSSID_MATCH",
51 [SCAN_EVENT_TYPE_FOREIGN_CHANNEL_GET_NF] =
52 "FOREIGN_CHANNEL_GET_NF",
53 };
54
55 if (type >= SCAN_EVENT_TYPE_MAX) {
56 scm_err("unknown type : %d", type);
57 QDF_ASSERT(0);
58 return "UNKNOWN";
59 }
60
61 return event_name[type];
62}
63
64
65const char*
66util_scan_get_ev_reason_name(enum scan_completion_reason reason)
67{
68 static const char * const reason_name[] = {
69 [SCAN_REASON_NONE] = "NONE",
70 [SCAN_REASON_COMPLETED] = "COMPLETED",
71 [SCAN_REASON_CANCELLED] = "CANCELLED",
72 [SCAN_REASON_PREEMPTED] = "PREEMPTED",
73 [SCAN_REASON_TIMEDOUT] = "TIMEDOUT",
74 [SCAN_REASON_INTERNAL_FAILURE] = "INTERNAL_FAILURE",
75 [SCAN_REASON_SUSPENDED] = "SUSPENDED",
76 [SCAN_REASON_RUN_FAILED] = "RUN_FAILED",
77 [SCAN_REASON_TERMINATION_FUNCTION] = "TERMINATION_FUNCTION",
78 [SCAN_REASON_MAX_OFFCHAN_RETRIES] = "MAX_OFFCHAN_RETRIES",
79 };
80
81 if (reason >= SCAN_REASON_MAX) {
82 scm_err("unknown reason : %d", reason);
83 QDF_ASSERT(0);
84 return "UNKNOWN";
85 }
86
87 return reason_name[reason];
88}
89
90qdf_time_t
91util_get_last_scan_time(struct wlan_objmgr_vdev *vdev)
92{
93 uint8_t pdev_id;
94 struct wlan_scan_obj *scan_obj;
95
96 if (!vdev) {
97 scm_warn("null vdev");
98 QDF_ASSERT(0);
99 return 0;
100 }
101 pdev_id = wlan_scan_vdev_get_pdev_id(vdev);
102 scan_obj = wlan_vdev_get_scan_obj(vdev);
103
104 return scan_obj->pdev_info[pdev_id].last_scan_time;
105}