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