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