xref: /wlan-dirver/qca-wifi-host-cmn/umac/mlme/connection_mgr/dispatcher/inc/wlan_cm_ucfg_api.h (revision 2f4b444fb7e689b83a4ab0e7b3b38f0bf4def8e0)
1 /*
2  * Copyright (c) 2020-2021 The Linux Foundation. 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: wlan_cm_ucfg_api.h
19  *
20  * This file maintains declarations of public ucfg apis
21  */
22 
23 #ifndef __WLAN_CM_UCFG_API_H
24 #define __WLAN_CM_UCFG_API_H
25 
26 #include <wlan_cm_api.h>
27 
28 /**
29  * ucfg_cm_start_connect() - connect start request
30  * @vdev: vdev pointer
31  * @req: connect req
32  *
33  * Return: QDF_STATUS
34  */
35 QDF_STATUS ucfg_cm_start_connect(struct wlan_objmgr_vdev *vdev,
36 				 struct wlan_cm_connect_req *req);
37 
38 /**
39  * ucfg_cm_start_disconnect() - disconnect start request
40  * @vdev: vdev pointer
41  * @req: disconnect req
42  *
43  * Return: QDF_STATUS
44  */
45 QDF_STATUS ucfg_cm_start_disconnect(struct wlan_objmgr_vdev *vdev,
46 				    struct wlan_cm_disconnect_req *req);
47 
48 /**
49  * ucfg_cm_disconnect_sync() - disconnect request with wait till
50  * completed
51  * @vdev: vdev pointer
52  * @source: disconnect source
53  * @reason_code: disconnect reason
54  *
55  * Context: Only call for north bound disconnect req, if wait till complete
56  * is required, e.g. during vdev delete. Do not call from scheduler context.
57  *
58  * Return: QDF_STATUS
59  */
60 QDF_STATUS ucfg_cm_disconnect_sync(struct wlan_objmgr_vdev *vdev,
61 				   enum wlan_cm_source source,
62 				   enum wlan_reason_code reason_code);
63 
64 /**
65  * ucfg_cm_is_vdev_connecting() - check if vdev is in conneting state
66  * @vdev: vdev pointer
67  *
68  * Return: bool
69  */
70 bool ucfg_cm_is_vdev_connecting(struct wlan_objmgr_vdev *vdev);
71 
72 /**
73  * ucfg_cm_is_vdev_connected() - check if vdev is in conneted state
74  * @vdev: vdev pointer
75  *
76  * Return: bool
77  */
78 bool ucfg_cm_is_vdev_connected(struct wlan_objmgr_vdev *vdev);
79 
80 /**
81  * ucfg_cm_is_vdev_active() - check if vdev is in active state ie conneted or
82  * roaming state
83  * @vdev: vdev pointer
84  *
85  * Return: bool
86  */
87 bool ucfg_cm_is_vdev_active(struct wlan_objmgr_vdev *vdev);
88 
89 /**
90  * ucfg_cm_is_vdev_disconnecting() - check if vdev is in disconneting state
91  * @vdev: vdev pointer
92  *
93  * Return: bool
94  */
95 bool ucfg_cm_is_vdev_disconnecting(struct wlan_objmgr_vdev *vdev);
96 
97 /**
98  * ucfg_cm_is_vdev_disconnected() - check if vdev is disconnected/init state
99  * @vdev: vdev pointer
100  *
101  * Return: bool
102  */
103 bool ucfg_cm_is_vdev_disconnected(struct wlan_objmgr_vdev *vdev);
104 
105 /**
106  * ucfg_cm_is_vdev_roaming() - check if vdev is in roaming state
107  * @vdev: vdev pointer
108  *
109  * Return: bool
110  */
111 bool ucfg_cm_is_vdev_roaming(struct wlan_objmgr_vdev *vdev);
112 
113 #ifdef WLAN_FEATURE_ROAM_OFFLOAD
114 /**
115  * ucfg_cm_is_vdev_roam_started() - check if vdev is in roaming state and
116  * roam started sub stated
117  * @vdev: vdev pointer
118  *
119  * Return: bool
120  */
121 bool ucfg_cm_is_vdev_roam_started(struct wlan_objmgr_vdev *vdev);
122 
123 /**
124  * ucfg_cm_is_vdev_roam_sync_inprogress() - check if vdev is in roaming state
125  * and roam sync substate
126  * @vdev: vdev pointer
127  *
128  * Return: bool
129  */
130 bool ucfg_cm_is_vdev_roam_sync_inprogress(struct wlan_objmgr_vdev *vdev);
131 #else
132 static inline bool ucfg_cm_is_vdev_roam_started(struct wlan_objmgr_vdev *vdev)
133 {
134 	return false;
135 }
136 
137 static inline
138 bool ucfg_cm_is_vdev_roam_sync_inprogress(struct wlan_objmgr_vdev *vdev)
139 {
140 	return false;
141 }
142 #endif
143 
144 #ifdef WLAN_FEATURE_HOST_ROAM
145 /**
146  * ucfg_cm_is_vdev_roam_preauth_state() - check if vdev is in roaming state and
147  * preauth is in progress
148  * @vdev: vdev pointer
149  *
150  * Return: bool
151  */
152 bool ucfg_cm_is_vdev_roam_preauth_state(struct wlan_objmgr_vdev *vdev);
153 
154 /**
155  * ucfg_cm_is_vdev_roam_reassoc_state() - check if vdev is in roaming state
156  * and reassoc is in progress
157  * @vdev: vdev pointer
158  *
159  * Return: bool
160  */
161 bool ucfg_cm_is_vdev_roam_reassoc_state(struct wlan_objmgr_vdev *vdev);
162 #else
163 static inline
164 bool ucfg_cm_is_vdev_roam_preauth_state(struct wlan_objmgr_vdev *vdev)
165 {
166 	return false;
167 }
168 
169 static inline
170 bool ucfg_cm_is_vdev_roam_reassoc_state(struct wlan_objmgr_vdev *vdev)
171 {
172 	return false;
173 }
174 #endif
175 
176 /**
177  * ucfg_cm_reason_code_to_str() - return string conversion of reason code
178  * @reason: reason code.
179  *
180  * This utility function helps log string conversion of reason code.
181  *
182  * Return: string conversion of reason code, if match found;
183  *         "Unknown" otherwise.
184  */
185 static inline
186 const char *ucfg_cm_reason_code_to_str(enum wlan_reason_code reason)
187 {
188 	return wlan_cm_reason_code_to_str(reason);
189 }
190 #endif /* __WLAN_CM_UCFG_API_H */
191