Files
android_kernel_samsung_sm86…/umac/mlme/include/wlan_mlme_cmn.h
Vinod Kumar Pirla b41d140574 qcacmn: Enhancements for link switch disconnect
Introduce following for link switch disconnect:
   1) Disconnect source.
   2) Disconnect reason.
   3) Link switch BIT in CM_ID to identify link switch request

Don't notify link switch disconnect to initiate disconnect on
other connect VDEV of MLO mgr.

Don't notify userspace if the disconnect request is due to
link switch.

Don't notify netdev to stop queues on link switch disconnect.

Don't flush any pending disconnect/connect request on complete
of link switch disconnect request.

Don't attempt to serialize/deserialize disconnect command
if it is a link switch command ID due to either disconnect request,
disconnect complete or disconnect request flush.

Before start of link switch set the VDEV flag as MLO link VDEV
to leverage the disconnect/connect checks for link VDEV and
restore the flag at the end of link switch. This will impact
when link switch on assoc VDEV is received for which initially
the flag is not set.

Check status of link switch disconnect done API to either
proceed further in link switch or terminate the link switch.
If any userspace disconnect and link switch disconnect race
condition, always abort link switch disconnect and notify
failure to FW.

Change-Id: I6ec2a850d49f5ec6df2ec868c290f19203cd8c88
CRs-Fixed: 3556481
2023-08-02 04:54:41 -07:00

1390 lines
41 KiB
C

