1 /* 2 * Copyright (c) 2019-2021 The Linux Foundation. All rights reserved. 3 * Copyright (c) 2021-2023 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: Define Common MLME structure and APIs 20 */ 21 #ifndef _WLAN_MLME_CMN_H_ 22 #define _WLAN_MLME_CMN_H_ 23 24 #include <include/wlan_psoc_mlme.h> 25 #include <include/wlan_pdev_mlme.h> 26 #include <include/wlan_vdev_mlme.h> 27 #include "wlan_cm_public_struct.h" 28 #include "wlan_twt_public_structs.h" 29 30 /** 31 * mlme_cm_ops: connection manager osif callbacks 32 * @mlme_cm_connect_complete_cb: Connect done callback 33 * @vdev: vdev pointer 34 * @rsp: connect response 35 * 36 * @mlme_cm_failed_candidate_cb: Callback to indicate failed candidate 37 * @vdev: vdev pointer 38 * @rsp: connect response 39 * 40 * @mlme_cm_update_id_and_src_cb: Callback to update connect id and 41 * source of the connect request 42 * @vdev: vdev pointer 43 * @Source: Source of the connect req 44 * @cm_id: connection manager id 45 * 46 * @mlme_cm_disconnect_complete_cb: Disconnect done callback 47 * @vdev: vdev pointer 48 * @rsp: Disconnect response 49 * 50 * @mlme_cm_disconnect_start_cb: Disconnect start callback 51 * @vdev: vdev pointer 52 * 53 * @mlme_cm_roam_sync_cb: Roam sync callback 54 * @vdev: vdev pointer 55 * 56 * @mlme_cm_pmksa_candidate_notify_cb: Roam pmksa candidate notify callback 57 * @vdev: vdev pointer 58 * @bssid: bssid 59 * @index: index 60 * @preauth: preauth flag 61 * 62 * @mlme_cm_roam_start_cb: Roam start callback 63 * @vdev: vdev pointer 64 * 65 * @mlme_cm_roam_abort_cb: Roam abort callback 66 * @vdev: vdev pointer 67 * 68 * @mlme_cm_roam_cmpl_cb: Roam sync complete cb 69 * @vdev: vdev pointer 70 * 71 * @mlme_cm_ft_preauth_cmpl_cb: Roam ft preauth complete cb 72 * @vdev: vdev pointer 73 * @rsp: preauth response pointer 74 * 75 * @mlme_cm_cckm_preauth_cmpl_cb: Roam cckm preauth complete cb 76 * @vdev: vdev pointer 77 * @rsp: preauth response pointer 78 * 79 * @mlme_cm_get_vendor_handoff_params_cb: get vendor handoff params cb 80 * @psoc: psoc pointer 81 * @rsp: vendor handoff response pointer 82 * @vendor_handoff_context: vendor handoff context 83 */ 84 struct mlme_cm_ops { 85 QDF_STATUS (*mlme_cm_connect_complete_cb)( 86 struct wlan_objmgr_vdev *vdev, 87 struct wlan_cm_connect_resp *rsp); 88 QDF_STATUS (*mlme_cm_failed_candidate_cb)( 89 struct wlan_objmgr_vdev *vdev, 90 struct wlan_cm_connect_resp *rsp); 91 QDF_STATUS (*mlme_cm_update_id_and_src_cb)( 92 struct wlan_objmgr_vdev *vdev, 93 enum wlan_cm_source source, 94 wlan_cm_id cm_id); 95 QDF_STATUS (*mlme_cm_disconnect_complete_cb)( 96 struct wlan_objmgr_vdev *vdev, 97 struct wlan_cm_discon_rsp *rsp); 98 QDF_STATUS (*mlme_cm_disconnect_start_cb)( 99 struct wlan_objmgr_vdev *vdev); 100 #ifdef CONN_MGR_ADV_FEATURE 101 QDF_STATUS (*mlme_cm_roam_sync_cb)(struct wlan_objmgr_vdev *vdev); 102 QDF_STATUS (*mlme_cm_pmksa_candidate_notify_cb)( 103 struct wlan_objmgr_vdev *vdev, 104 struct qdf_mac_addr *bssid, 105 int index, bool preauth); 106 QDF_STATUS (*mlme_cm_send_keys_cb)(struct wlan_objmgr_vdev *vdev, 107 uint8_t key_index, bool pairwise, 108 enum wlan_crypto_cipher_type cipher_type); 109 #endif 110 #ifdef WLAN_FEATURE_ROAM_OFFLOAD 111 QDF_STATUS (*mlme_cm_roam_start_cb)(struct wlan_objmgr_vdev *vdev); 112 QDF_STATUS (*mlme_cm_roam_abort_cb)(struct wlan_objmgr_vdev *vdev); 113 QDF_STATUS (*mlme_cm_roam_cmpl_cb)(struct wlan_objmgr_vdev *vdev); 114 QDF_STATUS (*mlme_cm_roam_get_scan_ie_cb)(struct wlan_objmgr_vdev *vdev, 115 struct element_info *scan_ie, 116 enum dot11_mode_filter *dot11mode_filter); 117 #endif 118 #ifdef WLAN_FEATURE_PREAUTH_ENABLE 119 QDF_STATUS (*mlme_cm_ft_preauth_cmpl_cb)( 120 struct wlan_objmgr_vdev *vdev, 121 struct wlan_preauth_rsp *rsp); 122 #ifdef FEATURE_WLAN_ESE 123 QDF_STATUS (*mlme_cm_cckm_preauth_cmpl_cb)( 124 struct wlan_objmgr_vdev *vdev, 125 struct wlan_preauth_rsp *rsp); 126 #endif 127 #endif 128 #ifdef WLAN_VENDOR_HANDOFF_CONTROL 129 QDF_STATUS (*mlme_cm_get_vendor_handoff_params_cb)( 130 struct wlan_objmgr_psoc *psoc, 131 void *vendor_handoff_context); 132 #endif 133 }; 134 135 /** 136 * struct mlme_vdev_mgr_ops - MLME VDEV mgr osif callbacks 137 * @mlme_vdev_mgr_set_mac_addr_response: Callback to indicate set MAC address 138 * response to osif 139 */ 140 struct mlme_vdev_mgr_ops { 141 #ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE 142 QDF_STATUS (*mlme_vdev_mgr_set_mac_addr_response)(uint8_t vdev_id, 143 uint8_t resp_status); 144 #endif 145 }; 146 147 /** 148 * struct mlme_twt_ops: twt component osif callbacks 149 * @mlme_twt_enable_complete_cb: TWT enable complete callback 150 * @psoc: psoc pointer 151 * @event: response 152 * @context: context 153 * 154 * @mlme_twt_disable_complete_cb: TWT disable complete callback 155 * @psoc: psoc pointer 156 * @event: response 157 * @context: context 158 * 159 * @mlme_twt_ack_complete_cb: TWT ack complete callback 160 * @psoc: psoc pointer 161 * @event: response 162 * @context: context 163 * 164 * @mlme_twt_setup_complete_cb: TWT setup complete callback 165 * @psoc: psoc pointer 166 * @event: response 167 * @renego_fail: flag to indicate if renegotiation failure case 168 * 169 * @mlme_twt_teardown_complete_cb: TWT teardown complete callback 170 * @psoc: psoc pointer 171 * @event: response 172 * 173 * @mlme_twt_pause_complete_cb: TWT pause complete callback 174 * @psoc: psoc pointer 175 * @event: response 176 * 177 * @mlme_twt_resume_complete_cb: TWT resume complete callback 178 * @psoc: psoc pointer 179 * @event: response 180 * 181 * @mlme_twt_nudge_complete_cb: TWT nudge complete callback 182 * @psoc: psoc pointer 183 * @event: response 184 * 185 * @mlme_twt_notify_complete_cb: TWT notify complete callback 186 * @psoc: psoc pointer 187 * @event: response 188 */ 189 struct mlme_twt_ops { 190 QDF_STATUS (*mlme_twt_enable_complete_cb)( 191 struct wlan_objmgr_psoc *psoc, 192 struct twt_enable_complete_event_param *event, 193 void *context); 194 195 QDF_STATUS (*mlme_twt_disable_complete_cb)( 196 struct wlan_objmgr_psoc *psoc, 197 struct twt_disable_complete_event_param *event, 198 void *context); 199 200 QDF_STATUS (*mlme_twt_ack_complete_cb)( 201 struct wlan_objmgr_psoc *psoc, 202 struct twt_ack_complete_event_param *event, 203 void *context); 204 205 QDF_STATUS (*mlme_twt_setup_complete_cb)( 206 struct wlan_objmgr_psoc *psoc, 207 struct twt_add_dialog_complete_event *event, 208 bool renego_fail); 209 210 QDF_STATUS (*mlme_twt_teardown_complete_cb)( 211 struct wlan_objmgr_psoc *psoc, 212 struct twt_del_dialog_complete_event_param *event); 213 214 QDF_STATUS (*mlme_twt_pause_complete_cb)( 215 struct wlan_objmgr_psoc *psoc, 216 struct twt_pause_dialog_complete_event_param *event); 217 218 QDF_STATUS (*mlme_twt_resume_complete_cb)( 219 struct wlan_objmgr_psoc *psoc, 220 struct twt_resume_dialog_complete_event_param *event); 221 222 QDF_STATUS (*mlme_twt_nudge_complete_cb)( 223 struct wlan_objmgr_psoc *psoc, 224 struct twt_nudge_dialog_complete_event_param *event); 225 226 QDF_STATUS (*mlme_twt_notify_complete_cb)( 227 struct wlan_objmgr_psoc *psoc, 228 struct twt_notify_event_param *event); 229 230 QDF_STATUS (*mlme_twt_vdev_create_cb)( 231 struct wlan_objmgr_vdev *vdev); 232 233 QDF_STATUS (*mlme_twt_vdev_destroy_cb)( 234 struct wlan_objmgr_vdev *vdev); 235 }; 236 237 /** 238 * struct vdev_mlme_ext_ops - VDEV MLME legacy callbacks structure 239 * @mlme_psoc_ext_hdl_create: callback to invoke creation of 240 * legacy psoc object 241 * @mlme_psoc_ext_hdl_destroy: callback to invoke destroy of legacy 242 * psoc object 243 * @mlme_pdev_ext_hdl_create: callback to invoke creation of 244 * legacy pdev object 245 * @mlme_pdev_ext_hdl_destroy: callback to invoke destroy of legacy 246 * pdev object 247 * @mlme_vdev_ext_hdl_create: callback to invoke creation of 248 * legacy vdev object 249 * @mlme_vdev_ext_hdl_post_create: callback to invoke post creation 250 * actions of legacy vdev object 251 * @mlme_vdev_ext_hdl_destroy: callback to invoke destroy of legacy 252 * vdev object 253 * @mlme_vdev_start_fw_send: callback to invoke vdev start 254 * command 255 * @mlme_vdev_stop_fw_send: callback to invoke vdev stop command 256 * @mlme_vdev_down_fw_send: callback to invoke vdev down command 257 * @mlme_multivdev_restart_fw_send: callback to invoke multivdev restart 258 * command 259 * @mlme_vdev_enqueue_exp_cmd: callback to enqueue exception 260 * command 261 * required by serialization 262 * @mlme_multi_vdev_restart_resp: callback to process multivdev 263 * restart response 264 * @mlme_cm_ext_hdl_create_cb: callback to create ext cm context 265 * @mlme_cm_ext_hdl_destroy_cb: callback to destroy ext cm context 266 * @mlme_cm_ext_connect_start_ind_cb: callback to indicate connect start 267 * @mlme_cm_ext_bss_select_ind_cb: callback to indicate candidate 268 * select for connect 269 * @mlme_cm_ext_bss_peer_create_req_cb: callback to bss peer create request 270 * @mlme_cm_ext_connect_req_cb: callback for connect request to 271 * VDEV/PEER SM 272 * @mlme_cm_ext_connect_complete_ind_cb: callback to indicate connect 273 * complete 274 * @mlme_cm_ext_disconnect_start_ind_cb : callback to indicate disconnect 275 * start 276 * @mlme_cm_ext_disconnect_req_cb: callback to disconnect req to 277 * VDEV/PEER SM 278 * @mlme_cm_ext_bss_peer_delete_req_cb: callback to bss peer delete request 279 * @mlme_cm_ext_disconnect_complete_ind_cb: callback to indicate disconnect 280 * complete 281 * @mlme_cm_ext_vdev_down_req_cb: callback to send vdev down to FW 282 * @mlme_cm_ext_roam_start_ind_cb: callback to indicate roam start 283 * @mlme_cm_ext_rso_stop_cb: callback to send rso stop to FW 284 * @mlme_cm_ext_reassoc_req_cb: callback for reassoc request to 285 * VDEV/PEER SM 286 * @mlme_vdev_send_set_mac_addr: callback to send set MAC address 287 * request to FW 288 */ 289 struct mlme_ext_ops { 290 QDF_STATUS (*mlme_psoc_ext_hdl_create)( 291 struct psoc_mlme_obj *psoc_mlme); 292 QDF_STATUS (*mlme_psoc_ext_hdl_destroy)( 293 struct psoc_mlme_obj *pdev_mlme); 294 QDF_STATUS (*mlme_pdev_ext_hdl_create)( 295 struct pdev_mlme_obj *pdev_mlme); 296 QDF_STATUS (*mlme_pdev_ext_hdl_destroy)( 297 struct pdev_mlme_obj *pdev_mlme); 298 QDF_STATUS (*mlme_vdev_ext_hdl_create)( 299 struct vdev_mlme_obj *vdev_mlme); 300 QDF_STATUS (*mlme_vdev_ext_hdl_post_create)( 301 struct vdev_mlme_obj *vdev_mlme); 302 QDF_STATUS (*mlme_vdev_ext_hdl_destroy)( 303 struct vdev_mlme_obj *vdev_mlme); 304 QDF_STATUS (*mlme_vdev_start_fw_send)( 305 struct wlan_objmgr_vdev *vdev, uint8_t restart); 306 QDF_STATUS (*mlme_vdev_stop_fw_send)(struct wlan_objmgr_vdev *vdev); 307 QDF_STATUS (*mlme_vdev_down_fw_send)(struct wlan_objmgr_vdev *vdev); 308 QDF_STATUS (*mlme_multivdev_restart_fw_send)( 309 struct wlan_objmgr_pdev *pdev); 310 QDF_STATUS (*mlme_vdev_enqueue_exp_cmd)( 311 struct vdev_mlme_obj *vdev_mlme, 312 uint8_t cmd_type); 313 QDF_STATUS (*mlme_vdev_ext_delete_rsp)( 314 struct wlan_objmgr_psoc *psoc, 315 struct vdev_delete_response *rsp); 316 QDF_STATUS (*mlme_multi_vdev_restart_resp)( 317 struct wlan_objmgr_psoc *psoc, 318 struct multi_vdev_restart_resp *resp); 319 QDF_STATUS (*mlme_cm_ext_hdl_create_cb)(struct wlan_objmgr_vdev *vdev, 320 cm_ext_t **ext_cm_ptr); 321 QDF_STATUS (*mlme_cm_ext_hdl_destroy_cb)(struct wlan_objmgr_vdev *vdev, 322 cm_ext_t *ext_cm_ptr); 323 QDF_STATUS (*mlme_cm_ext_connect_start_ind_cb)( 324 struct wlan_objmgr_vdev *vdev, 325 struct wlan_cm_connect_req *req); 326 QDF_STATUS (*mlme_cm_ext_bss_select_ind_cb)( 327 struct wlan_objmgr_vdev *vdev, 328 struct wlan_cm_vdev_connect_req *req); 329 QDF_STATUS (*mlme_cm_ext_bss_peer_create_req_cb)( 330 struct wlan_objmgr_vdev *vdev, 331 struct qdf_mac_addr *peer_mac, 332 struct qdf_mac_addr *mld_mac, 333 bool is_assoc_link); 334 QDF_STATUS (*mlme_cm_ext_connect_req_cb)(struct wlan_objmgr_vdev *vdev, 335 struct wlan_cm_vdev_connect_req *req); 336 QDF_STATUS (*mlme_cm_ext_connect_complete_ind_cb)( 337 struct wlan_objmgr_vdev *vdev, 338 struct wlan_cm_connect_resp *rsp); 339 QDF_STATUS (*mlme_cm_ext_disconnect_start_ind_cb)( 340 struct wlan_objmgr_vdev *vdev, 341 struct wlan_cm_disconnect_req *req); 342 QDF_STATUS (*mlme_cm_ext_disconnect_req_cb) 343 (struct wlan_objmgr_vdev *vdev, 344 struct wlan_cm_vdev_discon_req *req); 345 QDF_STATUS (*mlme_cm_ext_bss_peer_delete_req_cb)( 346 struct wlan_objmgr_vdev *vdev); 347 QDF_STATUS (*mlme_cm_ext_disconnect_complete_ind_cb)( 348 struct wlan_objmgr_vdev *vdev, 349 struct wlan_cm_discon_rsp *rsp); 350 QDF_STATUS (*mlme_cm_ext_vdev_down_req_cb)( 351 struct wlan_objmgr_vdev *vdev); 352 QDF_STATUS (*mlme_cm_ext_roam_start_ind_cb)( 353 struct wlan_objmgr_vdev *vdev, 354 struct wlan_cm_roam_req *req); 355 QDF_STATUS (*mlme_cm_ext_rso_stop_cb)(struct wlan_objmgr_vdev *vdev); 356 QDF_STATUS (*mlme_cm_ext_reassoc_req_cb)( 357 struct wlan_objmgr_vdev *vdev, 358 struct wlan_cm_vdev_reassoc_req *req); 359 #ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE 360 QDF_STATUS (*mlme_vdev_send_set_mac_addr)( 361 struct qdf_mac_addr mac_addr, 362 struct qdf_mac_addr mld_addr, 363 struct wlan_objmgr_vdev *vdev); 364 #endif 365 QDF_STATUS (*mlme_ext_get_acs_inprogress)( 366 struct wlan_objmgr_vdev *vdev, 367 bool *is_acs_inprogress); 368 }; 369 370 /** 371 * struct mlme_external_tx_ops - MLME external callbacks structure 372 * @peer_ops: callback to invoke peer mlme ops from external module 373 * @vdev_ops: callback to invoke vdev mlme ops from external module 374 * @pdev_ops: callback to invoke pdev mlme ops from external module 375 * @scan_db_iterate: callback to invoke scan database iterate 376 */ 377 enum wlan_mlme_peer_param; 378 enum wlan_mlme_vdev_param; 379 enum wlan_mlme_pdev_param; 380 struct mlme_external_tx_ops { 381 QDF_STATUS (*peer_ops)( 382 struct wlan_objmgr_peer *peer, 383 enum wlan_mlme_peer_param type, 384 void *data, void *ret); 385 QDF_STATUS (*vdev_ops)( 386 struct wlan_objmgr_vdev *vdev, 387 enum wlan_mlme_vdev_param type, 388 void *data, void *ret); 389 QDF_STATUS (*pdev_ops)( 390 struct wlan_objmgr_pdev *pdev, 391 enum wlan_mlme_pdev_param type, 392 void *data, void *ret); 393 QDF_STATUS (*scan_db_iterate)( 394 struct wlan_objmgr_pdev *pdev, 395 scan_iterator_func handler, void *arg); 396 }; 397 398 /** 399 * mlme_psoc_ops_ext_hdl_create() - Alloc PSOC mlme ext handle 400 * @psoc_mlme: PSOC MLME comp object 401 * 402 * API to allocate PSOC MLME ext handle 403 * 404 * Return: SUCCESS on successful allocation 405 * Else FAILURE 406 */ 407 QDF_STATUS mlme_psoc_ops_ext_hdl_create(struct psoc_mlme_obj *psoc_mlme); 408 409 /** 410 * mlme_psoc_ops_ext_hdl_destroy() - Destroy PSOC mlme ext handle 411 * @psoc_mlme: PSOC MLME comp object 412 * 413 * API to free psoc MLME ext handle 414 * 415 * Return: SUCCESS on successful free 416 * Else FAILURE 417 */ 418 QDF_STATUS mlme_psoc_ops_ext_hdl_destroy(struct psoc_mlme_obj *psoc_mlme); 419 420 /** 421 * mlme_pdev_ops_ext_hdl_create - Alloc PDEV mlme ext handle 422 * @pdev_mlme_obj: PDEV MLME comp object 423 * 424 * API to allocate PDEV MLME ext handle 425 * 426 * Return: SUCCESS on successful allocation 427 * Else FAILURE 428 */ 429 QDF_STATUS mlme_pdev_ops_ext_hdl_create(struct pdev_mlme_obj *pdev_mlme); 430 431 /** 432 * mlme_pdev_ops_ext_hdl_destroy - Destroy PDEV mlme ext handle 433 * @pdev_mlme_obj: PDEV MLME comp object 434 * 435 * API to free pdev MLME ext handle 436 * 437 * Return: SUCCESS on successful free 438 * Else FAILURE 439 */ 440 QDF_STATUS mlme_pdev_ops_ext_hdl_destroy(struct pdev_mlme_obj *pdev_mlme); 441 442 /** 443 * mlme_vdev_ops_ext_hdl_create - Alloc VDEV mlme ext handle 444 * @vdev_mlme_obj: VDEV MLME comp object 445 * 446 * API to allocate VDEV MLME ext handle 447 * 448 * Return: SUCCESS on successful allocation 449 * Else FAILURE 450 */ 451 QDF_STATUS mlme_vdev_ops_ext_hdl_create(struct vdev_mlme_obj *vdev_mlme); 452 453 /** 454 * mlme_vdev_ops_ext_hdl_post_create - Perform post VDEV mlme ext handle alloc 455 * operations 456 * @vdev_mlme_obj: VDEV MLME comp object 457 * 458 * API to perform post vdev MLME ext handle allocation operations 459 * 460 * Return: SUCCESS on initialization successful 461 * Else FAILURE 462 */ 463 QDF_STATUS mlme_vdev_ops_ext_hdl_post_create(struct vdev_mlme_obj *vdev_mlme); 464 465 /** 466 * mlme_vdev_ops_ext_hdl_destroy - Destroy VDEV mlme ext handle 467 * @vdev_mlme_obj: VDEV MLME comp object 468 * 469 * API to free vdev MLME ext handle 470 * 471 * Return: SUCCESS on successful free 472 * Else FAILURE 473 */ 474 QDF_STATUS mlme_vdev_ops_ext_hdl_destroy(struct vdev_mlme_obj *vdev_mlme); 475 476 /** 477 * mlme_vdev_enqueue_exp_ser_cmd - Enqueue exception serialization cmd 478 * @vdev_mlme_obj: VDEV MLME comp object 479 * @cmd_type: Serialization command type 480 * 481 * API to enqueue the exception serialization command, used by 482 * mlme-serialization wrapper layer 483 * 484 * Return: SUCCESS on successful enqueuing the command 485 * Else FAILURE 486 */ 487 QDF_STATUS mlme_vdev_enqueue_exp_ser_cmd(struct vdev_mlme_obj *vdev_mlme, 488 uint8_t cmd_type); 489 490 /** 491 * mlme_vdev_ops_start_fw_send - Send WMI START/RESTART command to FW 492 * @vdev: VDEV object 493 * 494 * API to send WMI start/restart command to FW 495 * 496 * Return: SUCCESS on successful sending the command 497 * Else FAILURE 498 */ 499 QDF_STATUS mlme_vdev_ops_start_fw_send(struct wlan_objmgr_vdev *vdev, 500 uint8_t restart); 501 502 /** 503 * mlme_vdev_ops_multivdev_restart_fw_cmd_send - Send WMI Multivdev restart 504 * command to FW 505 * @pdev: PDEV object 506 * 507 * API to send WMI multivdev restart command to FW 508 * 509 * Return: SUCCESS on successful sending the command 510 * Else FAILURE 511 */ 512 QDF_STATUS mlme_vdev_ops_multivdev_restart_fw_cmd_send( 513 struct wlan_objmgr_pdev *pdev); 514 515 /** 516 * mlme_vdev_ops_stop_fw_send - Send WMI STOP command to FW 517 * @vdev: VDEV object 518 * 519 * API to send WMI stop command to FW 520 * 521 * Return: SUCCESS on successful sending the command 522 * Else FAILURE 523 */ 524 QDF_STATUS mlme_vdev_ops_stop_fw_send(struct wlan_objmgr_vdev *vdev); 525 526 /** 527 * mlme_vdev_ops_down_fw_send - Send WMI Down command to FW 528 * @vdev: VDEV object 529 * 530 * API to send WMI down command to FW 531 * 532 * Return: SUCCESS on successful sending the command 533 * Else FAILURE 534 */ 535 QDF_STATUS mlme_vdev_ops_down_fw_send(struct wlan_objmgr_vdev *vdev); 536 537 /* 538 * mlme_vdev_ops_ext_hdl_multivdev_restart_resp() - Handler multivdev restart 539 * response event 540 * @psoc: PSOC object manager handle 541 * @resp: Restart response event 542 * 543 * Return: Success on successful handling of the response event, 544 * Else failure 545 */ 546 QDF_STATUS mlme_vdev_ops_ext_hdl_multivdev_restart_resp( 547 struct wlan_objmgr_psoc *psoc, 548 struct multi_vdev_restart_resp *resp); 549 550 /** 551 * mlme_set_ops_register_cb - Sets ops registration callback 552 * @ops_cb: Function pointer 553 * 554 * API to set ops registration call back 555 * 556 * Return: void 557 */ 558 typedef struct mlme_ext_ops *(*mlme_get_global_ops_cb)(void); 559 void mlme_set_ops_register_cb(mlme_get_global_ops_cb ops_cb); 560 561 /** 562 * wlan_cmn_mlme_init - Initializes MLME component 563 * 564 * Registers callbacks with object manager for create/destroy 565 * 566 * Return: SUCCESS on successful registration 567 * FAILURE, if registration fails 568 */ 569 QDF_STATUS wlan_cmn_mlme_init(void); 570 571 /** 572 * wlan_cmn_mlme_deinit - Uninitializes MLME component 573 * 574 * Unregisters callbacks with object manager for create/destroy 575 * 576 * Return: SUCCESS on successful registration 577 * FAILURE, if registration fails 578 */ 579 QDF_STATUS wlan_cmn_mlme_deinit(void); 580 581 /** 582 * mlme_vdev_ops_ext_hdl_delete_rsp - Vdev Delete response ext handler 583 * @psoc: PSOC object 584 * @rsp: Vdev delete response received from the firmware 585 * 586 * API to invoke the legacy delete response handler for legacy cleanup 587 * 588 * Return: SUCCESS on successful deletion 589 * FAILURE, if deletion fails 590 */ 591 QDF_STATUS mlme_vdev_ops_ext_hdl_delete_rsp(struct wlan_objmgr_psoc *psoc, 592 struct vdev_delete_response *rsp); 593 594 /** 595 * mlme_cm_ext_hdl_create() - Connection manager callback to create ext 596 * context 597 * @vdev: VDEV object 598 * @ext_cm_ptr: pointer to connection manager ext pointer 599 * 600 * Return: QDF_STATUS 601 */ 602 QDF_STATUS mlme_cm_ext_hdl_create(struct wlan_objmgr_vdev *vdev, 603 cm_ext_t **ext_cm_ptr); 604 605 /** 606 * mlme_cm_ext_hdl_destroy() - Connection manager callback to destroy ext 607 * context 608 * @vdev: VDEV object 609 * @ext_cm_ptr: connection manager ext pointer 610 * 611 * Return: QDF_STATUS 612 */ 613 QDF_STATUS mlme_cm_ext_hdl_destroy(struct wlan_objmgr_vdev *vdev, 614 cm_ext_t *ext_cm_ptr); 615 616 /** 617 * mlme_cm_connect_start_ind() - Connection manager ext Connect start indication 618 * @vdev: VDEV object 619 * @req: Connection manager connect request 620 * 621 * Return: QDF_STATUS 622 */ 623 QDF_STATUS mlme_cm_connect_start_ind(struct wlan_objmgr_vdev *vdev, 624 struct wlan_cm_connect_req *req); 625 626 /** 627 * mlme_cm_bss_select_ind() - Connection manager ext Connect candidate 628 * select indication, to do operations for the candidate 629 * @vdev: VDEV object 630 * @req: Vdev connect request 631 * 632 * Return: QDF_STATUS 633 */ 634 QDF_STATUS mlme_cm_bss_select_ind(struct wlan_objmgr_vdev *vdev, 635 struct wlan_cm_vdev_connect_req *req); 636 637 /** 638 * mlme_cm_bss_peer_create_req() - Connection manager ext bss peer create 639 * request 640 * @vdev: VDEV object 641 * @peer_mac: Peer mac address 642 * @mld_mac: mld mac address 643 * @is_assoc_link: assoc happens on this link or not 644 * 645 * Return: QDF_STATUS 646 */ 647 QDF_STATUS mlme_cm_bss_peer_create_req(struct wlan_objmgr_vdev *vdev, 648 struct qdf_mac_addr *peer_mac, 649 struct qdf_mac_addr *mld_mac, 650 bool is_assoc_link); 651 652 /** 653 * mlme_cm_connect_req() - Connection manager ext connect request to start vdev 654 * and peer assoc state machine 655 * @vdev: VDEV object 656 * @req: Vdev connect request 657 * 658 * Context: The req is on stack, so the API need to make a copy, if it want to 659 * use the req after return. 660 * 661 * Return: QDF_STATUS 662 */ 663 QDF_STATUS mlme_cm_connect_req(struct wlan_objmgr_vdev *vdev, 664 struct wlan_cm_vdev_connect_req *req); 665 666 /** 667 * mlme_cm_connect_complete_ind() - Connection manager ext connect complete 668 * indication 669 * @vdev: VDEV object 670 * @rsp: Connection manager connect response 671 * 672 * Return: QDF_STATUS 673 */ 674 QDF_STATUS mlme_cm_connect_complete_ind(struct wlan_objmgr_vdev *vdev, 675 struct wlan_cm_connect_resp *rsp); 676 677 /** 678 * mlme_cm_roam_start_ind() - Connection manager ext Connect start indication 679 * @vdev: VDEV object 680 * @req: Connection manager roam request 681 * 682 * Return: QDF_STATUS 683 */ 684 QDF_STATUS mlme_cm_roam_start_ind(struct wlan_objmgr_vdev *vdev, 685 struct wlan_cm_roam_req *req); 686 687 /** 688 * mlme_cm_rso_stop_req() - Connection manager ext RSO stop request 689 * @vdev: VDEV object 690 * 691 * Return: QDF_STATUS 692 */ 693 QDF_STATUS mlme_cm_rso_stop_req(struct wlan_objmgr_vdev *vdev); 694 695 /** 696 * mlme_cm_reassoc_req() - Connection manager ext reassoc request 697 * @vdev: VDEV object 698 * @req: Vdev reassoc request 699 * 700 * Context: The req is on stack, so the API need to make a copy, if it want to 701 * use the req after return. 702 * 703 * Return: QDF_STATUS 704 */ 705 QDF_STATUS mlme_cm_reassoc_req(struct wlan_objmgr_vdev *vdev, 706 struct wlan_cm_vdev_reassoc_req *req); 707 708 /** 709 * mlme_cm_disconnect_start_ind() - Connection manager ext disconnect start 710 * indication 711 * @vdev: VDEV object 712 * @req: Connection manager disconnect request 713 * 714 * Return: QDF_STATUS 715 */ 716 QDF_STATUS mlme_cm_disconnect_start_ind(struct wlan_objmgr_vdev *vdev, 717 struct wlan_cm_disconnect_req *req); 718 719 /** 720 * mlme_cm_disconnect_req() - Connection manager ext disconnect 721 * req to vdev and peer sm 722 * @vdev: VDEV object 723 * @req: vdev disconnect request 724 * 725 * Return: QDF_STATUS 726 */ 727 QDF_STATUS mlme_cm_disconnect_req(struct wlan_objmgr_vdev *vdev, 728 struct wlan_cm_vdev_discon_req *req); 729 730 /** 731 * mlme_cm_bss_peer_delete_req() - Connection manager ext bss peer delete 732 * request 733 * @vdev: VDEV object 734 * 735 * Return: QDF_STATUS 736 */ 737 QDF_STATUS 738 mlme_cm_bss_peer_delete_req(struct wlan_objmgr_vdev *vdev); 739 740 /** 741 * mlme_cm_disconnect_complete_ind() - Connection manager ext disconnect 742 * complete indication 743 * @vdev: VDEV object 744 * @rsp: Connection manager disconnect response 745 * 746 * Return: QDF_STATUS 747 */ 748 QDF_STATUS mlme_cm_disconnect_complete_ind(struct wlan_objmgr_vdev *vdev, 749 struct wlan_cm_discon_rsp *rsp); 750 751 /** 752 * mlme_cm_vdev_down() - Connection manager ext req to send vdev down to FW 753 * @vdev: VDEV object 754 * 755 * Return: QDF_STATUS 756 */ 757 QDF_STATUS mlme_cm_vdev_down_req(struct wlan_objmgr_vdev *vdev); 758 759 /** 760 * mlme_ext_hdl_get_acs_in_progress() - Check if ACS is in progress 761 * @vdev: VDEV object 762 * @acs_in_progress: ACS in progress flag 763 * 764 * Return: QDF_STATUS 765 */ 766 QDF_STATUS mlme_ext_hdl_get_acs_in_progress(struct wlan_objmgr_vdev *vdev, 767 bool *acs_in_progress); 768 /** 769 * mlme_cm_osif_connect_complete() - Connect complete resp to osif 770 * @vdev: vdev pointer 771 * @rsp: Connect response 772 * 773 * Return: QDF_STATUS 774 */ 775 QDF_STATUS mlme_cm_osif_connect_complete(struct wlan_objmgr_vdev *vdev, 776 struct wlan_cm_connect_resp *rsp); 777 778 /** 779 * mlme_cm_osif_failed_candidate_ind() - Failed Candidate indication to osif 780 * @vdev: vdev pointer 781 * @rsp: Connect response 782 * 783 * Return: QDF_STATUS 784 */ 785 QDF_STATUS 786 mlme_cm_osif_failed_candidate_ind(struct wlan_objmgr_vdev *vdev, 787 struct wlan_cm_connect_resp *rsp); 788 789 /** 790 * mlme_cm_osif_update_id_and_src() - Update connection id and source to osif 791 * @vdev: vdev pointer 792 * @source: source of request 793 * @cm_id: connection manager id 794 * 795 * Return: QDF_STATUS 796 */ 797 QDF_STATUS mlme_cm_osif_update_id_and_src(struct wlan_objmgr_vdev *vdev, 798 enum wlan_cm_source source, 799 wlan_cm_id cm_id); 800 801 /** 802 * mlme_cm_osif_disconnect_complete() - Disconnect complete osif response 803 * @vdev: vdev pointer 804 * @cm_conn_rsp: Connect response 805 * 806 * Return: QDF_STATUS 807 */ 808 QDF_STATUS 809 mlme_cm_osif_disconnect_complete(struct wlan_objmgr_vdev *vdev, 810 struct wlan_cm_discon_rsp *rsp); 811 812 /** 813 * mlme_cm_osif_disconnect_start_ind() - osif Disconnect start indication 814 * @vdev: vdev pointer 815 * @cm_conn_rsp: Connect response 816 * 817 * Return: QDF_STATUS 818 */ 819 QDF_STATUS mlme_cm_osif_disconnect_start_ind(struct wlan_objmgr_vdev *vdev); 820 821 #ifdef WLAN_VENDOR_HANDOFF_CONTROL 822 /** 823 * mlme_cm_osif_get_vendor_handoff_params() - osif get vendor handoff params 824 * indication 825 * @psoc: psoc pointer 826 * @vendor_handoff_context: vendor handoff context 827 * 828 * Return: QDF_STATUS 829 */ 830 QDF_STATUS mlme_cm_osif_get_vendor_handoff_params(struct wlan_objmgr_psoc *psoc, 831 void *vendor_handoff_context); 832 #endif 833 834 #ifdef CONN_MGR_ADV_FEATURE 835 /** 836 * mlme_cm_osif_roam_sync_ind() - osif Roam sync indication 837 * @vdev: vdev pointer 838 * 839 * Return: QDF_STATUS 840 */ 841 QDF_STATUS mlme_cm_osif_roam_sync_ind(struct wlan_objmgr_vdev *vdev); 842 843 /** 844 * mlme_cm_osif_pmksa_candidate_notify() - osif roam pmksa candidate notify 845 * @vdev: vdev pointer 846 * @bssid: bssid 847 * @index: index 848 * @preauth: preauth flag 849 * 850 * Return: QDF_STATUS 851 */ 852 QDF_STATUS mlme_cm_osif_pmksa_candidate_notify(struct wlan_objmgr_vdev *vdev, 853 struct qdf_mac_addr *bssid, 854 int index, bool preauth); 855 /** 856 * mlme_cm_osif_send_keys() - send vdev keys 857 * @vdev: vdev pointer 858 * @key_index: key index value 859 * @pairwise: pairwise bool value 860 * @ciipher_type: cipher enum value 861 * 862 * Return: QDF_STATUS 863 */ 864 QDF_STATUS mlme_cm_osif_send_keys(struct wlan_objmgr_vdev *vdev, 865 uint8_t key_index, bool pairwise, 866 enum wlan_crypto_cipher_type cipher_type); 867 #else 868 static inline 869 QDF_STATUS mlme_cm_osif_roam_sync_ind(struct wlan_objmgr_vdev *vdev) 870 { 871 return QDF_STATUS_SUCCESS; 872 } 873 874 static inline 875 QDF_STATUS mlme_cm_osif_send_keys(struct wlan_objmgr_vdev *vdev, 876 uint8_t key_index, bool pairwise, 877 enum wlan_crypto_cipher_type cipher_type) 878 { 879 return QDF_STATUS_SUCCESS; 880 } 881 #endif 882 883 #ifdef WLAN_FEATURE_ROAM_OFFLOAD 884 /** 885 * mlme_cm_osif_roam_start_ind() - osif Roam start indication 886 * @vdev: vdev pointer 887 * 888 * Return: QDF_STATUS 889 */ 890 QDF_STATUS mlme_cm_osif_roam_start_ind(struct wlan_objmgr_vdev *vdev); 891 892 /** 893 * mlme_cm_osif_roam_abort_ind() - osif Roam abort indication 894 * @vdev: vdev pointer 895 * 896 * Return: QDF_STATUS 897 */ 898 QDF_STATUS mlme_cm_osif_roam_abort_ind(struct wlan_objmgr_vdev *vdev); 899 900 /** 901 * mlme_cm_osif_roam_complete() - osif Roam sync complete callback 902 * @vdev: vdev pointer 903 * 904 * Return: QDF_STATUS 905 */ 906 QDF_STATUS mlme_cm_osif_roam_complete(struct wlan_objmgr_vdev *vdev); 907 908 /** 909 * mlme_cm_osif_roam_get_scan_params() - osif Roam get scan params callback 910 * @vdev: vdev pointer 911 * @scan_ie: Pointer to scan_ie 912 * @dot11mode_filter: Pointer to dot11mode_filter 913 * 914 * Get scan IE params from adapter corresponds to given vdev 915 * 916 * Return: QDF_STATUS 917 */ 918 QDF_STATUS 919 mlme_cm_osif_roam_get_scan_params(struct wlan_objmgr_vdev *vdev, 920 struct element_info *scan_ie, 921 enum dot11_mode_filter *dot11mode_filter); 922 #endif 923 924 #ifdef WLAN_FEATURE_PREAUTH_ENABLE 925 /** 926 * mlme_cm_osif_ft_preauth_complete() - osif roam ft preauth complete callback 927 * @vdev: vdev pointer 928 * @rsp: preauth response pointer 929 * 930 * Return: QDF_STATUS 931 */ 932 QDF_STATUS 933 mlme_cm_osif_ft_preauth_complete(struct wlan_objmgr_vdev *vdev, 934 struct wlan_preauth_rsp *rsp); 935 #ifdef FEATURE_WLAN_ESE 936 /** 937 * mlme_cm_osif_cckm_preauth_complete() - osif cckm preauth complete callback 938 * @vdev: vdev pointer 939 * @rsp: preauth response pointer 940 * 941 * Return: QDF_STATUS 942 */ 943 QDF_STATUS 944 mlme_cm_osif_cckm_preauth_complete(struct wlan_objmgr_vdev *vdev, 945 struct wlan_preauth_rsp *rsp); 946 #else 947 static inline QDF_STATUS 948 mlme_cm_osif_cckm_preauth_complete(struct wlan_objmgr_vdev *vdev, 949 struct wlan_preauth_rsp *rsp) 950 { 951 return QDF_STATUS_SUCCESS; 952 } 953 #endif /* FEATURE_WLAN_ESE */ 954 #endif /* WLAN_FEATURE_PREAUTH_ENABLE */ 955 956 /** 957 * typedef osif_cm_get_global_ops_cb() - Callback to get connection manager 958 * global ops 959 */ 960 typedef struct mlme_cm_ops *(*osif_cm_get_global_ops_cb)(void); 961 962 /** 963 * typedef osif_twt_get_global_ops_cb() - Callback to get twt global ops 964 */ 965 typedef struct mlme_twt_ops *(*osif_twt_get_global_ops_cb)(void); 966 967 /** 968 * mlme_set_osif_cm_cb() - Sets ops registration callback 969 * @cm_osif_ops: Function pointer 970 * 971 * API to set ops registration call back 972 * 973 * Return: void 974 */ 975 void mlme_set_osif_cm_cb(osif_cm_get_global_ops_cb cm_osif_ops); 976 977 /** 978 * typedef osif_vdev_mgr_get_global_ops_cb() - Callback to get vdev manager 979 * global ops 980 */ 981 typedef struct mlme_vdev_mgr_ops *(*osif_vdev_mgr_get_global_ops_cb)(void); 982 983 /** 984 * mlme_set_osif_vdev_mgr_cb() - Sets ops registration callback 985 * @mlme_vdev_mgr_osif_ops: Function pointer 986 * 987 * API to set ops registration call back 988 * 989 * Return: void 990 */ 991 void mlme_set_osif_vdev_mgr_cb( 992 osif_vdev_mgr_get_global_ops_cb mlme_vdev_mgr_osif_ops); 993 994 /** 995 * mlme_set_osif_twt_cb() - Sets twt ops registration callback 996 * @twt_osif_ops: Function pointer 997 * 998 * API to set twt ops registration call back 999 * 1000 * Return: void 1001 */ 1002 void mlme_set_osif_twt_cb(osif_twt_get_global_ops_cb twt_osif_ops); 1003 1004 /** 1005 * mlme_max_chan_switch_is_set() - Get if max chan switch IE is enabled 1006 * @vdev: Object manager vdev pointer 1007 * 1008 * Return: True if max chan switch is enabled else false 1009 */ 1010 bool mlme_max_chan_switch_is_set(struct wlan_objmgr_psoc *psoc); 1011 1012 #ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE 1013 /** 1014 * mlme_vdev_ops_send_set_mac_address() - Send set MAC address request to FW 1015 * @mac_addr: VDEV MAC address 1016 * @mld_addr: VDEV MLD address 1017 * @vdev: vdev pointer 1018 * 1019 * API to send set MAC address request command to FW 1020 * 1021 * Return: QDF_STATUS 1022 */ 1023 QDF_STATUS mlme_vdev_ops_send_set_mac_address(struct qdf_mac_addr mac_addr, 1024 struct qdf_mac_addr mld_addr, 1025 struct wlan_objmgr_vdev *vdev); 1026 1027 /** 1028 * mlme_vdev_mgr_notify_set_mac_addr_response() - Notify set MAC address 1029 * response 1030 * @vdev_id: VDEV ID 1031 * @resp_status: FW response for the set MAC address operation 1032 * 1033 * API to notify set MAC address to osif 1034 * 1035 * Return: None 1036 */ 1037 void mlme_vdev_mgr_notify_set_mac_addr_response(uint8_t vdev_id, 1038 uint8_t resp_status); 1039 #endif 1040 1041 #if defined(WLAN_SUPPORT_TWT) && defined(WLAN_TWT_CONV_SUPPORTED) 1042 /** 1043 * mlme_twt_osif_enable_complete_ind() - enable complete resp to osif 1044 * @psoc: psoc pointer 1045 * @event: enable complete response 1046 * 1047 * Return: QDF_STATUS 1048 */ 1049 QDF_STATUS 1050 mlme_twt_osif_enable_complete_ind(struct wlan_objmgr_psoc *psoc, 1051 struct twt_enable_complete_event_param *event, 1052 void *context); 1053 1054 /** 1055 * mlme_twt_osif_disable_complete_ind() - disable complete resp to osif 1056 * @psoc: psoc pointer 1057 * @event: disable complete response 1058 * 1059 * Return: QDF_STATUS 1060 */ 1061 QDF_STATUS 1062 mlme_twt_osif_disable_complete_ind(struct wlan_objmgr_psoc *psoc, 1063 struct twt_disable_complete_event_param *event, 1064 void *context); 1065 1066 /** 1067 * mlme_twt_osif_ack_complete_ind() - ack complete resp to osif 1068 * @psoc: psoc pointer 1069 * @event: ack complete response 1070 * 1071 * Return: QDF_STATUS 1072 */ 1073 QDF_STATUS 1074 mlme_twt_osif_ack_complete_ind(struct wlan_objmgr_psoc *psoc, 1075 struct twt_ack_complete_event_param *event, 1076 void *context); 1077 1078 /** 1079 * mlme_twt_osif_setup_complete_ind() - setup complete resp to osif 1080 * @psoc: psoc pointer 1081 * @event: setup complete response 1082 * @renego_fail: flag to indicate if renegotiation failure case 1083 * 1084 * Return: QDF_STATUS 1085 */ 1086 QDF_STATUS 1087 mlme_twt_osif_setup_complete_ind(struct wlan_objmgr_psoc *psoc, 1088 struct twt_add_dialog_complete_event *event, 1089 bool renego_fail); 1090 1091 /** 1092 * mlme_twt_osif_teardown_complete_ind() - teardown complete resp to osif 1093 * @psoc: psoc pointer 1094 * @event: teardown complete response 1095 * 1096 * Return: QDF_STATUS 1097 */ 1098 QDF_STATUS 1099 mlme_twt_osif_teardown_complete_ind(struct wlan_objmgr_psoc *psoc, 1100 struct twt_del_dialog_complete_event_param *event); 1101 1102 /** 1103 * mlme_twt_osif_pause_complete_ind() - pause complete resp to osif 1104 * @psoc: psoc pointer 1105 * @event: pause complete response 1106 * 1107 * Return: QDF_STATUS 1108 */ 1109 QDF_STATUS 1110 mlme_twt_osif_pause_complete_ind(struct wlan_objmgr_psoc *psoc, 1111 struct twt_pause_dialog_complete_event_param *event); 1112 1113 /** 1114 * mlme_twt_osif_resume_complete_ind() - resume complete resp to osif 1115 * @psoc: psoc pointer 1116 * @event: resume complete response 1117 * 1118 * Return: QDF_STATUS 1119 */ 1120 QDF_STATUS 1121 mlme_twt_osif_resume_complete_ind(struct wlan_objmgr_psoc *psoc, 1122 struct twt_resume_dialog_complete_event_param *event); 1123 1124 /** 1125 * mlme_twt_osif_nudge_complete_ind() - nudge complete resp to osif 1126 * @psoc: psoc pointer 1127 * @event: nudge complete response 1128 * 1129 * Return: QDF_STATUS 1130 */ 1131 QDF_STATUS 1132 mlme_twt_osif_nudge_complete_ind(struct wlan_objmgr_psoc *psoc, 1133 struct twt_nudge_dialog_complete_event_param *event); 1134 1135 /** 1136 * mlme_twt_osif_notify_complete_ind() - notify complete resp to osif 1137 * @psoc: psoc pointer 1138 * @event: notify complete response 1139 * 1140 * Return: QDF_STATUS 1141 */ 1142 QDF_STATUS 1143 mlme_twt_osif_notify_complete_ind(struct wlan_objmgr_psoc *psoc, 1144 struct twt_notify_event_param *event); 1145 1146 /** 1147 * mlme_twt_vdev_create_notification() - vdev create notification to osif 1148 * @vdev: vdev pointer 1149 * 1150 * Return: QDF_STATUS 1151 */ 1152 QDF_STATUS 1153 mlme_twt_vdev_create_notification(struct wlan_objmgr_vdev *vdev); 1154 1155 /** 1156 * mlme_twt_vdev_destroy_notification() - vdev destroy notification to osif 1157 * @vdev: vdev pointer 1158 * 1159 * Return: QDF_STATUS 1160 */ 1161 QDF_STATUS 1162 mlme_twt_vdev_destroy_notification(struct wlan_objmgr_vdev *vdev); 1163 #else 1164 static inline QDF_STATUS 1165 mlme_twt_osif_enable_complete_ind(struct wlan_objmgr_psoc *psoc, 1166 struct twt_enable_complete_event_param *event, 1167 void *context) 1168 { 1169 return QDF_STATUS_SUCCESS; 1170 } 1171 1172 static inline QDF_STATUS 1173 mlme_twt_osif_disable_complete_ind(struct wlan_objmgr_psoc *psoc, 1174 struct twt_disable_complete_event_param *event, 1175 void *context) 1176 { 1177 return QDF_STATUS_SUCCESS; 1178 } 1179 1180 static inline QDF_STATUS 1181 mlme_twt_osif_ack_complete_ind(struct wlan_objmgr_psoc *psoc, 1182 struct twt_ack_complete_event_param *event, 1183 void *context) 1184 { 1185 return QDF_STATUS_SUCCESS; 1186 } 1187 1188 static inline QDF_STATUS 1189 mlme_twt_osif_setup_complete_ind(struct wlan_objmgr_psoc *psoc, 1190 struct twt_add_dialog_complete_event *event, 1191 bool renego_fail) 1192 { 1193 return QDF_STATUS_SUCCESS; 1194 } 1195 1196 static inline QDF_STATUS 1197 mlme_twt_osif_teardown_complete_ind(struct wlan_objmgr_psoc *psoc, 1198 struct twt_del_dialog_complete_event_param *event) 1199 { 1200 return QDF_STATUS_SUCCESS; 1201 } 1202 1203 static inline QDF_STATUS 1204 mlme_twt_osif_pause_complete_ind(struct wlan_objmgr_psoc *psoc, 1205 struct twt_pause_dialog_complete_event_param *event) 1206 { 1207 return QDF_STATUS_SUCCESS; 1208 } 1209 1210 static inline QDF_STATUS 1211 mlme_twt_osif_resume_complete_ind(struct wlan_objmgr_psoc *psoc, 1212 struct twt_resume_dialog_complete_event_param *event) 1213 { 1214 return QDF_STATUS_SUCCESS; 1215 } 1216 1217 static inline QDF_STATUS 1218 mlme_twt_osif_nudge_complete_ind(struct wlan_objmgr_psoc *psoc, 1219 struct twt_nudge_dialog_complete_event_param *event) 1220 { 1221 return QDF_STATUS_SUCCESS; 1222 } 1223 1224 static inline QDF_STATUS 1225 mlme_twt_osif_notify_complete_ind(struct wlan_objmgr_psoc *psoc, 1226 struct twt_notify_event_param *event) 1227 { 1228 return QDF_STATUS_SUCCESS; 1229 } 1230 1231 static inline QDF_STATUS 1232 mlme_twt_vdev_create_notification(struct wlan_objmgr_vdev *vdev) 1233 { 1234 return QDF_STATUS_SUCCESS; 1235 } 1236 1237 static inline QDF_STATUS 1238 mlme_twt_vdev_destroy_notification(struct wlan_objmgr_vdev *vdev) 1239 { 1240 return QDF_STATUS_SUCCESS; 1241 } 1242 1243 #endif /* WLAN_SUPPORT_TWT && WLAN_TWT_CONV_SUPPORTED */ 1244 1245 /** 1246 * mlme_vdev_reconfig_timer_cb() - vdev ml reconfig timer callback 1247 * @arg: timer argument 1248 * 1249 * Return: None 1250 */ 1251 void mlme_vdev_reconfig_timer_cb(void *arg); 1252 1253 /** 1254 * mlme_mlo_is_reconfig_reassoc_enable() - Get if reassoc on mlo reconfig link 1255 * add is enable 1256 * @psoc: Object manager psoc pointer 1257 * 1258 * Return: True if reassoc on mlo reconfig link add ie enable 1259 */ 1260 bool mlme_mlo_is_reconfig_reassoc_enable(struct wlan_objmgr_psoc *psoc); 1261 #endif 1262