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