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