xref: /wlan-dirver/qca-wifi-host-cmn/umac/mlme/connection_mgr/dispatcher/inc/wlan_cm_api.h (revision 97f44cd39e4ff816eaa1710279d28cf6b9e65ad9)
1 /*
2  * Copyright (c) 2020 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_api.h
19  *
20  * This file maintains declarations of public apis
21  */
22 
23 #ifndef __WLAN_CM_API_H
24 #define __WLAN_CM_API_H
25 
26 #ifdef FEATURE_CM_ENABLE
27 #include "wlan_cm_public_struct.h"
28 
29 /**
30  * wlan_cm_start_connect() - connect start request
31  * @vdev: vdev pointer
32  * @req: connect req
33  *
34  * Return: QDF_STATUS
35  */
36 QDF_STATUS wlan_cm_start_connect(struct wlan_objmgr_vdev *vdev,
37 				 struct wlan_cm_connect_req *req);
38 
39 /**
40  * wlan_cm_disconnect() - disconnect start request
41  * @vdev: vdev pointer
42  * @source: disconnect source
43  * @reason_code: disconnect reason
44  * @bssid: bssid of AP to disconnect, can be null if not known
45  *
46  * Context: can be called from any context
47  *
48  * Return: QDF_STATUS
49  */
50 QDF_STATUS wlan_cm_disconnect(struct wlan_objmgr_vdev *vdev,
51 			      enum wlan_cm_source source,
52 			      enum wlan_reason_code reason_code,
53 			      struct qdf_mac_addr *bssid);
54 
55 /**
56  * wlan_cm_disconnect_sync() - disconnect request with wait till
57  * completed
58  * @vdev: vdev pointer
59  * @source: disconnect source
60  * @reason_code: disconnect reason
61  *
62  * Context: Only call for north bound disconnect req, if wait till complete
63  * is required, e.g. during vdev delete. Do not call from scheduler context.
64  *
65  * Return: QDF_STATUS
66  */
67 QDF_STATUS wlan_cm_disconnect_sync(struct wlan_objmgr_vdev *vdev,
68 				   enum wlan_cm_source source,
69 				   enum wlan_reason_code reason_code);
70 
71 /**
72  * wlan_cm_bss_select_ind_rsp() - Connection manager resp for bss
73  * select indication
74  * @vdev: vdev pointer
75  * @status: Status
76  *
77  * Return: QDF_STATUS
78  */
79 QDF_STATUS wlan_cm_bss_select_ind_rsp(struct wlan_objmgr_vdev *vdev,
80 				      QDF_STATUS status);
81 
82 /**
83  * wlan_cm_bss_peer_create_rsp() - Connection manager bss peer create response
84  * @vdev: vdev pointer
85  * @status: Status
86  * @peer_mac: Peer mac address
87  *
88  * Return: QDF_STATUS
89  */
90 QDF_STATUS wlan_cm_bss_peer_create_rsp(struct wlan_objmgr_vdev *vdev,
91 				       QDF_STATUS status,
92 				       struct qdf_mac_addr *peer_mac);
93 
94 /**
95  * wlan_cm_connect_rsp() - Connection manager connect response
96  * @vdev: vdev pointer
97  * @resp: Connect response
98  *
99  * Return: QDF_STATUS
100  */
101 QDF_STATUS wlan_cm_connect_rsp(struct wlan_objmgr_vdev *vdev,
102 			       struct wlan_cm_connect_resp *resp);
103 
104 /**
105  * wlan_cm_bss_peer_delete_ind() - Connection manager peer delete indication
106  * @vdev: vdev pointer
107  * @peer_mac: Peer mac address
108  *
109  * Return: QDF_STATUS
110  */
111 QDF_STATUS wlan_cm_bss_peer_delete_ind(struct wlan_objmgr_vdev *vdev,
112 				       struct qdf_mac_addr *peer_mac);
113 
114 /**
115  * wlan_cm_bss_peer_delete_rsp() - Connection manager peer delete response
116  * @vdev: vdev pointer
117  * @status: status
118  *
119  * Return: QDF_STATUS
120  */
121 QDF_STATUS wlan_cm_bss_peer_delete_rsp(struct wlan_objmgr_vdev *vdev,
122 				       uint32_t status);
123 
124 /**
125  * wlan_cm_disconnect_rsp() - Connection manager disconnect response
126  * @vdev: vdev pointer
127  * @resp: disconnect response
128  *
129  * Return: QDF_STATUS
130  */
131 QDF_STATUS wlan_cm_disconnect_rsp(struct wlan_objmgr_vdev *vdev,
132 				  struct wlan_cm_discon_rsp *resp);
133 
134 /**
135  * wlan_cm_set_max_connect_attempts() - Set max connect attempts
136  * @vdev: vdev pointer
137  * @max_connect_attempts: max connect attempts to be set.
138  *
139  * Set max connect attempts. Max value is limited to CM_MAX_CONNECT_ATTEMPTS.
140  *
141  * Return: void
142  */
143 void wlan_cm_set_max_connect_attempts(struct wlan_objmgr_vdev *vdev,
144 				      uint8_t max_connect_attempts);
145 
146 /**
147  * wlan_cm_is_vdev_connecting() - check if vdev is in conneting state
148  * @vdev: vdev pointer
149  *
150  * Return: bool
151  */
152 bool wlan_cm_is_vdev_connecting(struct wlan_objmgr_vdev *vdev);
153 
154 /**
155  * wlan_cm_is_vdev_connected() - check if vdev is in conneted state
156  * @vdev: vdev pointer
157  *
158  * Return: bool
159  */
160 bool wlan_cm_is_vdev_connected(struct wlan_objmgr_vdev *vdev);
161 
162 /**
163  * wlan_cm_is_vdev_disconnecting() - check if vdev is in disconneting state
164  * @vdev: vdev pointer
165  *
166  * Return: bool
167  */
168 bool wlan_cm_is_vdev_disconnecting(struct wlan_objmgr_vdev *vdev);
169 
170 /**
171  * wlan_cm_is_vdev_disconnected() - check if vdev is disconnected/init state
172  * @vdev: vdev pointer
173  *
174  * Return: bool
175  */
176 bool wlan_cm_is_vdev_disconnected(struct wlan_objmgr_vdev *vdev);
177 
178 /**
179  * wlan_cm_is_vdev_roaming() - check if vdev is in roaming state
180  * @vdev: vdev pointer
181  *
182  * Return: bool
183  */
184 bool wlan_cm_is_vdev_roaming(struct wlan_objmgr_vdev *vdev);
185 
186 /**
187  * wlan_cm_reason_code_to_str() - return string conversion of reason code
188  * @reason: reason code.
189  *
190  * This utility function helps log string conversion of reason code.
191  *
192  * Return: string conversion of reason code, if match found;
193  *         "Unknown" otherwise.
194  */
195 const char *wlan_cm_reason_code_to_str(enum wlan_reason_code reason);
196 
197 /**
198  * wlan_cm_hw_mode_change_resp() - HW mode change response
199  * @pdev: pdev pointer
200  * @vdev_id: vdev id
201  * @cm_id: connection ID which gave the hw mode change request
202  * @status: status of the HW mode change.
203  *
204  * Return: void
205  */
206 #ifdef WLAN_POLICY_MGR_ENABLE
207 void wlan_cm_hw_mode_change_resp(struct wlan_objmgr_pdev *pdev, uint8_t vdev_id,
208 				 wlan_cm_id cm_id, QDF_STATUS status);
209 #endif /* ifdef POLICY_MGR_ENABLE */
210 
211 /**
212  * wlan_cm_sm_history_print() - Prints SM history
213  * @vdev: Objmgr vdev
214  *
215  * API to print CM SM history
216  *
217  * Return: void
218  */
219 #ifdef SM_ENG_HIST_ENABLE
220 void wlan_cm_sm_history_print(struct wlan_objmgr_vdev *vdev);
221 #else
222 static inline void wlan_cm_sm_history_print(struct wlan_objmgr_vdev *vdev)
223 {
224 }
225 #endif
226 #else
227 
228 #ifdef WLAN_POLICY_MGR_ENABLE
229 static inline void
230 wlan_cm_hw_mode_change_resp(struct wlan_objmgr_pdev *pdev, uint8_t vdev_id,
231 			    uint32_t cm_id, QDF_STATUS status)
232 {
233 }
234 #endif /* ifdef POLICY_MGR_ENABLE */
235 
236 #endif
237 #endif /* __WLAN_CM_UCFG_API_H */
238