1*5113495bSYour Name /* 2*5113495bSYour Name * Copyright (c) 2011-2021 The Linux Foundation. All rights reserved. 3*5113495bSYour Name * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved. 4*5113495bSYour Name * 5*5113495bSYour Name * Permission to use, copy, modify, and/or distribute this software for 6*5113495bSYour Name * any purpose with or without fee is hereby granted, provided that the 7*5113495bSYour Name * above copyright notice and this permission notice appear in all 8*5113495bSYour Name * copies. 9*5113495bSYour Name * 10*5113495bSYour Name * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 11*5113495bSYour Name * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 12*5113495bSYour Name * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 13*5113495bSYour Name * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 14*5113495bSYour Name * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 15*5113495bSYour Name * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 16*5113495bSYour Name * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 17*5113495bSYour Name * PERFORMANCE OF THIS SOFTWARE. 18*5113495bSYour Name */ 19*5113495bSYour Name 20*5113495bSYour Name #if !defined(__SMEINTERNAL_H) 21*5113495bSYour Name #define __SMEINTERNAL_H 22*5113495bSYour Name 23*5113495bSYour Name /** 24*5113495bSYour Name * \file sme_internal.h 25*5113495bSYour Name * 26*5113495bSYour Name * \brief prototype for SME internal structures and APIs used for SME and MAC 27*5113495bSYour Name */ 28*5113495bSYour Name 29*5113495bSYour Name /*-------------------------------------------------------------------------- 30*5113495bSYour Name Include Files 31*5113495bSYour Name ------------------------------------------------------------------------*/ 32*5113495bSYour Name #include "qdf_status.h" 33*5113495bSYour Name #include "qdf_lock.h" 34*5113495bSYour Name #include "qdf_trace.h" 35*5113495bSYour Name #include "qdf_mem.h" 36*5113495bSYour Name #include "qdf_types.h" 37*5113495bSYour Name #include "host_diag_core_event.h" 38*5113495bSYour Name #include "csr_link_list.h" 39*5113495bSYour Name #include "sme_power_save.h" 40*5113495bSYour Name #include "wmi_unified.h" 41*5113495bSYour Name #include "wmi_unified_param.h" 42*5113495bSYour Name 43*5113495bSYour Name struct wma_twt_add_dialog_complete_event; 44*5113495bSYour Name struct wmi_twt_add_dialog_complete_event_param; 45*5113495bSYour Name struct wmi_twt_enable_complete_event_param; 46*5113495bSYour Name /*-------------------------------------------------------------------------- 47*5113495bSYour Name Type declarations 48*5113495bSYour Name ------------------------------------------------------------------------*/ 49*5113495bSYour Name 50*5113495bSYour Name /* Mask can be only have one bit set */ 51*5113495bSYour Name typedef enum eSmeCommandType { 52*5113495bSYour Name eSmeNoCommand = 0, 53*5113495bSYour Name /* this is not a command, it is to identify this is a CSR command */ 54*5113495bSYour Name eSmeCsrCommandMask = 0x10000, 55*5113495bSYour Name eSmeCommandRoam, 56*5113495bSYour Name eSmeCommandWmStatusChange, 57*5113495bSYour Name /* QOS */ 58*5113495bSYour Name eSmeQosCommandMask = 0x40000, /* To identify Qos commands */ 59*5113495bSYour Name eSmeCommandAddTs, 60*5113495bSYour Name eSmeCommandDelTs, 61*5113495bSYour Name e_sme_command_set_hw_mode, 62*5113495bSYour Name e_sme_command_nss_update, 63*5113495bSYour Name e_sme_command_set_dual_mac_config, 64*5113495bSYour Name e_sme_command_set_antenna_mode, 65*5113495bSYour Name e_sme_command_sap_ch_width_update, 66*5113495bSYour Name } eSmeCommandType; 67*5113495bSYour Name 68*5113495bSYour Name typedef enum eSmeState { 69*5113495bSYour Name SME_STATE_STOP, 70*5113495bSYour Name SME_STATE_START, 71*5113495bSYour Name SME_STATE_READY, 72*5113495bSYour Name } eSmeState; 73*5113495bSYour Name 74*5113495bSYour Name #define SME_IS_START(mac) (SME_STATE_STOP != (mac)->sme.state) 75*5113495bSYour Name #define SME_IS_READY(mac) (SME_STATE_READY == (mac)->sme.state) 76*5113495bSYour Name 77*5113495bSYour Name /** 78*5113495bSYour Name * struct stats_ext_event - stats_ext_event payload 79*5113495bSYour Name * @vdev_id: ID of the vdev for the stats 80*5113495bSYour Name * @event_data_len: length of the @event_data 81*5113495bSYour Name * @event_data: actual ext stats 82*5113495bSYour Name */ 83*5113495bSYour Name struct stats_ext_event { 84*5113495bSYour Name uint32_t vdev_id; 85*5113495bSYour Name uint32_t event_data_len; 86*5113495bSYour Name uint8_t event_data[]; 87*5113495bSYour Name }; 88*5113495bSYour Name 89*5113495bSYour Name /** 90*5113495bSYour Name * typedef stats_ext_cb - stats ext callback 91*5113495bSYour Name * @hdd_handle: Opaque handle to the HDD context 92*5113495bSYour Name * @data: stats ext payload from firmware 93*5113495bSYour Name */ 94*5113495bSYour Name typedef void (*stats_ext_cb)(hdd_handle_t hdd_handle, 95*5113495bSYour Name struct stats_ext_event *data); 96*5113495bSYour Name 97*5113495bSYour Name /** 98*5113495bSYour Name * typedef stats_ext2_cb - stats ext2 callback 99*5113495bSYour Name * @hdd_handle: Opaque handle to the HDD context 100*5113495bSYour Name * @data: stats ext2 payload from firmware 101*5113495bSYour Name */ 102*5113495bSYour Name typedef void (*stats_ext2_cb)(hdd_handle_t hdd_handle, 103*5113495bSYour Name struct sir_sme_rx_aggr_hole_ind *data); 104*5113495bSYour Name 105*5113495bSYour Name #define MAX_ACTIVE_CMD_STATS 16 106*5113495bSYour Name 107*5113495bSYour Name typedef struct sActiveCmdStats { 108*5113495bSYour Name eSmeCommandType command; 109*5113495bSYour Name uint32_t reason; 110*5113495bSYour Name uint32_t sessionId; 111*5113495bSYour Name uint64_t timestamp; 112*5113495bSYour Name } tActiveCmdStats; 113*5113495bSYour Name 114*5113495bSYour Name typedef struct sSelfRecoveryStats { 115*5113495bSYour Name tActiveCmdStats activeCmdStats[MAX_ACTIVE_CMD_STATS]; 116*5113495bSYour Name uint8_t cmdStatsIndx; 117*5113495bSYour Name } tSelfRecoveryStats; 118*5113495bSYour Name 119*5113495bSYour Name typedef void (*link_layer_stats_cb)(hdd_handle_t hdd_handle, 120*5113495bSYour Name int indication_type, 121*5113495bSYour Name tSirLLStatsResults *results, 122*5113495bSYour Name void *cookie); 123*5113495bSYour Name 124*5113495bSYour Name typedef void (*ext_scan_ind_cb)(hdd_handle_t hdd_handle, 125*5113495bSYour Name const uint16_t, void *); 126*5113495bSYour Name 127*5113495bSYour Name /** 128*5113495bSYour Name * typedef sme_link_speed_cb - sme_get_link_speed() callback function 129*5113495bSYour Name * @info: link speed information 130*5113495bSYour Name * @context: user context supplied to sme_get_link_speed() 131*5113495bSYour Name * 132*5113495bSYour Name * This is the signature of a callback function whose addresses is 133*5113495bSYour Name * passed as the asynchronous callback function to sme_get_link_speed(). 134*5113495bSYour Name */ 135*5113495bSYour Name 136*5113495bSYour Name typedef void (*sme_link_speed_cb)(struct link_speed_info *info, 137*5113495bSYour Name void *context); 138*5113495bSYour Name 139*5113495bSYour Name typedef void (*ocb_callback)(void *context, void *response); 140*5113495bSYour Name typedef void (*sme_set_thermal_level_callback)(hdd_handle_t hdd_handle, 141*5113495bSYour Name u_int8_t level); 142*5113495bSYour Name typedef void (*p2p_lo_callback)(void *context, 143*5113495bSYour Name struct sir_p2p_lo_event *event); 144*5113495bSYour Name #ifdef FEATURE_OEM_DATA_SUPPORT 145*5113495bSYour Name typedef void (*sme_send_oem_data_rsp_msg)(struct oem_data_rsp *); 146*5113495bSYour Name #endif 147*5113495bSYour Name 148*5113495bSYour Name #ifdef WLAN_SUPPORT_TWT 149*5113495bSYour Name /** 150*5113495bSYour Name * typedef twt_enable_cb - TWT enable callback signature. 151*5113495bSYour Name * @hdd_handle: Opaque HDD handle 152*5113495bSYour Name * @params: TWT enable complete event parameters. 153*5113495bSYour Name */ 154*5113495bSYour Name typedef 155*5113495bSYour Name void (*twt_enable_cb)(hdd_handle_t hdd_handle, 156*5113495bSYour Name struct wmi_twt_enable_complete_event_param *params); 157*5113495bSYour Name 158*5113495bSYour Name /** 159*5113495bSYour Name * typedef twt_disable_cb - TWT enable callback signature. 160*5113495bSYour Name * @hdd_handle: Opaque HDD handle 161*5113495bSYour Name */ 162*5113495bSYour Name typedef void (*twt_disable_cb)(hdd_handle_t hdd_handle); 163*5113495bSYour Name 164*5113495bSYour Name /** 165*5113495bSYour Name * typedef twt_add_dialog_cb - TWT add dialog callback signature. 166*5113495bSYour Name * @psoc: Pointer to global psoc 167*5113495bSYour Name * @add_dialog_evt: pointer to event buf containing twt response parameters 168*5113495bSYour Name * @renego_fail: Flag to indicate if its re-negotiation failure case 169*5113495bSYour Name */ 170*5113495bSYour Name typedef 171*5113495bSYour Name void (*twt_add_dialog_cb)(struct wlan_objmgr_psoc *psoc, 172*5113495bSYour Name struct wma_twt_add_dialog_complete_event *add_dialog_evt, 173*5113495bSYour Name bool renego_fail); 174*5113495bSYour Name 175*5113495bSYour Name /** 176*5113495bSYour Name * typedef twt_del_dialog_cb - TWT delete dialog callback signature. 177*5113495bSYour Name * @psoc: Pointer to global psoc 178*5113495bSYour Name * @params: TWT delete dialog complete event parameters. 179*5113495bSYour Name */ 180*5113495bSYour Name typedef void (*twt_del_dialog_cb)( 181*5113495bSYour Name struct wlan_objmgr_psoc *psoc, 182*5113495bSYour Name struct wmi_twt_del_dialog_complete_event_param *params); 183*5113495bSYour Name 184*5113495bSYour Name /** 185*5113495bSYour Name * typedef twt_pause_dialog_cb - TWT pause dialog callback signature. 186*5113495bSYour Name * @psoc: Pointer to global psoc 187*5113495bSYour Name * @params: TWT pause dialog complete event parameters. 188*5113495bSYour Name */ 189*5113495bSYour Name typedef 190*5113495bSYour Name void (*twt_pause_dialog_cb)(struct wlan_objmgr_psoc *psoc, 191*5113495bSYour Name struct wmi_twt_pause_dialog_complete_event_param *params); 192*5113495bSYour Name 193*5113495bSYour Name /** 194*5113495bSYour Name * typedef twt_nudge_dialog_cb - TWT nudge dialog callback signature. 195*5113495bSYour Name * @psoc: Pointer to global psoc 196*5113495bSYour Name * @params: TWT nudge dialog complete event parameters. 197*5113495bSYour Name */ 198*5113495bSYour Name typedef 199*5113495bSYour Name void (*twt_nudge_dialog_cb)(struct wlan_objmgr_psoc *psoc, 200*5113495bSYour Name struct wmi_twt_nudge_dialog_complete_event_param *params); 201*5113495bSYour Name 202*5113495bSYour Name /** 203*5113495bSYour Name * typedef twt_resume_dialog_cb - TWT resume dialog callback signature. 204*5113495bSYour Name * @psoc: Pointer to global psoc 205*5113495bSYour Name * @params: TWT resume dialog complete event parameters. 206*5113495bSYour Name */ 207*5113495bSYour Name typedef 208*5113495bSYour Name void (*twt_resume_dialog_cb)(struct wlan_objmgr_psoc *psoc, 209*5113495bSYour Name struct wmi_twt_resume_dialog_complete_event_param *params); 210*5113495bSYour Name 211*5113495bSYour Name /** 212*5113495bSYour Name * typedef twt_notify_cb - TWT notify callback signature. 213*5113495bSYour Name * @psoc: Pointer to global psoc 214*5113495bSYour Name * @params: TWT twt notify event parameters. 215*5113495bSYour Name */ 216*5113495bSYour Name typedef 217*5113495bSYour Name void (*twt_notify_cb)(struct wlan_objmgr_psoc *psoc, 218*5113495bSYour Name struct wmi_twt_notify_event_param *params); 219*5113495bSYour Name 220*5113495bSYour Name /** 221*5113495bSYour Name * typedef twt_ack_comp_cb - TWT ack callback signature. 222*5113495bSYour Name * @params: TWT ack complete event parameters. 223*5113495bSYour Name * @context: TWT context 224*5113495bSYour Name */ 225*5113495bSYour Name typedef 226*5113495bSYour Name void (*twt_ack_comp_cb)(struct wmi_twt_ack_complete_event_param *params, 227*5113495bSYour Name void *context); 228*5113495bSYour Name 229*5113495bSYour Name /** 230*5113495bSYour Name * struct twt_callbacks - TWT response callback pointers 231*5113495bSYour Name * @twt_enable_cb: TWT enable completion callback 232*5113495bSYour Name * @twt_disable_cb: TWT disable completion callback 233*5113495bSYour Name * @twt_add_dialog_cb: TWT add dialog completion callback 234*5113495bSYour Name * @twt_del_dialog_cb: TWT delete dialog completion callback 235*5113495bSYour Name * @twt_pause_dialog_cb: TWT pause dialog completion callback 236*5113495bSYour Name * @twt_resume_dialog_cb: TWT resume dialog completion callback 237*5113495bSYour Name * @twt_notify_cb: TWT notify event callback 238*5113495bSYour Name * @twt_nudge_dialog_cb: TWT nudge dialog completion callback 239*5113495bSYour Name * @twt_ack_comp_cb: TWT ack completion callback 240*5113495bSYour Name */ 241*5113495bSYour Name struct twt_callbacks { 242*5113495bSYour Name void (*twt_enable_cb)(hdd_handle_t hdd_handle, 243*5113495bSYour Name struct wmi_twt_enable_complete_event_param *params); 244*5113495bSYour Name void (*twt_disable_cb)(hdd_handle_t hdd_handle); 245*5113495bSYour Name void (*twt_add_dialog_cb)(struct wlan_objmgr_psoc *psoc, 246*5113495bSYour Name struct wma_twt_add_dialog_complete_event *add_dialog_event, 247*5113495bSYour Name bool renego); 248*5113495bSYour Name void (*twt_del_dialog_cb)(struct wlan_objmgr_psoc *psoc, 249*5113495bSYour Name struct wmi_twt_del_dialog_complete_event_param *params); 250*5113495bSYour Name void (*twt_pause_dialog_cb)(struct wlan_objmgr_psoc *psoc, 251*5113495bSYour Name struct wmi_twt_pause_dialog_complete_event_param *params); 252*5113495bSYour Name void (*twt_resume_dialog_cb)(struct wlan_objmgr_psoc *psoc, 253*5113495bSYour Name struct wmi_twt_resume_dialog_complete_event_param *params); 254*5113495bSYour Name void (*twt_notify_cb)(struct wlan_objmgr_psoc *psoc, 255*5113495bSYour Name struct wmi_twt_notify_event_param *params); 256*5113495bSYour Name void (*twt_nudge_dialog_cb)(struct wlan_objmgr_psoc *psoc, 257*5113495bSYour Name struct wmi_twt_nudge_dialog_complete_event_param *params); 258*5113495bSYour Name void (*twt_ack_comp_cb)(struct wmi_twt_ack_complete_event_param *params, 259*5113495bSYour Name void *context); 260*5113495bSYour Name }; 261*5113495bSYour Name #endif 262*5113495bSYour Name 263*5113495bSYour Name #ifdef FEATURE_WLAN_APF 264*5113495bSYour Name /** 265*5113495bSYour Name * typedef apf_get_offload_cb - APF offload callback signature 266*5113495bSYour Name * @context: Opaque context that the client can use to associate the 267*5113495bSYour Name * callback with the request 268*5113495bSYour Name * @caps: APF offload capabilities as reported by firmware 269*5113495bSYour Name */ 270*5113495bSYour Name struct sir_apf_get_offload; 271*5113495bSYour Name typedef void (*apf_get_offload_cb)(void *context, 272*5113495bSYour Name struct sir_apf_get_offload *caps); 273*5113495bSYour Name 274*5113495bSYour Name /** 275*5113495bSYour Name * typedef apf_read_mem_cb - APF read memory response callback 276*5113495bSYour Name * @context: Opaque context that the client can use to associate the 277*5113495bSYour Name * callback with the request 278*5113495bSYour Name * @evt: APF read memory response event parameters 279*5113495bSYour Name */ 280*5113495bSYour Name typedef void (*apf_read_mem_cb)(void *context, 281*5113495bSYour Name struct wmi_apf_read_memory_resp_event_params 282*5113495bSYour Name *evt); 283*5113495bSYour Name #endif /* FEATURE_WLAN_APF */ 284*5113495bSYour Name 285*5113495bSYour Name /** 286*5113495bSYour Name * typedef rssi_threshold_breached_cb - RSSI threshold breach callback 287*5113495bSYour Name * @hdd_handle: Opaque handle to the HDD context 288*5113495bSYour Name * @event: The RSSI breach event 289*5113495bSYour Name */ 290*5113495bSYour Name typedef void (*rssi_threshold_breached_cb)(hdd_handle_t hdd_handle, 291*5113495bSYour Name struct rssi_breach_event *event); 292*5113495bSYour Name 293*5113495bSYour Name /** 294*5113495bSYour Name * typedef get_chain_rssi_callback - get chain rssi callback 295*5113495bSYour Name * @context: Opaque context that the client can use to associate the 296*5113495bSYour Name * callback with the request 297*5113495bSYour Name * @data: chain rssi result reported by firmware 298*5113495bSYour Name */ 299*5113495bSYour Name struct chain_rssi_result; 300*5113495bSYour Name typedef void (*get_chain_rssi_callback)(void *context, 301*5113495bSYour Name struct chain_rssi_result *data); 302*5113495bSYour Name 303*5113495bSYour Name #ifdef FEATURE_FW_STATE 304*5113495bSYour Name /** 305*5113495bSYour Name * typedef fw_state_callback - get firmware state callback 306*5113495bSYour Name * @context: Opaque context that the client can use to associate the 307*5113495bSYour Name * callback with the request 308*5113495bSYour Name */ 309*5113495bSYour Name typedef void (*fw_state_callback)(void *context); 310*5113495bSYour Name #endif /* FEATURE_FW_STATE */ 311*5113495bSYour Name 312*5113495bSYour Name typedef void (*tx_queue_cb)(hdd_handle_t hdd_handle, uint32_t vdev_id, 313*5113495bSYour Name enum netif_action_type action, 314*5113495bSYour Name enum netif_reason_type reason); 315*5113495bSYour Name 316*5113495bSYour Name /** 317*5113495bSYour Name * typedef pwr_save_fail_cb - power save fail callback function 318*5113495bSYour Name * @hdd_handle: HDD handle registered with SME 319*5113495bSYour Name * @params: failure parameters 320*5113495bSYour Name */ 321*5113495bSYour Name struct chip_pwr_save_fail_detected_params; 322*5113495bSYour Name typedef void (*pwr_save_fail_cb)(hdd_handle_t hdd_handle, 323*5113495bSYour Name struct chip_pwr_save_fail_detected_params *params); 324*5113495bSYour Name 325*5113495bSYour Name /** 326*5113495bSYour Name * typedef bt_activity_info_cb - bluetooth activity callback function 327*5113495bSYour Name * @hdd_handle: HDD handle registered with SME 328*5113495bSYour Name * @bt_activity: bluetooth activity information 329*5113495bSYour Name */ 330*5113495bSYour Name typedef void (*bt_activity_info_cb)(hdd_handle_t hdd_handle, 331*5113495bSYour Name uint32_t bt_activity); 332*5113495bSYour Name 333*5113495bSYour Name /** 334*5113495bSYour Name * typedef rso_cmd_status_cb - RSO command status callback function 335*5113495bSYour Name * @hdd_handle: HDD handle registered with SME 336*5113495bSYour Name * @rso_status: Status of the operation 337*5113495bSYour Name */ 338*5113495bSYour Name typedef void (*rso_cmd_status_cb)(hdd_handle_t hdd_handle, 339*5113495bSYour Name struct rso_cmd_status *rso_status); 340*5113495bSYour Name 341*5113495bSYour Name /** 342*5113495bSYour Name * typedef lost_link_info_cb - lost link indication callback function 343*5113495bSYour Name * @hdd_handle: HDD handle registered with SME 344*5113495bSYour Name * @lost_link_info: Information about the lost link 345*5113495bSYour Name */ 346*5113495bSYour Name typedef void (*lost_link_info_cb)(hdd_handle_t hdd_handle, 347*5113495bSYour Name struct sir_lost_link_info *lost_link_info); 348*5113495bSYour Name /** 349*5113495bSYour Name * typedef hidden_ssid_cb - hidden ssid rsp callback fun 350*5113495bSYour Name * @hdd_handle: HDD handle registered with SME 351*5113495bSYour Name * @vdev_id: Vdev Id 352*5113495bSYour Name */ 353*5113495bSYour Name typedef void (*hidden_ssid_cb)(hdd_handle_t hdd_handle, 354*5113495bSYour Name uint8_t vdev_id); 355*5113495bSYour Name 356*5113495bSYour Name /** 357*5113495bSYour Name * typedef bcn_report_cb - recv bcn callback fun 358*5113495bSYour Name * @hdd_handle: HDD handle registered with SME 359*5113495bSYour Name * @beacon_report: Beacon report structure 360*5113495bSYour Name */ 361*5113495bSYour Name typedef QDF_STATUS (*beacon_report_cb) 362*5113495bSYour Name (hdd_handle_t hdd_handle, struct wlan_beacon_report *beacon_report); 363*5113495bSYour Name 364*5113495bSYour Name /** 365*5113495bSYour Name * beacon_pause_cb : scan start callback fun 366*5113495bSYour Name * @hdd_handler: HDD handler 367*5113495bSYour Name * @vdev_id: vdev id 368*5113495bSYour Name * @type: scan event type 369*5113495bSYour Name * @is_disconnected: Driver is in dis connected state or not 370*5113495bSYour Name */ 371*5113495bSYour Name typedef void (*beacon_pause_cb)(hdd_handle_t hdd_handle, 372*5113495bSYour Name uint8_t vdev_id, 373*5113495bSYour Name enum scan_event_type type, 374*5113495bSYour Name bool is_disconnected); 375*5113495bSYour Name 376*5113495bSYour Name /** 377*5113495bSYour Name * typedef sme_get_isolation_cb - get isolation callback fun 378*5113495bSYour Name * @param: isolation result reported by firmware 379*5113495bSYour Name * @pcontext: Opaque context that the client can use to associate the 380*5113495bSYour Name * callback with the request 381*5113495bSYour Name */ 382*5113495bSYour Name typedef void (*sme_get_isolation_cb)(struct sir_isolation_resp *param, 383*5113495bSYour Name void *pcontext); 384*5113495bSYour Name 385*5113495bSYour Name #ifdef WLAN_FEATURE_MOTION_DETECTION 386*5113495bSYour Name typedef QDF_STATUS (*md_host_evt_cb)(void *hdd_ctx, struct sir_md_evt *event); 387*5113495bSYour Name typedef QDF_STATUS (*md_bl_evt_cb)(void *hdd_ctx, struct sir_md_bl_evt *event); 388*5113495bSYour Name #endif /* WLAN_FEATURE_MOTION_DETECTION */ 389*5113495bSYour Name 390*5113495bSYour Name struct sme_context { 391*5113495bSYour Name eSmeState state; 392*5113495bSYour Name qdf_mutex_t sme_global_lock; 393*5113495bSYour Name uint32_t sme_cmd_count; 394*5113495bSYour Name /* following pointer contains array of pointers for tSmeCmd* */ 395*5113495bSYour Name void **sme_cmd_buf_addr; 396*5113495bSYour Name tDblLinkList sme_cmd_freelist; /* preallocated roam cmd list */ 397*5113495bSYour Name void *ll_stats_context; 398*5113495bSYour Name link_layer_stats_cb link_layer_stats_cb; 399*5113495bSYour Name void (*link_layer_stats_ext_cb)(hdd_handle_t callback_ctx, 400*5113495bSYour Name tSirLLStatsResults *rsp); 401*5113495bSYour Name #ifdef WLAN_POWER_DEBUG 402*5113495bSYour Name void *power_debug_stats_context; 403*5113495bSYour Name void (*power_stats_resp_callback)(struct power_stats_response *rsp, 404*5113495bSYour Name void *callback_context); 405*5113495bSYour Name void (*sme_power_debug_stats_callback)( 406*5113495bSYour Name struct mac_context *mac, 407*5113495bSYour Name struct power_stats_response *response); 408*5113495bSYour Name #endif 409*5113495bSYour Name #ifdef WLAN_FEATURE_BEACON_RECEPTION_STATS 410*5113495bSYour Name void *beacon_stats_context; 411*5113495bSYour Name void (*beacon_stats_resp_callback)(struct bcn_reception_stats_rsp *rsp, 412*5113495bSYour Name void *callback_context); 413*5113495bSYour Name #endif 414*5113495bSYour Name #ifdef FEATURE_WLAN_AUTO_SHUTDOWN 415*5113495bSYour Name void (*auto_shutdown_cb)(void); 416*5113495bSYour Name #endif 417*5113495bSYour Name /* Maximum interfaces allowed by the host */ 418*5113495bSYour Name uint8_t max_intf_count; 419*5113495bSYour Name stats_ext_cb stats_ext_cb; 420*5113495bSYour Name stats_ext2_cb stats_ext2_cb; 421*5113495bSYour Name /* linkspeed callback */ 422*5113495bSYour Name sme_link_speed_cb link_speed_cb; 423*5113495bSYour Name void *link_speed_context; 424*5113495bSYour Name 425*5113495bSYour Name sme_get_isolation_cb get_isolation_cb; 426*5113495bSYour Name void *get_isolation_cb_context; 427*5113495bSYour Name #ifdef FEATURE_WLAN_EXTSCAN 428*5113495bSYour Name ext_scan_ind_cb ext_scan_ind_cb; 429*5113495bSYour Name #endif /* FEATURE_WLAN_EXTSCAN */ 430*5113495bSYour Name csr_link_status_callback link_status_callback; 431*5113495bSYour Name void *link_status_context; 432*5113495bSYour Name int (*get_tsf_cb)(void *pcb_cxt, struct stsf *ptsf); 433*5113495bSYour Name void *get_tsf_cxt; 434*5113495bSYour Name /* get temperature event context and callback */ 435*5113495bSYour Name void *temperature_cb_context; 436*5113495bSYour Name void (*temperature_cb)(int temperature, void *context); 437*5113495bSYour Name uint8_t miracast_value; 438*5113495bSYour Name struct ps_global_info ps_global_info; 439*5113495bSYour Name rssi_threshold_breached_cb rssi_threshold_breached_cb; 440*5113495bSYour Name sme_set_thermal_level_callback set_thermal_level_cb; 441*5113495bSYour Name void *apf_get_offload_context; 442*5113495bSYour Name #ifdef FEATURE_P2P_LISTEN_OFFLOAD 443*5113495bSYour Name p2p_lo_callback p2p_lo_event_callback; 444*5113495bSYour Name void *p2p_lo_event_context; 445*5113495bSYour Name #endif 446*5113495bSYour Name #ifdef FEATURE_OEM_DATA_SUPPORT 447*5113495bSYour Name sme_send_oem_data_rsp_msg oem_data_rsp_callback; 448*5113495bSYour Name #endif 449*5113495bSYour Name lost_link_info_cb lost_link_info_cb; 450*5113495bSYour Name 451*5113495bSYour Name bool (*set_connection_info_cb)(bool); 452*5113495bSYour Name bool (*get_connection_info_cb)(uint8_t *session_id, 453*5113495bSYour Name enum scan_reject_states *reason); 454*5113495bSYour Name rso_cmd_status_cb rso_cmd_status_cb; 455*5113495bSYour Name pwr_save_fail_cb chip_power_save_fail_cb; 456*5113495bSYour Name bt_activity_info_cb bt_activity_info_cb; 457*5113495bSYour Name void *get_arp_stats_context; 458*5113495bSYour Name void (*get_arp_stats_cb)(void *, struct rsp_stats *, void *); 459*5113495bSYour Name get_chain_rssi_callback get_chain_rssi_cb; 460*5113495bSYour Name void *get_chain_rssi_context; 461*5113495bSYour Name #ifdef FEATURE_FW_STATE 462*5113495bSYour Name fw_state_callback fw_state_cb; 463*5113495bSYour Name void *fw_state_context; 464*5113495bSYour Name #endif /* FEATURE_FW_STATE */ 465*5113495bSYour Name tx_queue_cb tx_queue_cb; 466*5113495bSYour Name #ifdef WLAN_SUPPORT_TWT 467*5113495bSYour Name twt_enable_cb twt_enable_cb; 468*5113495bSYour Name twt_disable_cb twt_disable_cb; 469*5113495bSYour Name twt_add_dialog_cb twt_add_dialog_cb; 470*5113495bSYour Name twt_del_dialog_cb twt_del_dialog_cb; 471*5113495bSYour Name twt_pause_dialog_cb twt_pause_dialog_cb; 472*5113495bSYour Name twt_nudge_dialog_cb twt_nudge_dialog_cb; 473*5113495bSYour Name twt_resume_dialog_cb twt_resume_dialog_cb; 474*5113495bSYour Name twt_notify_cb twt_notify_cb; 475*5113495bSYour Name twt_ack_comp_cb twt_ack_comp_cb; 476*5113495bSYour Name void *twt_ack_context_cb; 477*5113495bSYour Name #endif 478*5113495bSYour Name #ifdef FEATURE_WLAN_APF 479*5113495bSYour Name apf_get_offload_cb apf_get_offload_cb; 480*5113495bSYour Name apf_read_mem_cb apf_read_mem_cb; 481*5113495bSYour Name #endif 482*5113495bSYour Name #ifdef WLAN_FEATURE_MOTION_DETECTION 483*5113495bSYour Name md_host_evt_cb md_host_evt_cb; 484*5113495bSYour Name md_bl_evt_cb md_bl_evt_cb; 485*5113495bSYour Name void *md_ctx; 486*5113495bSYour Name #endif /* WLAN_FEATURE_MOTION_DETECTION */ 487*5113495bSYour Name /* hidden ssid rsp callback */ 488*5113495bSYour Name hidden_ssid_cb hidden_ssid_cb; 489*5113495bSYour Name #ifdef WLAN_MWS_INFO_DEBUGFS 490*5113495bSYour Name void *mws_coex_info_ctx; 491*5113495bSYour Name void (*mws_coex_info_state_resp_callback)(void *coex_info_data, 492*5113495bSYour Name void *context, 493*5113495bSYour Name wmi_mws_coex_cmd_id cmd_id); 494*5113495bSYour Name #endif /* WLAN_MWS_INFO_DEBUGFS */ 495*5113495bSYour Name 496*5113495bSYour Name #ifdef WLAN_BCN_RECV_FEATURE 497*5113495bSYour Name beacon_report_cb beacon_report_cb; 498*5113495bSYour Name beacon_pause_cb beacon_pause_cb; 499*5113495bSYour Name #endif 500*5113495bSYour Name #ifdef FEATURE_OEM_DATA 501*5113495bSYour Name void (*oem_data_event_handler_cb) 502*5113495bSYour Name (const struct oem_data *oem_event_data, 503*5113495bSYour Name uint8_t vdev_id); 504*5113495bSYour Name uint8_t oem_data_vdev_id; 505*5113495bSYour Name /* async oem event callback */ 506*5113495bSYour Name void (*oem_data_async_event_handler_cb) 507*5113495bSYour Name (const struct oem_data *oem_event_data); 508*5113495bSYour Name #endif 509*5113495bSYour Name 510*5113495bSYour Name QDF_STATUS (*pagefault_action_cb)(void *buf, uint32_t data); 511*5113495bSYour Name 512*5113495bSYour Name #ifdef MULTI_CLIENT_LL_SUPPORT 513*5113495bSYour Name void (*latency_level_event_handler_cb) 514*5113495bSYour Name (const struct latency_level_data *event_data, 515*5113495bSYour Name uint8_t vdev_id); 516*5113495bSYour Name #endif 517*5113495bSYour Name 518*5113495bSYour Name sme_get_raom_scan_ch_callback roam_scan_ch_callback; 519*5113495bSYour Name void *roam_scan_ch_get_context; 520*5113495bSYour Name #ifdef FEATURE_MONITOR_MODE_SUPPORT 521*5113495bSYour Name void (*monitor_mode_cb)(uint8_t vdev_id); 522*5113495bSYour Name #endif 523*5113495bSYour Name #if defined(CLD_PM_QOS) && defined(WLAN_FEATURE_LL_MODE) 524*5113495bSYour Name void (*beacon_latency_event_cb)(uint32_t latency_level); 525*5113495bSYour Name #endif 526*5113495bSYour Name QDF_STATUS (*sme_vdev_del_cb)(mac_handle_t mac_handle, 527*5113495bSYour Name struct wlan_objmgr_vdev *vdev); 528*5113495bSYour Name }; 529*5113495bSYour Name 530*5113495bSYour Name #endif /* #if !defined( __SMEINTERNAL_H ) */ 531