1 /* 2 * Copyright (c) 2012-2015,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_roam_sm.h 20 * 21 * This header file maintain structures required for connection mgr roam sm 22 */ 23 24 #ifndef __WLAN_CM_ROAM_SM_H__ 25 #define __WLAN_CM_ROAM_SM_H__ 26 27 #include "wlan_cm_roam.h" 28 29 #if defined(WLAN_FEATURE_HOST_ROAM) || defined(WLAN_FEATURE_ROAM_OFFLOAD) 30 /** 31 * cm_state_roaming_entry() - Entry API for roaming state for 32 * connection mgr 33 * @ctx: connection manager ctx 34 * 35 * API to perform operations on moving to roaming state 36 * 37 * Return: void 38 */ 39 void cm_state_roaming_entry(void *ctx); 40 41 /** 42 * cm_state_roaming_exit() - Exit API for roaming state for connection mgr 43 * @ctx: connection manager ctx 44 * 45 * API to perform operations on exiting from roaming state 46 * 47 * Return: void 48 */ 49 void cm_state_roaming_exit(void *ctx); 50 51 /** 52 * cm_state_roaming_event() - Roaming State event handler for 53 * connection mgr 54 * @ctx: connection manager ctx 55 * @event: event to handle 56 * @data_len: event data len 57 * @data:event data 58 * 59 * API to handle events in roaming state 60 * 61 * Return: bool 62 */ 63 bool cm_state_roaming_event(void *ctx, uint16_t event, uint16_t data_len, 64 void *data); 65 #else 66 static inline void cm_state_roaming_entry(void *ctx) {} 67 68 static inline void cm_state_roaming_exit(void *ctx) {} 69 70 static inline bool cm_state_roaming_event(void *ctx, uint16_t event, 71 uint16_t data_len, void *data) 72 { 73 return true; 74 } 75 #endif 76 77 #if defined(WLAN_FEATURE_HOST_ROAM) 78 /** 79 * cm_subst_preauth_entry() - Entry API for preauth sub-state for 80 * connection mgr 81 * @ctx: connection manager ctx 82 * 83 * API to perform operations on moving to preauth sub-state 84 * 85 * Return: void 86 */ 87 void cm_subst_preauth_entry(void *ctx); 88 89 /** 90 * cm_subst_preauth_exit() - Exit API for preauth sub-state for 91 * connection mgr 92 * @ctx: connection manager ctx 93 * 94 * API to perform operations on exiting from preauth sub-state 95 * 96 * Return: void 97 */ 98 void cm_subst_preauth_exit(void *ctx); 99 100 /** 101 * cm_subst_preauth_event() - Preauth sub-state event handler for 102 * connection mgr 103 * @ctx: connection manager ctx 104 * @event: event to handle 105 * @data_len: event data len 106 * @data:event data 107 * 108 * API to handle events in preauth sub-state 109 * 110 * Return: bool 111 */ 112 bool cm_subst_preauth_event(void *ctx, uint16_t event, 113 uint16_t data_len, void *data); 114 #else 115 116 static inline void cm_subst_preauth_entry(void *ctx) {} 117 118 static inline void cm_subst_preauth_exit(void *ctx) {} 119 120 static inline bool cm_subst_preauth_event(void *ctx, uint16_t event, 121 uint16_t data_len, void *data) 122 { 123 return true; 124 } 125 #endif /* WLAN_FEATURE_HOST_ROAM && WLAN_FEATURE_PREAUTH_ENABLE */ 126 127 #ifdef WLAN_FEATURE_HOST_ROAM 128 /** 129 * cm_subst_reassoc_entry() - Entry API for reassoc sub-state for 130 * connection mgr 131 * @ctx: connection manager ctx 132 * 133 * API to perform operations on moving to reassoc sub-state 134 * 135 * Return: void 136 */ 137 void cm_subst_reassoc_entry(void *ctx); 138 139 /** 140 * cm_subst_reassoc_exit() - Exit API for reassoc sub-state for 141 * connection mgr 142 * @ctx: connection manager ctx 143 * 144 * API to perform operations on exiting from reassoc sub-state 145 * 146 * Return: void 147 */ 148 void cm_subst_reassoc_exit(void *ctx); 149 150 /** 151 * cm_subst_reassoc_event() - Reassoc sub-state event handler for 152 * connection mgr 153 * @ctx: connection manager ctx 154 * @event: event to handle 155 * @data_len: event data len 156 * @data:event data 157 * 158 * API to handle events in preauth sub-state 159 * 160 * Return: bool 161 */ 162 bool cm_subst_reassoc_event(void *ctx, uint16_t event, uint16_t data_len, 163 void *data); 164 #else 165 166 static inline void cm_subst_reassoc_entry(void *ctx) {} 167 static inline void cm_subst_reassoc_exit(void *ctx) {} 168 169 static inline 170 bool cm_subst_reassoc_event(void *ctx, uint16_t event, uint16_t data_len, 171 void *data) 172 { 173 return true; 174 } 175 176 #endif /* WLAN_FEATURE_HOST_ROAM */ 177 178 #ifdef WLAN_FEATURE_ROAM_OFFLOAD 179 180 /** 181 * cm_subst_roam_start_entry() - Entry API for roam start sub-state for 182 * connection mgr 183 * @ctx: connection manager ctx 184 * 185 * API to perform operations on moving to roam start sub-state 186 * 187 * Return: void 188 */ 189 void cm_subst_roam_start_entry(void *ctx); 190 191 /** 192 * cm_subst_roam_start_exit() - Exit API for roam start sub-state for 193 * connection mgr 194 * @ctx: connection manager ctx 195 * 196 * API to perform operations on exiting from roam start sub-state 197 * 198 * Return: void 199 */ 200 void cm_subst_roam_start_exit(void *ctx); 201 202 /** 203 * cm_subst_roam_start_event() - Roam start sub-state event handler for 204 * connection mgr 205 * @ctx: connection manager ctx 206 * @event: event to handle 207 * @data_len: event data len 208 * @data:event data 209 * 210 * API to handle events in roam start sub-state 211 * 212 * Return: bool 213 */ 214 bool cm_subst_roam_start_event(void *ctx, uint16_t event, uint16_t data_len, 215 void *data); 216 217 /** 218 * cm_subst_roam_sync_entry() - Entry API for roam sync sub-state for 219 * connection mgr 220 * @ctx: connection manager ctx 221 * 222 * API to perform operations on moving to roam sync sub-state 223 * 224 * Return: void 225 */ 226 void cm_subst_roam_sync_entry(void *ctx); 227 228 /** 229 * cm_subst_roam_sync_exit() - Exit API for roam sync sub-state for 230 * connection mgr 231 * @ctx: connection manager ctx 232 * 233 * API to perform operations on exiting from roam sync sub-state 234 * 235 * Return: void 236 */ 237 void cm_subst_roam_sync_exit(void *ctx); 238 239 /** 240 * cm_subst_roam_sync_event() - Roam sync sub-state event handler for 241 * connection mgr 242 * @ctx: connection manager ctx 243 * @event: event to handle 244 * @data_len: event data len 245 * @data:event data 246 * 247 * API to handle events in roam sync sub-state 248 * 249 * Return: bool 250 */ 251 bool cm_subst_roam_sync_event(void *ctx, uint16_t event, uint16_t data_len, 252 void *data); 253 #else 254 255 static inline void cm_subst_roam_start_entry(void *ctx) {} 256 257 static inline void cm_subst_roam_start_exit(void *ctx) {} 258 259 static inline 260 bool cm_subst_roam_start_event(void *ctx, uint16_t event, uint16_t data_len, 261 void *data) 262 { 263 return true; 264 } 265 266 static inline void cm_subst_roam_sync_entry(void *ctx) {} 267 268 static inline void cm_subst_roam_sync_exit(void *ctx) {} 269 270 static inline 271 bool cm_subst_roam_sync_event(void *ctx, uint16_t event, uint16_t data_len, 272 void *data) 273 { 274 return true; 275 } 276 #endif /* WLAN_FEATURE_ROAM_OFFLOAD */ 277 #endif /* __WLAN_CM_ROAM_SM_H__ */ 278