/*
* Copyright (c) 2019-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/**
* DOC: Define Common MLME structure and APIs
*/
#ifndef _WLAN_MLME_CMN_H_
#define _WLAN_MLME_CMN_H_
#include <include/wlan_psoc_mlme.h>
#include <include/wlan_pdev_mlme.h>
#include <include/wlan_vdev_mlme.h>
#include "wlan_cm_public_struct.h"
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
#include "wlan_cm_roam_public_struct.h"
#endif
#include "wlan_twt_public_structs.h"
/**
* struct mlme_cm_ops: connection manager osif callbacks
* @mlme_cm_connect_complete_cb: Connect done callback
* @vdev: vdev pointer
* @rsp: connect response
*
* @mlme_cm_failed_candidate_cb: Callback to indicate failed candidate
* @vdev: vdev pointer
* @rsp: connect response
*
* @mlme_cm_update_id_and_src_cb: Callback to update connect id and
* source of the connect request
* @vdev: vdev pointer
* @Source: Source of the connect req
* @cm_id: connection manager id
*
* @mlme_cm_disconnect_complete_cb: Disconnect done callback
* @vdev: vdev pointer
* @rsp: Disconnect response
*
* @mlme_cm_disconnect_start_cb: Disconnect start callback
* @vdev: vdev pointer
*
* @mlme_cm_roam_sync_cb: Roam sync callback
* @vdev: vdev pointer
*
* @mlme_cm_pmksa_candidate_notify_cb: Roam pmksa candidate notify callback
* @vdev: vdev pointer
* @bssid: bssid
* @index: index
* @preauth: preauth flag
*
* @mlme_cm_send_keys_cb:
* @vdev: vdev pointer
* @key_index: key index
* @pairwise: true if a pairwise key
* @cipher_type: key cipher type
*
* @mlme_cm_link_reconfig_notify_cb:
* @vdev: vdev object
*
* @mlme_cm_roam_start_cb: Roam start callback
* @vdev: vdev pointer
*
* @mlme_cm_roam_abort_cb: Roam abort callback
* @vdev: vdev pointer
*
* @mlme_cm_roam_cmpl_cb: Roam sync complete cb
* @vdev: vdev pointer
*
* @mlme_cm_roam_get_scan_ie_cb: Get scan ie cb
* @vdev: vdev pointer
* @scan_ie: scan ie element pointer
* @dot11mode_filter: dot11mode filter enumn pointer
*
* @mlme_cm_roam_rt_stats_cb: Roam stats cb
* @roam_stats_event: roam_stats_event pointer
* @idx: TLV idx for roam_stats_event
*
* @mlme_cm_ft_preauth_cmpl_cb: Roam ft preauth complete cb
* @vdev: vdev pointer
* @rsp: preauth response pointer
*
* @mlme_cm_cckm_preauth_cmpl_cb: Roam cckm preauth complete cb
* @vdev: vdev pointer
* @rsp: preauth response pointer
*
* @mlme_cm_get_vendor_handoff_params_cb: get vendor handoff params cb
* @psoc: psoc pointer
* @rsp: vendor handoff response pointer
* @vendor_handoff_context: vendor handoff context
*
* @mlme_cm_perfd_reset_cpufreq_ctrl_cb: callback to reset CPU min freq
*/
struct mlme_cm_ops {
QDF_STATUS (*mlme_cm_connect_complete_cb)(
struct wlan_objmgr_vdev *vdev,
struct wlan_cm_connect_resp *rsp);
QDF_STATUS (*mlme_cm_failed_candidate_cb)(
struct wlan_objmgr_vdev *vdev,
struct wlan_cm_connect_resp *rsp);
QDF_STATUS (*mlme_cm_update_id_and_src_cb)(
struct wlan_objmgr_vdev *vdev,
enum wlan_cm_source source,
wlan_cm_id cm_id);
QDF_STATUS (*mlme_cm_disconnect_complete_cb)(
struct wlan_objmgr_vdev *vdev,
struct wlan_cm_discon_rsp *rsp);
QDF_STATUS (*mlme_cm_disconnect_start_cb)(
struct wlan_objmgr_vdev *vdev,
enum wlan_cm_source source);
#ifdef CONN_MGR_ADV_FEATURE
QDF_STATUS (*mlme_cm_roam_sync_cb)(struct wlan_objmgr_vdev *vdev);
QDF_STATUS (*mlme_cm_pmksa_candidate_notify_cb)(
struct wlan_objmgr_vdev *vdev,
struct qdf_mac_addr *bssid,
int index, bool preauth);
QDF_STATUS (*mlme_cm_send_keys_cb)(struct wlan_objmgr_vdev *vdev,
uint8_t key_index, bool pairwise,
enum wlan_crypto_cipher_type cipher_type);
QDF_STATUS (*mlme_cm_link_reconfig_notify_cb)(
struct wlan_objmgr_vdev *vdev);
#endif
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
QDF_STATUS (*mlme_cm_roam_start_cb)(struct wlan_objmgr_vdev *vdev);
QDF_STATUS (*mlme_cm_roam_abort_cb)(struct wlan_objmgr_vdev *vdev);
QDF_STATUS (*mlme_cm_roam_cmpl_cb)(struct wlan_objmgr_vdev *vdev);
QDF_STATUS (*mlme_cm_roam_get_scan_ie_cb)(struct wlan_objmgr_vdev *vdev,
struct element_info *scan_ie,
enum dot11_mode_filter *dot11mode_filter);
void (*mlme_cm_roam_rt_stats_cb)(struct roam_stats_event *roam_stats,
uint8_t idx);
#endif
#ifdef WLAN_FEATURE_PREAUTH_ENABLE
QDF_STATUS (*mlme_cm_ft_preauth_cmpl_cb)(
struct wlan_objmgr_vdev *vdev,
struct wlan_preauth_rsp *rsp);
#ifdef FEATURE_WLAN_ESE
QDF_STATUS (*mlme_cm_cckm_preauth_cmpl_cb)(
struct wlan_objmgr_vdev *vdev,
struct wlan_preauth_rsp *rsp);
#endif
#endif
#ifdef WLAN_VENDOR_HANDOFF_CONTROL
QDF_STATUS (*mlme_cm_get_vendor_handoff_params_cb)(
struct wlan_objmgr_psoc *psoc,
void *vendor_handoff_context);
#endif
#ifdef WLAN_BOOST_CPU_FREQ_IN_ROAM
void (*mlme_cm_perfd_reset_cpufreq_ctrl_cb)(void);
#endif
};
/**
* struct mlme_vdev_mgr_ops - MLME VDEV mgr osif callbacks
* @mlme_vdev_mgr_set_mac_addr_response: Callback to indicate set MAC address
* response to osif
* @mlme_vdev_mgr_send_scan_done_complete_cb: Callback to indicate scan done
* complete to osif
*/
struct mlme_vdev_mgr_ops {
#ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE
QDF_STATUS (*mlme_vdev_mgr_set_mac_addr_response)(uint8_t vdev_id,
uint8_t resp_status);
#endif
void (*mlme_vdev_mgr_send_scan_done_complete_cb)(uint8_t vdev_id);
};
/**
* struct mlme_twt_ops: twt component osif callbacks
* @mlme_twt_enable_complete_cb: TWT enable complete callback
* @psoc: psoc pointer
* @event: response
* @context: context
*
* @mlme_twt_disable_complete_cb: TWT disable complete callback
* @psoc: psoc pointer
* @event: response
* @context: context
*
* @mlme_twt_ack_complete_cb: TWT ack complete callback
* @psoc: psoc pointer
* @event: response
* @context: context
*
* @mlme_twt_setup_complete_cb: TWT setup complete callback
* @psoc: psoc pointer
* @event: response
* @renego_fail: flag to indicate if renegotiation failure case
*
* @mlme_twt_teardown_complete_cb: TWT teardown complete callback
* @psoc: psoc pointer
* @event: response
*
* @mlme_twt_pause_complete_cb: TWT pause complete callback
* @psoc: psoc pointer
* @event: response
*
* @mlme_twt_resume_complete_cb: TWT resume complete callback
* @psoc: psoc pointer
* @event: response
*
* @mlme_twt_nudge_complete_cb: TWT nudge complete callback
* @psoc: psoc pointer
* @event: response
*
* @mlme_twt_notify_complete_cb: TWT notify complete callback
* @psoc: psoc pointer
* @event: response
*
* @mlme_twt_vdev_create_cb: TWT vdev create callback
* @vdev: vdev pointer
*
* @mlme_twt_vdev_destroy_cb: TWT vdev destroy callback
* @vdev: vdev pointer
*/
struct mlme_twt_ops {
QDF_STATUS (*mlme_twt_enable_complete_cb)(
struct wlan_objmgr_psoc *psoc,
struct twt_enable_complete_event_param *event,
void *context);
QDF_STATUS (*mlme_twt_disable_complete_cb)(
struct wlan_objmgr_psoc *psoc,
struct twt_disable_complete_event_param *event,
void *context);
QDF_STATUS (*mlme_twt_ack_complete_cb)(
struct wlan_objmgr_psoc *psoc,
struct twt_ack_complete_event_param *event,
void *context);
QDF_STATUS (*mlme_twt_setup_complete_cb)(
struct wlan_objmgr_psoc *psoc,
struct twt_add_dialog_complete_event *event,
bool renego_fail);
QDF_STATUS (*mlme_twt_teardown_complete_cb)(
struct wlan_objmgr_psoc *psoc,
struct twt_del_dialog_complete_event_param *event);
QDF_STATUS (*mlme_twt_pause_complete_cb)(
struct wlan_objmgr_psoc *psoc,
struct twt_pause_dialog_complete_event_param *event);
QDF_STATUS (*mlme_twt_resume_complete_cb)(
struct wlan_objmgr_psoc *psoc,
struct twt_resume_dialog_complete_event_param *event);
QDF_STATUS (*mlme_twt_nudge_complete_cb)(
struct wlan_objmgr_psoc *psoc,
struct twt_nudge_dialog_complete_event_param *event);
QDF_STATUS (*mlme_twt_notify_complete_cb)(
struct wlan_objmgr_psoc *psoc,
struct twt_notify_event_param *event);
QDF_STATUS (*mlme_twt_vdev_create_cb)(
struct wlan_objmgr_vdev *vdev);
QDF_STATUS (*mlme_twt_vdev_destroy_cb)(
struct wlan_objmgr_vdev *vdev);
};
/**
* struct mlme_ext_ops - MLME legacy callbacks structure
* @mlme_psoc_ext_hdl_create: callback to invoke creation of
* legacy psoc object
* @mlme_psoc_ext_hdl_destroy: callback to invoke destroy of legacy
* psoc object
* @mlme_pdev_ext_hdl_create: callback to invoke creation of
* legacy pdev object
* @mlme_pdev_ext_hdl_destroy: callback to invoke destroy of legacy
* pdev object
* @mlme_vdev_ext_hdl_create: callback to invoke creation of
* legacy vdev object
* @mlme_vdev_ext_hdl_post_create: callback to invoke post creation
* actions of legacy vdev object
* @mlme_vdev_ext_hdl_destroy: callback to invoke destroy of legacy
* vdev object
* @mlme_vdev_start_fw_send: callback to invoke vdev start
* command
* @mlme_vdev_stop_fw_send: callback to invoke vdev stop command
* @mlme_vdev_down_fw_send: callback to invoke vdev down command
* @mlme_multivdev_restart_fw_send: callback to invoke multivdev restart
* command
* @mlme_vdev_enqueue_exp_cmd: callback to enqueue exception
* command
* required by serialization
* @mlme_vdev_ext_delete_rsp: callback to process vdev ext delete
* @mlme_multi_vdev_restart_resp: callback to process multivdev
* restart response
* @mlme_cm_ext_hdl_create_cb: callback to create ext cm context
* @mlme_cm_ext_hdl_destroy_cb: callback to destroy ext cm context
* @mlme_cm_ext_connect_start_ind_cb: callback to indicate connect start
* @mlme_cm_ext_bss_select_ind_cb: callback to indicate candidate
* select for connect
* @mlme_cm_ext_bss_peer_create_req_cb: callback to bss peer create request
* @mlme_cm_ext_connect_req_cb: callback for connect request to
* VDEV/PEER SM
* @mlme_cm_ext_connect_complete_ind_cb: callback to indicate connect
* complete
* @mlme_cm_ext_disconnect_start_ind_cb : callback to indicate disconnect
* start
* @mlme_cm_ext_disconnect_req_cb: callback to disconnect req to
* VDEV/PEER SM
* @mlme_cm_ext_bss_peer_delete_req_cb: callback to bss peer delete request
* @mlme_cm_ext_disconnect_complete_ind_cb: callback to indicate disconnect
* complete
* @mlme_cm_ext_vdev_down_req_cb: callback to send vdev down to FW
* @mlme_cm_ext_roam_start_ind_cb: callback to indicate roam start
* @mlme_cm_ext_rso_stop_cb: callback to send rso stop to FW
* @mlme_cm_ext_reassoc_req_cb: callback for reassoc request to
* VDEV/PEER SM
* @mlme_psoc_ext_hdl_enable: to enable mlme ext param handler
* @mlme_psoc_ext_hdl_disable: to disable mlme ext param handler
* @mlme_vdev_send_set_mac_addr: callback to send set MAC address
* request to FW
* @mlme_ext_get_acs_inprogress: callback to determine if ACS is
* in progress on a given vdev
*/
struct mlme_ext_ops {
QDF_STATUS (*mlme_psoc_ext_hdl_create)(
struct psoc_mlme_obj *psoc_mlme);
QDF_STATUS (*mlme_psoc_ext_hdl_destroy)(
struct psoc_mlme_obj *pdev_mlme);
QDF_STATUS (*mlme_pdev_ext_hdl_create)(
struct pdev_mlme_obj *pdev_mlme);
QDF_STATUS (*mlme_pdev_ext_hdl_destroy)(
struct pdev_mlme_obj *pdev_mlme);
QDF_STATUS (*mlme_vdev_ext_hdl_create)(
struct vdev_mlme_obj *vdev_mlme);
QDF_STATUS (*mlme_vdev_ext_hdl_post_create)(
struct vdev_mlme_obj *vdev_mlme);
QDF_STATUS (*mlme_vdev_ext_hdl_destroy)(
struct vdev_mlme_obj *vdev_mlme);
QDF_STATUS (*mlme_vdev_start_fw_send)(
struct wlan_objmgr_vdev *vdev, uint8_t restart);
QDF_STATUS (*mlme_vdev_stop_fw_send)(struct wlan_objmgr_vdev *vdev);
QDF_STATUS (*mlme_vdev_down_fw_send)(struct wlan_objmgr_vdev *vdev);
QDF_STATUS (*mlme_multivdev_restart_fw_send)(
struct wlan_objmgr_pdev *pdev);
QDF_STATUS (*mlme_vdev_enqueue_exp_cmd)(
struct vdev_mlme_obj *vdev_mlme,
uint8_t cmd_type);
QDF_STATUS (*mlme_vdev_ext_delete_rsp)(
struct wlan_objmgr_psoc *psoc,
struct vdev_delete_response *rsp);
QDF_STATUS (*mlme_multi_vdev_restart_resp)(
struct wlan_objmgr_psoc *psoc,
struct multi_vdev_restart_resp *resp);
QDF_STATUS (*mlme_cm_ext_hdl_create_cb)(struct wlan_objmgr_vdev *vdev,
cm_ext_t **ext_cm_ptr);
QDF_STATUS (*mlme_cm_ext_hdl_destroy_cb)(struct wlan_objmgr_vdev *vdev,
cm_ext_t *ext_cm_ptr);
QDF_STATUS (*mlme_cm_ext_connect_start_ind_cb)(
struct wlan_objmgr_vdev *vdev,
struct wlan_cm_connect_req *req);
QDF_STATUS (*mlme_cm_ext_bss_select_ind_cb)(
struct wlan_objmgr_vdev *vdev,
struct wlan_cm_vdev_connect_req *req);
QDF_STATUS (*mlme_cm_ext_bss_peer_create_req_cb)(
struct wlan_objmgr_vdev *vdev,
struct qdf_mac_addr *peer_mac,
struct qdf_mac_addr *mld_mac,
bool is_assoc_link);
QDF_STATUS (*mlme_cm_ext_connect_req_cb)(struct wlan_objmgr_vdev *vdev,
struct wlan_cm_vdev_connect_req *req);
QDF_STATUS (*mlme_cm_ext_connect_complete_ind_cb)(
struct wlan_objmgr_vdev *vdev,
struct wlan_cm_connect_resp *rsp);
QDF_STATUS (*mlme_cm_ext_disconnect_start_ind_cb)(
struct wlan_objmgr_vdev *vdev,
struct wlan_cm_disconnect_req *req);
QDF_STATUS (*mlme_cm_ext_disconnect_req_cb)
(struct wlan_objmgr_vdev *vdev,
struct wlan_cm_vdev_discon_req *req);
QDF_STATUS (*mlme_cm_ext_bss_peer_delete_req_cb)(
struct wlan_objmgr_vdev *vdev);
QDF_STATUS (*mlme_cm_ext_disconnect_complete_ind_cb)(
struct wlan_objmgr_vdev *vdev,
struct wlan_cm_discon_rsp *rsp);
QDF_STATUS (*mlme_cm_ext_vdev_down_req_cb)(
struct wlan_objmgr_vdev *vdev);
QDF_STATUS (*mlme_cm_ext_roam_start_ind_cb)(
struct wlan_objmgr_vdev *vdev,
struct wlan_cm_roam_req *req);
QDF_STATUS (*mlme_cm_ext_rso_stop_cb)(struct wlan_objmgr_vdev *vdev);
QDF_STATUS (*mlme_cm_ext_reassoc_req_cb)(
struct wlan_objmgr_vdev *vdev,
struct wlan_cm_vdev_reassoc_req *req);
QDF_STATUS (*mlme_psoc_ext_hdl_enable)(struct wlan_objmgr_psoc *psoc);
QDF_STATUS (*mlme_psoc_ext_hdl_disable)(struct wlan_objmgr_psoc *psoc);
#ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE
QDF_STATUS (*mlme_vdev_send_set_mac_addr)(
struct qdf_mac_addr mac_addr,
struct qdf_mac_addr mld_addr,
struct wlan_objmgr_vdev *vdev);
#endif
QDF_STATUS (*mlme_ext_get_acs_inprogress)(
struct wlan_objmgr_vdev *vdev,
bool *is_acs_inprogress);
};
enum wlan_mlme_peer_param;
enum wlan_mlme_vdev_param;
enum wlan_mlme_pdev_param;
/**
* struct mlme_external_tx_ops - MLME external callbacks structure
* @peer_ops: callback to invoke peer mlme ops from external module
* @vdev_ops: callback to invoke vdev mlme ops from external module
* @pdev_ops: callback to invoke pdev mlme ops from external module
* @scan_db_iterate: callback to invoke scan database iterate
*/
struct mlme_external_tx_ops {
QDF_STATUS (*peer_ops)(
struct wlan_objmgr_peer *peer,
enum wlan_mlme_peer_param type,
void *data, void *ret);
QDF_STATUS (*vdev_ops)(
struct wlan_objmgr_vdev *vdev,
enum wlan_mlme_vdev_param type,
void *data, void *ret);
QDF_STATUS (*pdev_ops)(
struct wlan_objmgr_pdev *pdev,
enum wlan_mlme_pdev_param type,
void *data, void *ret);
QDF_STATUS (*scan_db_iterate)(
struct wlan_objmgr_pdev *pdev,
scan_iterator_func handler, void *arg);
};
/**
* mlme_psoc_ops_ext_hdl_create() - Alloc PSOC mlme ext handle
* @psoc_mlme: PSOC MLME comp object
*
* API to allocate PSOC MLME ext handle
*
* Return: SUCCESS on successful allocation
* Else FAILURE
*/
QDF_STATUS mlme_psoc_ops_ext_hdl_create(struct psoc_mlme_obj *psoc_mlme);
/**
* mlme_psoc_ops_ext_hdl_destroy() - Destroy PSOC mlme ext handle
* @psoc_mlme: PSOC MLME comp object
*
* API to free psoc MLME ext handle
*
* Return: SUCCESS on successful free
* Else FAILURE
*/
QDF_STATUS mlme_psoc_ops_ext_hdl_destroy(struct psoc_mlme_obj *psoc_mlme);
/**
* mlme_psoc_ext_enable_cb() - to enable mlme ext param handler callback
* @psoc: psoc common object
*
* Return: QDF_STATUS
*/
QDF_STATUS mlme_psoc_ext_enable_cb(struct wlan_objmgr_psoc *psoc);
/**
* mlme_psoc_ext_disable_cb() - to disable mlme ext param handler callback
* @psoc: psoc common object
*
* Return: QDF_STATUS
*/
QDF_STATUS mlme_psoc_ext_disable_cb(struct wlan_objmgr_psoc *psoc);
/**
* mlme_pdev_ops_ext_hdl_create - Alloc PDEV mlme ext handle
* @pdev_mlme: PDEV MLME comp object
*
* API to allocate PDEV MLME ext handle
*
* Return: SUCCESS on successful allocation
* Else FAILURE
*/
QDF_STATUS mlme_pdev_ops_ext_hdl_create(struct pdev_mlme_obj *pdev_mlme);
/**
* mlme_pdev_ops_ext_hdl_destroy - Destroy PDEV mlme ext handle
* @pdev_mlme: PDEV MLME comp object
*
* API to free pdev MLME ext handle
*
* Return: SUCCESS on successful free
* Else FAILURE
*/
QDF_STATUS mlme_pdev_ops_ext_hdl_destroy(struct pdev_mlme_obj *pdev_mlme);
/**
* mlme_vdev_ops_ext_hdl_create - Alloc VDEV mlme ext handle
* @vdev_mlme: VDEV MLME comp object
*
* API to allocate VDEV MLME ext handle
*
* Return: SUCCESS on successful allocation
* Else FAILURE
*/
QDF_STATUS mlme_vdev_ops_ext_hdl_create(struct vdev_mlme_obj *vdev_mlme);
/**
* mlme_vdev_ops_ext_hdl_post_create - Perform post VDEV mlme ext handle alloc
* operations
* @vdev_mlme: VDEV MLME comp object
*
* API to perform post vdev MLME ext handle allocation operations
*
* Return: SUCCESS on initialization successful
* Else FAILURE
*/
QDF_STATUS mlme_vdev_ops_ext_hdl_post_create(struct vdev_mlme_obj *vdev_mlme);
/**
* mlme_vdev_ops_ext_hdl_destroy - Destroy VDEV mlme ext handle
* @vdev_mlme: VDEV MLME comp object
*
* API to free vdev MLME ext handle
*
* Return: SUCCESS on successful free
* Else FAILURE
*/
QDF_STATUS mlme_vdev_ops_ext_hdl_destroy(struct vdev_mlme_obj *vdev_mlme);
/**
* mlme_vdev_enqueue_exp_ser_cmd - Enqueue exception serialization cmd
* @vdev_mlme: VDEV MLME comp object
* @cmd_type: Serialization command type
*
* API to enqueue the exception serialization command, used by
* mlme-serialization wrapper layer
*
* Return: SUCCESS on successful enqueuing the command
* Else FAILURE
*/
QDF_STATUS mlme_vdev_enqueue_exp_ser_cmd(struct vdev_mlme_obj *vdev_mlme,
uint8_t cmd_type);
/**
* mlme_vdev_ops_start_fw_send - Send WMI START/RESTART command to FW
* @vdev: VDEV object
* @restart: send start vs restart
*
* API to send WMI start/restart command to FW
*
* Return: SUCCESS on successful sending the command
* Else FAILURE
*/
QDF_STATUS mlme_vdev_ops_start_fw_send(struct wlan_objmgr_vdev *vdev,
uint8_t restart);
/**
* mlme_vdev_ops_multivdev_restart_fw_cmd_send - Send WMI Multivdev restart
* command to FW
* @pdev: PDEV object
*
* API to send WMI multivdev restart command to FW
*
* Return: SUCCESS on successful sending the command
* Else FAILURE
*/
QDF_STATUS mlme_vdev_ops_multivdev_restart_fw_cmd_send(
struct wlan_objmgr_pdev *pdev);
/**
* mlme_vdev_ops_stop_fw_send - Send WMI STOP command to FW
* @vdev: VDEV object
*
* API to send WMI stop command to FW
*
* Return: SUCCESS on successful sending the command
* Else FAILURE
*/
QDF_STATUS mlme_vdev_ops_stop_fw_send(struct wlan_objmgr_vdev *vdev);
/**
* mlme_vdev_ops_down_fw_send - Send WMI Down command to FW
* @vdev: VDEV object
*
* API to send WMI down command to FW
*
* Return: SUCCESS on successful sending the command
* Else FAILURE
*/
QDF_STATUS mlme_vdev_ops_down_fw_send(struct wlan_objmgr_vdev *vdev);
/**
* mlme_vdev_ops_ext_hdl_multivdev_restart_resp() - Handler multivdev restart
* response event
* @psoc: PSOC object manager handle
* @resp: Restart response event
*
* Return: Success on successful handling of the response event,
* Else failure
*/
QDF_STATUS mlme_vdev_ops_ext_hdl_multivdev_restart_resp(
struct wlan_objmgr_psoc *psoc,
struct multi_vdev_restart_resp *resp);
/*
* typedef mlme_get_global_ops_cb() - callback to get MLME ext ops
*
* NB: kernel-doc Cannot parse typedef
*/
typedef struct mlme_ext_ops *(*mlme_get_global_ops_cb)(void);
/**
* mlme_set_ops_register_cb - Sets ops registration callback
* @ops_cb: Function pointer
*
* API to set ops registration call back
*
* Return: void
*/
void mlme_set_ops_register_cb(mlme_get_global_ops_cb ops_cb);
/**
* wlan_cmn_mlme_init - Initializes MLME component
*
* Registers callbacks with object manager for create/destroy
*
* Return: SUCCESS on successful registration
* FAILURE, if registration fails
*/
QDF_STATUS wlan_cmn_mlme_init(void);
/**
* wlan_cmn_mlme_deinit - Uninitializes MLME component
*
* Unregisters callbacks with object manager for create/destroy
*
* Return: SUCCESS on successful registration
* FAILURE, if registration fails
*/
QDF_STATUS wlan_cmn_mlme_deinit(void);
/**
* mlme_vdev_ops_ext_hdl_delete_rsp - Vdev Delete response ext handler
* @psoc: PSOC object
* @rsp: Vdev delete response received from the firmware
*
* API to invoke the legacy delete response handler for legacy cleanup
*
* Return: SUCCESS on successful deletion
* FAILURE, if deletion fails
*/
QDF_STATUS mlme_vdev_ops_ext_hdl_delete_rsp(struct wlan_objmgr_psoc *psoc,
struct vdev_delete_response *rsp);
/**
* mlme_cm_ext_hdl_create() - Connection manager callback to create ext
* context
* @vdev: VDEV object
* @ext_cm_ptr: pointer to connection manager ext pointer
*
* Return: QDF_STATUS
*/
QDF_STATUS mlme_cm_ext_hdl_create(struct wlan_objmgr_vdev *vdev,
cm_ext_t **ext_cm_ptr);
/**
* mlme_cm_ext_hdl_destroy() - Connection manager callback to destroy ext
* context
* @vdev: VDEV object
* @ext_cm_ptr: connection manager ext pointer
*
* Return: QDF_STATUS
*/
QDF_STATUS mlme_cm_ext_hdl_destroy(struct wlan_objmgr_vdev *vdev,
cm_ext_t *ext_cm_ptr);
/**
* mlme_cm_connect_start_ind() - Connection manager ext Connect start indication
* @vdev: VDEV object
* @req: Connection manager connect request
*
* Return: QDF_STATUS
*/
QDF_STATUS mlme_cm_connect_start_ind(struct wlan_objmgr_vdev *vdev,
struct wlan_cm_connect_req *req);
/**
* mlme_cm_bss_select_ind() - Connection manager ext Connect candidate
* select indication, to do operations for the candidate
* @vdev: VDEV object
* @req: Vdev connect request
*
* Return: QDF_STATUS
*/
QDF_STATUS mlme_cm_bss_select_ind(struct wlan_objmgr_vdev *vdev,
struct wlan_cm_vdev_connect_req *req);
/**
* mlme_cm_bss_peer_create_req() - Connection manager ext bss peer create
* request
* @vdev: VDEV object
* @peer_mac: Peer mac address
* @mld_mac: mld mac address
* @is_assoc_link: assoc happens on this link or not
*
* Return: QDF_STATUS
*/
QDF_STATUS mlme_cm_bss_peer_create_req(struct wlan_objmgr_vdev *vdev,
struct qdf_mac_addr *peer_mac,
struct qdf_mac_addr *mld_mac,
bool is_assoc_link);
/**
* mlme_cm_connect_req() - Connection manager ext connect request to start vdev
* and peer assoc state machine
* @vdev: VDEV object
* @req: Vdev connect request
*
* Context: The req is on stack, so the API need to make a copy, if it want to
* use the req after return.
*
* Return: QDF_STATUS
*/
QDF_STATUS mlme_cm_connect_req(struct wlan_objmgr_vdev *vdev,
struct wlan_cm_vdev_connect_req *req);
/**
* mlme_cm_connect_complete_ind() - Connection manager ext connect complete
* indication
* @vdev: VDEV object
* @rsp: Connection manager connect response
*
* Return: QDF_STATUS
*/
QDF_STATUS mlme_cm_connect_complete_ind(struct wlan_objmgr_vdev *vdev,
struct wlan_cm_connect_resp *rsp);
/**
* mlme_cm_roam_start_ind() - Connection manager ext Connect start indication
* @vdev: VDEV object
* @req: Connection manager roam request
*
* Return: QDF_STATUS
*/
QDF_STATUS mlme_cm_roam_start_ind(struct wlan_objmgr_vdev *vdev,
struct wlan_cm_roam_req *req);
/**
* mlme_cm_rso_stop_req() - Connection manager ext RSO stop request
* @vdev: VDEV object
*
* Return: QDF_STATUS
*/
QDF_STATUS mlme_cm_rso_stop_req(struct wlan_objmgr_vdev *vdev);
/**
* mlme_cm_reassoc_req() - Connection manager ext reassoc request
* @vdev: VDEV object
* @req: Vdev reassoc request
*
* Context: The req is on stack, so the API need to make a copy, if it want to
* use the req after return.
*
* Return: QDF_STATUS
*/
QDF_STATUS mlme_cm_reassoc_req(struct wlan_objmgr_vdev *vdev,
struct wlan_cm_vdev_reassoc_req *req);
/**
* mlme_cm_disconnect_start_ind() - Connection manager ext disconnect start
* indication
* @vdev: VDEV object
* @req: Connection manager disconnect request
*
* Return: QDF_STATUS
*/
QDF_STATUS mlme_cm_disconnect_start_ind(struct wlan_objmgr_vdev *vdev,
struct wlan_cm_disconnect_req *req);
/**
* mlme_cm_disconnect_req() - Connection manager ext disconnect
* req to vdev and peer sm
* @vdev: VDEV object
* @req: vdev disconnect request
*
* Return: QDF_STATUS
*/
QDF_STATUS mlme_cm_disconnect_req(struct wlan_objmgr_vdev *vdev,
struct wlan_cm_vdev_discon_req *req);
/**
* mlme_cm_bss_peer_delete_req() - Connection manager ext bss peer delete
* request
* @vdev: VDEV object
*
* Return: QDF_STATUS
*/
QDF_STATUS
mlme_cm_bss_peer_delete_req(struct wlan_objmgr_vdev *vdev);
/**
* mlme_cm_disconnect_complete_ind() - Connection manager ext disconnect
* complete indication
* @vdev: VDEV object
* @rsp: Connection manager disconnect response
*
* Return: QDF_STATUS
*/
QDF_STATUS mlme_cm_disconnect_complete_ind(struct wlan_objmgr_vdev *vdev,
struct wlan_cm_discon_rsp *rsp);
/**
* mlme_cm_vdev_down_req() - Connection manager ext req to send vdev down to FW
* @vdev: VDEV object
*
* Return: QDF_STATUS
*/
QDF_STATUS mlme_cm_vdev_down_req(struct wlan_objmgr_vdev *vdev);
/**
* mlme_ext_hdl_get_acs_in_progress() - Check if ACS is in progress
* @vdev: VDEV object
* @acs_in_progress: ACS in progress flag
*
* Return: QDF_STATUS
*/
QDF_STATUS mlme_ext_hdl_get_acs_in_progress(struct wlan_objmgr_vdev *vdev,
bool *acs_in_progress);
/**
* mlme_cm_osif_connect_complete() - Connect complete resp to osif
* @vdev: vdev pointer
* @rsp: Connect response
*
* Return: QDF_STATUS
*/
QDF_STATUS mlme_cm_osif_connect_complete(struct wlan_objmgr_vdev *vdev,
struct wlan_cm_connect_resp *rsp);
/**
* mlme_cm_osif_failed_candidate_ind() - Failed Candidate indication to osif
* @vdev: vdev pointer
* @rsp: Connect response
*
* Return: QDF_STATUS
*/
QDF_STATUS
mlme_cm_osif_failed_candidate_ind(struct wlan_objmgr_vdev *vdev,
struct wlan_cm_connect_resp *rsp);
/**
* mlme_cm_osif_update_id_and_src() - Update connection id and source to osif
* @vdev: vdev pointer
* @source: source of request
* @cm_id: connection manager id
*
* Return: QDF_STATUS
*/
QDF_STATUS mlme_cm_osif_update_id_and_src(struct wlan_objmgr_vdev *vdev,
enum wlan_cm_source source,
wlan_cm_id cm_id);
/**
* mlme_cm_osif_disconnect_complete() - Disconnect complete osif response
* @vdev: vdev pointer
* @rsp: Disconnect response
*
* Return: QDF_STATUS
*/
QDF_STATUS
mlme_cm_osif_disconnect_complete(struct wlan_objmgr_vdev *vdev,
struct wlan_cm_discon_rsp *rsp);
/**
* mlme_cm_osif_disconnect_start_ind() - osif Disconnect start indication
* @vdev: vdev pointer
* @source: Source of disconnect
*
* Return: QDF_STATUS
*/
QDF_STATUS mlme_cm_osif_disconnect_start_ind(struct wlan_objmgr_vdev *vdev,
enum wlan_cm_source source);
#ifdef WLAN_VENDOR_HANDOFF_CONTROL
/**
* mlme_cm_osif_get_vendor_handoff_params() - osif get vendor handoff params
* indication
* @psoc: psoc pointer
* @vendor_handoff_context: vendor handoff context
*
* Return: QDF_STATUS
*/
QDF_STATUS mlme_cm_osif_get_vendor_handoff_params(struct wlan_objmgr_psoc *psoc,
void *vendor_handoff_context);
#endif
#ifdef CONN_MGR_ADV_FEATURE
/**
* mlme_cm_osif_roam_sync_ind() - osif Roam sync indication
* @vdev: vdev pointer
*
* Return: QDF_STATUS
*/
QDF_STATUS mlme_cm_osif_roam_sync_ind(struct wlan_objmgr_vdev *vdev);
/**
* mlme_cm_osif_pmksa_candidate_notify() - osif roam pmksa candidate notify
* @vdev: vdev pointer
* @bssid: bssid
* @index: index
* @preauth: preauth flag
*
* Return: QDF_STATUS
*/
QDF_STATUS mlme_cm_osif_pmksa_candidate_notify(struct wlan_objmgr_vdev *vdev,
struct qdf_mac_addr *bssid,
int index, bool preauth);
/**
* mlme_cm_osif_send_keys() - send vdev keys
* @vdev: vdev pointer
* @key_index: key index value
* @pairwise: pairwise bool value
* @cipher_type: cipher enum value
*
* Return: QDF_STATUS
*/
QDF_STATUS mlme_cm_osif_send_keys(struct wlan_objmgr_vdev *vdev,
uint8_t key_index, bool pairwise,
enum wlan_crypto_cipher_type cipher_type);
/**
* mlme_cm_osif_link_reconfig_notify() - notify link reconfig event
* @vdev: vdev pointer
*
* Return: QDF_STATUS
*/
QDF_STATUS mlme_cm_osif_link_reconfig_notify(struct wlan_objmgr_vdev *vdev);
#else
static inline
QDF_STATUS mlme_cm_osif_roam_sync_ind(struct wlan_objmgr_vdev *vdev)
{
return QDF_STATUS_SUCCESS;
}
static inline
QDF_STATUS mlme_cm_osif_send_keys(struct wlan_objmgr_vdev *vdev,
uint8_t key_index, bool pairwise,
enum wlan_crypto_cipher_type cipher_type)
{
return QDF_STATUS_SUCCESS;
}
static inline
QDF_STATUS mlme_cm_osif_link_reconfig_notify(struct wlan_objmgr_vdev *vdev)
{
return QDF_STATUS_SUCCESS;
}
#endif
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
/**
* mlme_cm_osif_roam_start_ind() - osif Roam start indication
* @vdev: vdev pointer
*
* Return: QDF_STATUS
*/
QDF_STATUS mlme_cm_osif_roam_start_ind(struct wlan_objmgr_vdev *vdev);
/**
* mlme_cm_osif_roam_abort_ind() - osif Roam abort indication
* @vdev: vdev pointer
*
* Return: QDF_STATUS
*/
QDF_STATUS mlme_cm_osif_roam_abort_ind(struct wlan_objmgr_vdev *vdev);
/**
* mlme_cm_osif_roam_complete() - osif Roam sync complete callback
* @vdev: vdev pointer
*
* Return: QDF_STATUS
*/
QDF_STATUS mlme_cm_osif_roam_complete(struct wlan_objmgr_vdev *vdev);
/**
* mlme_cm_osif_roam_rt_stats() - osif Roam stats callback
* @roam_stats: roam_stats_event pointer
* @idx: TLV idx for roam_stats_event
*
* Return: void
*/
void mlme_cm_osif_roam_rt_stats(struct roam_stats_event *roam_stats, uint8_t idx);
/**
* mlme_cm_osif_roam_get_scan_params() - osif Roam get scan params callback
* @vdev: vdev pointer
* @scan_ie: Pointer to scan_ie
* @dot11mode_filter: Pointer to dot11mode_filter
*
* Get scan IE params from adapter corresponds to given vdev
*
* Return: QDF_STATUS
*/
QDF_STATUS
mlme_cm_osif_roam_get_scan_params(struct wlan_objmgr_vdev *vdev,
struct element_info *scan_ie,
enum dot11_mode_filter *dot11mode_filter);
#endif
#ifdef WLAN_FEATURE_PREAUTH_ENABLE
/**
* mlme_cm_osif_ft_preauth_complete() - osif roam ft preauth complete callback
* @vdev: vdev pointer
* @rsp: preauth response pointer
*
* Return: QDF_STATUS
*/
QDF_STATUS
mlme_cm_osif_ft_preauth_complete(struct wlan_objmgr_vdev *vdev,
struct wlan_preauth_rsp *rsp);
#ifdef FEATURE_WLAN_ESE
/**
* mlme_cm_osif_cckm_preauth_complete() - osif cckm preauth complete callback
* @vdev: vdev pointer
* @rsp: preauth response pointer
*
* Return: QDF_STATUS
*/
QDF_STATUS
mlme_cm_osif_cckm_preauth_complete(struct wlan_objmgr_vdev *vdev,
struct wlan_preauth_rsp *rsp);
#else
static inline QDF_STATUS
mlme_cm_osif_cckm_preauth_complete(struct wlan_objmgr_vdev *vdev,
struct wlan_preauth_rsp *rsp)
{
return QDF_STATUS_SUCCESS;
}
#endif /* FEATURE_WLAN_ESE */
#endif /* WLAN_FEATURE_PREAUTH_ENABLE */
/*
* typedef osif_cm_get_global_ops_cb() - Callback to get connection manager
* global ops
*
* NB: kernel-doc Cannot parse typedef
*/
typedef struct mlme_cm_ops *(*osif_cm_get_global_ops_cb)(void);
/*
* typedef osif_twt_get_global_ops_cb() - Callback to get twt global ops
*
* NB: kernel-doc Cannot parse typedef
*/
typedef struct mlme_twt_ops *(*osif_twt_get_global_ops_cb)(void);
/**
* mlme_set_osif_cm_cb() - Sets ops registration callback
* @cm_osif_ops: Function pointer
*
* API to set ops registration call back
*
* Return: void
*/
void mlme_set_osif_cm_cb(osif_cm_get_global_ops_cb cm_osif_ops);
/*
* typedef osif_vdev_mgr_get_global_ops_cb() - Callback to get vdev manager
* global ops
*
* NB: kernel-doc Cannot parse typedef
*/
typedef struct mlme_vdev_mgr_ops *(*osif_vdev_mgr_get_global_ops_cb)(void);
/**
* mlme_set_osif_vdev_mgr_cb() - Sets ops registration callback
* @mlme_vdev_mgr_osif_ops: Function pointer
*
* API to set ops registration call back
*
* Return: void
*/
void mlme_set_osif_vdev_mgr_cb(
osif_vdev_mgr_get_global_ops_cb mlme_vdev_mgr_osif_ops);
/**
* mlme_set_osif_twt_cb() - Sets twt ops registration callback
* @twt_osif_ops: Function pointer
*
* API to set twt ops registration call back
*
* Return: void
*/
void mlme_set_osif_twt_cb(osif_twt_get_global_ops_cb twt_osif_ops);
/**
* mlme_max_chan_switch_is_set() - Get if max chan switch IE is enabled
* @psoc: Object manager psoc pointer
*
* Return: True if max chan switch is enabled else false
*/
bool mlme_max_chan_switch_is_set(struct wlan_objmgr_psoc *psoc);
/**
* mlme_send_scan_done_complete_cb() - send scan done indication to upper layer
* @vdev_id: vdev id
*
* Return: none
*/
void mlme_send_scan_done_complete_cb(uint8_t vdev_id);
#ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE
/**
* mlme_vdev_ops_send_set_mac_address() - Send set MAC address request to FW
* @mac_addr: VDEV MAC address
* @mld_addr: VDEV MLD address
* @vdev: vdev pointer
*
* API to send set MAC address request command to FW
*
* Return: QDF_STATUS
*/
QDF_STATUS mlme_vdev_ops_send_set_mac_address(struct qdf_mac_addr mac_addr,
struct qdf_mac_addr mld_addr,
struct wlan_objmgr_vdev *vdev);
/**
* mlme_vdev_mgr_notify_set_mac_addr_response() - Notify set MAC address
* response
* @vdev_id: VDEV ID
* @resp_status: FW response for the set MAC address operation
*
* API to notify set MAC address to osif
*
* Return: None
*/
void mlme_vdev_mgr_notify_set_mac_addr_response(uint8_t vdev_id,
uint8_t resp_status);
#endif
#if defined(WLAN_SUPPORT_TWT) && defined(WLAN_TWT_CONV_SUPPORTED)
/**
* mlme_twt_osif_enable_complete_ind() - enable complete resp to osif
* @psoc: psoc pointer
* @event: enable complete response
* @context: context registered by OSIF
*
* Return: QDF_STATUS
*/
QDF_STATUS
mlme_twt_osif_enable_complete_ind(struct wlan_objmgr_psoc *psoc,
struct twt_enable_complete_event_param *event,
void *context);
/**
* mlme_twt_osif_disable_complete_ind() - disable complete resp to osif
* @psoc: psoc pointer
* @event: disable complete response
* @context: context registered by OSIF
*
* Return: QDF_STATUS
*/
QDF_STATUS
mlme_twt_osif_disable_complete_ind(struct wlan_objmgr_psoc *psoc,
struct twt_disable_complete_event_param *event,
void *context);
/**
* mlme_twt_osif_ack_complete_ind() - ack complete resp to osif
* @psoc: psoc pointer
* @event: ack complete response
* @context: context registered by OSIF
*
* Return: QDF_STATUS
*/
QDF_STATUS
mlme_twt_osif_ack_complete_ind(struct wlan_objmgr_psoc *psoc,
struct twt_ack_complete_event_param *event,
void *context);
/**
* mlme_twt_osif_setup_complete_ind() - setup complete resp to osif
* @psoc: psoc pointer
* @event: setup complete response
* @renego_fail: flag to indicate if renegotiation failure case
*
* Return: QDF_STATUS
*/
QDF_STATUS
mlme_twt_osif_setup_complete_ind(struct wlan_objmgr_psoc *psoc,
struct twt_add_dialog_complete_event *event,
bool renego_fail);
/**
* mlme_twt_osif_teardown_complete_ind() - teardown complete resp to osif
* @psoc: psoc pointer
* @event: teardown complete response
*
* Return: QDF_STATUS
*/
QDF_STATUS
mlme_twt_osif_teardown_complete_ind(struct wlan_objmgr_psoc *psoc,
struct twt_del_dialog_complete_event_param *event);
/**
* mlme_twt_osif_pause_complete_ind() - pause complete resp to osif
* @psoc: psoc pointer
* @event: pause complete response
*
* Return: QDF_STATUS
*/
QDF_STATUS
mlme_twt_osif_pause_complete_ind(struct wlan_objmgr_psoc *psoc,
struct twt_pause_dialog_complete_event_param *event);
/**
* mlme_twt_osif_resume_complete_ind() - resume complete resp to osif
* @psoc: psoc pointer
* @event: resume complete response
*
* Return: QDF_STATUS
*/
QDF_STATUS
mlme_twt_osif_resume_complete_ind(struct wlan_objmgr_psoc *psoc,
struct twt_resume_dialog_complete_event_param *event);
/**
* mlme_twt_osif_nudge_complete_ind() - nudge complete resp to osif
* @psoc: psoc pointer
* @event: nudge complete response
*
* Return: QDF_STATUS
*/
QDF_STATUS
mlme_twt_osif_nudge_complete_ind(struct wlan_objmgr_psoc *psoc,
struct twt_nudge_dialog_complete_event_param *event);
/**
* mlme_twt_osif_notify_complete_ind() - notify complete resp to osif
* @psoc: psoc pointer
* @event: notify complete response
*
* Return: QDF_STATUS
*/
QDF_STATUS
mlme_twt_osif_notify_complete_ind(struct wlan_objmgr_psoc *psoc,
struct twt_notify_event_param *event);
/**
* mlme_twt_vdev_create_notification() - vdev create notification to osif
* @vdev: vdev pointer
*
* Return: QDF_STATUS
*/
QDF_STATUS
mlme_twt_vdev_create_notification(struct wlan_objmgr_vdev *vdev);
/**
* mlme_twt_vdev_destroy_notification() - vdev destroy notification to osif
* @vdev: vdev pointer
*
* Return: QDF_STATUS
*/
QDF_STATUS
mlme_twt_vdev_destroy_notification(struct wlan_objmgr_vdev *vdev);
#else
static inline QDF_STATUS
mlme_twt_osif_enable_complete_ind(struct wlan_objmgr_psoc *psoc,
struct twt_enable_complete_event_param *event,
void *context)
{
return QDF_STATUS_SUCCESS;
}
static inline QDF_STATUS
mlme_twt_osif_disable_complete_ind(struct wlan_objmgr_psoc *psoc,
struct twt_disable_complete_event_param *event,
void *context)
{
return QDF_STATUS_SUCCESS;
}
static inline QDF_STATUS
mlme_twt_osif_ack_complete_ind(struct wlan_objmgr_psoc *psoc,
struct twt_ack_complete_event_param *event,
void *context)
{
return QDF_STATUS_SUCCESS;
}
static inline QDF_STATUS
mlme_twt_osif_setup_complete_ind(struct wlan_objmgr_psoc *psoc,
struct twt_add_dialog_complete_event *event,
bool renego_fail)
{
return QDF_STATUS_SUCCESS;
}
static inline QDF_STATUS
mlme_twt_osif_teardown_complete_ind(struct wlan_objmgr_psoc *psoc,
struct twt_del_dialog_complete_event_param *event)
{
return QDF_STATUS_SUCCESS;
}
static inline QDF_STATUS
mlme_twt_osif_pause_complete_ind(struct wlan_objmgr_psoc *psoc,
struct twt_pause_dialog_complete_event_param *event)
{
return QDF_STATUS_SUCCESS;
}
static inline QDF_STATUS
mlme_twt_osif_resume_complete_ind(struct wlan_objmgr_psoc *psoc,
struct twt_resume_dialog_complete_event_param *event)
{
return QDF_STATUS_SUCCESS;
}
static inline QDF_STATUS
mlme_twt_osif_nudge_complete_ind(struct wlan_objmgr_psoc *psoc,
struct twt_nudge_dialog_complete_event_param *event)
{
return QDF_STATUS_SUCCESS;
}
static inline QDF_STATUS
mlme_twt_osif_notify_complete_ind(struct wlan_objmgr_psoc *psoc,
struct twt_notify_event_param *event)
{
return QDF_STATUS_SUCCESS;
}
static inline QDF_STATUS
mlme_twt_vdev_create_notification(struct wlan_objmgr_vdev *vdev)
{
return QDF_STATUS_SUCCESS;
}
static inline QDF_STATUS
mlme_twt_vdev_destroy_notification(struct wlan_objmgr_vdev *vdev)
{
return QDF_STATUS_SUCCESS;
}
#endif /* WLAN_SUPPORT_TWT && WLAN_TWT_CONV_SUPPORTED */
/**
* mlme_vdev_reconfig_timer_cb() - vdev ml reconfig timer callback
* @arg: timer argument
*
* Return: None
*/
void mlme_vdev_reconfig_timer_cb(void *arg);
/**
* mlme_mlo_is_reconfig_reassoc_enable() - Get if reassoc on mlo reconfig link
* add is enable
* @psoc: Object manager psoc pointer
*
* Return: True if reassoc on mlo reconfig link add ie enable
*/
bool mlme_mlo_is_reconfig_reassoc_enable(struct wlan_objmgr_psoc *psoc);
#ifdef WLAN_BOOST_CPU_FREQ_IN_ROAM
/**
* mlme_cm_osif_perfd_reset_cpufreq() - Function to reset CPU freq
*
* This function is to reset the CPU freq
*
* Return: None
*/
void mlme_cm_osif_perfd_reset_cpufreq(void);
#else
static inline
void mlme_cm_osif_perfd_reset_cpufreq(void)
{
}
#endif
#endif