xref: /wlan-dirver/qca-wifi-host-cmn/umac/mlme/connection_mgr/dispatcher/inc/wlan_cm_ucfg_api.h (revision 901120c066e139c7f8a2c8e4820561fdd83c67ef)
1 /*
2  * Copyright (c) 2020-2021 The Linux Foundation. All rights reserved.
3  * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
4  *
5  * Permission to use, copy, modify, and/or distribute this software for any
6  * purpose with or without fee is hereby granted, provided that the above
7  * copyright notice and this permission notice appear in all copies.
8  *
9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16  */
17 
18 /**
19  * DOC: wlan_cm_ucfg_api.h
20  *
21  * This file maintains declarations of public ucfg apis
22  */
23 
24 #ifndef __WLAN_CM_UCFG_API_H
25 #define __WLAN_CM_UCFG_API_H
26 
27 #include <wlan_cm_api.h>
28 
29 /**
30  * ucfg_cm_start_connect() - connect start request
31  * @vdev: vdev pointer
32  * @req: connect req
33  *
34  * Return: QDF_STATUS
35  */
36 QDF_STATUS ucfg_cm_start_connect(struct wlan_objmgr_vdev *vdev,
37 				 struct wlan_cm_connect_req *req);
38 
39 /**
40  * ucfg_cm_start_disconnect() - disconnect start request
41  * @vdev: vdev pointer
42  * @req: disconnect req
43  *
44  * Return: QDF_STATUS
45  */
46 QDF_STATUS ucfg_cm_start_disconnect(struct wlan_objmgr_vdev *vdev,
47 				    struct wlan_cm_disconnect_req *req);
48 
49 /**
50  * ucfg_cm_disconnect_sync() - disconnect request with wait till
51  * completed
52  * @vdev: vdev pointer
53  * @source: disconnect source
54  * @reason_code: disconnect reason
55  *
56  * Context: Only call for north bound disconnect req, if wait till complete
57  * is required, e.g. during vdev delete. Do not call from scheduler context.
58  *
59  * Return: QDF_STATUS
60  */
61 QDF_STATUS ucfg_cm_disconnect_sync(struct wlan_objmgr_vdev *vdev,
62 				   enum wlan_cm_source source,
63 				   enum wlan_reason_code reason_code);
64 
65 /**
66  * ucfg_cm_is_vdev_connecting() - check if vdev is in conneting state
67  * @vdev: vdev pointer
68  *
69  * Return: bool
70  */
71 bool ucfg_cm_is_vdev_connecting(struct wlan_objmgr_vdev *vdev);
72 
73 /**
74  * ucfg_cm_is_vdev_connected() - check if vdev is in conneted state
75  * @vdev: vdev pointer
76  *
77  * Return: bool
78  */
79 bool ucfg_cm_is_vdev_connected(struct wlan_objmgr_vdev *vdev);
80 
81 /**
82  * ucfg_cm_is_vdev_active() - check if vdev is in active state ie conneted or
83  * roaming state
84  * @vdev: vdev pointer
85  *
86  * Return: bool
87  */
88 bool ucfg_cm_is_vdev_active(struct wlan_objmgr_vdev *vdev);
89 
90 /**
91  * ucfg_cm_is_vdev_disconnecting() - check if vdev is in disconnecting state
92  * @vdev: vdev pointer
93  *
94  * Return: bool
95  */
96 bool ucfg_cm_is_vdev_disconnecting(struct wlan_objmgr_vdev *vdev);
97 
98 /**
99  * ucfg_cm_is_vdev_disconnected() - check if vdev is disconnected/init state
100  * @vdev: vdev pointer
101  *
102  * Return: bool
103  */
104 bool ucfg_cm_is_vdev_disconnected(struct wlan_objmgr_vdev *vdev);
105 
106 /**
107  * ucfg_cm_is_vdev_roaming() - check if vdev is in roaming state
108  * @vdev: vdev pointer
109  *
110  * Return: bool
111  */
112 bool ucfg_cm_is_vdev_roaming(struct wlan_objmgr_vdev *vdev);
113 
114 #ifdef WLAN_FEATURE_ROAM_OFFLOAD
115 /**
116  * ucfg_cm_is_vdev_roam_started() - check if vdev is in roaming state and
117  * roam started sub stated
118  * @vdev: vdev pointer
119  *
120  * Return: bool
121  */
122 bool ucfg_cm_is_vdev_roam_started(struct wlan_objmgr_vdev *vdev);
123 
124 /**
125  * ucfg_cm_is_vdev_roam_sync_inprogress() - check if vdev is in roaming state
126  * and roam sync substate
127  * @vdev: vdev pointer
128  *
129  * Return: bool
130  */
131 bool ucfg_cm_is_vdev_roam_sync_inprogress(struct wlan_objmgr_vdev *vdev);
132 #else
133 static inline bool ucfg_cm_is_vdev_roam_started(struct wlan_objmgr_vdev *vdev)
134 {
135 	return false;
136 }
137 
138 static inline
139 bool ucfg_cm_is_vdev_roam_sync_inprogress(struct wlan_objmgr_vdev *vdev)
140 {
141 	return false;
142 }
143 #endif
144 
145 #ifdef WLAN_FEATURE_HOST_ROAM
146 /**
147  * ucfg_cm_is_vdev_roam_preauth_state() - check if vdev is in roaming state and
148  * preauth is in progress
149  * @vdev: vdev pointer
150  *
151  * Return: bool
152  */
153 bool ucfg_cm_is_vdev_roam_preauth_state(struct wlan_objmgr_vdev *vdev);
154 
155 /**
156  * ucfg_cm_is_vdev_roam_reassoc_state() - check if vdev is in roaming state
157  * and reassoc is in progress
158  * @vdev: vdev pointer
159  *
160  * Return: bool
161  */
162 bool ucfg_cm_is_vdev_roam_reassoc_state(struct wlan_objmgr_vdev *vdev);
163 #else
164 static inline
165 bool ucfg_cm_is_vdev_roam_preauth_state(struct wlan_objmgr_vdev *vdev)
166 {
167 	return false;
168 }
169 
170 static inline
171 bool ucfg_cm_is_vdev_roam_reassoc_state(struct wlan_objmgr_vdev *vdev)
172 {
173 	return false;
174 }
175 #endif
176 
177 /**
178  * ucfg_cm_reason_code_to_str() - return string conversion of reason code
179  * @reason: reason code.
180  *
181  * This utility function helps log string conversion of reason code.
182  *
183  * Return: string conversion of reason code, if match found;
184  *         "Unknown" otherwise.
185  */
186 static inline
187 const char *ucfg_cm_reason_code_to_str(enum wlan_reason_code reason)
188 {
189 	return wlan_cm_reason_code_to_str(reason);
190 }
191 
192 /**
193  * ucfg_cm_get_connected_band() - Get the connected band information
194  * @vdev: vdev to get the band for connected band
195  *
196  * Return: enum band_info
197  */
198 enum band_info ucfg_cm_get_connected_band(struct wlan_objmgr_vdev *vdev);
199 #endif /* __WLAN_CM_UCFG_API_H */
200