1*5113495bSYour Name /* 2*5113495bSYour Name * Copyright (c) 2012-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 /* 21*5113495bSYour Name * This file sir_api.h contains definitions exported by 22*5113495bSYour Name * Sirius software. 23*5113495bSYour Name * Author: Chandra Modumudi 24*5113495bSYour Name * Date: 04/16/2002 25*5113495bSYour Name * History:- 26*5113495bSYour Name * Date Modified by Modification Information 27*5113495bSYour Name * -------------------------------------------------------------------- 28*5113495bSYour Name */ 29*5113495bSYour Name 30*5113495bSYour Name #ifndef __SIR_API_H 31*5113495bSYour Name #define __SIR_API_H 32*5113495bSYour Name 33*5113495bSYour Name /* legacy definition */ 34*5113495bSYour Name typedef void *tpAniSirGlobal; 35*5113495bSYour Name 36*5113495bSYour Name struct mac_context; 37*5113495bSYour Name #include "qdf_types.h" 38*5113495bSYour Name #include "cds_regdomain.h" 39*5113495bSYour Name #include "sir_types.h" 40*5113495bSYour Name #include "sir_mac_prot_def.h" 41*5113495bSYour Name #include "ani_system_defs.h" 42*5113495bSYour Name #include "sir_params.h" 43*5113495bSYour Name #include "cds_regdomain.h" 44*5113495bSYour Name #include "wmi_unified.h" 45*5113495bSYour Name #include "wmi_unified_param.h" 46*5113495bSYour Name #include "ol_txrx_htt_api.h" 47*5113495bSYour Name #include "wlan_reg_services_api.h" 48*5113495bSYour Name #include <dot11f.h> 49*5113495bSYour Name #include "wlan_policy_mgr_api.h" 50*5113495bSYour Name #include "wlan_tdls_public_structs.h" 51*5113495bSYour Name #include "qca_vendor.h" 52*5113495bSYour Name #include "wlan_cp_stats_mc_defs.h" 53*5113495bSYour Name #ifdef WLAN_FEATURE_11BE_MLO 54*5113495bSYour Name #include "wlan_mlo_mgr_public_structs.h" 55*5113495bSYour Name #endif 56*5113495bSYour Name 57*5113495bSYour Name #define OFFSET_OF(structType, fldName) (&((structType *)0)->fldName) 58*5113495bSYour Name #define WLAN_DOT11_BASIC_RATE_MASK (0x80) 59*5113495bSYour Name #define BITS_ON(_Field, _Bitmask) ((_Field) |= (_Bitmask)) 60*5113495bSYour Name #define BITS_OFF(_Field, _Bitmask) ((_Field) &= ~(_Bitmask)) 61*5113495bSYour Name 62*5113495bSYour Name /* / Max supported channel list */ 63*5113495bSYour Name #define SIR_MAX_SUPPORTED_CHANNEL_LIST 96 64*5113495bSYour Name 65*5113495bSYour Name #define SIR_MDIE_SIZE 3 /* MD ID(2 bytes), Capability(1 byte) */ 66*5113495bSYour Name 67*5113495bSYour Name #define SIR_MAX_ELEMENT_ID 255 68*5113495bSYour Name 69*5113495bSYour Name #define SIR_BCN_REPORT_MAX_BSS_DESC 8 70*5113495bSYour Name 71*5113495bSYour Name #define SIR_NUM_11B_RATES 4 /* 1,2,5.5,11 */ 72*5113495bSYour Name #define SIR_NUM_11A_RATES 8 /* 6,9,12,18,24,36,48,54 */ 73*5113495bSYour Name 74*5113495bSYour Name typedef uint8_t tSirIpv4Addr[QDF_IPV4_ADDR_SIZE]; 75*5113495bSYour Name 76*5113495bSYour Name #define SIR_VERSION_STRING_LEN 1024 77*5113495bSYour Name typedef uint8_t tSirVersionString[SIR_VERSION_STRING_LEN]; 78*5113495bSYour Name 79*5113495bSYour Name /* Periodic Tx pattern offload feature */ 80*5113495bSYour Name #define PERIODIC_TX_PTRN_MAX_SIZE 1536 81*5113495bSYour Name #ifndef MAXNUM_PERIODIC_TX_PTRNS 82*5113495bSYour Name #define MAXNUM_PERIODIC_TX_PTRNS 6 83*5113495bSYour Name #endif 84*5113495bSYour Name 85*5113495bSYour Name /* FW response timeout values in milli seconds */ 86*5113495bSYour Name #define SIR_PEER_ASSOC_TIMEOUT (4000) /* 4 seconds */ 87*5113495bSYour Name 88*5113495bSYour Name #ifdef FEATURE_RUNTIME_PM 89*5113495bSYour Name /* Add extra PMO_RESUME_TIMEOUT for runtime PM resume timeout */ 90*5113495bSYour Name #define SIR_PEER_CREATE_RESPONSE_TIMEOUT (4000 + PMO_RESUME_TIMEOUT) 91*5113495bSYour Name #define SIR_DELETE_STA_TIMEOUT (4000 + PMO_RESUME_TIMEOUT) 92*5113495bSYour Name #define SIR_VDEV_PLCY_MGR_TIMEOUT (4000 + PMO_RESUME_TIMEOUT) 93*5113495bSYour Name #else 94*5113495bSYour Name #define SIR_PEER_CREATE_RESPONSE_TIMEOUT (4000) 95*5113495bSYour Name #define SIR_DELETE_STA_TIMEOUT (4000) /* 4 seconds */ 96*5113495bSYour Name #define SIR_VDEV_PLCY_MGR_TIMEOUT (4000) 97*5113495bSYour Name #endif 98*5113495bSYour Name 99*5113495bSYour Name #define MAX_POWER_DBG_ARGS_SUPPORTED 8 100*5113495bSYour Name #define QOS_MAP_MAX_EX 21 101*5113495bSYour Name #define QOS_MAP_RANGE_NUM 8 102*5113495bSYour Name #define QOS_MAP_LEN_MIN (QOS_MAP_RANGE_NUM * 2) 103*5113495bSYour Name #define QOS_MAP_LEN_MAX \ 104*5113495bSYour Name (QOS_MAP_LEN_MIN + 2 * QOS_MAP_MAX_EX) 105*5113495bSYour Name #define NUM_CHAINS_MAX 2 106*5113495bSYour Name 107*5113495bSYour Name /* Maximum number of realms present in fils indication element */ 108*5113495bSYour Name #define SIR_MAX_REALM_COUNT 7 109*5113495bSYour Name /* Realm length */ 110*5113495bSYour Name #define SIR_REALM_LEN 2 111*5113495bSYour Name /* Cache ID length */ 112*5113495bSYour Name #define CACHE_ID_LEN 2 113*5113495bSYour Name 114*5113495bSYour Name /* Maximum peer station number query one time */ 115*5113495bSYour Name #define MAX_PEER_STA 12 116*5113495bSYour Name 117*5113495bSYour Name /* Maximum number of peers for SAP */ 118*5113495bSYour Name #ifndef SIR_SAP_MAX_NUM_PEERS 119*5113495bSYour Name #define SIR_SAP_MAX_NUM_PEERS 32 120*5113495bSYour Name #endif 121*5113495bSYour Name 122*5113495bSYour Name #define SIR_KEK_KEY_LEN 16 123*5113495bSYour Name #define SIR_KEK_KEY_LEN_FILS 64 124*5113495bSYour Name 125*5113495bSYour Name #define SIR_FILS_HLP_OUI_TYPE "\x5" 126*5113495bSYour Name #define SIR_FILS_HLP_OUI_LEN 1 127*5113495bSYour Name #define SIR_FILS_HLP_IE_LEN 2048 128*5113495bSYour Name 129*5113495bSYour Name #define SIR_REPLAY_CTR_LEN 8 130*5113495bSYour Name #ifdef WLAN_FEATURE_ROAM_OFFLOAD 131*5113495bSYour Name #define SIR_UAPSD_BITOFFSET_ACVO 0 132*5113495bSYour Name #define SIR_UAPSD_BITOFFSET_ACVI 1 133*5113495bSYour Name #define SIR_UAPSD_BITOFFSET_ACBK 2 134*5113495bSYour Name #define SIR_UAPSD_BITOFFSET_ACBE 3 135*5113495bSYour Name 136*5113495bSYour Name #define SIR_UAPSD_FLAG_ACVO (1 << SIR_UAPSD_BITOFFSET_ACVO) 137*5113495bSYour Name #define SIR_UAPSD_FLAG_ACVI (1 << SIR_UAPSD_BITOFFSET_ACVI) 138*5113495bSYour Name #define SIR_UAPSD_FLAG_ACBK (1 << SIR_UAPSD_BITOFFSET_ACBK) 139*5113495bSYour Name #define SIR_UAPSD_FLAG_ACBE (1 << SIR_UAPSD_BITOFFSET_ACBE) 140*5113495bSYour Name #define SIR_UAPSD_GET(ac, mask) (((mask) & (SIR_UAPSD_FLAG_ ## ac)) >> SIR_UAPSD_BITOFFSET_ ## ac) 141*5113495bSYour Name 142*5113495bSYour Name #endif 143*5113495bSYour Name 144*5113495bSYour Name /* Maximum management packet data unit length */ 145*5113495bSYour Name #define MAX_MGMT_MPDU_LEN 2304 146*5113495bSYour Name 147*5113495bSYour Name struct scheduler_msg; 148*5113495bSYour Name 149*5113495bSYour Name /** 150*5113495bSYour Name * enum sir_roam_op_code - Operation to be done by the callback. 151*5113495bSYour Name * @SIR_ROAM_SYNCH_PROPAGATION: Propagate the new BSS info after roaming. 152*5113495bSYour Name * @SIR_ROAMING_DEREGISTER_STA: Deregister the old STA after roaming. 153*5113495bSYour Name * @SIR_ROAMING_START: Firmware started roaming operation 154*5113495bSYour Name * @SIR_ROAMING_ABORT: Firmware aborted roaming operation, still connected. 155*5113495bSYour Name * @SIR_ROAM_SYNCH_COMPLETE: Roam sync propagation is complete. 156*5113495bSYour Name * @SIR_ROAMING_INVOKE_FAIL: Firmware roaming failed. 157*5113495bSYour Name * @SIR_ROAMING_DEAUTH: Firmware indicates deauth. 158*5113495bSYour Name */ 159*5113495bSYour Name enum sir_roam_op_code { 160*5113495bSYour Name SIR_ROAM_SYNCH_PROPAGATION = 1, 161*5113495bSYour Name SIR_ROAMING_DEREGISTER_STA, 162*5113495bSYour Name SIR_ROAMING_START, 163*5113495bSYour Name SIR_ROAMING_ABORT, 164*5113495bSYour Name SIR_ROAM_SYNCH_COMPLETE, 165*5113495bSYour Name SIR_ROAM_SYNCH_NAPI_OFF, 166*5113495bSYour Name SIR_ROAMING_INVOKE_FAIL, 167*5113495bSYour Name SIR_ROAMING_DEAUTH, 168*5113495bSYour Name }; 169*5113495bSYour Name 170*5113495bSYour Name /** 171*5113495bSYour Name * enum ps_state - State of the power save 172*5113495bSYour Name * @FULL_POWER_MODE: for Full power mode 173*5113495bSYour Name * @LEGACY_POWER_SAVE_MODE: For Legacy Power Save mode 174*5113495bSYour Name * @UAPSD_MODE: for UAPSD power save 175*5113495bSYour Name */ 176*5113495bSYour Name enum ps_state { 177*5113495bSYour Name FULL_POWER_MODE, 178*5113495bSYour Name LEGACY_POWER_SAVE_MODE, 179*5113495bSYour Name UAPSD_MODE 180*5113495bSYour Name }; 181*5113495bSYour Name 182*5113495bSYour Name /** 183*5113495bSYour Name * \var g_phy_rates_suppt 184*5113495bSYour Name * 185*5113495bSYour Name * \brief Rate support lookup table 186*5113495bSYour Name * 187*5113495bSYour Name * 188*5113495bSYour Name * This is a lookup table indexing rates & configuration parameters to 189*5113495bSYour Name * support. Given a rate (in unites of 0.5Mpbs) & three bools (MIMO 190*5113495bSYour Name * Enabled, Channel Bonding Enabled, & Concatenation Enabled), one can 191*5113495bSYour Name * determine whether the given rate is supported by computing two 192*5113495bSYour Name * indices. The first maps the rate to table row as indicated below 193*5113495bSYour Name * (i.e. eHddSuppRate_6Mbps maps to row zero, eHddSuppRate_9Mbps to row 194*5113495bSYour Name * 1, and so on). Index two can be computed like so: 195*5113495bSYour Name * 196*5113495bSYour Name * \code 197*5113495bSYour Name * idx2 = ( fEsf ? 0x4 : 0x0 ) | 198*5113495bSYour Name * ( fCb ? 0x2 : 0x0 ) | 199*5113495bSYour Name * ( fMimo ? 0x1 : 0x0 ); 200*5113495bSYour Name * \endcode 201*5113495bSYour Name * 202*5113495bSYour Name * 203*5113495bSYour Name * Given that: 204*5113495bSYour Name * 205*5113495bSYour Name * \code 206*5113495bSYour Name * fSupported = g_phy_rates_suppt[idx1][idx2]; 207*5113495bSYour Name * \endcode 208*5113495bSYour Name * 209*5113495bSYour Name * 210*5113495bSYour Name * This table is based on the document "PHY Supported Rates.doc". This 211*5113495bSYour Name * table is permissive in that a rate is reflected as being supported 212*5113495bSYour Name * even when turning off an enabled feature would be required. For 213*5113495bSYour Name * instance, "PHY Supported Rates" lists 42Mpbs as unsupported when CB, 214*5113495bSYour Name * ESF, & MIMO are all on. However, if we turn off either of CB or 215*5113495bSYour Name * MIMO, it then becomes supported. Therefore, we mark it as supported 216*5113495bSYour Name * even in index 7 of this table. 217*5113495bSYour Name * 218*5113495bSYour Name * 219*5113495bSYour Name */ 220*5113495bSYour Name 221*5113495bSYour Name static const bool g_phy_rates_suppt[24][8] = { 222*5113495bSYour Name 223*5113495bSYour Name /* SSF SSF SSF SSF ESF ESF ESF ESF */ 224*5113495bSYour Name /* SIMO MIMO SIMO MIMO SIMO MIMO SIMO MIMO */ 225*5113495bSYour Name /* No CB No CB CB CB No CB No CB CB CB */ 226*5113495bSYour Name {true, true, true, true, true, true, true, true}, /* 6Mbps */ 227*5113495bSYour Name {true, true, true, true, true, true, true, true}, /* 9Mbps */ 228*5113495bSYour Name {true, true, true, true, true, true, true, true}, /* 12Mbps */ 229*5113495bSYour Name {true, true, true, true, true, true, true, true}, /* 18Mbps */ 230*5113495bSYour Name {false, false, true, true, false, false, true, true}, /* 20Mbps */ 231*5113495bSYour Name {true, true, true, true, true, true, true, true}, /* 24Mbps */ 232*5113495bSYour Name {true, true, true, true, true, true, true, true}, /* 36Mbps */ 233*5113495bSYour Name {false, false, true, true, false, true, true, true}, /* 40Mbps */ 234*5113495bSYour Name {false, false, true, true, false, true, true, true}, /* 42Mbps */ 235*5113495bSYour Name {true, true, true, true, true, true, true, true}, /* 48Mbps */ 236*5113495bSYour Name {true, true, true, true, true, true, true, true}, /* 54Mbps */ 237*5113495bSYour Name {false, true, true, true, false, true, true, true}, /* 72Mbps */ 238*5113495bSYour Name {false, false, true, true, false, true, true, true}, /* 80Mbps */ 239*5113495bSYour Name {false, false, true, true, false, true, true, true}, /* 84Mbps */ 240*5113495bSYour Name {false, true, true, true, false, true, true, true}, /* 96Mbps */ 241*5113495bSYour Name {false, true, true, true, false, true, true, true}, /* 108Mbps */ 242*5113495bSYour Name {false, false, true, true, false, true, true, true}, /* 120Mbps */ 243*5113495bSYour Name {false, false, true, true, false, true, true, true}, /* 126Mbps */ 244*5113495bSYour Name {false, false, false, true, false, false, false, true}, /* 144Mbps */ 245*5113495bSYour Name {false, false, false, true, false, false, false, true}, /* 160Mbps */ 246*5113495bSYour Name {false, false, false, true, false, false, false, true}, /* 168Mbps */ 247*5113495bSYour Name {false, false, false, true, false, false, false, true}, /* 192Mbps */ 248*5113495bSYour Name {false, false, false, true, false, false, false, true}, /* 216Mbps */ 249*5113495bSYour Name {false, false, false, true, false, false, false, true}, /* 240Mbps */ 250*5113495bSYour Name }; 251*5113495bSYour Name 252*5113495bSYour Name typedef enum { 253*5113495bSYour Name /* 11b rates */ 254*5113495bSYour Name SUPP_RATE_1_MBPS = 1 * 2, 255*5113495bSYour Name SUPP_RATE_2_MBPS = 2 * 2, 256*5113495bSYour Name SUPP_RATE_5_MBPS = 11, 257*5113495bSYour Name SUPP_RATE_11_MBPS = 11 * 2, 258*5113495bSYour Name 259*5113495bSYour Name /* 11a / 11g rates */ 260*5113495bSYour Name SUPP_RATE_6_MBPS = 6 * 2, 261*5113495bSYour Name SUPP_RATE_9_MBPS = 9 * 2, 262*5113495bSYour Name SUPP_RATE_12_MBPS = 12 * 2, 263*5113495bSYour Name SUPP_RATE_18_MBPS = 18 * 2, 264*5113495bSYour Name SUPP_RATE_24_MBPS = 24 * 2, 265*5113495bSYour Name SUPP_RATE_36_MBPS = 36 * 2, 266*5113495bSYour Name SUPP_RATE_48_MBPS = 48 * 2, 267*5113495bSYour Name SUPP_RATE_54_MBPS = 54 * 2, 268*5113495bSYour Name 269*5113495bSYour Name /* Airgo prop. rates */ 270*5113495bSYour Name SUPP_RATE_20_MBPS = 20 * 2, 271*5113495bSYour Name SUPP_RATE_40_MBPS = 40 * 2, 272*5113495bSYour Name SUPP_RATE_42_MBPS = 42 * 2, 273*5113495bSYour Name SUPP_RATE_72_MBPS = 72 * 2, 274*5113495bSYour Name SUPP_RATE_80_MBPS = 80 * 2, 275*5113495bSYour Name SUPP_RATE_84_MBPS = 84 * 2, 276*5113495bSYour Name SUPP_RATE_96_MBPS = 96 * 2, 277*5113495bSYour Name SUPP_RATE_108_MBPS = 108 * 2, 278*5113495bSYour Name SUPP_RATE_120_MBPS = 120 * 2, 279*5113495bSYour Name SUPP_RATE_126_MBPS = 126 * 2, 280*5113495bSYour Name SUPP_RATE_144_MBPS = 144 * 2, 281*5113495bSYour Name SUPP_RATE_160_MBPS = 160 * 2, 282*5113495bSYour Name SUPP_RATE_168_MBPS = 168 * 2, 283*5113495bSYour Name SUPP_RATE_192_MBPS = 192 * 2, 284*5113495bSYour Name SUPP_RATE_216_MBPS = 216 * 2, 285*5113495bSYour Name SUPP_RATE_240_MBPS = 240 * 2 286*5113495bSYour Name } eCsrSupportedRates; 287*5113495bSYour Name 288*5113495bSYour Name /** 289*5113495bSYour Name * struct ps_params - maintain power save state and USAPD params 290*5113495bSYour Name * @mac_ctx: mac_ctx 291*5113495bSYour Name * @session_id: Session Id. 292*5113495bSYour Name * @ps_state : State of the power save 293*5113495bSYour Name * @uapsd_per_ac_trigger_enable_mask: dynamic UPASD mask setting 294*5113495bSYour Name * derived from AddTS Rsp and DelTS frame. 295*5113495bSYour Name * If a particular AC bit is set, it means AC is trigger enabled. 296*5113495bSYour Name * @uapsd_per_ac_delivery_enable_mask: dynamic UPASD mask setting 297*5113495bSYour Name * derived from AddTS Rsp and DelTs frame. 298*5113495bSYour Name * If a particular AC bit is set, it means AC is delivery enabled. 299*5113495bSYour Name * @ac_admit_mask: used for AC downgrade. This is a dynamic mask 300*5113495bSYour Name * setting which keep tracks of ACs being admitted. 301*5113495bSYour Name * If bit is set to 0: That particular AC is not admitted 302*5113495bSYour Name * If bit is set to 1: That particular AC is admitted 303*5113495bSYour Name * @uapsd_per_ac_bit_mask: This is a static UAPSD mask setting 304*5113495bSYour Name * derived from SME_JOIN_REQ and SME_REASSOC_REQ. 305*5113495bSYour Name * If a particular AC bit is set, it means the AC is both 306*5113495bSYour Name * trigger enabled and delivery enabled. 307*5113495bSYour Name * @auto_ps_enable_timer: Upon expiration of this timer Power Save Offload 308*5113495bSYour Name * module will try to enable sta mode ps 309*5113495bSYour Name */ 310*5113495bSYour Name 311*5113495bSYour Name struct ps_params { 312*5113495bSYour Name void *mac_ctx; 313*5113495bSYour Name uint32_t session_id; 314*5113495bSYour Name enum ps_state ps_state; 315*5113495bSYour Name uint8_t uapsd_per_ac_trigger_enable_mask; 316*5113495bSYour Name uint8_t uapsd_per_ac_delivery_enable_mask; 317*5113495bSYour Name uint8_t ac_admit_mask[SIR_MAC_DIRECTION_DIRECT]; 318*5113495bSYour Name uint8_t uapsd_per_ac_bit_mask; 319*5113495bSYour Name qdf_mc_timer_t auto_ps_enable_timer; 320*5113495bSYour Name }; 321*5113495bSYour Name 322*5113495bSYour Name /* Type declarations used by Firmware and Host software */ 323*5113495bSYour Name 324*5113495bSYour Name /* Scan type enum used in scan request */ 325*5113495bSYour Name typedef enum eSirScanType { 326*5113495bSYour Name eSIR_PASSIVE_SCAN, 327*5113495bSYour Name eSIR_ACTIVE_SCAN, 328*5113495bSYour Name eSIR_BEACON_TABLE, 329*5113495bSYour Name } tSirScanType; 330*5113495bSYour Name 331*5113495bSYour Name /** 332*5113495bSYour Name * struct roam_scan_ch_resp - roam scan chan list response to userspace 333*5113495bSYour Name * @vdev_id: vdev id 334*5113495bSYour Name * @num_channels: number of roam scan channels 335*5113495bSYour Name * @command_resp: command response or async event 336*5113495bSYour Name * @chan_list: list of roam scan channels 337*5113495bSYour Name */ 338*5113495bSYour Name struct roam_scan_ch_resp { 339*5113495bSYour Name uint16_t vdev_id; 340*5113495bSYour Name uint16_t num_channels; 341*5113495bSYour Name uint32_t command_resp; 342*5113495bSYour Name uint32_t *chan_list; 343*5113495bSYour Name }; 344*5113495bSYour Name 345*5113495bSYour Name /** 346*5113495bSYour Name * struct wlan_beacon_report - Beacon info to be send to userspace 347*5113495bSYour Name * @vdev_id: vdev id 348*5113495bSYour Name * @ssid: ssid present in beacon 349*5113495bSYour Name * @bssid: bssid present in beacon 350*5113495bSYour Name * @frequency: channel frequency in MHz 351*5113495bSYour Name * @beacon_interval: Interval between two consecutive beacons 352*5113495bSYour Name * @time_stamp: time stamp at which beacon received from AP 353*5113495bSYour Name * @boot_time: Boot time when beacon received 354*5113495bSYour Name */ 355*5113495bSYour Name struct wlan_beacon_report { 356*5113495bSYour Name uint8_t vdev_id; 357*5113495bSYour Name struct wlan_ssid ssid; 358*5113495bSYour Name struct qdf_mac_addr bssid; 359*5113495bSYour Name uint32_t frequency; 360*5113495bSYour Name uint16_t beacon_interval; 361*5113495bSYour Name qdf_time_t time_stamp; 362*5113495bSYour Name qdf_time_t boot_time; 363*5113495bSYour Name }; 364*5113495bSYour Name 365*5113495bSYour Name 366*5113495bSYour Name /* / Result codes Firmware return to Host SW */ 367*5113495bSYour Name typedef enum eSirResultCodes { 368*5113495bSYour Name eSIR_SME_SUCCESS, 369*5113495bSYour Name eSIR_LOGE_EXCEPTION, 370*5113495bSYour Name eSIR_SME_INVALID_PARAMETERS = 500, 371*5113495bSYour Name eSIR_SME_UNEXPECTED_REQ_RESULT_CODE, 372*5113495bSYour Name eSIR_SME_RESOURCES_UNAVAILABLE, 373*5113495bSYour Name /* Unable to find a BssDescription */ 374*5113495bSYour Name eSIR_SME_SCAN_FAILED, 375*5113495bSYour Name /* matching requested scan criteria */ 376*5113495bSYour Name eSIR_SME_BSS_ALREADY_STARTED_OR_JOINED, 377*5113495bSYour Name eSIR_SME_LOST_LINK_WITH_PEER_RESULT_CODE, 378*5113495bSYour Name eSIR_SME_REFUSED, 379*5113495bSYour Name eSIR_SME_JOIN_DEAUTH_FROM_AP_DURING_ADD_STA, 380*5113495bSYour Name eSIR_SME_JOIN_TIMEOUT_RESULT_CODE, 381*5113495bSYour Name eSIR_SME_AUTH_TIMEOUT_RESULT_CODE, 382*5113495bSYour Name eSIR_SME_ASSOC_TIMEOUT_RESULT_CODE, 383*5113495bSYour Name eSIR_SME_REASSOC_TIMEOUT_RESULT_CODE, 384*5113495bSYour Name eSIR_SME_MAX_NUM_OF_PRE_AUTH_REACHED, 385*5113495bSYour Name eSIR_SME_AUTH_REFUSED, 386*5113495bSYour Name eSIR_SME_INVALID_WEP_DEFAULT_KEY, 387*5113495bSYour Name eSIR_SME_NO_KEY_MAPPING_KEY_FOR_PEER, 388*5113495bSYour Name eSIR_SME_ASSOC_REFUSED, 389*5113495bSYour Name eSIR_SME_REASSOC_REFUSED, 390*5113495bSYour Name /* Recvd Deauth while join/pre-auth */ 391*5113495bSYour Name eSIR_SME_DEAUTH_WHILE_JOIN, 392*5113495bSYour Name eSIR_SME_STA_NOT_AUTHENTICATED, 393*5113495bSYour Name eSIR_SME_STA_NOT_ASSOCIATED, 394*5113495bSYour Name eSIR_SME_ALREADY_JOINED_A_BSS, 395*5113495bSYour Name /* Given in SME_SCAN_RSP msg */ 396*5113495bSYour Name eSIR_SME_MORE_SCAN_RESULTS_FOLLOW, 397*5113495bSYour Name /* that more SME_SCAN_RSP */ 398*5113495bSYour Name /* messages are following. */ 399*5113495bSYour Name /* SME_SCAN_RSP message with */ 400*5113495bSYour Name /* eSIR_SME_SUCCESS status */ 401*5113495bSYour Name /* code is the last one. */ 402*5113495bSYour Name /* Sent in SME_JOIN/REASSOC_RSP */ 403*5113495bSYour Name eSIR_SME_INVALID_ASSOC_RSP_RXED, 404*5113495bSYour Name /* messages upon receiving */ 405*5113495bSYour Name /* invalid Re/Assoc Rsp frame. */ 406*5113495bSYour Name /* STOP BSS triggered by MIC failures: MAC software to 407*5113495bSYour Name * disassoc all stations 408*5113495bSYour Name */ 409*5113495bSYour Name eSIR_SME_MIC_COUNTER_MEASURES, 410*5113495bSYour Name /* with MIC_FAILURE reason code and perform the stop bss operation */ 411*5113495bSYour Name /* didn't get rsp from peer within timeout interval */ 412*5113495bSYour Name eSIR_SME_ADDTS_RSP_TIMEOUT, 413*5113495bSYour Name /* didn't get success rsp from HAL */ 414*5113495bSYour Name eSIR_SME_ADDTS_RSP_FAILED, 415*5113495bSYour Name /* failed to send ch switch act frm */ 416*5113495bSYour Name eSIR_SME_CHANNEL_SWITCH_FAIL, 417*5113495bSYour Name eSIR_SME_INVALID_STATE, 418*5113495bSYour Name /* SIR_HAL_SIR_HAL_INIT_SCAN_RSP returned failed status */ 419*5113495bSYour Name eSIR_SME_HAL_SCAN_INIT_FAILED, 420*5113495bSYour Name /* SIR_HAL_END_SCAN_RSP returned failed status */ 421*5113495bSYour Name eSIR_SME_HAL_SCAN_END_FAILED, 422*5113495bSYour Name /* SIR_HAL_FINISH_SCAN_RSP returned failed status */ 423*5113495bSYour Name eSIR_SME_HAL_SCAN_FINISH_FAILED, 424*5113495bSYour Name /* Failed to send a message to HAL */ 425*5113495bSYour Name eSIR_SME_HAL_SEND_MESSAGE_FAIL, 426*5113495bSYour Name /* Failed to stop the bss */ 427*5113495bSYour Name eSIR_SME_STOP_BSS_FAILURE, 428*5113495bSYour Name eSIR_SME_WOWL_ENTER_REQ_FAILED, 429*5113495bSYour Name eSIR_SME_WOWL_EXIT_REQ_FAILED, 430*5113495bSYour Name eSIR_SME_FT_REASSOC_TIMEOUT_FAILURE, 431*5113495bSYour Name eSIR_SME_FT_REASSOC_FAILURE, 432*5113495bSYour Name eSIR_SME_SEND_ACTION_FAIL, 433*5113495bSYour Name eSIR_SME_DEAUTH_STATUS, 434*5113495bSYour Name eSIR_PNO_SCAN_SUCCESS, 435*5113495bSYour Name eSIR_SME_INVALID_SESSION, 436*5113495bSYour Name eSIR_DONOT_USE_RESULT_CODE = SIR_MAX_ENUM_SIZE 437*5113495bSYour Name } tSirResultCodes; 438*5113495bSYour Name 439*5113495bSYour Name #ifdef WLAN_FEATURE_FILS_SK 440*5113495bSYour Name struct fils_join_rsp_params { 441*5113495bSYour Name uint8_t *fils_pmk; 442*5113495bSYour Name uint8_t fils_pmk_len; 443*5113495bSYour Name uint8_t fils_pmkid[PMKID_LEN]; 444*5113495bSYour Name uint8_t kek[MAX_KEK_LEN]; 445*5113495bSYour Name uint8_t kek_len; 446*5113495bSYour Name uint8_t tk[MAX_TK_LEN]; 447*5113495bSYour Name uint8_t tk_len; 448*5113495bSYour Name uint8_t gtk_len; 449*5113495bSYour Name uint8_t gtk[MAX_GTK_LEN]; 450*5113495bSYour Name struct qdf_mac_addr dst_mac; 451*5113495bSYour Name struct qdf_mac_addr src_mac; 452*5113495bSYour Name uint16_t hlp_data_len; 453*5113495bSYour Name uint8_t hlp_data[FILS_MAX_HLP_DATA_LEN]; 454*5113495bSYour Name }; 455*5113495bSYour Name #endif 456*5113495bSYour Name 457*5113495bSYour Name #define RMENABLEDCAP_MAX_LEN 5 458*5113495bSYour Name 459*5113495bSYour Name struct rrm_config_param { 460*5113495bSYour Name uint8_t rrm_enabled; 461*5113495bSYour Name bool sap_rrm_enabled; 462*5113495bSYour Name uint8_t max_randn_interval; 463*5113495bSYour Name uint8_t rm_capability[RMENABLEDCAP_MAX_LEN]; 464*5113495bSYour Name }; 465*5113495bSYour Name 466*5113495bSYour Name const char *lim_bss_type_to_string(const uint16_t bss_type); 467*5113495bSYour Name /** 468*5113495bSYour Name * struct supported_rates - stores rates/MCS supported 469*5113495bSYour Name * @llbRates: 11b rates in unit of 500kbps 470*5113495bSYour Name * @llaRates: 11a rates in unit of 500kbps 471*5113495bSYour Name * @supportedMCSSet: supported basic MCS, 0-76 bits used, remaining reserved 472*5113495bSYour Name * bits 0-15 and 32 should be set. 473*5113495bSYour Name * @rxHighestDataRate: RX Highest Supported Data Rate defines the highest data 474*5113495bSYour Name * rate that the STA is able to receive, in unites of 1Mbps 475*5113495bSYour Name * This value is derived from "Supported MCS Set field" 476*5113495bSYour Name * inside the HT capability element. 477*5113495bSYour Name * @vhtRxMCSMap: Indicates the Maximum MCS(VHT) that can be received for each 478*5113495bSYour Name * number of spacial streams 479*5113495bSYour Name * @vhtRxHighestDataRate: Indicate the highest VHT data rate that the STA is 480*5113495bSYour Name * able to receive 481*5113495bSYour Name * @vhtTxMCSMap: Indicates the Maximum MCS(VHT) that can be transmitted for 482*5113495bSYour Name * each number of spacial streams 483*5113495bSYour Name * @vhtTxHighestDataRate: Indicate the highest VHT data rate that the STA is 484*5113495bSYour Name * able to transmit 485*5113495bSYour Name * @he_rx_mcs: Indicates the Maximum MCS(HE) that can be received for each 486*5113495bSYour Name * number of spacial streams 487*5113495bSYour Name * @he_tx_mcs: Indicates the Maximum MCS(HE) that can be transmitted for each 488*5113495bSYour Name * number of spacial streams 489*5113495bSYour Name * @bw_20_rx_max_nss_for_mcs_0_to_7: Indicates MAX RX NSS for MCS from 0 to 7 490*5113495bSYour Name * @bw_20_tx_max_nss_for_mcs_0_to_7: Indicates MAX TX NSS for MCS from 0 to 7 491*5113495bSYour Name * @bw_20_rx_max_nss_for_mcs_8_and_9: Indicates MAX RX NSS for MCS from 8 9 492*5113495bSYour Name * @bw_20_tx_max_nss_for_mcs_8_and_9: Indicates MAX TX NSS for MCS from 8 9 493*5113495bSYour Name * @bw_20_rx_max_nss_for_mcs_10_and_11:Indicates MAX RX NSS for MCS from 10 11 494*5113495bSYour Name * @bw_20_tx_max_nss_for_mcs_10_and_11: Indicates MAX TX NSS for MCS from 10 11 495*5113495bSYour Name * @bw_20_rx_max_nss_for_mcs_12_and_13: Indicates MAX RX NSS for MCS from 12 13 496*5113495bSYour Name * @bw_20_tx_max_nss_for_mcs_12_and_13: Indicates MAX TX NSS for MCS from 12 13 497*5113495bSYour Name * @bw_le_80_rx_max_nss_for_mcs_0_to_7: Indicates MAX RX NSS for MCS from 0 to 7 498*5113495bSYour Name * @bw_le_80_tx_max_nss_for_mcs_0_to_7: Indicates MAX TX NSS for MCS from 0 to 7 499*5113495bSYour Name * @bw_le_80_rx_max_nss_for_mcs_8_and_9: Indicates MAX RX NSS for MCS from 8 9 500*5113495bSYour Name * @bw_le_80_tx_max_nss_for_mcs_8_and_9: Indicates MAX TX NSS for MCS from 8 9 501*5113495bSYour Name * @bw_le_80_rx_max_nss_for_mcs_10_and_11:Indicates MAX RX NSS for MCS from 502*5113495bSYour Name * 10 11 503*5113495bSYour Name * @bw_le_80_tx_max_nss_for_mcs_10_and_11: Indicates MAX TX NSS for MCS from 504*5113495bSYour Name * 10 11 505*5113495bSYour Name * @bw_le_80_rx_max_nss_for_mcs_12_and_13: Indicates MAX RX NSS for MCS from 506*5113495bSYour Name * 12 13 507*5113495bSYour Name * @bw_le_80_tx_max_nss_for_mcs_12_and_13: Indicates MAX TX NSS for MCS from 508*5113495bSYour Name * 12 13 509*5113495bSYour Name * @bw_160_rx_max_nss_for_mcs_0_to_7: Indicates MAX RX NSS for MCS from 0 to 7 510*5113495bSYour Name * @bw_160_tx_max_nss_for_mcs_0_to_7: Indicates MAX TX NSS for MCS from 0 to 7 511*5113495bSYour Name * @bw_160_rx_max_nss_for_mcs_8_and_9: Indicates MAX RX NSS for MCS from 8 9 512*5113495bSYour Name * @bw_160_tx_max_nss_for_mcs_8_and_9: Indicates MAX TX NSS for MCS from 8 9 513*5113495bSYour Name * @bw_160_rx_max_nss_for_mcs_10_and_11:Indicates MAX RX NSS for MCS from 514*5113495bSYour Name * 10 11 515*5113495bSYour Name * @bw_160_tx_max_nss_for_mcs_10_and_11: Indicates MAX TX NSS for MCS from 516*5113495bSYour Name * 10 11 517*5113495bSYour Name * @bw_160_rx_max_nss_for_mcs_12_and_13: Indicates MAX RX NSS for MCS from 518*5113495bSYour Name * 12 13 519*5113495bSYour Name * @bw_160_tx_max_nss_for_mcs_12_and_13: Indicates MAX TX NSS for MCS from 520*5113495bSYour Name * 12 13 521*5113495bSYour Name * @bw_320_rx_max_nss_for_mcs_0_to_7: Indicates MAX RX NSS for MCS from 0 to 7 522*5113495bSYour Name * @bw_320_tx_max_nss_for_mcs_0_to_7: Indicates MAX TX NSS for MCS from 0 to 7 523*5113495bSYour Name * @bw_320_rx_max_nss_for_mcs_8_and_9: Indicates MAX RX NSS for MCS from 8 9 524*5113495bSYour Name * @bw_320_tx_max_nss_for_mcs_8_and_9: Indicates MAX TX NSS for MCS from 8 9 525*5113495bSYour Name * @bw_320_rx_max_nss_for_mcs_10_and_11:Indicates MAX RX NSS for MCS from 526*5113495bSYour Name * 10 11 527*5113495bSYour Name * @bw_320_tx_max_nss_for_mcs_10_and_11: Indicates MAX TX NSS for MCS from 528*5113495bSYour Name * 10 11 529*5113495bSYour Name * @bw_320_rx_max_nss_for_mcs_12_and_13: Indicates MAX RX NSS for MCS from 530*5113495bSYour Name * 12 13 531*5113495bSYour Name * @bw_320_tx_max_nss_for_mcs_12_and_13: Indicates MAX TX NSS for MCS from 532*5113495bSYour Name * 12 13 533*5113495bSYour Name */ 534*5113495bSYour Name struct supported_rates { 535*5113495bSYour Name uint16_t llbRates[SIR_NUM_11B_RATES]; 536*5113495bSYour Name uint16_t llaRates[SIR_NUM_11A_RATES]; 537*5113495bSYour Name uint8_t supportedMCSSet[SIR_MAC_MAX_SUPPORTED_MCS_SET]; 538*5113495bSYour Name uint16_t rxHighestDataRate; 539*5113495bSYour Name uint16_t vhtRxMCSMap; 540*5113495bSYour Name uint16_t vhtRxHighestDataRate; 541*5113495bSYour Name uint16_t vhtTxMCSMap; 542*5113495bSYour Name uint16_t vhtTxHighestDataRate; 543*5113495bSYour Name #ifdef WLAN_FEATURE_11AX 544*5113495bSYour Name uint16_t rx_he_mcs_map_lt_80; 545*5113495bSYour Name uint16_t tx_he_mcs_map_lt_80; 546*5113495bSYour Name uint16_t rx_he_mcs_map_160; 547*5113495bSYour Name uint16_t tx_he_mcs_map_160; 548*5113495bSYour Name uint16_t rx_he_mcs_map_80_80; 549*5113495bSYour Name uint16_t tx_he_mcs_map_80_80; 550*5113495bSYour Name #endif 551*5113495bSYour Name #ifdef WLAN_FEATURE_11BE 552*5113495bSYour Name uint32_t bw_20_rx_max_nss_for_mcs_0_to_7:4; 553*5113495bSYour Name uint32_t bw_20_tx_max_nss_for_mcs_0_to_7:4; 554*5113495bSYour Name uint32_t bw_20_rx_max_nss_for_mcs_8_and_9:4; 555*5113495bSYour Name uint32_t bw_20_tx_max_nss_for_mcs_8_and_9:4; 556*5113495bSYour Name uint32_t bw_20_rx_max_nss_for_mcs_10_and_11:4; 557*5113495bSYour Name uint32_t bw_20_tx_max_nss_for_mcs_10_and_11:4; 558*5113495bSYour Name uint32_t bw_20_rx_max_nss_for_mcs_12_and_13:4; 559*5113495bSYour Name uint32_t bw_20_tx_max_nss_for_mcs_12_and_13:4; 560*5113495bSYour Name uint32_t bw_le_80_rx_max_nss_for_mcs_0_to_9:4; 561*5113495bSYour Name uint32_t bw_le_80_tx_max_nss_for_mcs_0_to_9:4; 562*5113495bSYour Name uint32_t bw_le_80_rx_max_nss_for_mcs_10_and_11:4; 563*5113495bSYour Name uint32_t bw_le_80_tx_max_nss_for_mcs_10_and_11:4; 564*5113495bSYour Name uint32_t bw_le_80_rx_max_nss_for_mcs_12_and_13:4; 565*5113495bSYour Name uint32_t bw_le_80_tx_max_nss_for_mcs_12_and_13:4; 566*5113495bSYour Name uint32_t bw_160_rx_max_nss_for_mcs_0_to_9:4; 567*5113495bSYour Name uint32_t bw_160_tx_max_nss_for_mcs_0_to_9:4; 568*5113495bSYour Name uint32_t bw_160_rx_max_nss_for_mcs_10_and_11:4; 569*5113495bSYour Name uint32_t bw_160_tx_max_nss_for_mcs_10_and_11:4; 570*5113495bSYour Name uint32_t bw_160_rx_max_nss_for_mcs_12_and_13:4; 571*5113495bSYour Name uint32_t bw_160_tx_max_nss_for_mcs_12_and_13:4; 572*5113495bSYour Name uint32_t bw_320_rx_max_nss_for_mcs_0_to_9:4; 573*5113495bSYour Name uint32_t bw_320_tx_max_nss_for_mcs_0_to_9:4; 574*5113495bSYour Name uint32_t bw_320_rx_max_nss_for_mcs_10_and_11:4; 575*5113495bSYour Name uint32_t bw_320_tx_max_nss_for_mcs_10_and_11:4; 576*5113495bSYour Name uint8_t bw_320_rx_max_nss_for_mcs_12_and_13:4; 577*5113495bSYour Name uint8_t bw_320_tx_max_nss_for_mcs_12_and_13:4; 578*5113495bSYour Name #endif 579*5113495bSYour Name }; 580*5113495bSYour Name 581*5113495bSYour Name struct register_mgmt_frame { 582*5113495bSYour Name uint16_t messageType; 583*5113495bSYour Name uint16_t length; 584*5113495bSYour Name uint8_t sessionId; 585*5113495bSYour Name bool registerFrame; 586*5113495bSYour Name uint16_t frameType; 587*5113495bSYour Name uint16_t matchLen; 588*5113495bSYour Name QDF_FLEX_ARRAY(uint8_t, matchData); 589*5113495bSYour Name }; 590*5113495bSYour Name 591*5113495bSYour Name /* / Generic type for sending a response message */ 592*5113495bSYour Name /* / with result code to host software */ 593*5113495bSYour Name typedef struct sSirSmeRsp { 594*5113495bSYour Name uint16_t messageType; /* eWNI_SME_*_RSP */ 595*5113495bSYour Name uint16_t length; 596*5113495bSYour Name uint8_t vdev_id; 597*5113495bSYour Name tSirResultCodes status_code; 598*5113495bSYour Name struct wlan_objmgr_psoc *psoc; 599*5113495bSYour Name } tSirSmeRsp, *tpSirSmeRsp; 600*5113495bSYour Name 601*5113495bSYour Name struct bss_description; 602*5113495bSYour Name struct roam_offload_synch_ind; 603*5113495bSYour Name struct roam_pmkid_req_event; 604*5113495bSYour Name 605*5113495bSYour Name /** 606*5113495bSYour Name * typedef pe_roam_synch_fn_t - PE roam synch callback routine pointer 607*5113495bSYour Name * @mac_ctx: Global MAC context 608*5113495bSYour Name * @vdev_id: vdev id 609*5113495bSYour Name * @roam_sync_ind_ptr: Structure with roam synch parameters 610*5113495bSYour Name * @ie_len: ie length 611*5113495bSYour Name * @reason: Reason for calling the callback 612*5113495bSYour Name * 613*5113495bSYour Name * This type is for callbacks registered with WMA to complete the roam synch 614*5113495bSYour Name * propagation at PE level. It also fills the BSS descriptor, which will be 615*5113495bSYour Name * helpful to complete the roam synch propagation. 616*5113495bSYour Name * 617*5113495bSYour Name * Return: Success or Failure. 618*5113495bSYour Name */ 619*5113495bSYour Name typedef QDF_STATUS 620*5113495bSYour Name (*pe_roam_synch_fn_t)(struct mac_context *mac_ctx, 621*5113495bSYour Name uint8_t vdev_id, 622*5113495bSYour Name struct roam_offload_synch_ind *roam_sync_ind_ptr, 623*5113495bSYour Name uint16_t ie_len, 624*5113495bSYour Name enum sir_roam_op_code reason); 625*5113495bSYour Name 626*5113495bSYour Name /** 627*5113495bSYour Name * typedef stop_roaming_fn_t - Stop roaming routine pointer 628*5113495bSYour Name * @mac_handle: Pointer to opaque mac handle 629*5113495bSYour Name * @session_id: Session Identifier 630*5113495bSYour Name * @reason: Reason for calling the callback 631*5113495bSYour Name * @requestor: Requestor for disabling roaming in driver 632*5113495bSYour Name * 633*5113495bSYour Name * This type is for callbacks registered with WMA to stop roaming on the given 634*5113495bSYour Name * session ID 635*5113495bSYour Name * 636*5113495bSYour Name * Return: Success or Failure. 637*5113495bSYour Name */ 638*5113495bSYour Name typedef QDF_STATUS 639*5113495bSYour Name (*stop_roaming_fn_t)(mac_handle_t mac_handle, 640*5113495bSYour Name uint8_t session_id, uint8_t reason, 641*5113495bSYour Name enum wlan_cm_rso_control_requestor requestor); 642*5113495bSYour Name 643*5113495bSYour Name /** 644*5113495bSYour Name * typedef set_ies_fn_t - Set IEs routine pointer 645*5113495bSYour Name * @mac_ctx: Global MAC context 646*5113495bSYour Name * @vdev_id: vdev id 647*5113495bSYour Name * @dot11_mode: dot11 mode 648*5113495bSYour Name * @opmode: device opmode 649*5113495bSYour Name * 650*5113495bSYour Name * This type is for callbacks registered with WMA to set the IEs for a 651*5113495bSYour Name * given vdev id to the firmware. 652*5113495bSYour Name * 653*5113495bSYour Name * Return: Success or Failure 654*5113495bSYour Name */ 655*5113495bSYour Name typedef QDF_STATUS 656*5113495bSYour Name (*set_ies_fn_t)(struct mac_context *mac_ctx, uint8_t vdev_id, 657*5113495bSYour Name uint16_t dot11_mode, enum QDF_OPMODE device_mode); 658*5113495bSYour Name 659*5113495bSYour Name /* / Definition for indicating all modules ready on STA */ 660*5113495bSYour Name struct sme_ready_req { 661*5113495bSYour Name uint16_t messageType; /* eWNI_SME_SYS_READY_IND */ 662*5113495bSYour Name uint16_t length; 663*5113495bSYour Name QDF_STATUS (*csr_roam_auth_event_handle_cb)(struct mac_context *mac, 664*5113495bSYour Name uint8_t vdev_id, 665*5113495bSYour Name struct qdf_mac_addr bssid, 666*5113495bSYour Name uint32_t akm); 667*5113495bSYour Name pe_roam_synch_fn_t pe_roam_synch_cb; 668*5113495bSYour Name stop_roaming_fn_t stop_roaming_cb; 669*5113495bSYour Name QDF_STATUS (*sme_msg_cb)(struct mac_context *mac, 670*5113495bSYour Name struct scheduler_msg *msg); 671*5113495bSYour Name QDF_STATUS (*pe_disconnect_cb) (struct mac_context *mac, 672*5113495bSYour Name uint8_t vdev_id, 673*5113495bSYour Name uint8_t *deauth_disassoc_frame, 674*5113495bSYour Name uint16_t deauth_disassoc_frame_len, 675*5113495bSYour Name uint16_t reason_code); 676*5113495bSYour Name set_ies_fn_t pe_roam_set_ie_cb; 677*5113495bSYour Name }; 678*5113495bSYour Name 679*5113495bSYour Name /** 680*5113495bSYour Name * struct s_sir_set_hw_mode - Set HW mode request 681*5113495bSYour Name * @messageType: Message type 682*5113495bSYour Name * @length: Length of the message 683*5113495bSYour Name * @set_hw: Params containing the HW mode index and callback 684*5113495bSYour Name */ 685*5113495bSYour Name struct s_sir_set_hw_mode { 686*5113495bSYour Name uint16_t messageType; 687*5113495bSYour Name uint16_t length; 688*5113495bSYour Name struct policy_mgr_hw_mode set_hw; 689*5113495bSYour Name }; 690*5113495bSYour Name 691*5113495bSYour Name /** 692*5113495bSYour Name * struct sir_set_dual_mac_cfg - Set Dual mac config request 693*5113495bSYour Name * @message_type: Message type 694*5113495bSYour Name * @length: Length of the message 695*5113495bSYour Name * @set_dual_mac: Params containing the dual mac config and callback 696*5113495bSYour Name */ 697*5113495bSYour Name struct sir_set_dual_mac_cfg { 698*5113495bSYour Name uint16_t message_type; 699*5113495bSYour Name uint16_t length; 700*5113495bSYour Name struct policy_mgr_dual_mac_config set_dual_mac; 701*5113495bSYour Name }; 702*5113495bSYour Name 703*5113495bSYour Name /** 704*5113495bSYour Name * struct sir_antenna_mode_param - antenna mode param 705*5113495bSYour Name * @num_tx_chains: Number of TX chains 706*5113495bSYour Name * @num_rx_chains: Number of RX chains 707*5113495bSYour Name * @set_antenna_mode_resp: callback to set antenna mode command 708*5113495bSYour Name * @set_antenna_mode_ctx: callback context to set antenna mode command 709*5113495bSYour Name */ 710*5113495bSYour Name struct sir_antenna_mode_param { 711*5113495bSYour Name uint32_t num_tx_chains; 712*5113495bSYour Name uint32_t num_rx_chains; 713*5113495bSYour Name void *set_antenna_mode_resp; 714*5113495bSYour Name void *set_antenna_mode_ctx; 715*5113495bSYour Name }; 716*5113495bSYour Name 717*5113495bSYour Name /** 718*5113495bSYour Name * struct sir_set_antenna_mode - Set antenna mode request 719*5113495bSYour Name * @message_type: Message type 720*5113495bSYour Name * @length: Length of the message 721*5113495bSYour Name * @set_antenna_mode: Params containing antenna mode params 722*5113495bSYour Name */ 723*5113495bSYour Name struct sir_set_antenna_mode { 724*5113495bSYour Name uint16_t message_type; 725*5113495bSYour Name uint16_t length; 726*5113495bSYour Name struct sir_antenna_mode_param set_antenna_mode; 727*5113495bSYour Name }; 728*5113495bSYour Name 729*5113495bSYour Name /** 730*5113495bSYour Name * enum bss_type - Enum for BSS type used in scanning/joining etc. 731*5113495bSYour Name * 732*5113495bSYour Name * @eSIR_INFRASTRUCTURE_MODE: Infrastructure station 733*5113495bSYour Name * @eSIR_INFRA_AP_MODE: softAP mode 734*5113495bSYour Name * @eSIR_AUTO_MODE: Auto role 735*5113495bSYour Name * @eSIR_MONITOR_MODE: Monitor mode 736*5113495bSYour Name * @eSIR_NDI_MODE: NAN datapath mode 737*5113495bSYour Name */ 738*5113495bSYour Name enum bss_type { 739*5113495bSYour Name eSIR_INFRASTRUCTURE_MODE, 740*5113495bSYour Name eSIR_INFRA_AP_MODE, 741*5113495bSYour Name eSIR_AUTO_MODE, 742*5113495bSYour Name eSIR_MONITOR_MODE, 743*5113495bSYour Name eSIR_NDI_MODE, 744*5113495bSYour Name eSIR_DONOT_USE_BSS_TYPE = SIR_MAX_ENUM_SIZE 745*5113495bSYour Name }; 746*5113495bSYour Name 747*5113495bSYour Name /* / Power Capability info used in 11H */ 748*5113495bSYour Name struct power_cap_info { 749*5113495bSYour Name uint8_t minTxPower; 750*5113495bSYour Name uint8_t maxTxPower; 751*5113495bSYour Name }; 752*5113495bSYour Name 753*5113495bSYour Name /* / Supported Channel info used in 11H */ 754*5113495bSYour Name struct supported_channels { 755*5113495bSYour Name uint8_t numChnl; 756*5113495bSYour Name uint8_t channelList[SIR_MAX_SUPPORTED_CHANNEL_LIST]; 757*5113495bSYour Name }; 758*5113495bSYour Name 759*5113495bSYour Name typedef enum eSirNwType { 760*5113495bSYour Name eSIR_11A_NW_TYPE, 761*5113495bSYour Name eSIR_11B_NW_TYPE, 762*5113495bSYour Name eSIR_11G_NW_TYPE, 763*5113495bSYour Name eSIR_11N_NW_TYPE, 764*5113495bSYour Name eSIR_11AC_NW_TYPE, 765*5113495bSYour Name eSIR_11AX_NW_TYPE, 766*5113495bSYour Name eSIR_11BE_NW_TYPE, 767*5113495bSYour Name eSIR_DONOT_USE_NW_TYPE = SIR_MAX_ENUM_SIZE 768*5113495bSYour Name } tSirNwType; 769*5113495bSYour Name 770*5113495bSYour Name struct add_ie_params { 771*5113495bSYour Name uint16_t probeRespDataLen; 772*5113495bSYour Name uint8_t *probeRespData_buff; 773*5113495bSYour Name uint16_t assocRespDataLen; 774*5113495bSYour Name uint8_t *assocRespData_buff; 775*5113495bSYour Name uint16_t probeRespBCNDataLen; 776*5113495bSYour Name uint8_t *probeRespBCNData_buff; 777*5113495bSYour Name }; 778*5113495bSYour Name 779*5113495bSYour Name #define GET_IE_LEN_IN_BSS(lenInBss) (lenInBss + sizeof(lenInBss) - \ 780*5113495bSYour Name ((uintptr_t)OFFSET_OF(struct bss_description,\ 781*5113495bSYour Name ieFields))) 782*5113495bSYour Name 783*5113495bSYour Name #define WSCIE_PROBE_RSP_LEN (317 + 2) 784*5113495bSYour Name 785*5113495bSYour Name #ifdef WLAN_FEATURE_FILS_SK 786*5113495bSYour Name /* struct fils_ind_elements: elements parsed from fils indication present 787*5113495bSYour Name * in beacon/probe resp 788*5113495bSYour Name * @realm_cnt: number of realm present 789*5113495bSYour Name * @realm: realms 790*5113495bSYour Name * @is_fils_sk_supported: if FILS SK supported 791*5113495bSYour Name * @is_cache_id_present: if cache id present 792*5113495bSYour Name * @cache_id: cache id 793*5113495bSYour Name */ 794*5113495bSYour Name struct fils_ind_elements { 795*5113495bSYour Name uint16_t realm_cnt; 796*5113495bSYour Name uint8_t realm[SIR_MAX_REALM_COUNT][SIR_REALM_LEN]; 797*5113495bSYour Name bool is_fils_sk_supported; 798*5113495bSYour Name bool is_cache_id_present; 799*5113495bSYour Name uint8_t cache_id[CACHE_ID_LEN]; 800*5113495bSYour Name }; 801*5113495bSYour Name #endif 802*5113495bSYour Name 803*5113495bSYour Name struct bss_description { 804*5113495bSYour Name /* offset of the ieFields from bssId. */ 805*5113495bSYour Name uint16_t length; 806*5113495bSYour Name tSirMacAddr bssId; 807*5113495bSYour Name unsigned long scansystimensec; 808*5113495bSYour Name uint32_t timeStamp[2]; 809*5113495bSYour Name uint16_t beaconInterval; 810*5113495bSYour Name uint16_t capabilityInfo; 811*5113495bSYour Name tSirNwType nwType; /* Indicates 11a/b/g */ 812*5113495bSYour Name int8_t rssi; 813*5113495bSYour Name int8_t rssi_raw; 814*5113495bSYour Name int8_t sinr; 815*5113495bSYour Name /* channel frequency what peer sent in beacon/probersp. */ 816*5113495bSYour Name uint32_t chan_freq; 817*5113495bSYour Name /* Based on system time, not a relative time. */ 818*5113495bSYour Name uint64_t received_time; 819*5113495bSYour Name uint32_t parentTSF; 820*5113495bSYour Name uint32_t startTSF[2]; 821*5113495bSYour Name uint8_t mdiePresent; 822*5113495bSYour Name /* MDIE for 11r, picked from the beacons */ 823*5113495bSYour Name uint8_t mdie[SIR_MDIE_SIZE]; 824*5113495bSYour Name #ifdef FEATURE_WLAN_ESE 825*5113495bSYour Name uint16_t QBSSLoad_present; 826*5113495bSYour Name uint16_t QBSSLoad_avail; 827*5113495bSYour Name #endif 828*5113495bSYour Name /* whether it is from a probe rsp */ 829*5113495bSYour Name uint8_t fProbeRsp; 830*5113495bSYour Name tSirMacSeqCtl seq_ctrl; 831*5113495bSYour Name uint32_t tsf_delta; 832*5113495bSYour Name struct scan_mbssid_info mbssid_info; 833*5113495bSYour Name #ifdef WLAN_FEATURE_FILS_SK 834*5113495bSYour Name struct fils_ind_elements fils_info_element; 835*5113495bSYour Name #endif 836*5113495bSYour Name uint32_t assoc_disallowed; 837*5113495bSYour Name uint32_t adaptive_11r_ap; 838*5113495bSYour Name uint32_t mbo_oce_enabled_ap; 839*5113495bSYour Name #if defined(WLAN_SAE_SINGLE_PMK) && defined(WLAN_FEATURE_ROAM_OFFLOAD) 840*5113495bSYour Name uint32_t is_single_pmk; 841*5113495bSYour Name #endif 842*5113495bSYour Name /* Please keep the structure 4 bytes aligned above the ieFields */ 843*5113495bSYour Name QDF_FLEX_ARRAY(uint32_t, ieFields); 844*5113495bSYour Name }; 845*5113495bSYour Name 846*5113495bSYour Name /* / Definition for response message to previously */ 847*5113495bSYour Name /* / issued start BSS request */ 848*5113495bSYour Name /* / MAC ---> */ 849*5113495bSYour Name struct start_bss_rsp { 850*5113495bSYour Name uint8_t vdev_id; 851*5113495bSYour Name tSirResultCodes status_code; 852*5113495bSYour Name uint32_t staId; /* Station ID for Self */ 853*5113495bSYour Name }; 854*5113495bSYour Name 855*5113495bSYour Name struct report_channel_list { 856*5113495bSYour Name uint8_t num_channels; 857*5113495bSYour Name uint32_t chan_freq_lst[SIR_ESE_MAX_MEAS_IE_REQS]; 858*5113495bSYour Name }; 859*5113495bSYour Name 860*5113495bSYour Name #ifdef FEATURE_OEM_DATA_SUPPORT 861*5113495bSYour Name struct oem_data_req { 862*5113495bSYour Name uint32_t data_len; 863*5113495bSYour Name uint8_t *data; 864*5113495bSYour Name }; 865*5113495bSYour Name 866*5113495bSYour Name struct oem_data_rsp { 867*5113495bSYour Name uint32_t rsp_len; 868*5113495bSYour Name uint8_t *data; 869*5113495bSYour Name }; 870*5113495bSYour Name #endif /* FEATURE_OEM_DATA_SUPPORT */ 871*5113495bSYour Name 872*5113495bSYour Name #ifdef FEATURE_WLAN_ESE 873*5113495bSYour Name typedef struct ese_wmm_tspec_ie { 874*5113495bSYour Name uint16_t traffic_type:1; 875*5113495bSYour Name uint16_t tsid:4; 876*5113495bSYour Name uint16_t direction:2; 877*5113495bSYour Name uint16_t access_policy:2; 878*5113495bSYour Name uint16_t aggregation:1; 879*5113495bSYour Name uint16_t psb:1; 880*5113495bSYour Name uint16_t user_priority:3; 881*5113495bSYour Name uint16_t tsinfo_ack_pol:2; 882*5113495bSYour Name uint8_t tsinfo_rsvd:7; 883*5113495bSYour Name uint8_t burst_size_defn:1; 884*5113495bSYour Name uint16_t size:15; 885*5113495bSYour Name uint16_t fixed:1; 886*5113495bSYour Name uint16_t max_msdu_size; 887*5113495bSYour Name uint32_t min_service_int; 888*5113495bSYour Name uint32_t max_service_int; 889*5113495bSYour Name uint32_t inactivity_int; 890*5113495bSYour Name uint32_t suspension_int; 891*5113495bSYour Name uint32_t service_start_time; 892*5113495bSYour Name uint32_t min_data_rate; 893*5113495bSYour Name uint32_t mean_data_rate; 894*5113495bSYour Name uint32_t peak_data_rate; 895*5113495bSYour Name uint32_t burst_size; 896*5113495bSYour Name uint32_t delay_bound; 897*5113495bSYour Name uint32_t min_phy_rate; 898*5113495bSYour Name uint16_t surplus_bw_allowance; 899*5113495bSYour Name uint16_t medium_time; 900*5113495bSYour Name } qdf_packed ese_wmm_tspec_ie; 901*5113495bSYour Name 902*5113495bSYour Name typedef struct sTspecInfo { 903*5113495bSYour Name uint8_t valid; 904*5113495bSYour Name struct mac_tspec_ie tspec; 905*5113495bSYour Name } tTspecInfo; 906*5113495bSYour Name 907*5113495bSYour Name typedef struct sESETspecTspecInfo { 908*5113495bSYour Name uint8_t numTspecs; 909*5113495bSYour Name tTspecInfo tspec[ESE_MAX_TSPEC_IES]; 910*5113495bSYour Name } tESETspecInfo; 911*5113495bSYour Name 912*5113495bSYour Name struct tsm_ie { 913*5113495bSYour Name uint8_t tsid; 914*5113495bSYour Name uint8_t state; 915*5113495bSYour Name uint16_t msmt_interval; 916*5113495bSYour Name }; 917*5113495bSYour Name 918*5113495bSYour Name struct tsm_ie_ind { 919*5113495bSYour Name struct tsm_ie tsm_ie; 920*5113495bSYour Name uint8_t sessionId; 921*5113495bSYour Name }; 922*5113495bSYour Name 923*5113495bSYour Name typedef struct sAniTrafStrmMetrics { 924*5113495bSYour Name uint16_t UplinkPktQueueDly; 925*5113495bSYour Name uint16_t UplinkPktQueueDlyHist[4]; 926*5113495bSYour Name uint32_t UplinkPktTxDly; 927*5113495bSYour Name uint16_t UplinkPktLoss; 928*5113495bSYour Name uint16_t UplinkPktCount; 929*5113495bSYour Name uint8_t RoamingCount; 930*5113495bSYour Name uint16_t RoamingDly; 931*5113495bSYour Name } tAniTrafStrmMetrics, *tpAniTrafStrmMetrics; 932*5113495bSYour Name 933*5113495bSYour Name typedef struct sAniGetTsmStatsReq { 934*5113495bSYour Name /* Common for all types are requests */ 935*5113495bSYour Name uint16_t msgType; /* message type is same as the request type */ 936*5113495bSYour Name uint16_t msgLen; /* length of the entire request */ 937*5113495bSYour Name uint8_t tid; /* traffic id */ 938*5113495bSYour Name struct qdf_mac_addr bssId; 939*5113495bSYour Name void *tsmStatsCallback; 940*5113495bSYour Name void *pDevContext; /* device context */ 941*5113495bSYour Name } tAniGetTsmStatsReq, *tpAniGetTsmStatsReq; 942*5113495bSYour Name 943*5113495bSYour Name typedef struct sAniGetTsmStatsRsp { 944*5113495bSYour Name /* Common for all types are responses */ 945*5113495bSYour Name uint16_t msgType; /* 946*5113495bSYour Name * message type is same as 947*5113495bSYour Name * the request type 948*5113495bSYour Name */ 949*5113495bSYour Name uint16_t msgLen; /* 950*5113495bSYour Name * length of the entire request, 951*5113495bSYour Name * includes the pStatsBuf length too 952*5113495bSYour Name */ 953*5113495bSYour Name uint8_t sessionId; 954*5113495bSYour Name uint32_t rc; /* success/failure */ 955*5113495bSYour Name struct qdf_mac_addr bssid; /* bssid to get the tsm stats for */ 956*5113495bSYour Name tAniTrafStrmMetrics tsmMetrics; 957*5113495bSYour Name void *tsmStatsReq; /* tsm stats request backup */ 958*5113495bSYour Name } tAniGetTsmStatsRsp, *tpAniGetTsmStatsRsp; 959*5113495bSYour Name 960*5113495bSYour Name struct ese_bcn_report_bss_info { 961*5113495bSYour Name tBcnReportFields bcnReportFields; 962*5113495bSYour Name uint8_t ieLen; 963*5113495bSYour Name uint8_t *pBuf; 964*5113495bSYour Name }; 965*5113495bSYour Name 966*5113495bSYour Name struct ese_bcn_report_rsp { 967*5113495bSYour Name uint16_t measurementToken; 968*5113495bSYour Name uint8_t flag; /* Flag to report measurement done and more data */ 969*5113495bSYour Name uint8_t numBss; 970*5113495bSYour Name struct ese_bcn_report_bss_info 971*5113495bSYour Name bcnRepBssInfo[SIR_BCN_REPORT_MAX_BSS_DESC]; 972*5113495bSYour Name }; 973*5113495bSYour Name 974*5113495bSYour Name #define TSRS_11AG_RATE_6MBPS 0xC 975*5113495bSYour Name #define TSRS_11B_RATE_5_5MBPS 0xB 976*5113495bSYour Name 977*5113495bSYour Name struct ese_tsrs_ie { 978*5113495bSYour Name uint8_t tsid; 979*5113495bSYour Name uint8_t rates[8]; 980*5113495bSYour Name }; 981*5113495bSYour Name 982*5113495bSYour Name struct ese_tsm_ie { 983*5113495bSYour Name uint8_t tsid; 984*5113495bSYour Name uint8_t state; 985*5113495bSYour Name uint16_t msmt_interval; 986*5113495bSYour Name }; 987*5113495bSYour Name 988*5113495bSYour Name typedef struct sTSMStats { 989*5113495bSYour Name uint8_t tid; 990*5113495bSYour Name struct qdf_mac_addr bssid; 991*5113495bSYour Name tTrafStrmMetrics tsmMetrics; 992*5113495bSYour Name } tTSMStats, *tpTSMStats; 993*5113495bSYour Name typedef struct sEseTSMContext { 994*5113495bSYour Name uint8_t tid; 995*5113495bSYour Name struct ese_tsm_ie tsmInfo; 996*5113495bSYour Name tTrafStrmMetrics tsmMetrics; 997*5113495bSYour Name } tEseTSMContext, *tpEseTSMContext; 998*5113495bSYour Name typedef struct sEsePEContext { 999*5113495bSYour Name tEseTSMContext tsm; 1000*5113495bSYour Name } tEsePEContext, *tpEsePEContext; 1001*5113495bSYour Name 1002*5113495bSYour Name #endif /* FEATURE_WLAN_ESE */ 1003*5113495bSYour Name 1004*5113495bSYour Name /* Warning Do not add any new param in this struct */ 1005*5113495bSYour Name struct join_req { 1006*5113495bSYour Name tSirRSNie rsnIE; 1007*5113495bSYour Name tSirAddie addIEScan; 1008*5113495bSYour Name tSirAddie addIEAssoc; 1009*5113495bSYour Name #ifdef WLAN_FEATURE_11BE_MLO 1010*5113495bSYour Name struct mlo_partner_info partner_info; 1011*5113495bSYour Name uint8_t assoc_link_id; 1012*5113495bSYour Name bool is_ml_probe_req_sent; 1013*5113495bSYour Name #endif 1014*5113495bSYour Name /* Warning:::::::::::: Do not add any new param in this struct */ 1015*5113495bSYour Name /* Pls make this as last variable in struct */ 1016*5113495bSYour Name struct bss_description bssDescription; 1017*5113495bSYour Name /* 1018*5113495bSYour Name * WARNING: Pls make bssDescription as last variable in struct 1019*5113495bSYour Name * join_req as it has ieFields followed after this bss 1020*5113495bSYour Name * description. Adding a variable after this corrupts the ieFields 1021*5113495bSYour Name */ 1022*5113495bSYour Name }; 1023*5113495bSYour Name 1024*5113495bSYour Name struct oem_channel_info { 1025*5113495bSYour Name uint32_t mhz; 1026*5113495bSYour Name uint32_t band_center_freq1; 1027*5113495bSYour Name uint32_t band_center_freq2; 1028*5113495bSYour Name uint32_t info; 1029*5113495bSYour Name uint32_t reg_info_1; 1030*5113495bSYour Name uint32_t reg_info_2; 1031*5113495bSYour Name uint8_t nss; 1032*5113495bSYour Name uint32_t rate_flags; 1033*5113495bSYour Name uint8_t sec_ch_offset; 1034*5113495bSYour Name enum phy_ch_width ch_width; 1035*5113495bSYour Name }; 1036*5113495bSYour Name 1037*5113495bSYour Name enum sir_sme_phy_mode { 1038*5113495bSYour Name SIR_SME_PHY_MODE_LEGACY = 0, 1039*5113495bSYour Name SIR_SME_PHY_MODE_HT = 1, 1040*5113495bSYour Name SIR_SME_PHY_MODE_VHT = 2 1041*5113495bSYour Name }; 1042*5113495bSYour Name 1043*5113495bSYour Name /* / Definition for Association indication from peer */ 1044*5113495bSYour Name /* / MAC ---> */ 1045*5113495bSYour Name struct assoc_ind { 1046*5113495bSYour Name uint16_t messageType; /* eWNI_SME_ASSOC_IND */ 1047*5113495bSYour Name uint16_t length; 1048*5113495bSYour Name uint8_t sessionId; 1049*5113495bSYour Name tSirMacAddr peerMacAddr; 1050*5113495bSYour Name uint16_t aid; 1051*5113495bSYour Name tSirMacAddr bssId; /* Self BSSID */ 1052*5113495bSYour Name uint16_t staId; /* Station ID for peer */ 1053*5113495bSYour Name tAniAuthType authType; 1054*5113495bSYour Name enum ani_akm_type akm_type; 1055*5113495bSYour Name tAniSSID ssId; /* SSID used by STA to associate */ 1056*5113495bSYour Name tSirWAPIie wapiIE; /* WAPI IE received from peer */ 1057*5113495bSYour Name tSirRSNie rsnIE; /* RSN IE received from peer */ 1058*5113495bSYour Name /* Additional IE received from peer, which possibly include 1059*5113495bSYour Name * WSC IE and/or P2P IE 1060*5113495bSYour Name */ 1061*5113495bSYour Name tSirAddie addIE; 1062*5113495bSYour Name 1063*5113495bSYour Name /* powerCap & supportedChannels are present only when */ 1064*5113495bSYour Name /* spectrumMgtIndicator flag is set */ 1065*5113495bSYour Name bool spectrumMgtIndicator; 1066*5113495bSYour Name struct power_cap_info powerCap; 1067*5113495bSYour Name struct supported_channels supportedChannels; 1068*5113495bSYour Name bool wmmEnabledSta; /* if present - STA is WMM enabled */ 1069*5113495bSYour Name bool reassocReq; 1070*5113495bSYour Name /* Required for indicating the frames to upper layer */ 1071*5113495bSYour Name uint32_t assocReqLength; 1072*5113495bSYour Name uint8_t *assocReqPtr; 1073*5113495bSYour Name 1074*5113495bSYour Name /* Timing measurement capability */ 1075*5113495bSYour Name uint8_t timingMeasCap; 1076*5113495bSYour Name struct oem_channel_info chan_info; 1077*5113495bSYour Name bool ampdu; 1078*5113495bSYour Name bool sgi_enable; 1079*5113495bSYour Name bool tx_stbc; 1080*5113495bSYour Name bool rx_stbc; 1081*5113495bSYour Name tSirMacHTChannelWidth ch_width; 1082*5113495bSYour Name enum sir_sme_phy_mode mode; 1083*5113495bSYour Name uint8_t max_supp_idx; 1084*5113495bSYour Name uint8_t max_ext_idx; 1085*5113495bSYour Name uint8_t max_mcs_idx; 1086*5113495bSYour Name uint8_t max_real_mcs_idx; 1087*5113495bSYour Name uint8_t rx_mcs_map; 1088*5113495bSYour Name uint8_t tx_mcs_map; 1089*5113495bSYour Name /* Extended CSA capability of station */ 1090*5113495bSYour Name uint8_t ecsa_capable; 1091*5113495bSYour Name uint32_t ext_cap; 1092*5113495bSYour Name uint8_t supported_band; 1093*5113495bSYour Name tDot11fIEHTCaps HTCaps; 1094*5113495bSYour Name tDot11fIEVHTCaps VHTCaps; 1095*5113495bSYour Name bool he_caps_present; 1096*5113495bSYour Name bool eht_caps_present; 1097*5113495bSYour Name tSirMacCapabilityInfo capability_info; 1098*5113495bSYour Name bool is_sae_authenticated; 1099*5113495bSYour Name const uint8_t *owe_ie; 1100*5113495bSYour Name uint32_t owe_ie_len; 1101*5113495bSYour Name uint16_t owe_status; 1102*5113495bSYour Name const uint8_t *ft_ie; 1103*5113495bSYour Name uint32_t ft_ie_len; 1104*5113495bSYour Name uint16_t ft_status; 1105*5113495bSYour Name bool need_assoc_rsp_tx_cb; 1106*5113495bSYour Name tSirMacAddr peer_mld_addr; 1107*5113495bSYour Name }; 1108*5113495bSYour Name 1109*5113495bSYour Name /** 1110*5113495bSYour Name * struct owe_assoc_ind - owe association indication 1111*5113495bSYour Name * @node : List entry element 1112*5113495bSYour Name * @assoc_ind: pointer to assoc ind 1113*5113495bSYour Name */ 1114*5113495bSYour Name struct owe_assoc_ind { 1115*5113495bSYour Name qdf_list_node_t node; 1116*5113495bSYour Name struct assoc_ind *assoc_ind; 1117*5113495bSYour Name }; 1118*5113495bSYour Name 1119*5113495bSYour Name /** 1120*5113495bSYour Name * struct ft_assoc_ind - ft association indication 1121*5113495bSYour Name * @node: List entry element 1122*5113495bSYour Name * @assoc_ind: pointer to assoc ind 1123*5113495bSYour Name */ 1124*5113495bSYour Name struct ft_assoc_ind { 1125*5113495bSYour Name qdf_list_node_t node; 1126*5113495bSYour Name struct assoc_ind *assoc_ind; 1127*5113495bSYour Name }; 1128*5113495bSYour Name 1129*5113495bSYour Name /* / Definition for Association confirm */ 1130*5113495bSYour Name /* / ---> MAC */ 1131*5113495bSYour Name struct assoc_cnf { 1132*5113495bSYour Name uint16_t messageType; /* eWNI_SME_ASSOC_CNF */ 1133*5113495bSYour Name uint16_t length; 1134*5113495bSYour Name tSirResultCodes status_code; 1135*5113495bSYour Name struct qdf_mac_addr bssid; /* Self BSSID */ 1136*5113495bSYour Name struct qdf_mac_addr peer_macaddr; 1137*5113495bSYour Name uint16_t aid; 1138*5113495bSYour Name enum wlan_status_code mac_status_code; 1139*5113495bSYour Name uint8_t *owe_ie; 1140*5113495bSYour Name uint32_t owe_ie_len; 1141*5113495bSYour Name uint8_t *ft_ie; 1142*5113495bSYour Name uint32_t ft_ie_len; 1143*5113495bSYour Name bool need_assoc_rsp_tx_cb; 1144*5113495bSYour Name }; 1145*5113495bSYour Name 1146*5113495bSYour Name /** 1147*5113495bSYour Name * Table below indicates what information is passed for each of 1148*5113495bSYour Name * the Wireless Media status change notifications: 1149*5113495bSYour Name * 1150*5113495bSYour Name * Status Change code Status change info 1151*5113495bSYour Name * ---------------------------------------------------------------------- 1152*5113495bSYour Name * eSIR_SME_DEAUTH_FROM_PEER Reason code received in DEAUTH frame 1153*5113495bSYour Name * eSIR_SME_DISASSOC_FROM_PEER Reason code received in DISASSOC frame 1154*5113495bSYour Name * eSIR_SME_LOST_LINK_WITH_PEER None 1155*5113495bSYour Name * eSIR_SME_CHANNEL_SWITCH New channel number 1156*5113495bSYour Name * eSIR_SME_RADAR_DETECTED Indicates that radar is detected 1157*5113495bSYour Name * eSIR_SME_AP_CAPS_CHANGED Indicates that capabilities of the AP 1158*5113495bSYour Name * that STA is currently associated with 1159*5113495bSYour Name * have changed. 1160*5113495bSYour Name */ 1161*5113495bSYour Name 1162*5113495bSYour Name /* Definition for Disassociation request */ 1163*5113495bSYour Name struct disassoc_req { 1164*5113495bSYour Name uint16_t messageType; /* eWNI_SME_DISASSOC_REQ */ 1165*5113495bSYour Name uint16_t length; 1166*5113495bSYour Name uint8_t sessionId; /* Session ID */ 1167*5113495bSYour Name struct qdf_mac_addr bssid; /* Peer BSSID */ 1168*5113495bSYour Name struct qdf_mac_addr peer_macaddr; 1169*5113495bSYour Name uint16_t reasonCode; 1170*5113495bSYour Name /* This flag tells LIM whether to send the disassoc OTA or not */ 1171*5113495bSYour Name /* This will be set in while handing off from one AP to other */ 1172*5113495bSYour Name uint8_t doNotSendOverTheAir; 1173*5113495bSYour Name bool process_ho_fail; 1174*5113495bSYour Name }; 1175*5113495bSYour Name 1176*5113495bSYour Name /* / Definition for Disassociation response */ 1177*5113495bSYour Name struct disassoc_rsp { 1178*5113495bSYour Name uint16_t messageType; /* eWNI_SME_DISASSOC_RSP */ 1179*5113495bSYour Name uint16_t length; 1180*5113495bSYour Name uint8_t sessionId; /* Session ID */ 1181*5113495bSYour Name tSirResultCodes status_code; 1182*5113495bSYour Name struct qdf_mac_addr peer_macaddr; 1183*5113495bSYour Name uint16_t staId; 1184*5113495bSYour Name }; 1185*5113495bSYour Name 1186*5113495bSYour Name /* / Definition for Disassociation indication from peer */ 1187*5113495bSYour Name struct disassoc_ind { 1188*5113495bSYour Name uint16_t messageType; /* eWNI_SME_DISASSOC_IND */ 1189*5113495bSYour Name uint16_t length; 1190*5113495bSYour Name uint8_t vdev_id; 1191*5113495bSYour Name tSirResultCodes status_code; 1192*5113495bSYour Name struct qdf_mac_addr bssid; 1193*5113495bSYour Name struct qdf_mac_addr peer_macaddr; 1194*5113495bSYour Name struct qdf_mac_addr peer_mld_addr; 1195*5113495bSYour Name uint16_t staId; 1196*5113495bSYour Name uint32_t reasonCode; 1197*5113495bSYour Name bool from_ap; 1198*5113495bSYour Name }; 1199*5113495bSYour Name 1200*5113495bSYour Name /* / Definition for Disassociation confirm */ 1201*5113495bSYour Name /* / MAC ---> */ 1202*5113495bSYour Name struct disassoc_cnf { 1203*5113495bSYour Name uint16_t messageType; /* eWNI_SME_DISASSOC_CNF */ 1204*5113495bSYour Name uint16_t length; 1205*5113495bSYour Name uint8_t vdev_id; 1206*5113495bSYour Name tSirResultCodes status_code; 1207*5113495bSYour Name struct qdf_mac_addr bssid; 1208*5113495bSYour Name struct qdf_mac_addr peer_macaddr; 1209*5113495bSYour Name }; 1210*5113495bSYour Name 1211*5113495bSYour Name /** 1212*5113495bSYour Name * struct sir_sme_discon_done_ind - disconnect done indiaction 1213*5113495bSYour Name * @message_type: msg type 1214*5113495bSYour Name * @length: length of msg 1215*5113495bSYour Name * @session_id: session id of the indication 1216*5113495bSYour Name * @reason_code: reason for disconnect indication 1217*5113495bSYour Name * @peer_mac: peer mac 1218*5113495bSYour Name */ 1219*5113495bSYour Name struct sir_sme_discon_done_ind { 1220*5113495bSYour Name uint16_t message_type; 1221*5113495bSYour Name uint16_t length; 1222*5113495bSYour Name uint8_t session_id; 1223*5113495bSYour Name tSirResultCodes reason_code; 1224*5113495bSYour Name tSirMacAddr peer_mac; 1225*5113495bSYour Name }; 1226*5113495bSYour Name 1227*5113495bSYour Name /* / Definition for Deauthetication request */ 1228*5113495bSYour Name struct deauth_req { 1229*5113495bSYour Name uint16_t messageType; /* eWNI_SME_DEAUTH_REQ */ 1230*5113495bSYour Name uint16_t length; 1231*5113495bSYour Name uint8_t vdev_id; /* Session ID */ 1232*5113495bSYour Name struct qdf_mac_addr bssid; /* AP BSSID */ 1233*5113495bSYour Name struct qdf_mac_addr peer_macaddr; 1234*5113495bSYour Name uint16_t reasonCode; 1235*5113495bSYour Name }; 1236*5113495bSYour Name 1237*5113495bSYour Name /** 1238*5113495bSYour Name * struct deauth_retry_params - deauth retry params 1239*5113495bSYour Name * @peer_mac: peer mac 1240*5113495bSYour Name * @reason_code: reason for disconnect indication 1241*5113495bSYour Name * @retry_cnt: retry count 1242*5113495bSYour Name */ 1243*5113495bSYour Name struct deauth_retry_params { 1244*5113495bSYour Name struct qdf_mac_addr peer_macaddr; 1245*5113495bSYour Name uint16_t reason_code; 1246*5113495bSYour Name uint8_t retry_cnt; 1247*5113495bSYour Name }; 1248*5113495bSYour Name 1249*5113495bSYour Name /* / Definition for Deauthetication response */ 1250*5113495bSYour Name struct deauth_rsp { 1251*5113495bSYour Name uint16_t messageType; /* eWNI_SME_DEAUTH_RSP */ 1252*5113495bSYour Name uint16_t length; 1253*5113495bSYour Name uint8_t sessionId; /* Session ID */ 1254*5113495bSYour Name tSirResultCodes status_code; 1255*5113495bSYour Name struct qdf_mac_addr peer_macaddr; 1256*5113495bSYour Name }; 1257*5113495bSYour Name 1258*5113495bSYour Name /* / Definition for Deauthetication indication from peer */ 1259*5113495bSYour Name struct deauth_ind { 1260*5113495bSYour Name uint16_t messageType; /* eWNI_SME_DEAUTH_IND */ 1261*5113495bSYour Name uint16_t length; 1262*5113495bSYour Name uint8_t vdev_id; 1263*5113495bSYour Name tSirResultCodes status_code; 1264*5113495bSYour Name struct qdf_mac_addr bssid; /* AP BSSID */ 1265*5113495bSYour Name struct qdf_mac_addr peer_macaddr; 1266*5113495bSYour Name struct qdf_mac_addr peer_mld_addr; 1267*5113495bSYour Name 1268*5113495bSYour Name uint16_t staId; 1269*5113495bSYour Name uint32_t reasonCode; 1270*5113495bSYour Name int8_t rssi; 1271*5113495bSYour Name bool from_ap; 1272*5113495bSYour Name }; 1273*5113495bSYour Name 1274*5113495bSYour Name /* / Definition for Deauthetication confirm */ 1275*5113495bSYour Name struct deauth_cnf { 1276*5113495bSYour Name uint16_t messageType; /* eWNI_SME_DEAUTH_CNF */ 1277*5113495bSYour Name uint16_t length; 1278*5113495bSYour Name uint8_t vdev_id; 1279*5113495bSYour Name tSirResultCodes status_code; 1280*5113495bSYour Name struct qdf_mac_addr bssid; 1281*5113495bSYour Name struct qdf_mac_addr peer_macaddr; 1282*5113495bSYour Name }; 1283*5113495bSYour Name 1284*5113495bSYour Name struct stop_bss_req { 1285*5113495bSYour Name uint8_t vdev_id; 1286*5113495bSYour Name uint32_t cmd_id; 1287*5113495bSYour Name }; 1288*5113495bSYour Name 1289*5113495bSYour Name struct stop_bss_rsp { 1290*5113495bSYour Name uint8_t vdev_id; 1291*5113495bSYour Name tSirResultCodes status_code; 1292*5113495bSYour Name }; 1293*5113495bSYour Name 1294*5113495bSYour Name /* / Definition for Channel Switch indication for station */ 1295*5113495bSYour Name /* / MAC ---> */ 1296*5113495bSYour Name struct switch_channel_ind { 1297*5113495bSYour Name uint16_t messageType; /* eWNI_SME_SWITCH_CHL_IND */ 1298*5113495bSYour Name uint16_t length; 1299*5113495bSYour Name uint8_t sessionId; 1300*5113495bSYour Name uint32_t freq; 1301*5113495bSYour Name struct ch_params chan_params; 1302*5113495bSYour Name struct qdf_mac_addr bssid; /* BSSID */ 1303*5113495bSYour Name QDF_STATUS status; 1304*5113495bSYour Name enum wlan_phymode ch_phymode; 1305*5113495bSYour Name }; 1306*5113495bSYour Name 1307*5113495bSYour Name /* / Definition for MIC failure indication */ 1308*5113495bSYour Name /* / MAC ---> */ 1309*5113495bSYour Name /* / MAC reports this each time a MIC failure occurs on Rx TKIP packet */ 1310*5113495bSYour Name struct mic_failure_ind { 1311*5113495bSYour Name uint16_t messageType; /* eWNI_SME_MIC_FAILURE_IND */ 1312*5113495bSYour Name uint16_t length; 1313*5113495bSYour Name uint8_t sessionId; 1314*5113495bSYour Name struct qdf_mac_addr bssId; 1315*5113495bSYour Name tSirMicFailureInfo info; 1316*5113495bSYour Name }; 1317*5113495bSYour Name 1318*5113495bSYour Name struct missed_beacon_ind { 1319*5113495bSYour Name uint16_t messageType; /* eWNI_SME_MISSED_BEACON_IND */ 1320*5113495bSYour Name uint16_t length; 1321*5113495bSYour Name uint8_t bss_idx; 1322*5113495bSYour Name int32_t rssi; 1323*5113495bSYour Name }; 1324*5113495bSYour Name 1325*5113495bSYour Name /* / Definition for Set Context response */ 1326*5113495bSYour Name /* / MAC ---> */ 1327*5113495bSYour Name struct set_context_rsp { 1328*5113495bSYour Name uint16_t messageType; /* eWNI_SME_SET_CONTEXT_RSP */ 1329*5113495bSYour Name uint16_t length; 1330*5113495bSYour Name uint8_t sessionId; /* Session ID */ 1331*5113495bSYour Name tSirResultCodes status_code; 1332*5113495bSYour Name struct qdf_mac_addr peer_macaddr; 1333*5113495bSYour Name }; 1334*5113495bSYour Name 1335*5113495bSYour Name typedef struct sAniGetSnrReq { 1336*5113495bSYour Name /* Common for all types are requests */ 1337*5113495bSYour Name uint16_t msgType; /* message type is same as the request type */ 1338*5113495bSYour Name uint16_t msgLen; /* length of the entire request */ 1339*5113495bSYour Name uint8_t sessionId; 1340*5113495bSYour Name void *snrCallback; 1341*5113495bSYour Name void *pDevContext; /* device context */ 1342*5113495bSYour Name int8_t snr; 1343*5113495bSYour Name } tAniGetSnrReq, *tpAniGetSnrReq; 1344*5113495bSYour Name 1345*5113495bSYour Name /* generic country code change request MSG structure */ 1346*5113495bSYour Name typedef struct sAniGenericChangeCountryCodeReq { 1347*5113495bSYour Name uint16_t msgType; /* message type is same as the request type */ 1348*5113495bSYour Name uint16_t msgLen; /* length of the entire request */ 1349*5113495bSYour Name uint8_t countryCode[REG_ALPHA2_LEN + 1]; /* 3 char country code */ 1350*5113495bSYour Name } tAniGenericChangeCountryCodeReq, *tpAniGenericChangeCountryCodeReq; 1351*5113495bSYour Name 1352*5113495bSYour Name /** 1353*5113495bSYour Name * struct sAniDHCPStopInd - DHCP Stop indication message 1354*5113495bSYour Name * @msgType: message type is same as the request type 1355*5113495bSYour Name * @msgLen: length of the entire request 1356*5113495bSYour Name * @device_mode: Mode of the device(ex:STA, AP) 1357*5113495bSYour Name * @adapterMacAddr: MAC address of the adapter 1358*5113495bSYour Name * @peerMacAddr: MAC address of the connected peer 1359*5113495bSYour Name */ 1360*5113495bSYour Name typedef struct sAniDHCPStopInd { 1361*5113495bSYour Name uint16_t msgType; 1362*5113495bSYour Name uint16_t msgLen; 1363*5113495bSYour Name uint8_t device_mode; 1364*5113495bSYour Name struct qdf_mac_addr adapterMacAddr; 1365*5113495bSYour Name struct qdf_mac_addr peerMacAddr; 1366*5113495bSYour Name } tAniDHCPInd, *tpAniDHCPInd; 1367*5113495bSYour Name 1368*5113495bSYour Name /**********************PE Statistics end*************************/ 1369*5113495bSYour Name 1370*5113495bSYour Name typedef struct sSirP2PNoaAttr { 1371*5113495bSYour Name #ifdef ANI_BIG_BYTE_ENDIAN 1372*5113495bSYour Name uint32_t index:8; 1373*5113495bSYour Name uint32_t oppPsFlag:1; 1374*5113495bSYour Name uint32_t ctWin:7; 1375*5113495bSYour Name uint32_t rsvd1:16; 1376*5113495bSYour Name #else 1377*5113495bSYour Name uint32_t rsvd1:16; 1378*5113495bSYour Name uint32_t ctWin:7; 1379*5113495bSYour Name uint32_t oppPsFlag:1; 1380*5113495bSYour Name uint32_t index:8; 1381*5113495bSYour Name #endif 1382*5113495bSYour Name 1383*5113495bSYour Name #ifdef ANI_BIG_BYTE_ENDIAN 1384*5113495bSYour Name uint32_t uNoa1IntervalCnt:8; 1385*5113495bSYour Name uint32_t rsvd2:24; 1386*5113495bSYour Name #else 1387*5113495bSYour Name uint32_t rsvd2:24; 1388*5113495bSYour Name uint32_t uNoa1IntervalCnt:8; 1389*5113495bSYour Name #endif 1390*5113495bSYour Name uint32_t uNoa1Duration; 1391*5113495bSYour Name uint32_t uNoa1Interval; 1392*5113495bSYour Name uint32_t uNoa1StartTime; 1393*5113495bSYour Name 1394*5113495bSYour Name #ifdef ANI_BIG_BYTE_ENDIAN 1395*5113495bSYour Name uint32_t uNoa2IntervalCnt:8; 1396*5113495bSYour Name uint32_t rsvd3:24; 1397*5113495bSYour Name #else 1398*5113495bSYour Name uint32_t rsvd3:24; 1399*5113495bSYour Name uint32_t uNoa2IntervalCnt:8; 1400*5113495bSYour Name #endif 1401*5113495bSYour Name uint32_t uNoa2Duration; 1402*5113495bSYour Name uint32_t uNoa2Interval; 1403*5113495bSYour Name uint32_t uNoa2StartTime; 1404*5113495bSYour Name } tSirP2PNoaAttr, *tpSirP2PNoaAttr; 1405*5113495bSYour Name 1406*5113495bSYour Name typedef struct sSirTclasInfo { 1407*5113495bSYour Name tSirMacTclasIE tclas; 1408*5113495bSYour Name uint8_t version; /* applies only for classifier type ip */ 1409*5113495bSYour Name union { 1410*5113495bSYour Name tSirMacTclasParamEthernet eth; 1411*5113495bSYour Name tSirMacTclasParamIPv4 ipv4; 1412*5113495bSYour Name tSirMacTclasParamIPv6 ipv6; 1413*5113495bSYour Name tSirMacTclasParam8021dq t8021dq; 1414*5113495bSYour Name } qdf_packed tclasParams; 1415*5113495bSYour Name } qdf_packed tSirTclasInfo; 1416*5113495bSYour Name 1417*5113495bSYour Name typedef struct sSirAddtsReqInfo { 1418*5113495bSYour Name uint8_t dialogToken; 1419*5113495bSYour Name struct mac_tspec_ie tspec; 1420*5113495bSYour Name 1421*5113495bSYour Name uint8_t numTclas; /* number of Tclas elements */ 1422*5113495bSYour Name tSirTclasInfo tclasInfo[SIR_MAC_TCLASIE_MAXNUM]; 1423*5113495bSYour Name uint8_t tclasProc; 1424*5113495bSYour Name #if defined(FEATURE_WLAN_ESE) 1425*5113495bSYour Name struct ese_tsrs_ie tsrsIE; 1426*5113495bSYour Name uint8_t tsrsPresent:1; 1427*5113495bSYour Name #endif 1428*5113495bSYour Name uint8_t wmeTspecPresent:1; 1429*5113495bSYour Name uint8_t wsmTspecPresent:1; 1430*5113495bSYour Name uint8_t lleTspecPresent:1; 1431*5113495bSYour Name uint8_t tclasProcPresent:1; 1432*5113495bSYour Name } tSirAddtsReqInfo, *tpSirAddtsReqInfo; 1433*5113495bSYour Name 1434*5113495bSYour Name typedef struct sSirAddtsRspInfo { 1435*5113495bSYour Name uint8_t dialogToken; 1436*5113495bSYour Name enum wlan_status_code status; 1437*5113495bSYour Name tSirMacTsDelayIE delay; 1438*5113495bSYour Name 1439*5113495bSYour Name struct mac_tspec_ie tspec; 1440*5113495bSYour Name uint8_t numTclas; /* number of Tclas elements */ 1441*5113495bSYour Name tSirTclasInfo tclasInfo[SIR_MAC_TCLASIE_MAXNUM]; 1442*5113495bSYour Name uint8_t tclasProc; 1443*5113495bSYour Name tSirMacScheduleIE schedule; 1444*5113495bSYour Name #ifdef FEATURE_WLAN_ESE 1445*5113495bSYour Name struct ese_tsm_ie tsmIE; 1446*5113495bSYour Name uint8_t tsmPresent:1; 1447*5113495bSYour Name #endif 1448*5113495bSYour Name uint8_t wmeTspecPresent:1; 1449*5113495bSYour Name uint8_t wsmTspecPresent:1; 1450*5113495bSYour Name uint8_t lleTspecPresent:1; 1451*5113495bSYour Name uint8_t tclasProcPresent:1; 1452*5113495bSYour Name uint8_t schedulePresent:1; 1453*5113495bSYour Name } tSirAddtsRspInfo, *tpSirAddtsRspInfo; 1454*5113495bSYour Name 1455*5113495bSYour Name /* / Add a tspec as defined */ 1456*5113495bSYour Name typedef struct sSirAddtsReq { 1457*5113495bSYour Name uint16_t messageType; /* eWNI_SME_ADDTS_REQ */ 1458*5113495bSYour Name uint16_t length; 1459*5113495bSYour Name uint8_t sessionId; /* Session ID */ 1460*5113495bSYour Name struct qdf_mac_addr bssid; /* BSSID */ 1461*5113495bSYour Name uint32_t timeout; /* in ms */ 1462*5113495bSYour Name uint8_t rspReqd; 1463*5113495bSYour Name tSirAddtsReqInfo req; 1464*5113495bSYour Name } tSirAddtsReq, *tpSirAddtsReq; 1465*5113495bSYour Name 1466*5113495bSYour Name typedef struct sSirAddtsRsp { 1467*5113495bSYour Name uint16_t messageType; /* eWNI_SME_ADDTS_RSP */ 1468*5113495bSYour Name uint16_t length; 1469*5113495bSYour Name uint8_t sessionId; /* sme sessionId Added for BT-AMP support */ 1470*5113495bSYour Name uint32_t rc; /* return code */ 1471*5113495bSYour Name tSirAddtsRspInfo rsp; 1472*5113495bSYour Name } tSirAddtsRsp, *tpSirAddtsRsp; 1473*5113495bSYour Name 1474*5113495bSYour Name typedef struct sSirDeltsReq { 1475*5113495bSYour Name uint16_t messageType; /* eWNI_SME_DELTS_REQ */ 1476*5113495bSYour Name uint16_t length; 1477*5113495bSYour Name uint8_t sessionId; /* Session ID */ 1478*5113495bSYour Name struct qdf_mac_addr bssid; /* BSSID */ 1479*5113495bSYour Name uint16_t aid; /* use 0 if macAddr is being specified */ 1480*5113495bSYour Name struct qdf_mac_addr macaddr; /* only on AP to specify the STA */ 1481*5113495bSYour Name uint8_t rspReqd; 1482*5113495bSYour Name struct delts_req_info req; 1483*5113495bSYour Name } tSirDeltsReq, *tpSirDeltsReq; 1484*5113495bSYour Name 1485*5113495bSYour Name typedef struct sSirDeltsRsp { 1486*5113495bSYour Name uint16_t messageType; /* eWNI_SME_DELTS_RSP */ 1487*5113495bSYour Name uint16_t length; 1488*5113495bSYour Name uint8_t sessionId; 1489*5113495bSYour Name uint32_t rc; 1490*5113495bSYour Name uint16_t aid; /* use 0 if macAddr is being specified */ 1491*5113495bSYour Name struct qdf_mac_addr macaddr; /* only on AP to specify the STA */ 1492*5113495bSYour Name struct delts_req_info rsp; 1493*5113495bSYour Name } tSirDeltsRsp, *tpSirDeltsRsp; 1494*5113495bSYour Name 1495*5113495bSYour Name typedef struct sSirAggrQosReqInfo { 1496*5113495bSYour Name uint16_t tspecIdx; 1497*5113495bSYour Name tSirAddtsReqInfo aggrAddTsInfo[QCA_WLAN_AC_ALL]; 1498*5113495bSYour Name } tSirAggrQosReqInfo, *tpSirAggrQosReqInfo; 1499*5113495bSYour Name 1500*5113495bSYour Name typedef struct sSirAggrQosReq { 1501*5113495bSYour Name uint16_t messageType; /* eWNI_SME_ADDTS_REQ */ 1502*5113495bSYour Name uint16_t length; 1503*5113495bSYour Name uint8_t sessionId; /* Session ID */ 1504*5113495bSYour Name struct qdf_mac_addr bssid; /* BSSID */ 1505*5113495bSYour Name uint32_t timeout; /* in ms */ 1506*5113495bSYour Name uint8_t rspReqd; 1507*5113495bSYour Name tSirAggrQosReqInfo aggrInfo; 1508*5113495bSYour Name } tSirAggrQosReq; 1509*5113495bSYour Name 1510*5113495bSYour Name typedef struct sSirAggrQosRspInfo { 1511*5113495bSYour Name uint16_t tspecIdx; 1512*5113495bSYour Name tSirAddtsRspInfo aggrRsp[QCA_WLAN_AC_ALL]; 1513*5113495bSYour Name } tSirAggrQosRspInfo, *tpSirAggrQosRspInfo; 1514*5113495bSYour Name 1515*5113495bSYour Name typedef struct sSirAggrQosRsp { 1516*5113495bSYour Name uint16_t messageType; 1517*5113495bSYour Name uint16_t length; 1518*5113495bSYour Name uint8_t sessionId; 1519*5113495bSYour Name tSirAggrQosRspInfo aggrInfo; 1520*5113495bSYour Name } tSirAggrQosRsp, *tpSirAggrQosRsp; 1521*5113495bSYour Name 1522*5113495bSYour Name 1523*5113495bSYour Name struct qos_map_set { 1524*5113495bSYour Name uint8_t present; 1525*5113495bSYour Name uint8_t num_dscp_exceptions; 1526*5113495bSYour Name uint8_t dscp_exceptions[QOS_MAP_MAX_EX][2]; 1527*5113495bSYour Name uint8_t dscp_range[QOS_MAP_RANGE_NUM][2]; 1528*5113495bSYour Name }; 1529*5113495bSYour Name 1530*5113495bSYour Name typedef struct sSmeMaxAssocInd { 1531*5113495bSYour Name uint16_t mesgType; /* eWNI_SME_MAX_ASSOC_EXCEEDED */ 1532*5113495bSYour Name uint16_t mesgLen; 1533*5113495bSYour Name uint8_t sessionId; 1534*5113495bSYour Name /* the new peer that got rejected max assoc limit reached */ 1535*5113495bSYour Name struct qdf_mac_addr peer_mac; 1536*5113495bSYour Name } tSmeMaxAssocInd, *tpSmeMaxAssocInd; 1537*5113495bSYour Name 1538*5113495bSYour Name #define SIR_MAX_NAME_SIZE 64 1539*5113495bSYour Name #define SIR_MAX_TEXT_SIZE 32 1540*5113495bSYour Name 1541*5113495bSYour Name typedef struct sSirName { 1542*5113495bSYour Name uint8_t num_name; 1543*5113495bSYour Name uint8_t name[SIR_MAX_NAME_SIZE]; 1544*5113495bSYour Name } tSirName; 1545*5113495bSYour Name 1546*5113495bSYour Name typedef struct sSirText { 1547*5113495bSYour Name uint8_t num_text; 1548*5113495bSYour Name uint8_t text[SIR_MAX_TEXT_SIZE]; 1549*5113495bSYour Name } tSirText; 1550*5113495bSYour Name 1551*5113495bSYour Name #define SIR_WPS_PROBRSP_VER_PRESENT 0x00000001 1552*5113495bSYour Name #define SIR_WPS_PROBRSP_STATE_PRESENT 0x00000002 1553*5113495bSYour Name #define SIR_WPS_PROBRSP_APSETUPLOCK_PRESENT 0x00000004 1554*5113495bSYour Name #define SIR_WPS_PROBRSP_SELECTEDREGISTRA_PRESENT 0x00000008 1555*5113495bSYour Name #define SIR_WPS_PROBRSP_DEVICEPASSWORDID_PRESENT 0x00000010 1556*5113495bSYour Name #define SIR_WPS_PROBRSP_SELECTEDREGISTRACFGMETHOD_PRESENT 0x00000020 1557*5113495bSYour Name #define SIR_WPS_PROBRSP_RESPONSETYPE_PRESENT 0x00000040 1558*5113495bSYour Name #define SIR_WPS_PROBRSP_UUIDE_PRESENT 0x00000080 1559*5113495bSYour Name #define SIR_WPS_PROBRSP_MANUFACTURE_PRESENT 0x00000100 1560*5113495bSYour Name #define SIR_WPS_PROBRSP_MODELNAME_PRESENT 0x00000200 1561*5113495bSYour Name #define SIR_WPS_PROBRSP_MODELNUMBER_PRESENT 0x00000400 1562*5113495bSYour Name #define SIR_WPS_PROBRSP_SERIALNUMBER_PRESENT 0x00000800 1563*5113495bSYour Name #define SIR_WPS_PROBRSP_PRIMARYDEVICETYPE_PRESENT 0x00001000 1564*5113495bSYour Name #define SIR_WPS_PROBRSP_DEVICENAME_PRESENT 0x00002000 1565*5113495bSYour Name #define SIR_WPS_PROBRSP_CONFIGMETHODS_PRESENT 0x00004000 1566*5113495bSYour Name #define SIR_WPS_PROBRSP_RF_BANDS_PRESENT 0x00008000 1567*5113495bSYour Name 1568*5113495bSYour Name typedef struct sSirWPSProbeRspIE { 1569*5113495bSYour Name uint32_t FieldPresent; 1570*5113495bSYour Name uint32_t Version; /* Version. 0x10 = version 1.0, 0x11 = etc. */ 1571*5113495bSYour Name uint32_t wpsState; /* 1 = unconfigured, 2 = configured. */ 1572*5113495bSYour Name bool APSetupLocked; /* Must be included if value is true */ 1573*5113495bSYour Name /* 1574*5113495bSYour Name * BOOL: indicates if the user has recently activated a Registrar to 1575*5113495bSYour Name * add an Enrollee. 1576*5113495bSYour Name */ 1577*5113495bSYour Name bool SelectedRegistra; 1578*5113495bSYour Name uint16_t DevicePasswordID; /* Device Password ID */ 1579*5113495bSYour Name /* Selected Registrar config method */ 1580*5113495bSYour Name uint16_t SelectedRegistraCfgMethod; 1581*5113495bSYour Name uint8_t ResponseType; /* Response type */ 1582*5113495bSYour Name uint8_t UUID_E[16]; /* Unique identifier of the AP. */ 1583*5113495bSYour Name tSirName Manufacture; 1584*5113495bSYour Name tSirText ModelName; 1585*5113495bSYour Name tSirText ModelNumber; 1586*5113495bSYour Name tSirText SerialNumber; 1587*5113495bSYour Name /* Device Category ID: 1Computer, 2Input Device, ... */ 1588*5113495bSYour Name uint32_t PrimaryDeviceCategory; 1589*5113495bSYour Name /* Vendor specific OUI for Device Sub Category */ 1590*5113495bSYour Name uint8_t PrimaryDeviceOUI[4]; 1591*5113495bSYour Name /* 1592*5113495bSYour Name Device Sub Category ID: 1-PC, 2-Server if Device Category ID 1593*5113495bSYour Name * is computer 1594*5113495bSYour Name */ 1595*5113495bSYour Name uint32_t DeviceSubCategory; 1596*5113495bSYour Name tSirText DeviceName; 1597*5113495bSYour Name uint16_t ConfigMethod; /* Configuration method */ 1598*5113495bSYour Name uint8_t RFBand; /* RF bands available on the AP */ 1599*5113495bSYour Name } tSirWPSProbeRspIE; 1600*5113495bSYour Name 1601*5113495bSYour Name #define SIR_WPS_BEACON_VER_PRESENT 0x00000001 1602*5113495bSYour Name #define SIR_WPS_BEACON_STATE_PRESENT 0x00000002 1603*5113495bSYour Name #define SIR_WPS_BEACON_APSETUPLOCK_PRESENT 0x00000004 1604*5113495bSYour Name #define SIR_WPS_BEACON_SELECTEDREGISTRA_PRESENT 0x00000008 1605*5113495bSYour Name #define SIR_WPS_BEACON_DEVICEPASSWORDID_PRESENT 0x00000010 1606*5113495bSYour Name #define SIR_WPS_BEACON_SELECTEDREGISTRACFGMETHOD_PRESENT 0x00000020 1607*5113495bSYour Name #define SIR_WPS_BEACON_UUIDE_PRESENT 0x00000080 1608*5113495bSYour Name #define SIR_WPS_BEACON_RF_BANDS_PRESENT 0x00000100 1609*5113495bSYour Name #define SIR_WPS_UUID_LEN 16 1610*5113495bSYour Name 1611*5113495bSYour Name typedef struct sSirWPSBeaconIE { 1612*5113495bSYour Name uint32_t FieldPresent; 1613*5113495bSYour Name uint32_t Version; /* Version. 0x10 = version 1.0, 0x11 = etc. */ 1614*5113495bSYour Name uint32_t wpsState; /* 1 = unconfigured, 2 = configured. */ 1615*5113495bSYour Name bool APSetupLocked; /* Must be included if value is true */ 1616*5113495bSYour Name /* 1617*5113495bSYour Name * BOOL: indicates if the user has recently activated a Registrar to 1618*5113495bSYour Name * add an Enrollee. 1619*5113495bSYour Name */ 1620*5113495bSYour Name bool SelectedRegistra; 1621*5113495bSYour Name uint16_t DevicePasswordID; /* Device Password ID */ 1622*5113495bSYour Name /* Selected Registrar config method */ 1623*5113495bSYour Name uint16_t SelectedRegistraCfgMethod; 1624*5113495bSYour Name uint8_t UUID_E[SIR_WPS_UUID_LEN]; /* Unique identifier of the AP. */ 1625*5113495bSYour Name uint8_t RFBand; /* RF bands available on the AP */ 1626*5113495bSYour Name } tSirWPSBeaconIE; 1627*5113495bSYour Name 1628*5113495bSYour Name typedef struct sSirAPWPSIEs { 1629*5113495bSYour Name tSirWPSProbeRspIE SirWPSProbeRspIE; /*WPS Set Probe Response IE */ 1630*5113495bSYour Name tSirWPSBeaconIE SirWPSBeaconIE; /*WPS Set Beacon IE */ 1631*5113495bSYour Name } tSirAPWPSIEs, *tpSiriAPWPSIEs; 1632*5113495bSYour Name 1633*5113495bSYour Name struct update_config { 1634*5113495bSYour Name uint16_t messageType; /* eWNI_SME_UPDATE_CONFIG */ 1635*5113495bSYour Name uint16_t length; 1636*5113495bSYour Name uint8_t vdev_id; 1637*5113495bSYour Name uint16_t capab; 1638*5113495bSYour Name uint32_t value; 1639*5113495bSYour Name }; 1640*5113495bSYour Name 1641*5113495bSYour Name /* 1642*5113495bSYour Name * enum sir_update_session_param_type - session param type 1643*5113495bSYour Name * @SIR_PARAM_SSID_HIDDEN: ssidHidden parameter 1644*5113495bSYour Name */ 1645*5113495bSYour Name enum sir_update_session_param_type { 1646*5113495bSYour Name SIR_PARAM_SSID_HIDDEN, 1647*5113495bSYour Name }; 1648*5113495bSYour Name 1649*5113495bSYour Name /* 1650*5113495bSYour Name * struct sir_update_session_param 1651*5113495bSYour Name * @message_type: SME message type 1652*5113495bSYour Name * @length: size of struct sir_update_session_param 1653*5113495bSYour Name * @vdev_id: vdev ID 1654*5113495bSYour Name * @param_type: parameter to be updated 1655*5113495bSYour Name * @param_val: Parameter value to update 1656*5113495bSYour Name */ 1657*5113495bSYour Name struct sir_update_session_param { 1658*5113495bSYour Name uint16_t message_type; 1659*5113495bSYour Name uint16_t length; 1660*5113495bSYour Name uint8_t vdev_id; 1661*5113495bSYour Name uint32_t param_type; 1662*5113495bSYour Name uint32_t param_val; 1663*5113495bSYour Name }; 1664*5113495bSYour Name 1665*5113495bSYour Name /** 1666*5113495bSYour Name * struct sir_set_he_bss_color 1667*5113495bSYour Name * @message_type: SME message type 1668*5113495bSYour Name * @length: size of struct sir_set_he_bss_color 1669*5113495bSYour Name * @vdev_id: vdev ID 1670*5113495bSYour Name * @bss_color: bss color value 1671*5113495bSYour Name */ 1672*5113495bSYour Name struct sir_set_he_bss_color { 1673*5113495bSYour Name uint16_t message_type; 1674*5113495bSYour Name uint16_t length; 1675*5113495bSYour Name uint8_t vdev_id; 1676*5113495bSYour Name uint8_t bss_color; 1677*5113495bSYour Name }; 1678*5113495bSYour Name 1679*5113495bSYour Name /** 1680*5113495bSYour Name * struct sir_cfg_obss_scan 1681*5113495bSYour Name * @message_type: SME message type 1682*5113495bSYour Name * @length: size of struct sir_cfg_obss_scan 1683*5113495bSYour Name * @vdev_id: vdev ID 1684*5113495bSYour Name * @is_scan_reconfig: true for NDP session 1685*5113495bSYour Name */ 1686*5113495bSYour Name struct sir_cfg_obss_scan { 1687*5113495bSYour Name uint16_t message_type; 1688*5113495bSYour Name uint16_t length; 1689*5113495bSYour Name uint8_t vdev_id; 1690*5113495bSYour Name bool is_scan_reconfig; 1691*5113495bSYour Name }; 1692*5113495bSYour Name 1693*5113495bSYour Name /** 1694*5113495bSYour Name * struct sir_create_session - Used for creating session in monitor mode 1695*5113495bSYour Name * @type: SME host message type. 1696*5113495bSYour Name * @msg_len: Length of the message. 1697*5113495bSYour Name * @bss_id: bss_id for creating the session. 1698*5113495bSYour Name */ 1699*5113495bSYour Name struct sir_create_session { 1700*5113495bSYour Name uint16_t type; 1701*5113495bSYour Name uint16_t msg_len; 1702*5113495bSYour Name uint8_t vdev_id; 1703*5113495bSYour Name struct qdf_mac_addr bss_id; 1704*5113495bSYour Name }; 1705*5113495bSYour Name 1706*5113495bSYour Name /** 1707*5113495bSYour Name * struct sir_delete_session - Used for deleting session in monitor mode 1708*5113495bSYour Name * @type: SME host message type. 1709*5113495bSYour Name * @msg_len: Length of the message. 1710*5113495bSYour Name * @vdev_id: vdev id. 1711*5113495bSYour Name */ 1712*5113495bSYour Name struct sir_delete_session { 1713*5113495bSYour Name uint16_t type; 1714*5113495bSYour Name uint16_t msg_len; 1715*5113495bSYour Name uint8_t vdev_id; 1716*5113495bSYour Name }; 1717*5113495bSYour Name 1718*5113495bSYour Name #ifdef QCA_HT_2040_COEX 1719*5113495bSYour Name struct set_ht2040_mode { 1720*5113495bSYour Name uint16_t messageType; 1721*5113495bSYour Name uint16_t length; 1722*5113495bSYour Name uint8_t cbMode; 1723*5113495bSYour Name bool obssEnabled; 1724*5113495bSYour Name struct qdf_mac_addr bssid; 1725*5113495bSYour Name uint8_t sessionId; /* Session ID */ 1726*5113495bSYour Name }; 1727*5113495bSYour Name #endif 1728*5113495bSYour Name 1729*5113495bSYour Name #define SIR_WPS_PBC_WALK_TIME 120 /* 120 Second */ 1730*5113495bSYour Name 1731*5113495bSYour Name typedef struct sSirWPSPBCSession { 1732*5113495bSYour Name struct sSirWPSPBCSession *next; 1733*5113495bSYour Name struct qdf_mac_addr addr; 1734*5113495bSYour Name uint8_t uuid_e[SIR_WPS_UUID_LEN]; 1735*5113495bSYour Name uint32_t timestamp; 1736*5113495bSYour Name } tSirWPSPBCSession; 1737*5113495bSYour Name 1738*5113495bSYour Name typedef struct sSirWPSPBCProbeReq { 1739*5113495bSYour Name struct qdf_mac_addr peer_macaddr; 1740*5113495bSYour Name uint16_t probeReqIELen; 1741*5113495bSYour Name uint8_t probeReqIE[512]; 1742*5113495bSYour Name } tSirWPSPBCProbeReq, *tpSirWPSPBCProbeReq; 1743*5113495bSYour Name 1744*5113495bSYour Name /* probereq from peer, when wsc is enabled */ 1745*5113495bSYour Name typedef struct sSirSmeProbeReqInd { 1746*5113495bSYour Name uint16_t messageType; /* eWNI_SME_WPS_PBC_PROBE_REQ_IND */ 1747*5113495bSYour Name uint16_t length; 1748*5113495bSYour Name uint8_t sessionId; 1749*5113495bSYour Name struct qdf_mac_addr bssid; 1750*5113495bSYour Name tSirWPSPBCProbeReq WPSPBCProbeReq; 1751*5113495bSYour Name } tSirSmeProbeReqInd, *tpSirSmeProbeReqInd; 1752*5113495bSYour Name 1753*5113495bSYour Name #define SIR_ROAM_SCAN_MAX_PB_REQ_SIZE 450 1754*5113495bSYour Name /* Occupied channel list remains static */ 1755*5113495bSYour Name #define CHANNEL_LIST_STATIC 1 1756*5113495bSYour Name /* Occupied channel list can be dynamic */ 1757*5113495bSYour Name #define CHANNEL_LIST_DYNAMIC 2 1758*5113495bSYour Name 1759*5113495bSYour Name /* SME -> HAL - This is the host offload request. */ 1760*5113495bSYour Name #define SIR_IPV6_NS_OFFLOAD 2 1761*5113495bSYour Name #define SIR_OFFLOAD_DISABLE 0 1762*5113495bSYour Name #define SIR_OFFLOAD_ENABLE 1 1763*5113495bSYour Name 1764*5113495bSYour Name struct sir_host_offload_req { 1765*5113495bSYour Name uint8_t offloadType; 1766*5113495bSYour Name uint8_t enableOrDisable; 1767*5113495bSYour Name uint32_t num_ns_offload_count; 1768*5113495bSYour Name union { 1769*5113495bSYour Name uint8_t hostIpv4Addr[QDF_IPV4_ADDR_SIZE]; 1770*5113495bSYour Name uint8_t hostIpv6Addr[QDF_IPV6_ADDR_SIZE]; 1771*5113495bSYour Name } params; 1772*5113495bSYour Name struct qdf_mac_addr bssid; 1773*5113495bSYour Name }; 1774*5113495bSYour Name 1775*5113495bSYour Name /* Packet Types. */ 1776*5113495bSYour Name #define SIR_KEEP_ALIVE_NULL_PKT 1 1777*5113495bSYour Name #define SIR_KEEP_ALIVE_UNSOLICIT_ARP_RSP 2 1778*5113495bSYour Name #define SIR_KEEP_ALIVE_MGMT_FRAME 5 1779*5113495bSYour Name 1780*5113495bSYour Name /* Keep Alive request. */ 1781*5113495bSYour Name struct keep_alive_req { 1782*5113495bSYour Name uint8_t packetType; 1783*5113495bSYour Name uint32_t timePeriod; 1784*5113495bSYour Name tSirIpv4Addr hostIpv4Addr; 1785*5113495bSYour Name tSirIpv4Addr destIpv4Addr; 1786*5113495bSYour Name struct qdf_mac_addr dest_macaddr; 1787*5113495bSYour Name struct qdf_mac_addr bssid; 1788*5113495bSYour Name uint8_t sessionId; 1789*5113495bSYour Name }; 1790*5113495bSYour Name 1791*5113495bSYour Name /** 1792*5113495bSYour Name * enum rxmgmt_flags - flags for received management frame. 1793*5113495bSYour Name * @RXMGMT_FLAG_NONE: Default value to indicate no flags are set. 1794*5113495bSYour Name * @RXMGMT_FLAG_EXTERNAL_AUTH: frame can be used for external authentication 1795*5113495bSYour Name * by upper layers. 1796*5113495bSYour Name */ 1797*5113495bSYour Name enum rxmgmt_flags { 1798*5113495bSYour Name RXMGMT_FLAG_NONE, 1799*5113495bSYour Name RXMGMT_FLAG_EXTERNAL_AUTH = 1 << 1, 1800*5113495bSYour Name }; 1801*5113495bSYour Name 1802*5113495bSYour Name typedef struct sSirSmeMgmtFrameInd { 1803*5113495bSYour Name uint16_t frame_len; 1804*5113495bSYour Name uint32_t rx_freq; 1805*5113495bSYour Name uint8_t sessionId; 1806*5113495bSYour Name uint8_t frameType; 1807*5113495bSYour Name int8_t rxRssi; 1808*5113495bSYour Name enum rxmgmt_flags rx_flags; 1809*5113495bSYour Name QDF_FLEX_ARRAY(uint8_t, frameBuf); 1810*5113495bSYour Name } tSirSmeMgmtFrameInd, *tpSirSmeMgmtFrameInd; 1811*5113495bSYour Name 1812*5113495bSYour Name typedef void (*sir_mgmt_frame_ind_callback)(tSirSmeMgmtFrameInd *frame_ind); 1813*5113495bSYour Name /** 1814*5113495bSYour Name * struct sir_sme_mgmt_frame_cb_req - Register a 1815*5113495bSYour Name * management frame callback req 1816*5113495bSYour Name * 1817*5113495bSYour Name * @message_type: message id 1818*5113495bSYour Name * @length: msg length 1819*5113495bSYour Name * @callback: callback for management frame indication 1820*5113495bSYour Name */ 1821*5113495bSYour Name struct sir_sme_mgmt_frame_cb_req { 1822*5113495bSYour Name uint16_t message_type; 1823*5113495bSYour Name uint16_t length; 1824*5113495bSYour Name sir_mgmt_frame_ind_callback callback; 1825*5113495bSYour Name }; 1826*5113495bSYour Name 1827*5113495bSYour Name typedef struct sSirSmeUnprotMgmtFrameInd { 1828*5113495bSYour Name uint8_t sessionId; 1829*5113495bSYour Name uint8_t frameType; 1830*5113495bSYour Name uint8_t frameLen; 1831*5113495bSYour Name QDF_FLEX_ARRAY(uint8_t, frameBuf); 1832*5113495bSYour Name } tSirSmeUnprotMgmtFrameInd, *tpSirSmeUnprotMgmtFrameInd; 1833*5113495bSYour Name 1834*5113495bSYour Name #ifdef WLAN_FEATURE_EXTWOW_SUPPORT 1835*5113495bSYour Name 1836*5113495bSYour Name typedef enum ext_wow_type { 1837*5113495bSYour Name EXT_WOW_TYPE_APP_TYPE1, /* wow type: only enable wakeup for app type1 */ 1838*5113495bSYour Name EXT_WOW_TYPE_APP_TYPE2, /* wow type: only enable wakeup for app type2 */ 1839*5113495bSYour Name EXT_WOW_TYPE_APP_TYPE1_2, /* wow type: enable wakeup for app type1&2 */ 1840*5113495bSYour Name } EXT_WOW_TYPE; 1841*5113495bSYour Name 1842*5113495bSYour Name typedef struct { 1843*5113495bSYour Name uint8_t vdev_id; 1844*5113495bSYour Name EXT_WOW_TYPE type; 1845*5113495bSYour Name uint32_t wakeup_pin_num; 1846*5113495bSYour Name } tSirExtWoWParams, *tpSirExtWoWParams; 1847*5113495bSYour Name 1848*5113495bSYour Name typedef struct { 1849*5113495bSYour Name uint8_t vdev_id; 1850*5113495bSYour Name struct qdf_mac_addr wakee_mac_addr; 1851*5113495bSYour Name uint8_t identification_id[8]; 1852*5113495bSYour Name uint8_t password[16]; 1853*5113495bSYour Name uint32_t id_length; 1854*5113495bSYour Name uint32_t pass_length; 1855*5113495bSYour Name } tSirAppType1Params, *tpSirAppType1Params; 1856*5113495bSYour Name 1857*5113495bSYour Name typedef struct { 1858*5113495bSYour Name uint8_t vdev_id; 1859*5113495bSYour Name 1860*5113495bSYour Name uint8_t rc4_key[16]; 1861*5113495bSYour Name uint32_t rc4_key_len; 1862*5113495bSYour Name 1863*5113495bSYour Name /** ip header parameter */ 1864*5113495bSYour Name uint32_t ip_id; /* NC id */ 1865*5113495bSYour Name uint32_t ip_device_ip; /* NC IP address */ 1866*5113495bSYour Name uint32_t ip_server_ip; /* Push server IP address */ 1867*5113495bSYour Name 1868*5113495bSYour Name /** tcp header parameter */ 1869*5113495bSYour Name uint16_t tcp_src_port; /* NC TCP port */ 1870*5113495bSYour Name uint16_t tcp_dst_port; /* Push server TCP port */ 1871*5113495bSYour Name uint32_t tcp_seq; 1872*5113495bSYour Name uint32_t tcp_ack_seq; 1873*5113495bSYour Name 1874*5113495bSYour Name uint32_t keepalive_init; /* Initial ping interval */ 1875*5113495bSYour Name uint32_t keepalive_min; /* Minimum ping interval */ 1876*5113495bSYour Name uint32_t keepalive_max; /* Maximum ping interval */ 1877*5113495bSYour Name uint32_t keepalive_inc; /* Increment of ping interval */ 1878*5113495bSYour Name 1879*5113495bSYour Name struct qdf_mac_addr gateway_mac; 1880*5113495bSYour Name uint32_t tcp_tx_timeout_val; 1881*5113495bSYour Name uint32_t tcp_rx_timeout_val; 1882*5113495bSYour Name } tSirAppType2Params, *tpSirAppType2Params; 1883*5113495bSYour Name #endif 1884*5113495bSYour Name 1885*5113495bSYour Name #ifdef WLAN_FEATURE_ROAM_OFFLOAD 1886*5113495bSYour Name typedef struct { 1887*5113495bSYour Name uint8_t acvo_uapsd:1; 1888*5113495bSYour Name uint8_t acvi_uapsd:1; 1889*5113495bSYour Name uint8_t acbk_uapsd:1; 1890*5113495bSYour Name uint8_t acbe_uapsd:1; 1891*5113495bSYour Name uint8_t reserved:4; 1892*5113495bSYour Name } tSirAcUapsd, *tpSirAcUapsd; 1893*5113495bSYour Name #endif 1894*5113495bSYour Name 1895*5113495bSYour Name /** 1896*5113495bSYour Name * struct pmkid_mode_bits - Bit flags for PMKID usage in RSN IE 1897*5113495bSYour Name * @fw_okc: Opportunistic key caching enable in firmware 1898*5113495bSYour Name * @fw_pmksa_cache: PMKSA caching enable in firmware, remember previously 1899*5113495bSYour Name * visited BSSID/PMK pairs 1900*5113495bSYour Name */ 1901*5113495bSYour Name struct pmkid_mode_bits { 1902*5113495bSYour Name uint32_t fw_okc:1; 1903*5113495bSYour Name uint32_t fw_pmksa_cache:1; 1904*5113495bSYour Name uint32_t unused:30; 1905*5113495bSYour Name }; 1906*5113495bSYour Name 1907*5113495bSYour Name /** 1908*5113495bSYour Name * struct roam_init_params - Firmware roam module initialization parameters 1909*5113495bSYour Name * @vdev_id: vdev for which the roaming has to be enabled/disabled 1910*5113495bSYour Name * @enable: flag to init/deinit roam module 1911*5113495bSYour Name */ 1912*5113495bSYour Name struct roam_init_params { 1913*5113495bSYour Name uint8_t vdev_id; 1914*5113495bSYour Name uint8_t enable; 1915*5113495bSYour Name }; 1916*5113495bSYour Name 1917*5113495bSYour Name /** 1918*5113495bSYour Name * struct roam_sync_timeout_timer_info - Info related to roam sync timer 1919*5113495bSYour Name * @vdev_id: Vdev id for which host waiting roam sync ind from fw 1920*5113495bSYour Name */ 1921*5113495bSYour Name struct roam_sync_timeout_timer_info { 1922*5113495bSYour Name uint8_t vdev_id; 1923*5113495bSYour Name }; 1924*5113495bSYour Name 1925*5113495bSYour Name struct roam_offload_scan_rsp { 1926*5113495bSYour Name uint8_t sessionId; 1927*5113495bSYour Name uint32_t reason; 1928*5113495bSYour Name }; 1929*5113495bSYour Name 1930*5113495bSYour Name /*--------------------------------------------------------------------------- 1931*5113495bSYour Name Packet Filtering Parameters 1932*5113495bSYour Name ---------------------------------------------------------------------------*/ 1933*5113495bSYour Name #define SIR_MAX_FILTER_TEST_DATA_LEN 8 1934*5113495bSYour Name #define SIR_MAX_FILTER_TEST_DATA_OFFSET 200 1935*5113495bSYour Name #define SIR_MAX_NUM_MULTICAST_ADDRESS 240 1936*5113495bSYour Name 1937*5113495bSYour Name /* */ 1938*5113495bSYour Name /* Multicast Address List Parameters */ 1939*5113495bSYour Name /* */ 1940*5113495bSYour Name typedef struct sSirRcvFltMcAddrList { 1941*5113495bSYour Name uint32_t ulMulticastAddrCnt; 1942*5113495bSYour Name struct qdf_mac_addr multicastAddr[SIR_MAX_NUM_MULTICAST_ADDRESS]; 1943*5113495bSYour Name struct qdf_mac_addr self_macaddr; 1944*5113495bSYour Name struct qdf_mac_addr bssid; 1945*5113495bSYour Name uint8_t action; 1946*5113495bSYour Name } tSirRcvFltMcAddrList, *tpSirRcvFltMcAddrList; 1947*5113495bSYour Name 1948*5113495bSYour Name /** 1949*5113495bSYour Name * struct sir_wifi_start_log - Structure to store the params sent to start/ 1950*5113495bSYour Name * stop logging 1951*5113495bSYour Name * @name: Attribute which indicates the type of logging like per packet 1952*5113495bSYour Name * statistics, connectivity etc. 1953*5113495bSYour Name * @verbose_level: Verbose level which can be 0,1,2,3 1954*5113495bSYour Name * @is_iwpriv_command: Set 1 for iwpriv command 1955*5113495bSYour Name * @ini_triggered: triggered using ini 1956*5113495bSYour Name * @user_triggered: triggered by user 1957*5113495bSYour Name * @size: pktlog buffer size 1958*5113495bSYour Name * @is_pktlog_buff_clear: clear the pktlog buffer 1959*5113495bSYour Name */ 1960*5113495bSYour Name struct sir_wifi_start_log { 1961*5113495bSYour Name uint32_t ring_id; 1962*5113495bSYour Name uint32_t verbose_level; 1963*5113495bSYour Name uint32_t is_iwpriv_command; 1964*5113495bSYour Name bool ini_triggered; 1965*5113495bSYour Name uint8_t user_triggered; 1966*5113495bSYour Name int size; 1967*5113495bSYour Name bool is_pktlog_buff_clear; 1968*5113495bSYour Name }; 1969*5113495bSYour Name 1970*5113495bSYour Name 1971*5113495bSYour Name /** 1972*5113495bSYour Name * struct sir_pcl_list - Format of PCL 1973*5113495bSYour Name * @pcl_list: List of preferred channels 1974*5113495bSYour Name * @weight_list: Weights of the PCL 1975*5113495bSYour Name * @pcl_len: Number of channels in the PCL 1976*5113495bSYour Name */ 1977*5113495bSYour Name struct sir_pcl_list { 1978*5113495bSYour Name uint32_t pcl_len; 1979*5113495bSYour Name uint8_t pcl_list[NUM_CHANNELS]; 1980*5113495bSYour Name uint8_t weight_list[NUM_CHANNELS]; 1981*5113495bSYour Name }; 1982*5113495bSYour Name 1983*5113495bSYour Name /** 1984*5113495bSYour Name * struct sir_pcl_chan_weights - Params to get the valid weighed list 1985*5113495bSYour Name * @pcl_list: Preferred channel list already sorted in the order of preference 1986*5113495bSYour Name * @pcl_len: Length of the PCL 1987*5113495bSYour Name * @saved_chan_list: Valid channel list updated as part of 1988*5113495bSYour Name * WMA_UPDATE_CHAN_LIST_REQ 1989*5113495bSYour Name * @saved_num_chan: Length of the valid channel list 1990*5113495bSYour Name * @weighed_valid_list: Weights of the valid channel list. This will have one 1991*5113495bSYour Name * to one mapping with valid_chan_list. FW expects channel order and size to be 1992*5113495bSYour Name * as per the list provided in WMI_SCAN_CHAN_LIST_CMDID. 1993*5113495bSYour Name * @weight_list: Weights assigned by policy manager 1994*5113495bSYour Name */ 1995*5113495bSYour Name struct sir_pcl_chan_weights { 1996*5113495bSYour Name uint8_t pcl_list[NUM_CHANNELS]; 1997*5113495bSYour Name uint32_t pcl_len; 1998*5113495bSYour Name uint8_t saved_chan_list[NUM_CHANNELS]; 1999*5113495bSYour Name uint32_t saved_num_chan; 2000*5113495bSYour Name uint8_t weighed_valid_list[NUM_CHANNELS]; 2001*5113495bSYour Name uint8_t weight_list[NUM_CHANNELS]; 2002*5113495bSYour Name }; 2003*5113495bSYour Name 2004*5113495bSYour Name /** 2005*5113495bSYour Name * struct sir_hw_mode_params - HW mode params 2006*5113495bSYour Name * @mac0_tx_ss: MAC0 Tx spatial stream 2007*5113495bSYour Name * @mac0_rx_ss: MAC0 Rx spatial stream 2008*5113495bSYour Name * @mac1_tx_ss: MAC1 Tx spatial stream 2009*5113495bSYour Name * @mac1_rx_ss: MAC1 Rx spatial stream 2010*5113495bSYour Name * @mac0_bw: MAC0 bandwidth 2011*5113495bSYour Name * @mac1_bw: MAC1 bandwidth 2012*5113495bSYour Name * @dbs_cap: DBS capabality 2013*5113495bSYour Name * @agile_dfs_cap: Agile DFS capabality 2014*5113495bSYour Name */ 2015*5113495bSYour Name struct sir_hw_mode_params { 2016*5113495bSYour Name uint8_t mac0_tx_ss; 2017*5113495bSYour Name uint8_t mac0_rx_ss; 2018*5113495bSYour Name uint8_t mac1_tx_ss; 2019*5113495bSYour Name uint8_t mac1_rx_ss; 2020*5113495bSYour Name uint8_t mac0_bw; 2021*5113495bSYour Name uint8_t mac1_bw; 2022*5113495bSYour Name uint8_t dbs_cap; 2023*5113495bSYour Name uint8_t agile_dfs_cap; 2024*5113495bSYour Name uint8_t sbs_cap; 2025*5113495bSYour Name }; 2026*5113495bSYour Name 2027*5113495bSYour Name /** 2028*5113495bSYour Name * struct sir_set_hw_mode_resp - HW mode response 2029*5113495bSYour Name * @status: Status 2030*5113495bSYour Name * @cfgd_hw_mode_index: Configured HW mode index 2031*5113495bSYour Name * @num_vdev_mac_entries: Number of vdev-mac id entries 2032*5113495bSYour Name * @vdev_mac_map: vdev id-mac id map 2033*5113495bSYour Name */ 2034*5113495bSYour Name struct sir_set_hw_mode_resp { 2035*5113495bSYour Name uint32_t status; 2036*5113495bSYour Name uint32_t cfgd_hw_mode_index; 2037*5113495bSYour Name uint32_t num_vdev_mac_entries; 2038*5113495bSYour Name struct policy_mgr_vdev_mac_map vdev_mac_map[MAX_VDEV_SUPPORTED]; 2039*5113495bSYour Name }; 2040*5113495bSYour Name 2041*5113495bSYour Name /** 2042*5113495bSYour Name * struct sir_dual_mac_config_resp - Dual MAC config response 2043*5113495bSYour Name * @status: Status of setting the dual mac configuration 2044*5113495bSYour Name */ 2045*5113495bSYour Name struct sir_dual_mac_config_resp { 2046*5113495bSYour Name uint32_t status; 2047*5113495bSYour Name }; 2048*5113495bSYour Name 2049*5113495bSYour Name /** 2050*5113495bSYour Name * enum set_antenna_mode_status - Status of set antenna mode 2051*5113495bSYour Name * command 2052*5113495bSYour Name * @SET_ANTENNA_MODE_STATUS_OK: command successful 2053*5113495bSYour Name * @SET_ANTENNA_MODE_STATUS_EINVAL: invalid antenna mode 2054*5113495bSYour Name * @SET_ANTENNA_MODE_STATUS_ECANCELED: mode change cancelled 2055*5113495bSYour Name * @SET_ANTENNA_MODE_STATUS_ENOTSUP: mode not supported 2056*5113495bSYour Name */ 2057*5113495bSYour Name enum set_antenna_mode_status { 2058*5113495bSYour Name SET_ANTENNA_MODE_STATUS_OK, 2059*5113495bSYour Name SET_ANTENNA_MODE_STATUS_EINVAL, 2060*5113495bSYour Name SET_ANTENNA_MODE_STATUS_ECANCELED, 2061*5113495bSYour Name SET_ANTENNA_MODE_STATUS_ENOTSUP, 2062*5113495bSYour Name }; 2063*5113495bSYour Name 2064*5113495bSYour Name /** 2065*5113495bSYour Name * struct sir_antenna_mode_resp - set antenna mode response 2066*5113495bSYour Name * @status: Status of setting the antenna mode 2067*5113495bSYour Name */ 2068*5113495bSYour Name struct sir_antenna_mode_resp { 2069*5113495bSYour Name enum set_antenna_mode_status status; 2070*5113495bSYour Name }; 2071*5113495bSYour Name 2072*5113495bSYour Name typedef struct sSirWlanExcludeUnencryptParam { 2073*5113495bSYour Name bool excludeUnencrypt; 2074*5113495bSYour Name struct qdf_mac_addr bssid; 2075*5113495bSYour Name } tSirWlanExcludeUnencryptParam, *tpSirWlanExcludeUnencryptParam; 2076*5113495bSYour Name 2077*5113495bSYour Name typedef enum { 2078*5113495bSYour Name P2P_SCAN_TYPE_SEARCH = 1, /* P2P Search */ 2079*5113495bSYour Name P2P_SCAN_TYPE_LISTEN /* P2P Listen */ 2080*5113495bSYour Name } tSirP2pScanType; 2081*5113495bSYour Name 2082*5113495bSYour Name typedef struct sAniHandoffReq { 2083*5113495bSYour Name /* Common for all types are requests */ 2084*5113495bSYour Name uint16_t msgType; /* message type is same as the request type */ 2085*5113495bSYour Name uint16_t msgLen; /* length of the entire request */ 2086*5113495bSYour Name uint8_t sessionId; 2087*5113495bSYour Name uint8_t bssid[QDF_MAC_ADDR_SIZE]; 2088*5113495bSYour Name uint32_t ch_freq; 2089*5113495bSYour Name uint8_t handoff_src; 2090*5113495bSYour Name } tAniHandoffReq, *tpAniHandoffReq; 2091*5113495bSYour Name 2092*5113495bSYour Name /** 2093*5113495bSYour Name * sir_scan_event_type - scan event types used in LIM 2094*5113495bSYour Name * @SIR_SCAN_EVENT_STARTED - scan command accepted by FW 2095*5113495bSYour Name * @SIR_SCAN_EVENT_COMPLETED - scan has been completed by FW 2096*5113495bSYour Name * @SIR_SCAN_EVENT_BSS_CHANNEL - FW is going to move to HOME channel 2097*5113495bSYour Name * @SIR_SCAN_EVENT_FOREIGN_CHANNEL - FW is going to move to FOREIGN channel 2098*5113495bSYour Name * @SIR_SCAN_EVENT_DEQUEUED - scan request got dequeued 2099*5113495bSYour Name * @SIR_SCAN_EVENT_PREEMPTED - preempted by other high priority scan 2100*5113495bSYour Name * @SIR_SCAN_EVENT_START_FAILED - scan start failed 2101*5113495bSYour Name * @SIR_SCAN_EVENT_RESTARTED - scan restarted 2102*5113495bSYour Name * @SIR_SCAN_EVENT_MAX - max value for event type 2103*5113495bSYour Name */ 2104*5113495bSYour Name enum sir_scan_event_type { 2105*5113495bSYour Name SIR_SCAN_EVENT_STARTED = 0x1, 2106*5113495bSYour Name SIR_SCAN_EVENT_COMPLETED = 0x2, 2107*5113495bSYour Name SIR_SCAN_EVENT_BSS_CHANNEL = 0x4, 2108*5113495bSYour Name SIR_SCAN_EVENT_FOREIGN_CHANNEL = 0x8, 2109*5113495bSYour Name SIR_SCAN_EVENT_DEQUEUED = 0x10, 2110*5113495bSYour Name SIR_SCAN_EVENT_PREEMPTED = 0x20, 2111*5113495bSYour Name SIR_SCAN_EVENT_START_FAILED = 0x40, 2112*5113495bSYour Name SIR_SCAN_EVENT_RESTARTED = 0x80, 2113*5113495bSYour Name SIR_SCAN_EVENT_MAX = 0x8000 2114*5113495bSYour Name }; 2115*5113495bSYour Name 2116*5113495bSYour Name typedef struct sSirScanOffloadEvent { 2117*5113495bSYour Name enum sir_scan_event_type event; 2118*5113495bSYour Name tSirResultCodes reasonCode; 2119*5113495bSYour Name uint32_t chanFreq; 2120*5113495bSYour Name uint32_t requestor; 2121*5113495bSYour Name uint32_t scanId; 2122*5113495bSYour Name tSirP2pScanType p2pScanType; 2123*5113495bSYour Name uint8_t sessionId; 2124*5113495bSYour Name } tSirScanOffloadEvent, *tpSirScanOffloadEvent; 2125*5113495bSYour Name 2126*5113495bSYour Name /** 2127*5113495bSYour Name * struct sSirUpdateChanParam - channel parameters 2128*5113495bSYour Name * @freq: Frequency of the channel 2129*5113495bSYour Name * @pwr: power level 2130*5113495bSYour Name * @dfsSet: is dfs supported or not 2131*5113495bSYour Name * @half_rate: is the channel operating at 10MHz 2132*5113495bSYour Name * @quarter_rate: is the channel operating at 5MHz 2133*5113495bSYour Name * @nan_disabled: is NAN disabled on @freq 2134*5113495bSYour Name */ 2135*5113495bSYour Name typedef struct sSirUpdateChanParam { 2136*5113495bSYour Name uint32_t freq; 2137*5113495bSYour Name uint8_t pwr; 2138*5113495bSYour Name bool dfsSet; 2139*5113495bSYour Name bool half_rate; 2140*5113495bSYour Name bool quarter_rate; 2141*5113495bSYour Name bool nan_disabled; 2142*5113495bSYour Name } tSirUpdateChanParam, *tpSirUpdateChanParam; 2143*5113495bSYour Name 2144*5113495bSYour Name typedef struct sSirUpdateChan { 2145*5113495bSYour Name uint8_t numChan; 2146*5113495bSYour Name uint8_t ht_en; 2147*5113495bSYour Name uint8_t vht_en; 2148*5113495bSYour Name uint8_t vht_24_en; 2149*5113495bSYour Name bool he_en; 2150*5113495bSYour Name bool eht_en; 2151*5113495bSYour Name QDF_FLEX_ARRAY(tSirUpdateChanParam, chanParam); 2152*5113495bSYour Name } tSirUpdateChanList, *tpSirUpdateChanList; 2153*5113495bSYour Name 2154*5113495bSYour Name typedef enum eSirAddonPsReq { 2155*5113495bSYour Name eSIR_ADDON_NOTHING, 2156*5113495bSYour Name eSIR_ADDON_ENABLE_UAPSD, 2157*5113495bSYour Name eSIR_ADDON_DISABLE_UAPSD 2158*5113495bSYour Name } tSirAddonPsReq; 2159*5113495bSYour Name 2160*5113495bSYour Name #ifdef FEATURE_WLAN_CH_AVOID 2161*5113495bSYour Name typedef struct sSirChAvoidUpdateReq { 2162*5113495bSYour Name uint32_t reserved_param; 2163*5113495bSYour Name } tSirChAvoidUpdateReq; 2164*5113495bSYour Name #endif /* FEATURE_WLAN_CH_AVOID */ 2165*5113495bSYour Name 2166*5113495bSYour Name struct link_speed_info { 2167*5113495bSYour Name /* MAC Address for the peer */ 2168*5113495bSYour Name struct qdf_mac_addr peer_macaddr; 2169*5113495bSYour Name uint32_t estLinkSpeed; /* Linkspeed from firmware */ 2170*5113495bSYour Name }; 2171*5113495bSYour Name 2172*5113495bSYour Name /** 2173*5113495bSYour Name * struct sir_isolation_resp - isolation info related structure 2174*5113495bSYour Name * @isolation_chain0: isolation value for chain 0 2175*5113495bSYour Name * @isolation_chain1: isolation value for chain 1 2176*5113495bSYour Name * @isolation_chain2: isolation value for chain 2 2177*5113495bSYour Name * @isolation_chain3: isolation value for chain 3 2178*5113495bSYour Name */ 2179*5113495bSYour Name struct sir_isolation_resp { 2180*5113495bSYour Name uint32_t isolation_chain0:8, 2181*5113495bSYour Name isolation_chain1:8, 2182*5113495bSYour Name isolation_chain2:8, 2183*5113495bSYour Name isolation_chain3:8; 2184*5113495bSYour Name }; 2185*5113495bSYour Name 2186*5113495bSYour Name typedef struct sSirAddPeriodicTxPtrn { 2187*5113495bSYour Name /* MAC Address for the adapter */ 2188*5113495bSYour Name struct qdf_mac_addr mac_address; 2189*5113495bSYour Name uint8_t ucPtrnId; /* Pattern ID */ 2190*5113495bSYour Name uint16_t ucPtrnSize; /* Pattern size */ 2191*5113495bSYour Name uint32_t usPtrnIntervalMs; /* In msec */ 2192*5113495bSYour Name uint8_t ucPattern[PERIODIC_TX_PTRN_MAX_SIZE]; /* Pattern buffer */ 2193*5113495bSYour Name } tSirAddPeriodicTxPtrn, *tpSirAddPeriodicTxPtrn; 2194*5113495bSYour Name 2195*5113495bSYour Name typedef struct sSirDelPeriodicTxPtrn { 2196*5113495bSYour Name /* MAC Address for the adapter */ 2197*5113495bSYour Name struct qdf_mac_addr mac_address; 2198*5113495bSYour Name uint8_t ucPtrnId; /* Pattern ID */ 2199*5113495bSYour Name } tSirDelPeriodicTxPtrn, *tpSirDelPeriodicTxPtrn; 2200*5113495bSYour Name 2201*5113495bSYour Name #ifdef WLAN_FEATURE_EXTWOW_SUPPORT 2202*5113495bSYour Name typedef struct { 2203*5113495bSYour Name uint16_t mesgType; 2204*5113495bSYour Name uint16_t mesgLen; 2205*5113495bSYour Name bool status; 2206*5113495bSYour Name } tSirReadyToExtWoWInd, *tpSirReadyToExtWoWInd; 2207*5113495bSYour Name #endif 2208*5113495bSYour Name typedef struct sSirRateUpdateInd { 2209*5113495bSYour Name uint8_t nss; /* 0: 1x1, 1: 2x2 */ 2210*5113495bSYour Name struct qdf_mac_addr bssid; 2211*5113495bSYour Name enum QDF_OPMODE dev_mode; 2212*5113495bSYour Name int32_t bcastDataRate; /* bcast rate unit Mbpsx10, -1:not used */ 2213*5113495bSYour Name 2214*5113495bSYour Name /* 2215*5113495bSYour Name * 0 implies MCAST RA, positive value implies fixed rate, 2216*5113495bSYour Name * -1 implies ignore this param 2217*5113495bSYour Name */ 2218*5113495bSYour Name int32_t reliableMcastDataRate; /* unit Mbpsx10 */ 2219*5113495bSYour Name 2220*5113495bSYour Name /* TX flag to differentiate between HT20, HT40 etc */ 2221*5113495bSYour Name enum tx_rate_info reliableMcastDataRateTxFlag; 2222*5113495bSYour Name 2223*5113495bSYour Name /* 2224*5113495bSYour Name * MCAST(or BCAST) fixed data rate in 2.4 GHz, unit Mbpsx10, 2225*5113495bSYour Name * 0 implies ignore 2226*5113495bSYour Name */ 2227*5113495bSYour Name uint32_t mcastDataRate24GHz; 2228*5113495bSYour Name 2229*5113495bSYour Name /* TX flag to differentiate between HT20, HT40 etc */ 2230*5113495bSYour Name enum tx_rate_info mcastDataRate24GHzTxFlag; 2231*5113495bSYour Name 2232*5113495bSYour Name /* 2233*5113495bSYour Name * MCAST(or BCAST) fixed data rate in 5 GHz, 2234*5113495bSYour Name * unit Mbpsx10, 0 implies ignore 2235*5113495bSYour Name */ 2236*5113495bSYour Name uint32_t mcastDataRate5GHz; 2237*5113495bSYour Name 2238*5113495bSYour Name /* TX flag to differentiate between HT20, HT40 etc */ 2239*5113495bSYour Name enum tx_rate_info mcastDataRate5GHzTxFlag; 2240*5113495bSYour Name 2241*5113495bSYour Name } tSirRateUpdateInd, *tpSirRateUpdateInd; 2242*5113495bSYour Name 2243*5113495bSYour Name #define SIR_DFS_MAX_20M_SUB_CH 8 2244*5113495bSYour Name #define SIR_80MHZ_START_CENTER_CH_DIFF 6 2245*5113495bSYour Name 2246*5113495bSYour Name typedef struct sSirSmeDfsChannelList { 2247*5113495bSYour Name uint32_t nchannels; 2248*5113495bSYour Name /* Ch num including bonded channels on which the RADAR is present */ 2249*5113495bSYour Name uint8_t channels[SIR_DFS_MAX_20M_SUB_CH]; 2250*5113495bSYour Name } tSirSmeDfsChannelList, *tpSirSmeDfsChannelList; 2251*5113495bSYour Name 2252*5113495bSYour Name typedef struct sSirChanChangeResponse { 2253*5113495bSYour Name uint8_t sessionId; 2254*5113495bSYour Name uint32_t new_op_freq; 2255*5113495bSYour Name uint8_t channelChangeStatus; 2256*5113495bSYour Name } tSirChanChangeResponse, *tpSirChanChangeResponse; 2257*5113495bSYour Name 2258*5113495bSYour Name typedef struct sSirStartBeaconIndication { 2259*5113495bSYour Name uint16_t messageType; 2260*5113495bSYour Name uint16_t messageLen; 2261*5113495bSYour Name uint8_t beaconStartStatus; 2262*5113495bSYour Name uint8_t bssid[QDF_MAC_ADDR_SIZE]; 2263*5113495bSYour Name } tSirStartBeaconIndication, *tpSirStartBeaconIndication; 2264*5113495bSYour Name 2265*5113495bSYour Name /* additional IE type */ 2266*5113495bSYour Name typedef enum tUpdateIEsType { 2267*5113495bSYour Name eUPDATE_IE_NONE, 2268*5113495bSYour Name eUPDATE_IE_PROBE_BCN, 2269*5113495bSYour Name eUPDATE_IE_PROBE_RESP, 2270*5113495bSYour Name eUPDATE_IE_ASSOC_RESP, 2271*5113495bSYour Name 2272*5113495bSYour Name /* Add type above this line */ 2273*5113495bSYour Name /* this is used to reset all buffer */ 2274*5113495bSYour Name eUPDATE_IE_ALL, 2275*5113495bSYour Name eUPDATE_IE_MAX 2276*5113495bSYour Name } eUpdateIEsType; 2277*5113495bSYour Name 2278*5113495bSYour Name /* Modify particular IE in addition IE for prob resp Bcn */ 2279*5113495bSYour Name typedef struct sSirModifyIE { 2280*5113495bSYour Name struct qdf_mac_addr bssid; 2281*5113495bSYour Name uint16_t vdev_id; 2282*5113495bSYour Name bool notify; 2283*5113495bSYour Name uint8_t ieID; 2284*5113495bSYour Name uint8_t ieIDLen; /*ie length as per spec */ 2285*5113495bSYour Name uint16_t ieBufferlength; 2286*5113495bSYour Name uint8_t *pIEBuffer; 2287*5113495bSYour Name int32_t oui_length; 2288*5113495bSYour Name 2289*5113495bSYour Name } tSirModifyIE, *tpSirModifyIE; 2290*5113495bSYour Name 2291*5113495bSYour Name struct send_add_ba_req { 2292*5113495bSYour Name uint8_t mac_addr[QDF_MAC_ADDR_SIZE]; 2293*5113495bSYour Name struct addba_send_params param; 2294*5113495bSYour Name }; 2295*5113495bSYour Name 2296*5113495bSYour Name /* Message format for Update IE message sent to PE */ 2297*5113495bSYour Name typedef struct sSirModifyIEsInd { 2298*5113495bSYour Name uint16_t msgType; 2299*5113495bSYour Name uint16_t msgLen; 2300*5113495bSYour Name tSirModifyIE modifyIE; 2301*5113495bSYour Name eUpdateIEsType updateType; 2302*5113495bSYour Name } tSirModifyIEsInd, *tpSirModifyIEsInd; 2303*5113495bSYour Name 2304*5113495bSYour Name /* Message format for Update IE message sent to PE */ 2305*5113495bSYour Name typedef struct sSirUpdateIE { 2306*5113495bSYour Name struct qdf_mac_addr bssid; 2307*5113495bSYour Name uint16_t vdev_id; 2308*5113495bSYour Name bool append; 2309*5113495bSYour Name bool notify; 2310*5113495bSYour Name uint16_t ieBufferlength; 2311*5113495bSYour Name uint8_t *pAdditionIEBuffer; 2312*5113495bSYour Name } tSirUpdateIE, *tpSirUpdateIE; 2313*5113495bSYour Name 2314*5113495bSYour Name /* Message format for Update IE message sent to PE */ 2315*5113495bSYour Name typedef struct sSirUpdateIEsInd { 2316*5113495bSYour Name uint16_t msgType; 2317*5113495bSYour Name uint16_t msgLen; 2318*5113495bSYour Name tSirUpdateIE updateIE; 2319*5113495bSYour Name eUpdateIEsType updateType; 2320*5113495bSYour Name } tSirUpdateIEsInd, *tpSirUpdateIEsInd; 2321*5113495bSYour Name 2322*5113495bSYour Name /* Message format for requesting channel switch announcement to lower layers */ 2323*5113495bSYour Name typedef struct sSirDfsCsaIeRequest { 2324*5113495bSYour Name uint16_t msgType; 2325*5113495bSYour Name uint16_t msgLen; 2326*5113495bSYour Name uint32_t target_chan_freq; 2327*5113495bSYour Name uint8_t csaIeRequired; 2328*5113495bSYour Name uint8_t bssid[QDF_MAC_ADDR_SIZE]; 2329*5113495bSYour Name struct ch_params ch_params; 2330*5113495bSYour Name uint8_t ch_switch_beacon_cnt; 2331*5113495bSYour Name uint8_t ch_switch_mode; 2332*5113495bSYour Name uint8_t dfs_ch_switch_disable; 2333*5113495bSYour Name uint32_t new_chan_cac_ms; 2334*5113495bSYour Name } tSirDfsCsaIeRequest, *tpSirDfsCsaIeRequest; 2335*5113495bSYour Name 2336*5113495bSYour Name /* Indication from lower layer indicating the completion of first beacon send 2337*5113495bSYour Name * after the beacon template update 2338*5113495bSYour Name */ 2339*5113495bSYour Name typedef struct sSirFirstBeaconTxCompleteInd { 2340*5113495bSYour Name uint16_t messageType; /* eWNI_SME_MISSED_BEACON_IND */ 2341*5113495bSYour Name uint16_t length; 2342*5113495bSYour Name uint8_t bss_idx; 2343*5113495bSYour Name } tSirFirstBeaconTxCompleteInd, *tpSirFirstBeaconTxCompleteInd; 2344*5113495bSYour Name 2345*5113495bSYour Name typedef struct sSirSmeCSAIeTxCompleteRsp { 2346*5113495bSYour Name uint8_t sessionId; 2347*5113495bSYour Name uint8_t chanSwIeTxStatus; 2348*5113495bSYour Name } tSirSmeCSAIeTxCompleteRsp, *tpSirSmeCSAIeTxCompleteRsp; 2349*5113495bSYour Name 2350*5113495bSYour Name /* Thermal Mitigation*/ 2351*5113495bSYour Name 2352*5113495bSYour Name typedef struct { 2353*5113495bSYour Name uint16_t minTempThreshold; 2354*5113495bSYour Name uint16_t maxTempThreshold; 2355*5113495bSYour Name } t_thermal_level_info, *tp_thermal_level_info; 2356*5113495bSYour Name 2357*5113495bSYour Name typedef enum { 2358*5113495bSYour Name WLAN_WMA_THERMAL_LEVEL_0, 2359*5113495bSYour Name WLAN_WMA_THERMAL_LEVEL_1, 2360*5113495bSYour Name WLAN_WMA_THERMAL_LEVEL_2, 2361*5113495bSYour Name WLAN_WMA_THERMAL_LEVEL_3, 2362*5113495bSYour Name WLAN_WMA_THERMAL_LEVEL_4, 2363*5113495bSYour Name WLAN_WMA_THERMAL_LEVEL_5, 2364*5113495bSYour Name WLAN_WMA_MAX_THERMAL_LEVELS 2365*5113495bSYour Name } t_thermal_level; 2366*5113495bSYour Name 2367*5113495bSYour Name #define WLAN_THROTTLE_DUTY_CYCLE_LEVEL_MAX (6) 2368*5113495bSYour Name 2369*5113495bSYour Name typedef struct { 2370*5113495bSYour Name /* Array of thermal levels */ 2371*5113495bSYour Name t_thermal_level_info thermalLevels[WLAN_WMA_MAX_THERMAL_LEVELS]; 2372*5113495bSYour Name uint8_t thermalCurrLevel; 2373*5113495bSYour Name uint8_t thermalMgmtEnabled; 2374*5113495bSYour Name uint32_t throttlePeriod; 2375*5113495bSYour Name uint8_t throttle_duty_cycle_tbl[WLAN_THROTTLE_DUTY_CYCLE_LEVEL_MAX]; 2376*5113495bSYour Name enum thermal_mgmt_action_code thermal_action; 2377*5113495bSYour Name } t_thermal_mgmt, *tp_thermal_mgmt; 2378*5113495bSYour Name 2379*5113495bSYour Name struct tx_power_limit { 2380*5113495bSYour Name /* Thermal limits for 2g and 5g */ 2381*5113495bSYour Name uint32_t txPower2g; 2382*5113495bSYour Name uint32_t txPower5g; 2383*5113495bSYour Name }; 2384*5113495bSYour Name 2385*5113495bSYour Name enum bad_peer_thresh_levels { 2386*5113495bSYour Name WLAN_WMA_IEEE80211_B_LEVEL = 0, 2387*5113495bSYour Name WLAN_WMA_IEEE80211_AG_LEVEL, 2388*5113495bSYour Name WLAN_WMA_IEEE80211_N_LEVEL, 2389*5113495bSYour Name WLAN_WMA_IEEE80211_AC_LEVEL, 2390*5113495bSYour Name WLAN_WMA_IEEE80211_AX_LEVEL, 2391*5113495bSYour Name WLAN_WMA_IEEE80211_MAX_LEVEL, 2392*5113495bSYour Name }; 2393*5113495bSYour Name 2394*5113495bSYour Name #define NUM_OF_RATE_THRESH_MAX (4) 2395*5113495bSYour Name struct t_bad_peer_info { 2396*5113495bSYour Name uint32_t cond; 2397*5113495bSYour Name uint32_t delta; 2398*5113495bSYour Name uint32_t percentage; 2399*5113495bSYour Name uint32_t thresh[NUM_OF_RATE_THRESH_MAX]; 2400*5113495bSYour Name uint32_t txlimit; 2401*5113495bSYour Name }; 2402*5113495bSYour Name 2403*5113495bSYour Name struct t_bad_peer_txtcl_config { 2404*5113495bSYour Name /* Array of thermal levels */ 2405*5113495bSYour Name struct t_bad_peer_info threshold[WLAN_WMA_IEEE80211_MAX_LEVEL]; 2406*5113495bSYour Name uint32_t enable; 2407*5113495bSYour Name uint32_t period; 2408*5113495bSYour Name uint32_t txq_limit; 2409*5113495bSYour Name uint32_t tgt_backoff; 2410*5113495bSYour Name uint32_t tgt_report_prd; 2411*5113495bSYour Name }; 2412*5113495bSYour Name 2413*5113495bSYour Name /* notify MODEM power state to FW */ 2414*5113495bSYour Name typedef struct { 2415*5113495bSYour Name uint32_t param; 2416*5113495bSYour Name } tSirModemPowerStateInd, *tpSirModemPowerStateInd; 2417*5113495bSYour Name 2418*5113495bSYour Name #ifdef WLAN_FEATURE_STATS_EXT 2419*5113495bSYour Name typedef struct { 2420*5113495bSYour Name uint32_t vdev_id; 2421*5113495bSYour Name uint32_t event_data_len; 2422*5113495bSYour Name uint8_t event_data[]; 2423*5113495bSYour Name } tSirStatsExtEvent, *tpSirStatsExtEvent; 2424*5113495bSYour Name #endif 2425*5113495bSYour Name 2426*5113495bSYour Name /** 2427*5113495bSYour Name * struct sir_wisa_params - WISA Mode Parameters 2428*5113495bSYour Name * @mode: WISA mode 2429*5113495bSYour Name * @session_id: Session ID of vdev 2430*5113495bSYour Name */ 2431*5113495bSYour Name struct sir_wisa_params { 2432*5113495bSYour Name bool mode; 2433*5113495bSYour Name uint8_t vdev_id; 2434*5113495bSYour Name }; 2435*5113495bSYour Name 2436*5113495bSYour Name /** 2437*5113495bSYour Name * typedef enum wifi_scan_flags - wifi scan flags 2438*5113495bSYour Name * @WIFI_SCAN_FLAG_INTERRUPTED: Indicates that scan results are not complete 2439*5113495bSYour Name * because probes were not sent on some channels 2440*5113495bSYour Name */ 2441*5113495bSYour Name typedef enum { 2442*5113495bSYour Name WIFI_SCAN_FLAG_INTERRUPTED = 1, 2443*5113495bSYour Name } wifi_scan_flags; 2444*5113495bSYour Name 2445*5113495bSYour Name typedef enum { 2446*5113495bSYour Name WIFI_BAND_UNSPECIFIED, 2447*5113495bSYour Name WIFI_BAND_BG = 1, /* 2.4 GHz */ 2448*5113495bSYour Name WIFI_BAND_A = 2, /* 5 GHz without DFS */ 2449*5113495bSYour Name WIFI_BAND_ABG = 3, /* 2.4 GHz + 5 GHz; no DFS */ 2450*5113495bSYour Name WIFI_BAND_A_DFS_ONLY = 4, /* 5 GHz DFS only */ 2451*5113495bSYour Name /* 5 is reserved */ 2452*5113495bSYour Name WIFI_BAND_A_WITH_DFS = 6, /* 5 GHz with DFS */ 2453*5113495bSYour Name WIFI_BAND_ABG_WITH_DFS = 7, /* 2.4 GHz + 5 GHz with DFS */ 2454*5113495bSYour Name 2455*5113495bSYour Name /* Keep it last */ 2456*5113495bSYour Name WIFI_BAND_MAX 2457*5113495bSYour Name } tWifiBand; 2458*5113495bSYour Name 2459*5113495bSYour Name #ifdef FEATURE_WLAN_EXTSCAN 2460*5113495bSYour Name 2461*5113495bSYour Name #define WLAN_EXTSCAN_MAX_CHANNELS 36 2462*5113495bSYour Name #define WLAN_EXTSCAN_MAX_BUCKETS 16 2463*5113495bSYour Name #define WLAN_EXTSCAN_MAX_SIGNIFICANT_CHANGE_APS 64 2464*5113495bSYour Name 2465*5113495bSYour Name typedef enum { 2466*5113495bSYour Name eSIR_EXTSCAN_INVALID, 2467*5113495bSYour Name eSIR_EXTSCAN_START_RSP, 2468*5113495bSYour Name eSIR_EXTSCAN_STOP_RSP, 2469*5113495bSYour Name eSIR_EXTSCAN_CACHED_RESULTS_RSP, 2470*5113495bSYour Name eSIR_EXTSCAN_SET_BSSID_HOTLIST_RSP, 2471*5113495bSYour Name eSIR_EXTSCAN_RESET_BSSID_HOTLIST_RSP, 2472*5113495bSYour Name eSIR_EXTSCAN_SET_SIGNIFICANT_WIFI_CHANGE_RSP, 2473*5113495bSYour Name eSIR_EXTSCAN_RESET_SIGNIFICANT_WIFI_CHANGE_RSP, 2474*5113495bSYour Name 2475*5113495bSYour Name eSIR_EXTSCAN_GET_CAPABILITIES_IND, 2476*5113495bSYour Name eSIR_EXTSCAN_HOTLIST_MATCH_IND, 2477*5113495bSYour Name eSIR_EXTSCAN_SIGNIFICANT_WIFI_CHANGE_RESULTS_IND, 2478*5113495bSYour Name eSIR_EXTSCAN_CACHED_RESULTS_IND, 2479*5113495bSYour Name eSIR_EXTSCAN_SCAN_RES_AVAILABLE_IND, 2480*5113495bSYour Name eSIR_EXTSCAN_SCAN_PROGRESS_EVENT_IND, 2481*5113495bSYour Name eSIR_EXTSCAN_FULL_SCAN_RESULT_IND, 2482*5113495bSYour Name eSIR_EPNO_NETWORK_FOUND_IND, 2483*5113495bSYour Name eSIR_PASSPOINT_NETWORK_FOUND_IND, 2484*5113495bSYour Name eSIR_EXTSCAN_SET_SSID_HOTLIST_RSP, 2485*5113495bSYour Name eSIR_EXTSCAN_RESET_SSID_HOTLIST_RSP, 2486*5113495bSYour Name 2487*5113495bSYour Name /* Keep this last */ 2488*5113495bSYour Name eSIR_EXTSCAN_CALLBACK_TYPE_MAX, 2489*5113495bSYour Name } tSirExtScanCallbackType; 2490*5113495bSYour Name 2491*5113495bSYour Name /** 2492*5113495bSYour Name * enum wifi_extscan_event_type - extscan event type 2493*5113495bSYour Name * @WIFI_EXTSCAN_RESULTS_AVAILABLE: reported when REPORT_EVENTS_EACH_SCAN is set 2494*5113495bSYour Name * and a scan cycle completes. WIFI_SCAN_THRESHOLD_NUM_SCANS or 2495*5113495bSYour Name * WIFI_SCAN_THRESHOLD_PERCENT can be reported instead if the 2496*5113495bSYour Name * reason for the event is available; however, at most one of 2497*5113495bSYour Name * these events should be reported per scan. 2498*5113495bSYour Name * @WIFI_EXTSCAN_THRESHOLD_NUM_SCANS: can be reported when 2499*5113495bSYour Name * REPORT_EVENTS_EACH_SCAN is not set and 2500*5113495bSYour Name * report_threshold_num_scans is reached. 2501*5113495bSYour Name * @WIFI_EXTSCAN_THRESHOLD_PERCENT: can be reported when REPORT_EVENTS_EACH_SCAN 2502*5113495bSYour Name * is not set and report_threshold_percent is reached. 2503*5113495bSYour Name * @WIFI_SCAN_DISABLED: reported when currently executing gscans are disabled 2504*5113495bSYour Name * start_gscan will need to be called again in order to continue 2505*5113495bSYour Name * scanning. 2506*5113495bSYour Name * @WIFI_EXTSCAN_BUCKET_STARTED_EVENT: Bucket started event 2507*5113495bSYour Name * This event is consumed in driver only. 2508*5113495bSYour Name * @WIFI_EXTSCAN_CYCLE_STARTED_EVENT: Cycle started event. 2509*5113495bSYour Name * This event is consumed in driver only. 2510*5113495bSYour Name * @WIFI_EXTSCAN_CYCLE_COMPLETED_EVENT: Cycle complete event. This event 2511*5113495bSYour Name * triggers @WIFI_EXTSCAN_RESULTS_AVAILABLE to the user space. 2512*5113495bSYour Name */ 2513*5113495bSYour Name enum wifi_extscan_event_type { 2514*5113495bSYour Name WIFI_EXTSCAN_RESULTS_AVAILABLE, 2515*5113495bSYour Name WIFI_EXTSCAN_THRESHOLD_NUM_SCANS, 2516*5113495bSYour Name WIFI_EXTSCAN_THRESHOLD_PERCENT, 2517*5113495bSYour Name WIFI_SCAN_DISABLED, 2518*5113495bSYour Name 2519*5113495bSYour Name WIFI_EXTSCAN_BUCKET_STARTED_EVENT = 0x10, 2520*5113495bSYour Name WIFI_EXTSCAN_CYCLE_STARTED_EVENT, 2521*5113495bSYour Name WIFI_EXTSCAN_CYCLE_COMPLETED_EVENT, 2522*5113495bSYour Name }; 2523*5113495bSYour Name 2524*5113495bSYour Name /** 2525*5113495bSYour Name * enum extscan_configuration_flags - extscan config flags 2526*5113495bSYour Name * @EXTSCAN_LP_EXTENDED_BATCHING: extended batching 2527*5113495bSYour Name */ 2528*5113495bSYour Name enum extscan_configuration_flags { 2529*5113495bSYour Name EXTSCAN_LP_EXTENDED_BATCHING = 0x00000001, 2530*5113495bSYour Name }; 2531*5113495bSYour Name 2532*5113495bSYour Name /** 2533*5113495bSYour Name * struct ext_scan_capabilities_response - extscan capabilities response data 2534*5113495bSYour Name * @requestId: request identifier 2535*5113495bSYour Name * @status: status 2536*5113495bSYour Name * @max_scan_cache_size: total space allocated for scan (in bytes) 2537*5113495bSYour Name * @max_scan_buckets: maximum number of channel buckets 2538*5113495bSYour Name * @max_ap_cache_per_scan: maximum number of APs that can be stored per scan 2539*5113495bSYour Name * @max_rssi_sample_size: number of RSSI samples used for averaging RSSI 2540*5113495bSYour Name * @ax_scan_reporting_threshold: max possible report_threshold 2541*5113495bSYour Name * @max_hotlist_bssids: maximum number of entries for hotlist APs 2542*5113495bSYour Name * @max_significant_wifi_change_aps: maximum number of entries for 2543*5113495bSYour Name * significant wifi change APs 2544*5113495bSYour Name * @max_bssid_history_entries: number of BSSID/RSSI entries that device can hold 2545*5113495bSYour Name * @max_hotlist_ssids: maximum number of entries for hotlist SSIDs 2546*5113495bSYour Name * @max_number_epno_networks: max number of epno entries 2547*5113495bSYour Name * @max_number_epno_networks_by_ssid: max number of epno entries 2548*5113495bSYour Name * if ssid is specified, that is, epno entries for 2549*5113495bSYour Name * which an exact match is required, 2550*5113495bSYour Name * or entries corresponding to hidden ssids 2551*5113495bSYour Name * @max_number_of_allow_listed_ssid: max number of allow listed SSIDs 2552*5113495bSYour Name * @max_number_of_deny_listed_bssid: max number of deny listed BSSIDs 2553*5113495bSYour Name */ 2554*5113495bSYour Name struct ext_scan_capabilities_response { 2555*5113495bSYour Name uint32_t requestId; 2556*5113495bSYour Name uint32_t status; 2557*5113495bSYour Name 2558*5113495bSYour Name uint32_t max_scan_cache_size; 2559*5113495bSYour Name uint32_t max_scan_buckets; 2560*5113495bSYour Name uint32_t max_ap_cache_per_scan; 2561*5113495bSYour Name uint32_t max_rssi_sample_size; 2562*5113495bSYour Name uint32_t max_scan_reporting_threshold; 2563*5113495bSYour Name 2564*5113495bSYour Name uint32_t max_hotlist_bssids; 2565*5113495bSYour Name uint32_t max_significant_wifi_change_aps; 2566*5113495bSYour Name 2567*5113495bSYour Name uint32_t max_bssid_history_entries; 2568*5113495bSYour Name uint32_t max_hotlist_ssids; 2569*5113495bSYour Name uint32_t max_number_epno_networks; 2570*5113495bSYour Name uint32_t max_number_epno_networks_by_ssid; 2571*5113495bSYour Name uint32_t max_number_of_allow_listed_ssid; 2572*5113495bSYour Name uint32_t max_number_of_deny_listed_bssid; 2573*5113495bSYour Name }; 2574*5113495bSYour Name 2575*5113495bSYour Name typedef struct { 2576*5113495bSYour Name /* Time of discovery */ 2577*5113495bSYour Name uint64_t ts; 2578*5113495bSYour Name 2579*5113495bSYour Name /* Null terminated SSID */ 2580*5113495bSYour Name uint8_t ssid[WLAN_SSID_MAX_LEN + 1]; 2581*5113495bSYour Name 2582*5113495bSYour Name struct qdf_mac_addr bssid; 2583*5113495bSYour Name 2584*5113495bSYour Name /* Frequency in MHz */ 2585*5113495bSYour Name uint32_t channel; 2586*5113495bSYour Name 2587*5113495bSYour Name /* RSSI in dBm */ 2588*5113495bSYour Name int32_t rssi; 2589*5113495bSYour Name 2590*5113495bSYour Name /* RTT in nanoseconds */ 2591*5113495bSYour Name uint32_t rtt; 2592*5113495bSYour Name 2593*5113495bSYour Name /* Standard deviation in rtt */ 2594*5113495bSYour Name uint32_t rtt_sd; 2595*5113495bSYour Name 2596*5113495bSYour Name /* Period advertised in the beacon */ 2597*5113495bSYour Name uint16_t beaconPeriod; 2598*5113495bSYour Name 2599*5113495bSYour Name /* Capabilities advertised in the beacon */ 2600*5113495bSYour Name uint16_t capability; 2601*5113495bSYour Name 2602*5113495bSYour Name uint16_t ieLength; 2603*5113495bSYour Name 2604*5113495bSYour Name uint8_t ieData[]; 2605*5113495bSYour Name } tSirWifiScanResult, *tpSirWifiScanResult; 2606*5113495bSYour Name 2607*5113495bSYour Name /** 2608*5113495bSYour Name * struct extscan_hotlist_match - extscan hotlist match 2609*5113495bSYour Name * @requestId: request identifier 2610*5113495bSYour Name * @numOfAps: number of bssids retrieved by the scan 2611*5113495bSYour Name * @moreData: 0 - for last fragment 2612*5113495bSYour Name * 1 - still more fragment(s) coming 2613*5113495bSYour Name * @ap: wifi scan result 2614*5113495bSYour Name */ 2615*5113495bSYour Name struct extscan_hotlist_match { 2616*5113495bSYour Name uint32_t requestId; 2617*5113495bSYour Name bool moreData; 2618*5113495bSYour Name bool ap_found; 2619*5113495bSYour Name uint32_t numOfAps; 2620*5113495bSYour Name tSirWifiScanResult ap[]; 2621*5113495bSYour Name }; 2622*5113495bSYour Name 2623*5113495bSYour Name /** 2624*5113495bSYour Name * struct extscan_cached_scan_result - extscan cached scan result 2625*5113495bSYour Name * @scan_id: a unique identifier for the scan unit 2626*5113495bSYour Name * @flags: a bitmask with additional information about scan 2627*5113495bSYour Name * @num_results: number of bssids retrieved by the scan 2628*5113495bSYour Name * @buckets_scanned: bitmask of buckets scanned in current extscan cycle 2629*5113495bSYour Name * @ap: wifi scan bssid results info 2630*5113495bSYour Name */ 2631*5113495bSYour Name struct extscan_cached_scan_result { 2632*5113495bSYour Name uint32_t scan_id; 2633*5113495bSYour Name uint32_t flags; 2634*5113495bSYour Name uint32_t num_results; 2635*5113495bSYour Name uint32_t buckets_scanned; 2636*5113495bSYour Name tSirWifiScanResult *ap; 2637*5113495bSYour Name }; 2638*5113495bSYour Name 2639*5113495bSYour Name /** 2640*5113495bSYour Name * struct extscan_cached_scan_results - extscan cached scan results 2641*5113495bSYour Name * @request_id: request identifier 2642*5113495bSYour Name * @more_data: 0 - for last fragment 2643*5113495bSYour Name * 1 - still more fragment(s) coming 2644*5113495bSYour Name * @num_scan_ids: number of scan ids 2645*5113495bSYour Name * @result: wifi scan result 2646*5113495bSYour Name */ 2647*5113495bSYour Name struct extscan_cached_scan_results { 2648*5113495bSYour Name uint32_t request_id; 2649*5113495bSYour Name bool more_data; 2650*5113495bSYour Name uint32_t num_scan_ids; 2651*5113495bSYour Name struct extscan_cached_scan_result *result; 2652*5113495bSYour Name }; 2653*5113495bSYour Name 2654*5113495bSYour Name 2655*5113495bSYour Name /** 2656*5113495bSYour Name * struct tSirWifiFullScanResultEvent - extscan full scan event 2657*5113495bSYour Name * @request_id: request identifier 2658*5113495bSYour Name * @moreData: 0 - for last fragment 2659*5113495bSYour Name * 1 - still more fragment(s) coming 2660*5113495bSYour Name * @ap: bssid info 2661*5113495bSYour Name * 2662*5113495bSYour Name * Reported when each probe response is received, if report_events 2663*5113495bSYour Name * enabled in struct wifi_scan_cmd_req_params 2664*5113495bSYour Name */ 2665*5113495bSYour Name typedef struct { 2666*5113495bSYour Name uint32_t requestId; 2667*5113495bSYour Name bool moreData; 2668*5113495bSYour Name tSirWifiScanResult ap; 2669*5113495bSYour Name } tSirWifiFullScanResultEvent, *tpSirWifiFullScanResultEvent; 2670*5113495bSYour Name 2671*5113495bSYour Name /** 2672*5113495bSYour Name * struct pno_match_found - epno match found 2673*5113495bSYour Name * @request_id: request identifier 2674*5113495bSYour Name * @moreData: 0 - for last fragment 2675*5113495bSYour Name * 1 - still more fragment(s) coming 2676*5113495bSYour Name * @num_results: number of bssids, driver sends this event to upper layer 2677*5113495bSYour Name * for every beacon, hence %num_results is always set to 1. 2678*5113495bSYour Name * @ap: bssid info 2679*5113495bSYour Name * 2680*5113495bSYour Name * Reported when each beacon probe response is received with 2681*5113495bSYour Name * epno match found tag. 2682*5113495bSYour Name */ 2683*5113495bSYour Name struct pno_match_found { 2684*5113495bSYour Name uint32_t request_id; 2685*5113495bSYour Name bool more_data; 2686*5113495bSYour Name uint32_t num_results; 2687*5113495bSYour Name tSirWifiScanResult ap[]; 2688*5113495bSYour Name }; 2689*5113495bSYour Name 2690*5113495bSYour Name /** 2691*5113495bSYour Name * struct sir_extscan_generic_response - 2692*5113495bSYour Name * Generic ExtScan Response structure 2693*5113495bSYour Name * @request_id: ID of the request 2694*5113495bSYour Name * @status: operation status returned by firmware 2695*5113495bSYour Name */ 2696*5113495bSYour Name struct sir_extscan_generic_response { 2697*5113495bSYour Name uint32_t request_id; 2698*5113495bSYour Name uint32_t status; 2699*5113495bSYour Name }; 2700*5113495bSYour Name 2701*5113495bSYour Name typedef struct { 2702*5113495bSYour Name struct qdf_mac_addr bssid; 2703*5113495bSYour Name uint32_t channel; 2704*5113495bSYour Name uint32_t numOfRssi; 2705*5113495bSYour Name 2706*5113495bSYour Name /* Rssi history in db */ 2707*5113495bSYour Name int32_t rssi[]; 2708*5113495bSYour Name } tSirWifiSignificantChange, *tpSirWifiSignificantChange; 2709*5113495bSYour Name 2710*5113495bSYour Name typedef struct { 2711*5113495bSYour Name uint32_t requestId; 2712*5113495bSYour Name 2713*5113495bSYour Name bool moreData; 2714*5113495bSYour Name uint32_t numResults; 2715*5113495bSYour Name tSirWifiSignificantChange ap[]; 2716*5113495bSYour Name } tSirWifiSignificantChangeEvent, *tpSirWifiSignificantChangeEvent; 2717*5113495bSYour Name 2718*5113495bSYour Name typedef struct { 2719*5113495bSYour Name uint32_t requestId; 2720*5113495bSYour Name uint32_t numResultsAvailable; 2721*5113495bSYour Name } tSirExtScanResultsAvailableIndParams, *tpSirExtScanResultsAvailableIndParams; 2722*5113495bSYour Name 2723*5113495bSYour Name typedef struct { 2724*5113495bSYour Name uint32_t requestId; 2725*5113495bSYour Name uint32_t status; 2726*5113495bSYour Name uint8_t scanEventType; 2727*5113495bSYour Name uint32_t buckets_scanned; 2728*5113495bSYour Name } tSirExtScanOnScanEventIndParams, *tpSirExtScanOnScanEventIndParams; 2729*5113495bSYour Name 2730*5113495bSYour Name #define MAX_EPNO_NETWORKS 64 2731*5113495bSYour Name 2732*5113495bSYour Name #define SIR_PASSPOINT_LIST_MAX_NETWORKS 8 2733*5113495bSYour Name 2734*5113495bSYour Name /** 2735*5113495bSYour Name * struct wifi_passpoint_match - wifi passpoint network match 2736*5113495bSYour Name * @id: network block identifier for the matched network 2737*5113495bSYour Name * @anqp_len: length of ANQP blob 2738*5113495bSYour Name * @ap: scan result, with channel and beacon information 2739*5113495bSYour Name * @anqp: ANQP data, in the information_element format 2740*5113495bSYour Name */ 2741*5113495bSYour Name struct wifi_passpoint_match { 2742*5113495bSYour Name uint32_t request_id; 2743*5113495bSYour Name uint32_t id; 2744*5113495bSYour Name uint32_t anqp_len; 2745*5113495bSYour Name tSirWifiScanResult ap; 2746*5113495bSYour Name uint8_t anqp[]; 2747*5113495bSYour Name }; 2748*5113495bSYour Name #endif /* FEATURE_WLAN_EXTSCAN */ 2749*5113495bSYour Name 2750*5113495bSYour Name #ifdef FEATURE_WLAN_AUTO_SHUTDOWN 2751*5113495bSYour Name struct auto_shutdown_cmd { 2752*5113495bSYour Name uint32_t timer_val; 2753*5113495bSYour Name }; 2754*5113495bSYour Name #endif 2755*5113495bSYour Name 2756*5113495bSYour Name #ifdef WLAN_POWER_DEBUG 2757*5113495bSYour Name /** 2758*5113495bSYour Name * struct power_stats_response - Power stats response 2759*5113495bSYour Name * @cumulative_sleep_time_ms: cumulative sleep time in ms 2760*5113495bSYour Name * @cumulative_total_on_time_ms: total awake time in ms 2761*5113495bSYour Name * @deep_sleep_enter_counter: deep sleep enter counter 2762*5113495bSYour Name * @last_deep_sleep_enter_tstamp_ms: last deep sleep enter timestamp 2763*5113495bSYour Name * @debug_register_fmt: debug registers format 2764*5113495bSYour Name * @num_debug_register: number of debug registers 2765*5113495bSYour Name * @debug_registers: Pointer to the debug registers buffer 2766*5113495bSYour Name */ 2767*5113495bSYour Name struct power_stats_response { 2768*5113495bSYour Name uint32_t cumulative_sleep_time_ms; 2769*5113495bSYour Name uint32_t cumulative_total_on_time_ms; 2770*5113495bSYour Name uint32_t deep_sleep_enter_counter; 2771*5113495bSYour Name uint32_t last_deep_sleep_enter_tstamp_ms; 2772*5113495bSYour Name uint32_t debug_register_fmt; 2773*5113495bSYour Name uint32_t num_debug_register; 2774*5113495bSYour Name uint32_t *debug_registers; 2775*5113495bSYour Name }; 2776*5113495bSYour Name #endif 2777*5113495bSYour Name 2778*5113495bSYour Name #ifdef WLAN_FEATURE_BEACON_RECEPTION_STATS 2779*5113495bSYour Name #define MAX_BCNMISS_BITMAP 8 2780*5113495bSYour Name /** 2781*5113495bSYour Name * struct bcn_reception_stats_rsp - beacon stats response 2782*5113495bSYour Name * @total_bcn_cnt: total beacon count (tbtt instances) 2783*5113495bSYour Name * @total_bmiss_cnt: Total beacon miss count in last 255 beacons, max 255 2784*5113495bSYour Name * @bmiss_bitmap: This bitmap indicates the status of the last 255 beacons. 2785*5113495bSYour Name * If a bit is set, that means the corresponding beacon was missed. 2786*5113495bSYour Name * Bit 0 of bmiss_bitmap[0] represents the most recent beacon. 2787*5113495bSYour Name * The total_bcn_cnt field indicates how many bits within bmiss_bitmap 2788*5113495bSYour Name * are valid. 2789*5113495bSYour Name */ 2790*5113495bSYour Name struct bcn_reception_stats_rsp { 2791*5113495bSYour Name uint32_t vdev_id; 2792*5113495bSYour Name uint32_t total_bcn_cnt; 2793*5113495bSYour Name uint32_t total_bmiss_cnt; 2794*5113495bSYour Name uint32_t bmiss_bitmap[MAX_BCNMISS_BITMAP]; 2795*5113495bSYour Name }; 2796*5113495bSYour Name #endif 2797*5113495bSYour Name 2798*5113495bSYour Name /** 2799*5113495bSYour Name * struct lfr_firmware_status - LFR status in firmware 2800*5113495bSYour Name * @is_disabled: Is LFR disabled in FW 2801*5113495bSYour Name * @disable_lfr_event: Disable attempt done in FW 2802*5113495bSYour Name */ 2803*5113495bSYour Name struct lfr_firmware_status { 2804*5113495bSYour Name uint32_t is_disabled; 2805*5113495bSYour Name struct completion disable_lfr_event; 2806*5113495bSYour Name }; 2807*5113495bSYour Name 2808*5113495bSYour Name /** 2809*5113495bSYour Name * struct rso_cmd_status - RSO Command status 2810*5113495bSYour Name * @vdev_id: Vdev ID for which RSO command sent 2811*5113495bSYour Name * @status: Status of RSO command sent to FW 2812*5113495bSYour Name */ 2813*5113495bSYour Name struct rso_cmd_status { 2814*5113495bSYour Name uint32_t vdev_id; 2815*5113495bSYour Name bool status; 2816*5113495bSYour Name }; 2817*5113495bSYour Name 2818*5113495bSYour Name enum { 2819*5113495bSYour Name SIR_AP_RX_DATA_OFFLOAD = 0x00, 2820*5113495bSYour Name SIR_STA_RX_DATA_OFFLOAD = 0x01, 2821*5113495bSYour Name }; 2822*5113495bSYour Name 2823*5113495bSYour Name /** 2824*5113495bSYour Name * struct sir_set_vdev_ies_per_band 2825*5113495bSYour Name * @msg_type: message type 2826*5113495bSYour Name * @len: message length 2827*5113495bSYour Name * @vdev_id: vdev id 2828*5113495bSYour Name * 2829*5113495bSYour Name * Message wrapper structure for eWNI_SME_SET_VDEV_IES_PER_BAND. 2830*5113495bSYour Name */ 2831*5113495bSYour Name struct sir_set_vdev_ies_per_band { 2832*5113495bSYour Name uint16_t msg_type; 2833*5113495bSYour Name uint16_t len; 2834*5113495bSYour Name uint32_t vdev_id; 2835*5113495bSYour Name uint16_t dot11_mode; 2836*5113495bSYour Name enum QDF_OPMODE device_mode; 2837*5113495bSYour Name }; 2838*5113495bSYour Name 2839*5113495bSYour Name /** 2840*5113495bSYour Name * struct sir_set_ht_vht_cfg - ht, vht IE config 2841*5113495bSYour Name * @msg_type: message type 2842*5113495bSYour Name * @len: message length 2843*5113495bSYour Name * @pdev_id: pdev id 2844*5113495bSYour Name * @nss: Nss value 2845*5113495bSYour Name * @dot11mode: Dot11 mode. 2846*5113495bSYour Name * 2847*5113495bSYour Name * Message wrapper structure for set HT/VHT IE req. 2848*5113495bSYour Name */ 2849*5113495bSYour Name struct sir_set_ht_vht_cfg { 2850*5113495bSYour Name uint16_t msg_type; 2851*5113495bSYour Name uint16_t len; 2852*5113495bSYour Name uint32_t pdev_id; 2853*5113495bSYour Name uint32_t nss; 2854*5113495bSYour Name uint32_t dot11mode; 2855*5113495bSYour Name }; 2856*5113495bSYour Name 2857*5113495bSYour Name #define WIFI_INVALID_PEER_ID (-1) 2858*5113495bSYour Name #define WIFI_INVALID_VDEV_ID (-1) 2859*5113495bSYour Name #define WIFI_MAX_AC (4) 2860*5113495bSYour Name #define RATE_STAT_MCS_MASK (0xFF00) 2861*5113495bSYour Name #define RATE_STAT_GET_MCS_INDEX(x) (((x) & RATE_STAT_MCS_MASK) >> 8) 2862*5113495bSYour Name 2863*5113495bSYour Name typedef struct { 2864*5113495bSYour Name uint32_t paramId; 2865*5113495bSYour Name uint8_t ifaceId; 2866*5113495bSYour Name uint32_t rspId; 2867*5113495bSYour Name uint32_t moreResultToFollow; 2868*5113495bSYour Name uint32_t nr_received; 2869*5113495bSYour Name union { 2870*5113495bSYour Name uint32_t num_peers; 2871*5113495bSYour Name uint32_t num_radio; 2872*5113495bSYour Name }; 2873*5113495bSYour Name 2874*5113495bSYour Name uint32_t peer_event_number; 2875*5113495bSYour Name /* Variable length field - Do not add anything after this */ 2876*5113495bSYour Name uint8_t results[]; 2877*5113495bSYour Name } tSirLLStatsResults, *tpSirLLStatsResults; 2878*5113495bSYour Name 2879*5113495bSYour Name #ifdef WLAN_FEATURE_LINK_LAYER_STATS 2880*5113495bSYour Name /*--------------------------------------------------------------------------- 2881*5113495bSYour Name WLAN_HAL_LL_NOTIFY_STATS 2882*5113495bSYour Name ---------------------------------------------------------------------------*/ 2883*5113495bSYour Name 2884*5113495bSYour Name /******************************LINK LAYER Statistics**********************/ 2885*5113495bSYour Name 2886*5113495bSYour Name typedef struct { 2887*5113495bSYour Name uint32_t reqId; 2888*5113495bSYour Name uint8_t staId; 2889*5113495bSYour Name uint32_t mpduSizeThreshold; 2890*5113495bSYour Name uint32_t aggressiveStatisticsGathering; 2891*5113495bSYour Name } tSirLLStatsSetReq, *tpSirLLStatsSetReq; 2892*5113495bSYour Name 2893*5113495bSYour Name typedef struct { 2894*5113495bSYour Name uint32_t reqId; 2895*5113495bSYour Name uint8_t staId; 2896*5113495bSYour Name uint32_t paramIdMask; 2897*5113495bSYour Name bool is_mlo_req; 2898*5113495bSYour Name uint32_t mlo_vdev_id_bitmap; 2899*5113495bSYour Name } tSirLLStatsGetReq, *tpSirLLStatsGetReq; 2900*5113495bSYour Name 2901*5113495bSYour Name typedef struct { 2902*5113495bSYour Name uint32_t reqId; 2903*5113495bSYour Name uint8_t staId; 2904*5113495bSYour Name uint32_t statsClearReqMask; 2905*5113495bSYour Name uint8_t stopReq; 2906*5113495bSYour Name } tSirLLStatsClearReq, *tpSirLLStatsClearReq; 2907*5113495bSYour Name 2908*5113495bSYour Name typedef enum { 2909*5113495bSYour Name WIFI_DISCONNECTED = 0, 2910*5113495bSYour Name WIFI_AUTHENTICATING = 1, 2911*5113495bSYour Name WIFI_ASSOCIATING = 2, 2912*5113495bSYour Name WIFI_ASSOCIATED = 3, 2913*5113495bSYour Name WIFI_EAPOL_STARTED = 4, /* if done by firmware/driver */ 2914*5113495bSYour Name WIFI_EAPOL_COMPLETED = 5, /* if done by firmware/driver */ 2915*5113495bSYour Name } tSirWifiConnectionState; 2916*5113495bSYour Name 2917*5113495bSYour Name typedef enum { 2918*5113495bSYour Name WIFI_ROAMING_IDLE = 0, 2919*5113495bSYour Name WIFI_ROAMING_ACTIVE = 1, 2920*5113495bSYour Name } tSirWifiRoamState; 2921*5113495bSYour Name 2922*5113495bSYour Name typedef enum { 2923*5113495bSYour Name WIFI_INTERFACE_STA = 0, 2924*5113495bSYour Name WIFI_INTERFACE_SOFTAP = 1, 2925*5113495bSYour Name WIFI_INTERFACE_IBSS = 2, 2926*5113495bSYour Name WIFI_INTERFACE_P2P_CLIENT = 3, 2927*5113495bSYour Name WIFI_INTERFACE_P2P_GO = 4, 2928*5113495bSYour Name WIFI_INTERFACE_NAN = 5, 2929*5113495bSYour Name WIFI_INTERFACE_MESH = 6, 2930*5113495bSYour Name WIFI_INTERFACE_NDI = 7, 2931*5113495bSYour Name } tSirWifiInterfaceMode; 2932*5113495bSYour Name 2933*5113495bSYour Name /* set for QOS association */ 2934*5113495bSYour Name #define WIFI_CAPABILITY_QOS 0x00000001 2935*5113495bSYour Name /* set for protected assoc (802.11 beacon frame control protected bit set) */ 2936*5113495bSYour Name #define WIFI_CAPABILITY_PROTECTED 0x00000002 2937*5113495bSYour Name /* set if 802.11 Extended Capabilities element interworking bit is set */ 2938*5113495bSYour Name #define WIFI_CAPABILITY_INTERWORKING 0x00000004 2939*5113495bSYour Name /* set for HS20 association */ 2940*5113495bSYour Name #define WIFI_CAPABILITY_HS20 0x00000008 2941*5113495bSYour Name /* set is 802.11 Extended Capabilities element UTF-8 SSID bit is set */ 2942*5113495bSYour Name #define WIFI_CAPABILITY_SSID_UTF8 0x00000010 2943*5113495bSYour Name /* set is 802.11 Country Element is present */ 2944*5113495bSYour Name #define WIFI_CAPABILITY_COUNTRY 0x00000020 2945*5113495bSYour Name 2946*5113495bSYour Name struct wifi_interface_info { 2947*5113495bSYour Name /* tSirWifiInterfaceMode */ 2948*5113495bSYour Name /* interface mode */ 2949*5113495bSYour Name uint8_t mode; 2950*5113495bSYour Name /* interface mac address (self) */ 2951*5113495bSYour Name struct qdf_mac_addr macAddr; 2952*5113495bSYour Name /* tSirWifiConnectionState */ 2953*5113495bSYour Name /* connection state (valid for STA, CLI only) */ 2954*5113495bSYour Name uint8_t state; 2955*5113495bSYour Name /* tSirWifiRoamState */ 2956*5113495bSYour Name /* roaming state */ 2957*5113495bSYour Name uint32_t roaming; 2958*5113495bSYour Name /* WIFI_CAPABILITY_XXX (self) */ 2959*5113495bSYour Name uint32_t capabilities; 2960*5113495bSYour Name /* null terminated SSID */ 2961*5113495bSYour Name uint8_t ssid[33]; 2962*5113495bSYour Name /* bssid */ 2963*5113495bSYour Name struct qdf_mac_addr bssid; 2964*5113495bSYour Name /* country string advertised by AP */ 2965*5113495bSYour Name uint8_t apCountryStr[REG_ALPHA2_LEN + 1]; 2966*5113495bSYour Name /* country string for this association */ 2967*5113495bSYour Name uint8_t countryStr[REG_ALPHA2_LEN + 1]; 2968*5113495bSYour Name uint8_t time_slice_duty_cycle; 2969*5113495bSYour Name }; 2970*5113495bSYour Name 2971*5113495bSYour Name /** 2972*5113495bSYour Name * struct wifi_channel_info - channel information 2973*5113495bSYour Name * @width: channel width (20, 40, 80, 80+80, 160) 2974*5113495bSYour Name * @center_freq: primary 20 MHz channel 2975*5113495bSYour Name * @center_freq0: center frequency (MHz) first segment 2976*5113495bSYour Name * @center_freq1: center frequency (MHz) second segment 2977*5113495bSYour Name */ 2978*5113495bSYour Name struct wifi_channel_info { 2979*5113495bSYour Name enum phy_ch_width width; 2980*5113495bSYour Name uint32_t center_freq; 2981*5113495bSYour Name uint32_t center_freq0; 2982*5113495bSYour Name uint32_t center_freq1; 2983*5113495bSYour Name }; 2984*5113495bSYour Name 2985*5113495bSYour Name /** 2986*5113495bSYour Name * struct wifi_rate_info - wifi rate information 2987*5113495bSYour Name * @preamble: 0:OFDM, 1:CCK, 2:HT 3:VHT 4..7 reserved 2988*5113495bSYour Name * @nss: 0:1x1, 1:2x2, 3:3x3, 4:4x4 2989*5113495bSYour Name * @bw: 0:20MHz, 1:40Mhz, 2:80Mhz, 3:160Mhz 2990*5113495bSYour Name * @rate_or_mcs_index: 2991*5113495bSYour Name * * OFDM/CCK: rate code per ieee std in units of 0.5mbps 2992*5113495bSYour Name * * HT/VHT: mcs index 2993*5113495bSYour Name * @reserved: reserved 2994*5113495bSYour Name * @bitrate: bitrate units of 100 Kbps 2995*5113495bSYour Name */ 2996*5113495bSYour Name struct wifi_rate_info { 2997*5113495bSYour Name uint32_t preamble:3; 2998*5113495bSYour Name uint32_t nss:2; 2999*5113495bSYour Name uint32_t bw:3; 3000*5113495bSYour Name uint32_t rate_or_mcs_index:8; 3001*5113495bSYour Name uint32_t reserved:16; 3002*5113495bSYour Name uint32_t bitrate; 3003*5113495bSYour Name }; 3004*5113495bSYour Name 3005*5113495bSYour Name /** 3006*5113495bSYour Name * struct wifi_channel_stats - channel statistics 3007*5113495bSYour Name * @channel: channel for which the stats are applicable 3008*5113495bSYour Name * @on_time: msecs the radio is awake 3009*5113495bSYour Name * @cca_busy_time: secs the CCA register is busy excluding own tx_time 3010*5113495bSYour Name * @tx_time: msecs the radio is transmitting on this channel 3011*5113495bSYour Name * @rx_time: msecs the radio is in active receive on this channel 3012*5113495bSYour Name */ 3013*5113495bSYour Name struct wifi_channel_stats { 3014*5113495bSYour Name struct wifi_channel_info channel; 3015*5113495bSYour Name uint32_t on_time; 3016*5113495bSYour Name uint32_t cca_busy_time; 3017*5113495bSYour Name uint32_t tx_time; 3018*5113495bSYour Name uint32_t rx_time; 3019*5113495bSYour Name 3020*5113495bSYour Name }; 3021*5113495bSYour Name 3022*5113495bSYour Name /** 3023*5113495bSYour Name * struct wifi_radio_stats - per-radio statistics 3024*5113495bSYour Name * @radio: wifi radio for which the stats are applicable 3025*5113495bSYour Name * @on_time: msecs the radio is awake 3026*5113495bSYour Name * @tx_time: msecs the radio is transmitting 3027*5113495bSYour Name * @rx_time: msecs the radio is in active receive 3028*5113495bSYour Name * @on_time_scan: msecs the radio is awake due to all scan 3029*5113495bSYour Name * @on_time_nbd: msecs the radio is awake due to NAN 3030*5113495bSYour Name * @on_time_gscan: msecs the radio is awake due to Gscan 3031*5113495bSYour Name * @on_time_roam_scan: msecs the radio is awake due to roam scan 3032*5113495bSYour Name * @on_time_pno_scan: msecs the radio is awake due to PNO scan 3033*5113495bSYour Name * @on_time_hs20: msecs the radio is awake due to HS2.0 scans and GAS exchange 3034*5113495bSYour Name * @on_time_host_scan: msecs the radio is awake due to Host initiated scan 3035*5113495bSYour Name * @on_time_lpi_scan: msecs the radio is awake due to LPI scan 3036*5113495bSYour Name * @total_num_tx_power_levels: @tx_time_per_power_level record count 3037*5113495bSYour Name * @tx_time_per_power_level: tx time (in milliseconds) per TPC level (0.5 dBm) 3038*5113495bSYour Name * @more_channels: If more channels are there and will come in next event 3039*5113495bSYour Name * @num_channels: @channels record count 3040*5113495bSYour Name * @channels: per-channel statistics 3041*5113495bSYour Name */ 3042*5113495bSYour Name struct wifi_radio_stats { 3043*5113495bSYour Name uint32_t radio; 3044*5113495bSYour Name uint32_t on_time; 3045*5113495bSYour Name uint32_t tx_time; 3046*5113495bSYour Name uint32_t rx_time; 3047*5113495bSYour Name uint32_t on_time_scan; 3048*5113495bSYour Name uint32_t on_time_nbd; 3049*5113495bSYour Name uint32_t on_time_gscan; 3050*5113495bSYour Name uint32_t on_time_roam_scan; 3051*5113495bSYour Name uint32_t on_time_pno_scan; 3052*5113495bSYour Name uint32_t on_time_hs20; 3053*5113495bSYour Name uint32_t on_time_host_scan; 3054*5113495bSYour Name uint32_t on_time_lpi_scan; 3055*5113495bSYour Name uint32_t total_num_tx_power_levels; 3056*5113495bSYour Name uint32_t *tx_time_per_power_level; 3057*5113495bSYour Name uint32_t more_channels; 3058*5113495bSYour Name uint32_t num_channels; 3059*5113495bSYour Name struct wifi_channel_stats *channels; 3060*5113495bSYour Name }; 3061*5113495bSYour Name 3062*5113495bSYour Name /** 3063*5113495bSYour Name * struct wifi_rate_stat - per rate statistics 3064*5113495bSYour Name * @rate: rate information 3065*5113495bSYour Name * @tx_mpdu: number of successfully transmitted data pkts (ACK rcvd) 3066*5113495bSYour Name * @rx_mpdu: number of received data pkts 3067*5113495bSYour Name * @mpdu_lost: number of data packet losses (no ACK) 3068*5113495bSYour Name * @retries: total number of data pkt retries * 3069*5113495bSYour Name * @retries_short: number of short data pkt retries 3070*5113495bSYour Name * @retries_long: number of long data pkt retries 3071*5113495bSYour Name */ 3072*5113495bSYour Name struct wifi_rate_stat { 3073*5113495bSYour Name struct wifi_rate_info rate; 3074*5113495bSYour Name uint32_t tx_mpdu; 3075*5113495bSYour Name uint32_t rx_mpdu; 3076*5113495bSYour Name uint32_t mpdu_lost; 3077*5113495bSYour Name uint32_t retries; 3078*5113495bSYour Name uint32_t retries_short; 3079*5113495bSYour Name uint32_t retries_long; 3080*5113495bSYour Name }; 3081*5113495bSYour Name 3082*5113495bSYour Name /* wifi peer type */ 3083*5113495bSYour Name typedef enum { 3084*5113495bSYour Name WIFI_PEER_STA, 3085*5113495bSYour Name WIFI_PEER_AP, 3086*5113495bSYour Name WIFI_PEER_P2P_GO, 3087*5113495bSYour Name WIFI_PEER_P2P_CLIENT, 3088*5113495bSYour Name WIFI_PEER_NAN, 3089*5113495bSYour Name WIFI_PEER_TDLS, 3090*5113495bSYour Name WIFI_PEER_INVALID, 3091*5113495bSYour Name } tSirWifiPeerType; 3092*5113495bSYour Name 3093*5113495bSYour Name /** 3094*5113495bSYour Name * struct wifi_peer_info - per peer information 3095*5113495bSYour Name * @type: peer type (AP, TDLS, GO etc.) 3096*5113495bSYour Name * @peer_macaddr: mac address 3097*5113495bSYour Name * @capabilities: peer WIFI_CAPABILITY_XXX 3098*5113495bSYour Name * @power_saving: peer power saving mode 3099*5113495bSYour Name * @num_rate: number of rates 3100*5113495bSYour Name * @rate_stats: per rate statistics, number of entries = @num_rate 3101*5113495bSYour Name */ 3102*5113495bSYour Name struct wifi_peer_info { 3103*5113495bSYour Name enum wmi_peer_type type; 3104*5113495bSYour Name struct qdf_mac_addr peer_macaddr; 3105*5113495bSYour Name uint32_t capabilities; 3106*5113495bSYour Name union { 3107*5113495bSYour Name uint32_t power_saving; 3108*5113495bSYour Name uint32_t num_rate; 3109*5113495bSYour Name }; 3110*5113495bSYour Name struct wifi_rate_stat rate_stats[]; 3111*5113495bSYour Name }; 3112*5113495bSYour Name 3113*5113495bSYour Name /** 3114*5113495bSYour Name * struct wifi_interface_stats - Interface statistics 3115*5113495bSYour Name * @info: struct containing the current state of the interface 3116*5113495bSYour Name * @rts_succ_cnt: number of RTS/CTS sequence success 3117*5113495bSYour Name * @rts_fail_cnt: number of RTS/CTS sequence failures 3118*5113495bSYour Name * @ppdu_succ_cnt: number of PPDUs transmitted 3119*5113495bSYour Name * @ppdu_fail_cnt: number of PPDUs that failed to transmit 3120*5113495bSYour Name * @link_stats: link-level statistics 3121*5113495bSYour Name * @ac_stats: per-Access Category statistics 3122*5113495bSYour Name * @num_offload_stats: @offload_stats record count 3123*5113495bSYour Name * @offload_stats: per-offload statistics 3124*5113495bSYour Name * @powersave_stats: powersave statistics 3125*5113495bSYour Name * @vdev_id: vdev id 3126*5113495bSYour Name * 3127*5113495bSYour Name * Statistics corresponding to 2nd most LSB in wifi statistics bitmap 3128*5113495bSYour Name * for getting statistics 3129*5113495bSYour Name */ 3130*5113495bSYour Name struct wifi_interface_stats { 3131*5113495bSYour Name struct wifi_interface_info info; 3132*5113495bSYour Name uint32_t rts_succ_cnt; 3133*5113495bSYour Name uint32_t rts_fail_cnt; 3134*5113495bSYour Name uint32_t ppdu_succ_cnt; 3135*5113495bSYour Name uint32_t ppdu_fail_cnt; 3136*5113495bSYour Name wmi_iface_link_stats link_stats; 3137*5113495bSYour Name wmi_wmm_ac_stats ac_stats[WIFI_AC_MAX]; 3138*5113495bSYour Name uint32_t num_offload_stats; 3139*5113495bSYour Name wmi_iface_offload_stats offload_stats[WMI_OFFLOAD_STATS_TYPE_MAX]; 3140*5113495bSYour Name wmi_iface_powersave_stats powersave_stats; 3141*5113495bSYour Name uint8_t vdev_id; 3142*5113495bSYour Name }; 3143*5113495bSYour Name 3144*5113495bSYour Name /** 3145*5113495bSYour Name * struct wifi_peer_stat - peer statistics 3146*5113495bSYour Name * @num_peers: number of peers 3147*5113495bSYour Name * @peer_info: per peer statistics 3148*5113495bSYour Name * 3149*5113495bSYour Name * Peer statistics - corresponding to 3rd most LSB in 3150*5113495bSYour Name * wifi statistics bitmap for getting statistics 3151*5113495bSYour Name */ 3152*5113495bSYour Name struct wifi_peer_stat { 3153*5113495bSYour Name uint32_t num_peers; 3154*5113495bSYour Name struct wifi_peer_info peer_info[]; 3155*5113495bSYour Name }; 3156*5113495bSYour Name 3157*5113495bSYour Name /* wifi statistics bitmap for getting statistics */ 3158*5113495bSYour Name #define WMI_LINK_STATS_RADIO 0x00000001 3159*5113495bSYour Name #define WMI_LINK_STATS_IFACE 0x00000002 3160*5113495bSYour Name #define WMI_LINK_STATS_ALL_PEER 0x00000004 3161*5113495bSYour Name #define WMI_LINK_STATS_PER_PEER 0x00000008 3162*5113495bSYour Name 3163*5113495bSYour Name /* wifi statistics bitmap for clearing statistics */ 3164*5113495bSYour Name /* all radio statistics */ 3165*5113495bSYour Name #define WIFI_STATS_RADIO 0x00000001 3166*5113495bSYour Name /* cca_busy_time (within radio statistics) */ 3167*5113495bSYour Name #define WIFI_STATS_RADIO_CCA 0x00000002 3168*5113495bSYour Name /* all channel statistics (within radio statistics) */ 3169*5113495bSYour Name #define WIFI_STATS_RADIO_CHANNELS 0x00000004 3170*5113495bSYour Name /* all scan statistics (within radio statistics) */ 3171*5113495bSYour Name #define WIFI_STATS_RADIO_SCAN 0x00000008 3172*5113495bSYour Name /* all interface statistics */ 3173*5113495bSYour Name #define WIFI_STATS_IFACE 0x00000010 3174*5113495bSYour Name /* all tx rate statistics (within interface statistics) */ 3175*5113495bSYour Name #define WIFI_STATS_IFACE_TXRATE 0x00000020 3176*5113495bSYour Name /* all ac statistics (within interface statistics) */ 3177*5113495bSYour Name #define WIFI_STATS_IFACE_AC 0x00000040 3178*5113495bSYour Name /* all contention (min, max, avg) statistics (within ac statistics) */ 3179*5113495bSYour Name #define WIFI_STATS_IFACE_CONTENTION 0x00000080 3180*5113495bSYour Name /* All peer stats on this interface */ 3181*5113495bSYour Name #define WIFI_STATS_IFACE_ALL_PEER 0x00000100 3182*5113495bSYour Name /* Clear particular peer stats depending on the peer_mac */ 3183*5113495bSYour Name #define WIFI_STATS_IFACE_PER_PEER 0x00000200 3184*5113495bSYour Name 3185*5113495bSYour Name /** 3186*5113495bSYour Name * struct sir_wifi_iface_tx_fail - TX failure event 3187*5113495bSYour Name * @tid: TX TID 3188*5113495bSYour Name * @msdu_num: TX MSDU failed counter 3189*5113495bSYour Name * @status: TX status from HTT message. 3190*5113495bSYour Name * Only failure status will be involved. 3191*5113495bSYour Name */ 3192*5113495bSYour Name struct sir_wifi_iface_tx_fail { 3193*5113495bSYour Name uint8_t tid; 3194*5113495bSYour Name uint16_t msdu_num; 3195*5113495bSYour Name enum htt_tx_status status; 3196*5113495bSYour Name }; 3197*5113495bSYour Name 3198*5113495bSYour Name /** 3199*5113495bSYour Name * struct sir_wifi_chan_cca_stats - channal CCA stats 3200*5113495bSYour Name * @vdev_id: vdev ID 3201*5113495bSYour Name * @idle_time: percentage of idle time, no TX, no RX, no interference 3202*5113495bSYour Name * @tx_time: percentage of time transmitting packets 3203*5113495bSYour Name * @rx_in_bss_time: percentage of time receiving packets in current BSS 3204*5113495bSYour Name * @rx_out_bss_time: percentage of time receiving packets not in current BSS 3205*5113495bSYour Name * @rx_busy_time: percentage of time interference detected 3206*5113495bSYour Name * @rx_in_bad_cond_time: percentage of time receiving packets with errors 3207*5113495bSYour Name * or packets flagged as retransmission or seqnum discontinued. 3208*5113495bSYour Name * @tx_in_bad_cond_time: percentage of time the device transmitted packets 3209*5113495bSYour Name * that haven't been ACKed. 3210*5113495bSYour Name * @wlan_not_avail_time: percentage of time the chip is unable to 3211*5113495bSYour Name * work in normal conditions. 3212*5113495bSYour Name */ 3213*5113495bSYour Name struct sir_wifi_chan_cca_stats { 3214*5113495bSYour Name uint32_t vdev_id; 3215*5113495bSYour Name uint32_t idle_time; 3216*5113495bSYour Name uint32_t tx_time; 3217*5113495bSYour Name uint32_t rx_in_bss_time; 3218*5113495bSYour Name uint32_t rx_out_bss_time; 3219*5113495bSYour Name uint32_t rx_busy_time; 3220*5113495bSYour Name uint32_t rx_in_bad_cond_time; 3221*5113495bSYour Name uint32_t tx_in_bad_cond_time; 3222*5113495bSYour Name uint32_t wlan_not_avail_time; 3223*5113495bSYour Name }; 3224*5113495bSYour Name 3225*5113495bSYour Name #define WIFI_MAX_CHAINS 8 3226*5113495bSYour Name 3227*5113495bSYour Name /** 3228*5113495bSYour Name * struct sir_wifi_peer_signal_stats - peer signal stats 3229*5113495bSYour Name * @vdev_id: vdev ID 3230*5113495bSYour Name * @peer_id: peer ID 3231*5113495bSYour Name * @per_ant_snr: per antenna SNR 3232*5113495bSYour Name * @nf: peer background noise 3233*5113495bSYour Name * @per_ant_rx_mpdus: MPDUs received per antenna 3234*5113495bSYour Name * @per_ant_tx_mpdus: MPDUs transferred per antenna 3235*5113495bSYour Name * @num_chain: valid chain count 3236*5113495bSYour Name */ 3237*5113495bSYour Name struct sir_wifi_peer_signal_stats { 3238*5113495bSYour Name uint32_t vdev_id; 3239*5113495bSYour Name uint32_t peer_id; 3240*5113495bSYour Name 3241*5113495bSYour Name /* per antenna SNR in current bss */ 3242*5113495bSYour Name int32_t per_ant_snr[WIFI_MAX_CHAINS]; 3243*5113495bSYour Name 3244*5113495bSYour Name /* Background noise */ 3245*5113495bSYour Name int32_t nf[WIFI_MAX_CHAINS]; 3246*5113495bSYour Name 3247*5113495bSYour Name uint32_t per_ant_rx_mpdus[WIFI_MAX_CHAINS]; 3248*5113495bSYour Name uint32_t per_ant_tx_mpdus[WIFI_MAX_CHAINS]; 3249*5113495bSYour Name uint32_t num_chain; 3250*5113495bSYour Name }; 3251*5113495bSYour Name 3252*5113495bSYour Name #define WIFI_VDEV_NUM 4 3253*5113495bSYour Name #define WFIF_MCS_NUM 10 3254*5113495bSYour Name #define WIFI_AGGR_NUM 8 3255*5113495bSYour Name #define WIFI_DELAY_SIZE 11 3256*5113495bSYour Name 3257*5113495bSYour Name /** 3258*5113495bSYour Name * struct sir_wifi_tx - per AC tx stats 3259*5113495bSYour Name * @msdus: number of totoal MSDUs on MAC layer in the period 3260*5113495bSYour Name * @mpdus: number of totoal MPDUs on MAC layer in the period 3261*5113495bSYour Name * @ppdus: number of totoal PPDUs on PHY layer in the period 3262*5113495bSYour Name * @bytes: bytes of tx data on MAC layer in the period 3263*5113495bSYour Name * @drops: number of TX packets cancelled due to any reason in the period, 3264*5113495bSYour Name * such as WMM limitation/bandwidth limitation/radio congestion 3265*5113495bSYour Name * @drop_bytes: bytes of dropped TX packets in the period 3266*5113495bSYour Name * @retries: number of unacked transmissions of MPDUs 3267*5113495bSYour Name * @failed: number of packets have not been ACKed despite retried 3268*5113495bSYour Name * @aggr_len: length of the MPDU aggregation size buffer 3269*5113495bSYour Name * @mpdu_aggr_size: histogram of MPDU aggregation size 3270*5113495bSYour Name * @success_mcs_len: length of success mcs buffer 3271*5113495bSYour Name * @success_mcs: histogram of successful received MPDUs encoding rate 3272*5113495bSYour Name * @fail_mcs_len: length of failed mcs buffer 3273*5113495bSYour Name * @fail_mcs: histogram of failed received MPDUs encoding rate 3274*5113495bSYour Name * @delay_len: length of the delay histofram buffer 3275*5113495bSYour Name * @delay: histogram of delays on MAC layer 3276*5113495bSYour Name */ 3277*5113495bSYour Name struct sir_wifi_tx { 3278*5113495bSYour Name uint32_t msdus; 3279*5113495bSYour Name uint32_t mpdus; 3280*5113495bSYour Name uint32_t ppdus; 3281*5113495bSYour Name uint32_t bytes; 3282*5113495bSYour Name uint32_t drops; 3283*5113495bSYour Name uint32_t drop_bytes; 3284*5113495bSYour Name uint32_t retries; 3285*5113495bSYour Name uint32_t failed; 3286*5113495bSYour Name uint32_t aggr_len; 3287*5113495bSYour Name uint32_t *mpdu_aggr_size; 3288*5113495bSYour Name uint32_t success_mcs_len; 3289*5113495bSYour Name uint32_t *success_mcs; 3290*5113495bSYour Name uint32_t fail_mcs_len; 3291*5113495bSYour Name uint32_t *fail_mcs; 3292*5113495bSYour Name uint32_t delay_len; 3293*5113495bSYour Name uint32_t *delay; 3294*5113495bSYour Name }; 3295*5113495bSYour Name 3296*5113495bSYour Name /** 3297*5113495bSYour Name * struct sir_wifi_rx - per AC rx stats 3298*5113495bSYour Name * @mpdus: number of RX packets on MAC layer 3299*5113495bSYour Name * @bytes: bytes of RX packets on MAC layer 3300*5113495bSYour Name * @ppdus: number of RX packets on PHY layer 3301*5113495bSYour Name * @ppdu_bytes: bytes of RX packets on PHY layer 3302*5113495bSYour Name * @mpdu_lost: number of discontinuity in seqnum 3303*5113495bSYour Name * @mpdu_retry: number of RX packets flagged as retransmissions 3304*5113495bSYour Name * @mpdu_dup: number of RX packets identified as duplicates 3305*5113495bSYour Name * @mpdu_discard: number of RX packets discarded 3306*5113495bSYour Name * @aggr_len: length of MPDU aggregation histogram buffer 3307*5113495bSYour Name * @mpdu_aggr: histogram of MPDU aggregation size 3308*5113495bSYour Name * @mcs_len: length of mcs histogram buffer 3309*5113495bSYour Name * @mcs: histogram of encoding rate. 3310*5113495bSYour Name */ 3311*5113495bSYour Name struct sir_wifi_rx { 3312*5113495bSYour Name uint32_t mpdus; 3313*5113495bSYour Name uint32_t bytes; 3314*5113495bSYour Name uint32_t ppdus; 3315*5113495bSYour Name uint32_t ppdu_bytes; 3316*5113495bSYour Name uint32_t mpdu_lost; 3317*5113495bSYour Name uint32_t mpdu_retry; 3318*5113495bSYour Name uint32_t mpdu_dup; 3319*5113495bSYour Name uint32_t mpdu_discard; 3320*5113495bSYour Name uint32_t aggr_len; 3321*5113495bSYour Name uint32_t *mpdu_aggr; 3322*5113495bSYour Name uint32_t mcs_len; 3323*5113495bSYour Name uint32_t *mcs; 3324*5113495bSYour Name }; 3325*5113495bSYour Name 3326*5113495bSYour Name /** 3327*5113495bSYour Name * struct sir_wifi_ll_ext_wmm_ac_stats - stats for WMM AC 3328*5113495bSYour Name * @type: WMM AC type 3329*5113495bSYour Name * @tx_stats: pointer to TX stats 3330*5113495bSYour Name * @rx_stats: pointer to RX stats 3331*5113495bSYour Name */ 3332*5113495bSYour Name struct sir_wifi_ll_ext_wmm_ac_stats { 3333*5113495bSYour Name uint32_t type; 3334*5113495bSYour Name struct sir_wifi_tx *tx_stats; 3335*5113495bSYour Name struct sir_wifi_rx *rx_stats; 3336*5113495bSYour Name }; 3337*5113495bSYour Name 3338*5113495bSYour Name /** 3339*5113495bSYour Name * struct sir_wifi_ll_ext_peer_stats - per peer stats 3340*5113495bSYour Name * @peer_id: peer ID 3341*5113495bSYour Name * @vdev_id: VDEV ID 3342*5113495bSYour Name * @mac_address: MAC address 3343*5113495bSYour Name * @sta_ps_inds: how many times STAs go to sleep 3344*5113495bSYour Name * @sta_ps_durs: total sleep time of STAs (units in ms) 3345*5113495bSYour Name * @rx_probe_reqs: number of probe requests received 3346*5113495bSYour Name * @rx_oth_mgmts: number of other management frames received, 3347*5113495bSYour Name * not including probe requests 3348*5113495bSYour Name * @peer_signal_stat: signal stats 3349*5113495bSYour Name * @ac_stats: WMM BE/BK/VI/VO stats 3350*5113495bSYour Name */ 3351*5113495bSYour Name struct sir_wifi_ll_ext_peer_stats { 3352*5113495bSYour Name uint32_t peer_id; 3353*5113495bSYour Name uint32_t vdev_id; 3354*5113495bSYour Name tSirMacAddr mac_address; 3355*5113495bSYour Name uint32_t sta_ps_inds; 3356*5113495bSYour Name uint32_t sta_ps_durs; 3357*5113495bSYour Name uint32_t rx_probe_reqs; 3358*5113495bSYour Name uint32_t rx_oth_mgmts; 3359*5113495bSYour Name struct sir_wifi_peer_signal_stats peer_signal_stats; 3360*5113495bSYour Name struct sir_wifi_ll_ext_wmm_ac_stats ac_stats[WIFI_MAX_AC]; 3361*5113495bSYour Name }; 3362*5113495bSYour Name 3363*5113495bSYour Name /** 3364*5113495bSYour Name * struct sir_wifi_ll_ext_stats - link layer stats report 3365*5113495bSYour Name * @trigger_cond_id: Indicate what triggered this event. 3366*5113495bSYour Name * 1: timeout. 2: threshold 3367*5113495bSYour Name * @cca_chgd_bitmap: Bitmap to indicate changed channel CCA stats 3368*5113495bSYour Name * which exceeded the thresholds 3369*5113495bSYour Name * @sig_chgd_bitmap: Bitmap to indicate changed peer signal stats 3370*5113495bSYour Name * which exceeded the thresholds 3371*5113495bSYour Name * @tx_chgd_bitmap: Bitmap to indicate changed TX counters 3372*5113495bSYour Name * which exceeded the thresholds 3373*5113495bSYour Name * @rx_chgd_bitmap: Bitmap to indicate changed RX counters 3374*5113495bSYour Name * which exceeded the thresholds 3375*5113495bSYour Name * @chan_cca_stats: channel CCA stats 3376*5113495bSYour Name * @peer_signal_stats: peer signal stats 3377*5113495bSYour Name * @tx_mpdu_aggr_array_len: length of TX MPDU aggregation buffer 3378*5113495bSYour Name * @tx_succ_mcs_array_len: length of mcs buffer for ACKed MPDUs 3379*5113495bSYour Name * @tx_fail_mcs_array_len: length of mcs buffer for no-ACKed MPDUs 3380*5113495bSYour Name * @tx_delay_array_len: length of delay stats buffer 3381*5113495bSYour Name * @rx_mpdu_aggr_array_len: length of RX MPDU aggregation buffer 3382*5113495bSYour Name * @rx_mcs_array_len: length of RX mcs stats buffer 3383*5113495bSYour Name * @peer_stats: peer stats 3384*5113495bSYour Name * @cca: physical channel CCA stats 3385*5113495bSYour Name * @stats: pointer to stats data buffer. 3386*5113495bSYour Name * 3387*5113495bSYour Name * Structure of the whole statistics is like this: 3388*5113495bSYour Name * --------------------------------- 3389*5113495bSYour Name * | trigger_cond_i | 3390*5113495bSYour Name * +-------------------------------+ 3391*5113495bSYour Name * | cca_chgd_bitmap | 3392*5113495bSYour Name * +-------------------------------+ 3393*5113495bSYour Name * | sig_chgd_bitmap | 3394*5113495bSYour Name * +-------------------------------+ 3395*5113495bSYour Name * | tx_chgd_bitmap | 3396*5113495bSYour Name * +-------------------------------+ 3397*5113495bSYour Name * | rx_chgd_bitmap | 3398*5113495bSYour Name * +-------------------------------+ 3399*5113495bSYour Name * | peer_num | 3400*5113495bSYour Name * +-------------------------------+ 3401*5113495bSYour Name * | channel_num | 3402*5113495bSYour Name * +-------------------------------+ 3403*5113495bSYour Name * | tx_mpdu_aggr_array_len | 3404*5113495bSYour Name * +-------------------------------+ 3405*5113495bSYour Name * | tx_succ_mcs_array_len | 3406*5113495bSYour Name * +-------------------------------+ 3407*5113495bSYour Name * | tx_fail_mcs_array_len | 3408*5113495bSYour Name * +-------------------------------+ 3409*5113495bSYour Name * | tx_delay_array_len | 3410*5113495bSYour Name * +-------------------------------+ 3411*5113495bSYour Name * | rx_mpdu_aggr_array_len | 3412*5113495bSYour Name * +-------------------------------+ 3413*5113495bSYour Name * | rx_mcs_array_len | 3414*5113495bSYour Name * +-------------------------------+ 3415*5113495bSYour Name * | pointer to CCA stats | 3416*5113495bSYour Name * +-------------------------------+ 3417*5113495bSYour Name * | pointer to peer stats | 3418*5113495bSYour Name * +-------------------------------+ 3419*5113495bSYour Name * | CCA stats | 3420*5113495bSYour Name * +-------------------------------+ 3421*5113495bSYour Name * | peer_stats |----+ 3422*5113495bSYour Name * +-------------------------------+ | 3423*5113495bSYour Name * | per peer signals stats |<---+ 3424*5113495bSYour Name * | peer0 ~ peern | | 3425*5113495bSYour Name * +-------------------------------+ | 3426*5113495bSYour Name * | TX aggr/mcs parameters array | | 3427*5113495bSYour Name * | Length of this buffer is | | 3428*5113495bSYour Name * | configurable for user layer. |<-+ | 3429*5113495bSYour Name * +-------------------------------+ | | 3430*5113495bSYour Name * | per peer tx stats |--+ | 3431*5113495bSYour Name * | BE | <--+ 3432*5113495bSYour Name * | BK | | 3433*5113495bSYour Name * | VI | | 3434*5113495bSYour Name * | VO | | 3435*5113495bSYour Name * +-------------------------------+ | 3436*5113495bSYour Name * | TX aggr/mcs parameters array | | 3437*5113495bSYour Name * | Length of this buffer is | | 3438*5113495bSYour Name * | configurable for user layer. |<-+ | 3439*5113495bSYour Name * +-------------------------------+ | | 3440*5113495bSYour Name * | peer peer rx stats |--+ | 3441*5113495bSYour Name * | BE | <--+ 3442*5113495bSYour Name * | BE | 3443*5113495bSYour Name * | BK | 3444*5113495bSYour Name * | VI | 3445*5113495bSYour Name * | VO | 3446*5113495bSYour Name * --------------------------------- 3447*5113495bSYour Name */ 3448*5113495bSYour Name struct sir_wifi_ll_ext_stats { 3449*5113495bSYour Name uint32_t trigger_cond_id; 3450*5113495bSYour Name uint32_t cca_chgd_bitmap; 3451*5113495bSYour Name uint32_t sig_chgd_bitmap; 3452*5113495bSYour Name uint32_t tx_chgd_bitmap; 3453*5113495bSYour Name uint32_t rx_chgd_bitmap; 3454*5113495bSYour Name uint8_t peer_num; 3455*5113495bSYour Name uint8_t channel_num; 3456*5113495bSYour Name uint32_t tx_mpdu_aggr_array_len; 3457*5113495bSYour Name uint32_t tx_succ_mcs_array_len; 3458*5113495bSYour Name uint32_t tx_fail_mcs_array_len; 3459*5113495bSYour Name uint32_t tx_delay_array_len; 3460*5113495bSYour Name uint32_t rx_mpdu_aggr_array_len; 3461*5113495bSYour Name uint32_t rx_mcs_array_len; 3462*5113495bSYour Name struct sir_wifi_ll_ext_peer_stats *peer_stats; 3463*5113495bSYour Name struct sir_wifi_chan_cca_stats *cca; 3464*5113495bSYour Name uint8_t stats[]; 3465*5113495bSYour Name }; 3466*5113495bSYour Name 3467*5113495bSYour Name /** 3468*5113495bSYour Name * struct sir_channel_cca_threshold - threshold for channel CCA 3469*5113495bSYour Name * @idle_time: idle time, no TX, no RX, no interference 3470*5113495bSYour Name * @tx_time: time transmitting packets 3471*5113495bSYour Name * @rx_in_bss_time: time receiving packets in current BSSs 3472*5113495bSYour Name * @rx_out_bss_time: time receiving packets not in current BSSs 3473*5113495bSYour Name * @rx_busy_time: time interference detected 3474*5113495bSYour Name * @rx_in_bad_cond_time: receiving packets with errors 3475*5113495bSYour Name * @tx_in_bad_cond_time: time transmitted packets not been ACKed 3476*5113495bSYour Name * @wlan_not_avail_time: wlan card cannot work 3477*5113495bSYour Name */ 3478*5113495bSYour Name struct sir_channel_cca_threshold { 3479*5113495bSYour Name uint32_t idle_time; 3480*5113495bSYour Name uint32_t tx_time; 3481*5113495bSYour Name uint32_t rx_in_bss_time; 3482*5113495bSYour Name uint32_t rx_out_bss_time; 3483*5113495bSYour Name uint32_t rx_busy_time; 3484*5113495bSYour Name uint32_t rx_in_bad_cond_time; 3485*5113495bSYour Name uint32_t tx_in_bad_cond_time; 3486*5113495bSYour Name uint32_t wlan_not_avail_time; 3487*5113495bSYour Name }; 3488*5113495bSYour Name 3489*5113495bSYour Name /** 3490*5113495bSYour Name * struct sir_signal_threshold - threshold for per peer sigbal 3491*5113495bSYour Name * @snr: signal to noise rate 3492*5113495bSYour Name * @nf: noise floor 3493*5113495bSYour Name */ 3494*5113495bSYour Name struct sir_signal_threshold { 3495*5113495bSYour Name uint32_t snr; 3496*5113495bSYour Name uint32_t nf; 3497*5113495bSYour Name }; 3498*5113495bSYour Name 3499*5113495bSYour Name /** 3500*5113495bSYour Name * struct sir_tx_threshold - threshold for TX 3501*5113495bSYour Name * @msdu: TX MSDUs on MAC layer 3502*5113495bSYour Name * @mpdu: TX MPDUs on MAC layer 3503*5113495bSYour Name * @ppdu: TX PPDUs on MAC layer 3504*5113495bSYour Name * @bytes: TX bytes on MAC layer 3505*5113495bSYour Name * @msdu_drop: drooped MSDUs 3506*5113495bSYour Name * @byte_drop: dropped Bytes 3507*5113495bSYour Name * @mpdu_retry: MPDU not acked 3508*5113495bSYour Name * @ppdu_fail: PPDUs which received no block ack 3509*5113495bSYour Name * @aggregation: aggregation size 3510*5113495bSYour Name * @succ_mcs: histogram of encoding rate for acked PPDUs 3511*5113495bSYour Name * @fail_mcs: histogram of encoding rate for no-acked PPDUs 3512*5113495bSYour Name */ 3513*5113495bSYour Name struct sir_tx_threshold { 3514*5113495bSYour Name uint32_t msdu; 3515*5113495bSYour Name uint32_t mpdu; 3516*5113495bSYour Name uint32_t ppdu; 3517*5113495bSYour Name uint32_t bytes; 3518*5113495bSYour Name uint32_t msdu_drop; 3519*5113495bSYour Name uint32_t byte_drop; 3520*5113495bSYour Name uint32_t mpdu_retry; 3521*5113495bSYour Name uint32_t mpdu_fail; 3522*5113495bSYour Name uint32_t ppdu_fail; 3523*5113495bSYour Name uint32_t aggregation; 3524*5113495bSYour Name uint32_t succ_mcs; 3525*5113495bSYour Name uint32_t fail_mcs; 3526*5113495bSYour Name uint32_t delay; 3527*5113495bSYour Name }; 3528*5113495bSYour Name 3529*5113495bSYour Name /** 3530*5113495bSYour Name * struct sir_rx_threshold - threshold for RX 3531*5113495bSYour Name * @mpdu: RX MPDUs on MAC layer 3532*5113495bSYour Name * @bytes: RX bytes on MAC layer 3533*5113495bSYour Name * @ppdu: RX PPDU on PHY layer 3534*5113495bSYour Name * @ppdu_bytes: RX bytes on PHY layer 3535*5113495bSYour Name * @disorder: discontinuity in seqnum 3536*5113495bSYour Name * @mpdu_retry: MPDUs flagged as retry 3537*5113495bSYour Name * @mpdu_dup: MPDUs identified as duplicated 3538*5113495bSYour Name * @aggregation: aggregation size 3539*5113495bSYour Name * @mcs: histogram of encoding rate for PPDUs 3540*5113495bSYour Name * @ps_inds: power save indication 3541*5113495bSYour Name * @ps_durs: total time in power save 3542*5113495bSYour Name * @probe_reqs: probe request received 3543*5113495bSYour Name * @other_mgmt: other MGMT frames received 3544*5113495bSYour Name */ 3545*5113495bSYour Name struct sir_rx_threshold { 3546*5113495bSYour Name uint32_t mpdu; 3547*5113495bSYour Name uint32_t bytes; 3548*5113495bSYour Name uint32_t ppdu; 3549*5113495bSYour Name uint32_t ppdu_bytes; 3550*5113495bSYour Name uint32_t disorder; 3551*5113495bSYour Name uint32_t mpdu_lost; 3552*5113495bSYour Name uint32_t mpdu_retry; 3553*5113495bSYour Name uint32_t mpdu_dup; 3554*5113495bSYour Name uint32_t mpdu_discard; 3555*5113495bSYour Name uint32_t aggregation; 3556*5113495bSYour Name uint32_t mcs; 3557*5113495bSYour Name uint32_t ps_inds; 3558*5113495bSYour Name uint32_t ps_durs; 3559*5113495bSYour Name uint32_t probe_reqs; 3560*5113495bSYour Name uint32_t other_mgmt; 3561*5113495bSYour Name }; 3562*5113495bSYour Name 3563*5113495bSYour Name /** 3564*5113495bSYour Name * struct sir_wifi_ll_ext_stats_threshold - Threshold for stats update 3565*5113495bSYour Name * @period: MAC counter indication period (unit in ms) 3566*5113495bSYour Name * @enable: if threshold mechanism is enabled or disabled 3567*5113495bSYour Name * @enable_bitmap: whether dedicated threshold is enabed. 3568*5113495bSYour Name * Every MAC counter has a dedicated threshold. If the dedicated 3569*5113495bSYour Name * threshold is not set in the bitmap, global threshold will take 3570*5113495bSYour Name * effect. 3571*5113495bSYour Name * @global: whether clobal threshold is enabled. 3572*5113495bSYour Name * When both global and dedicated threshold are disabled, MAC counter 3573*5113495bSYour Name * will indicate stats periodically. 3574*5113495bSYour Name * @global_threshold: global threshold value 3575*5113495bSYour Name * @cca_bitmap: bitmap for CCA. 3576*5113495bSYour Name * Bit0: idle time 3577*5113495bSYour Name * Bit1: tx time 3578*5113495bSYour Name * Bit2: RX in BSS 3579*5113495bSYour Name * Bit3: RX out of BSS 3580*5113495bSYour Name * Bit4: medium busy 3581*5113495bSYour Name * Bit5: RX bad 3582*5113495bSYour Name * Bit6: TX bad 3583*5113495bSYour Name * Bit7: WLAN card not available 3584*5113495bSYour Name * @signal_bitmap: 3585*5113495bSYour Name * Bit0: Per channel SNR counter 3586*5113495bSYour Name * Bit1: Per channel noise floor counter 3587*5113495bSYour Name * @tx_bitmap: bitmap for TX counters 3588*5113495bSYour Name * Bit0: TX counter unit in MSDU 3589*5113495bSYour Name * Bit1: TX counter unit in MPDU 3590*5113495bSYour Name * Bit2: TX counter unit in PPDU 3591*5113495bSYour Name * Bit3: TX counter unit in byte 3592*5113495bSYour Name * Bit4: Dropped MSDUs 3593*5113495bSYour Name * Bit5: Dropped Bytes 3594*5113495bSYour Name * Bit6: MPDU retry counter 3595*5113495bSYour Name * Bit7: MPDU failure counter 3596*5113495bSYour Name * Bit8: PPDU failure counter 3597*5113495bSYour Name * Bit9: MPDU aggregation counter 3598*5113495bSYour Name * Bit10: MCS counter for ACKed MPDUs 3599*5113495bSYour Name * Bit11: MCS counter for Failed MPDUs 3600*5113495bSYour Name * Bit12: TX Delay counter 3601*5113495bSYour Name * @rx_bitmap:bitmap for RX counters 3602*5113495bSYour Name * Bit0: MAC RX counter unit in MPDU 3603*5113495bSYour Name * Bit1: MAC RX counter unit in byte 3604*5113495bSYour Name * Bit2: PHY RX counter unit in PPDU 3605*5113495bSYour Name * Bit3: PHY RX counter unit in byte 3606*5113495bSYour Name * Bit4: Disorder counter 3607*5113495bSYour Name * Bit5: Retry counter 3608*5113495bSYour Name * Bit6: Duplication counter 3609*5113495bSYour Name * Bit7: Discard counter 3610*5113495bSYour Name * Bit8: MPDU aggregation size counter 3611*5113495bSYour Name * Bit9: MCS counter 3612*5113495bSYour Name * Bit10: Peer STA power state change (wake to sleep) counter 3613*5113495bSYour Name * Bit11: Peer STA power save counter, total time in PS mode 3614*5113495bSYour Name * Bit12: Probe request counter 3615*5113495bSYour Name * Bit13: Other management frames counter 3616*5113495bSYour Name * @cca_thresh: CCA threshold 3617*5113495bSYour Name * @signal_thresh: signal threshold 3618*5113495bSYour Name * @tx_thresh: TX threshold 3619*5113495bSYour Name * @rx_thresh: RX threshold 3620*5113495bSYour Name * 3621*5113495bSYour Name * Generally, Link layer statistics is reported periodically. But if the 3622*5113495bSYour Name * variation of one stats of compared to the previous notification exceeds 3623*5113495bSYour Name * a threshold, FW will report the new stats immediately. 3624*5113495bSYour Name * This structure contains threshold for different counters. 3625*5113495bSYour Name */ 3626*5113495bSYour Name struct sir_ll_ext_stats_threshold { 3627*5113495bSYour Name uint32_t period; 3628*5113495bSYour Name uint32_t enable; 3629*5113495bSYour Name uint32_t enable_bitmap; 3630*5113495bSYour Name uint32_t global; 3631*5113495bSYour Name uint32_t global_threshold; 3632*5113495bSYour Name uint32_t cca_bitmap; 3633*5113495bSYour Name uint32_t signal_bitmap; 3634*5113495bSYour Name uint32_t tx_bitmap; 3635*5113495bSYour Name uint32_t rx_bitmap; 3636*5113495bSYour Name struct sir_channel_cca_threshold cca; 3637*5113495bSYour Name struct sir_signal_threshold signal; 3638*5113495bSYour Name struct sir_tx_threshold tx; 3639*5113495bSYour Name struct sir_rx_threshold rx; 3640*5113495bSYour Name }; 3641*5113495bSYour Name 3642*5113495bSYour Name #define LL_STATS_MIN_PERIOD 10 3643*5113495bSYour Name #define LL_STATS_INVALID_PERIOD 0xFFFFFFFF 3644*5113495bSYour Name 3645*5113495bSYour Name /* Result ID for LL stats extension */ 3646*5113495bSYour Name #define WMI_LL_STATS_EXT_PS_CHG 0x00000100 3647*5113495bSYour Name #define WMI_LL_STATS_EXT_TX_FAIL 0x00000200 3648*5113495bSYour Name #define WMI_LL_STATS_EXT_MAC_COUNTER 0x00000400 3649*5113495bSYour Name #endif /* WLAN_FEATURE_LINK_LAYER_STATS */ 3650*5113495bSYour Name 3651*5113495bSYour Name typedef struct sAniGetLinkStatus { 3652*5113495bSYour Name uint16_t msgType; /* message type is same as the request type */ 3653*5113495bSYour Name uint16_t msgLen; /* length of the entire request */ 3654*5113495bSYour Name uint8_t linkStatus; 3655*5113495bSYour Name uint8_t sessionId; 3656*5113495bSYour Name } tAniGetLinkStatus, *tpAniGetLinkStatus; 3657*5113495bSYour Name 3658*5113495bSYour Name /** 3659*5113495bSYour Name * struct sir_lost_link_info - lost link information structure. 3660*5113495bSYour Name * 3661*5113495bSYour Name * @vdev_id: vdev_id from WMA. some modules call sessionId. 3662*5113495bSYour Name * @rssi: rssi at disconnection time. 3663*5113495bSYour Name * 3664*5113495bSYour Name * driver uses this structure to communicate information collected at 3665*5113495bSYour Name * disconnection time. 3666*5113495bSYour Name */ 3667*5113495bSYour Name struct sir_lost_link_info { 3668*5113495bSYour Name uint32_t vdev_id; 3669*5113495bSYour Name int32_t rssi; 3670*5113495bSYour Name }; 3671*5113495bSYour Name 3672*5113495bSYour Name /* find the size of given member within a structure */ 3673*5113495bSYour Name #ifndef member_size 3674*5113495bSYour Name #define member_size(type, member) (sizeof(((type *)0)->member)) 3675*5113495bSYour Name #endif 3676*5113495bSYour Name 3677*5113495bSYour Name #define RTT_INVALID 0x00 3678*5113495bSYour Name #define RTT_TIMING_MEAS_CAPABILITY 0x01 3679*5113495bSYour Name #define RTT_FINE_TIME_MEAS_INITIATOR_CAPABILITY 0x02 3680*5113495bSYour Name #define RTT_FINE_TIME_MEAS_RESPONDER_CAPABILITY 0x03 3681*5113495bSYour Name 3682*5113495bSYour Name /* number of neighbor reports that we can handle in Neighbor Report Response */ 3683*5113495bSYour Name #define MAX_SUPPORTED_NEIGHBOR_RPT 15 3684*5113495bSYour Name 3685*5113495bSYour Name /** 3686*5113495bSYour Name * struct sir_stats_avg_factor 3687*5113495bSYour Name * @vdev_id: session id 3688*5113495bSYour Name * @stats_avg_factor: average factor 3689*5113495bSYour Name */ 3690*5113495bSYour Name struct sir_stats_avg_factor { 3691*5113495bSYour Name uint8_t vdev_id; 3692*5113495bSYour Name uint16_t stats_avg_factor; 3693*5113495bSYour Name }; 3694*5113495bSYour Name 3695*5113495bSYour Name /** 3696*5113495bSYour Name * struct sir_guard_time_request 3697*5113495bSYour Name * @vdev_id: session id 3698*5113495bSYour Name * @guard_time: guard time 3699*5113495bSYour Name */ 3700*5113495bSYour Name struct sir_guard_time_request { 3701*5113495bSYour Name uint8_t vdev_id; 3702*5113495bSYour Name uint32_t guard_time; 3703*5113495bSYour Name }; 3704*5113495bSYour Name 3705*5113495bSYour Name /* Max number of rates allowed in Supported Rates IE */ 3706*5113495bSYour Name #define MAX_NUM_SUPPORTED_RATES (8) 3707*5113495bSYour Name 3708*5113495bSYour Name /** 3709*5113495bSYour Name * struct rssi_breach_event - rssi breached event structure 3710*5113495bSYour Name * @request_id: request id 3711*5113495bSYour Name * @session_id: session id 3712*5113495bSYour Name * @curr_rssi: current rssi 3713*5113495bSYour Name * @curr_bssid: current bssid 3714*5113495bSYour Name */ 3715*5113495bSYour Name struct rssi_breach_event { 3716*5113495bSYour Name uint32_t request_id; 3717*5113495bSYour Name uint32_t session_id; 3718*5113495bSYour Name int8_t curr_rssi; 3719*5113495bSYour Name struct qdf_mac_addr curr_bssid; 3720*5113495bSYour Name }; 3721*5113495bSYour Name 3722*5113495bSYour Name /** 3723*5113495bSYour Name * struct chip_pwr_save_fail_detected_params - chip power save failure detected 3724*5113495bSYour Name * event params 3725*5113495bSYour Name * @failure_reason_code:failure reason code 3726*5113495bSYour Name * @wake_lock_bitmap:bitmap for modules voting against sleep for long duration. 3727*5113495bSYour Name */ 3728*5113495bSYour Name struct chip_pwr_save_fail_detected_params { 3729*5113495bSYour Name uint32_t failure_reason_code; 3730*5113495bSYour Name uint32_t wake_lock_bitmap[4]; 3731*5113495bSYour Name }; 3732*5113495bSYour Name 3733*5113495bSYour Name #define MAX_NUM_FW_SEGMENTS 4 3734*5113495bSYour Name 3735*5113495bSYour Name /** 3736*5113495bSYour Name * DEFAULT_SCAN_IE_ID - Identifier for the collection of IE's added 3737*5113495bSYour Name * by default to the probe request 3738*5113495bSYour Name */ 3739*5113495bSYour Name #define DEFAULT_SCAN_IE_ID 256 3740*5113495bSYour Name 3741*5113495bSYour Name /* MAX_DEFAULT_SCAN_IE_LEN - Maximum length of Default Scan IE's */ 3742*5113495bSYour Name #define MAX_DEFAULT_SCAN_IE_LEN 2048 3743*5113495bSYour Name 3744*5113495bSYour Name /* Extended Capabilities IE header(IE Id + IE Length) length */ 3745*5113495bSYour Name #define EXT_CAP_IE_HDR_LEN 2 3746*5113495bSYour Name 3747*5113495bSYour Name /** 3748*5113495bSYour Name * struct hdd_default_scan_ie - HDD default scan IE structure 3749*5113495bSYour Name * @message_type: message type to be set with eWNI_SME_DEFAULT_SCAN_IE 3750*5113495bSYour Name * @length: length of the struct hdd_default_scan_ie 3751*5113495bSYour Name * @vdev_id: vdev_id 3752*5113495bSYour Name * @ie_len: Default scan IE length 3753*5113495bSYour Name * @ie_data: Pointer to default scan IE data 3754*5113495bSYour Name */ 3755*5113495bSYour Name struct hdd_default_scan_ie { 3756*5113495bSYour Name uint16_t message_type; 3757*5113495bSYour Name uint16_t length; 3758*5113495bSYour Name uint16_t vdev_id; 3759*5113495bSYour Name uint16_t ie_len; 3760*5113495bSYour Name uint8_t ie_data[MAX_DEFAULT_SCAN_IE_LEN]; 3761*5113495bSYour Name }; 3762*5113495bSYour Name 3763*5113495bSYour Name /** 3764*5113495bSYour Name * struct vdev_ie_info - IE info 3765*5113495bSYour Name * @vdev_id - vdev for which the IE is being sent 3766*5113495bSYour Name * @ie_id - ID of the IE 3767*5113495bSYour Name * @length - length of the IE data 3768*5113495bSYour Name * @band - indicates IE is intended for which band 3769*5113495bSYour Name * @data - IE data 3770*5113495bSYour Name * 3771*5113495bSYour Name * This structure is used to store the IE information. 3772*5113495bSYour Name */ 3773*5113495bSYour Name struct vdev_ie_info { 3774*5113495bSYour Name uint32_t vdev_id; 3775*5113495bSYour Name uint32_t ie_id; 3776*5113495bSYour Name uint32_t length; 3777*5113495bSYour Name uint32_t band; 3778*5113495bSYour Name uint8_t *data; 3779*5113495bSYour Name }; 3780*5113495bSYour Name 3781*5113495bSYour Name /** 3782*5113495bSYour Name * struct send_extcap_ie - used to pass send_extcap_ie msg from SME to PE 3783*5113495bSYour Name * @type - MSG type 3784*5113495bSYour Name * @length - length of the message 3785*5113495bSYour Name * @seesion_id - session_id for which the message is intended for 3786*5113495bSYour Name * 3787*5113495bSYour Name * This structure is used to pass send_extcap_ie msg from SME to PE 3788*5113495bSYour Name */ 3789*5113495bSYour Name struct send_extcap_ie { 3790*5113495bSYour Name uint16_t msg_type; /* eWNI_SME_SET_IE_REQ */ 3791*5113495bSYour Name uint16_t length; 3792*5113495bSYour Name uint8_t session_id; 3793*5113495bSYour Name }; 3794*5113495bSYour Name 3795*5113495bSYour Name typedef void (*antenna_mode_cb)(uint32_t status, void *context); 3796*5113495bSYour Name 3797*5113495bSYour Name /** 3798*5113495bSYour Name * struct cfg_action_frm_tb_ppdu - action frame TB PPDU cfg 3799*5113495bSYour Name * @vdev_id - vdev id 3800*5113495bSYour Name * @cfg - enable/disable 3801*5113495bSYour Name * @frm_len - frame length 3802*5113495bSYour Name * @data - frame data 3803*5113495bSYour Name * 3804*5113495bSYour Name * This structure is used to cfg action frame tb ppdu. 3805*5113495bSYour Name */ 3806*5113495bSYour Name struct cfg_action_frm_tb_ppdu { 3807*5113495bSYour Name uint8_t vdev_id; 3808*5113495bSYour Name uint8_t cfg; 3809*5113495bSYour Name uint8_t frm_len; 3810*5113495bSYour Name uint8_t *data; 3811*5113495bSYour Name }; 3812*5113495bSYour Name 3813*5113495bSYour Name /** 3814*5113495bSYour Name * struct sir_nss_update_request 3815*5113495bSYour Name * @msgType: nss update msg type 3816*5113495bSYour Name * @msgLen: length of the msg 3817*5113495bSYour Name * @new_nss: new spatial stream value 3818*5113495bSYour Name * @ch_width: channel width - optional 3819*5113495bSYour Name * @vdev_id: session id 3820*5113495bSYour Name */ 3821*5113495bSYour Name struct sir_nss_update_request { 3822*5113495bSYour Name uint16_t msgType; 3823*5113495bSYour Name uint16_t msgLen; 3824*5113495bSYour Name uint8_t new_nss; 3825*5113495bSYour Name uint8_t ch_width; 3826*5113495bSYour Name uint32_t vdev_id; 3827*5113495bSYour Name }; 3828*5113495bSYour Name 3829*5113495bSYour Name /** 3830*5113495bSYour Name * struct sir_sap_ch_width_update 3831*5113495bSYour Name * @msgType: ch_width update msg type 3832*5113495bSYour Name * @msgLen: length of the msg 3833*5113495bSYour Name * @ch_width: channel width 3834*5113495bSYour Name * @vdev_id: vdev id 3835*5113495bSYour Name */ 3836*5113495bSYour Name struct sir_sap_ch_width_update { 3837*5113495bSYour Name uint16_t msgType; 3838*5113495bSYour Name uint16_t msgLen; 3839*5113495bSYour Name enum phy_ch_width ch_width; 3840*5113495bSYour Name uint32_t vdev_id; 3841*5113495bSYour Name }; 3842*5113495bSYour Name 3843*5113495bSYour Name /** 3844*5113495bSYour Name * enum sir_bcn_update_reason: bcn update reason 3845*5113495bSYour Name * @REASON_DEFAULT: reason default 3846*5113495bSYour Name * @REASON_NSS_UPDATE: If NSS is updated 3847*5113495bSYour Name * @REASON_CONFIG_UPDATE: Config update 3848*5113495bSYour Name * @REASON_SET_HT2040: HT2040 update 3849*5113495bSYour Name * @REASON_COLOR_CHANGE: Color change 3850*5113495bSYour Name * @REASON_CHANNEL_SWITCH: channel switch 3851*5113495bSYour Name * @REASON_MLO_IE_UPDATE: mlo ie update 3852*5113495bSYour Name * @REASON_RNR_UPDATE: SAP is changed, notify co-located SAP 3853*5113495bSYour Name */ 3854*5113495bSYour Name enum sir_bcn_update_reason { 3855*5113495bSYour Name REASON_DEFAULT = 0, 3856*5113495bSYour Name REASON_NSS_UPDATE = 1, 3857*5113495bSYour Name REASON_CONFIG_UPDATE = 2, 3858*5113495bSYour Name REASON_SET_HT2040 = 3, 3859*5113495bSYour Name REASON_COLOR_CHANGE = 4, 3860*5113495bSYour Name REASON_CHANNEL_SWITCH = 5, 3861*5113495bSYour Name REASON_MLO_IE_UPDATE = 6, 3862*5113495bSYour Name REASON_RNR_UPDATE = 7, 3863*5113495bSYour Name REASON_CH_WIDTH_UPDATE = 8, 3864*5113495bSYour Name }; 3865*5113495bSYour Name 3866*5113495bSYour Name /** 3867*5113495bSYour Name * struct sir_bcn_update_rsp 3868*5113495bSYour Name * 3869*5113495bSYour Name * @vdev_id: session for which bcn was updated 3870*5113495bSYour Name * @reason: bcn update reason 3871*5113495bSYour Name * @status: status of the beacon sent to FW 3872*5113495bSYour Name */ 3873*5113495bSYour Name struct sir_bcn_update_rsp { 3874*5113495bSYour Name uint8_t vdev_id; 3875*5113495bSYour Name enum sir_bcn_update_reason reason; 3876*5113495bSYour Name QDF_STATUS status; 3877*5113495bSYour Name }; 3878*5113495bSYour Name 3879*5113495bSYour Name struct sir_qos_params { 3880*5113495bSYour Name uint8_t aifsn; 3881*5113495bSYour Name uint8_t cwmin; 3882*5113495bSYour Name uint8_t cwmax; 3883*5113495bSYour Name }; 3884*5113495bSYour Name 3885*5113495bSYour Name /** 3886*5113495bSYour Name * struct sir_sme_ext_change_chan_req - channel change request 3887*5113495bSYour Name * @message_type: message id 3888*5113495bSYour Name * @length: msg length 3889*5113495bSYour Name * @new_channel: new channel 3890*5113495bSYour Name * @vdev_id: vdev id 3891*5113495bSYour Name */ 3892*5113495bSYour Name struct sir_sme_ext_cng_chan_req { 3893*5113495bSYour Name uint16_t message_type; /* eWNI_SME_EXT_CHANGE_CHANNEL */ 3894*5113495bSYour Name uint16_t length; 3895*5113495bSYour Name uint32_t new_ch_freq; 3896*5113495bSYour Name uint8_t vdev_id; 3897*5113495bSYour Name }; 3898*5113495bSYour Name 3899*5113495bSYour Name #define IGNORE_NUD_FAIL 0 3900*5113495bSYour Name #define DISCONNECT_AFTER_NUD_FAIL 1 3901*5113495bSYour Name #define ROAM_AFTER_NUD_FAIL 2 3902*5113495bSYour Name #define DISCONNECT_AFTER_ROAM_FAIL 3 3903*5113495bSYour Name 3904*5113495bSYour Name /** 3905*5113495bSYour Name * struct sir_sme_ext_change_chan_ind. 3906*5113495bSYour Name * @session_id: session id 3907*5113495bSYour Name * @new_chan_freq: new channel frequency to change to 3908*5113495bSYour Name */ 3909*5113495bSYour Name struct sir_sme_ext_cng_chan_ind { 3910*5113495bSYour Name uint8_t session_id; 3911*5113495bSYour Name uint32_t new_chan_freq; 3912*5113495bSYour Name }; 3913*5113495bSYour Name 3914*5113495bSYour Name /** 3915*5113495bSYour Name * struct stsf - the basic stsf structure 3916*5113495bSYour Name * 3917*5113495bSYour Name * @vdev_id: vdev id 3918*5113495bSYour Name * @tsf_low: low 32bits of tsf 3919*5113495bSYour Name * @tsf_high: high 32bits of tsf 3920*5113495bSYour Name * @soc_timer_low: low 32bits of synced SOC timer value 3921*5113495bSYour Name * @soc_timer_high: high 32bits of synced SOC timer value 3922*5113495bSYour Name * @global_tsf_low: low 32bits of tsf64 3923*5113495bSYour Name * @global_tsf_high: high 32bits of tsf64 3924*5113495bSYour Name * @mac_id: MAC identifier 3925*5113495bSYour Name * @mac_id_valid: Indicate if mac_id is valid or not 3926*5113495bSYour Name * @tsf_id: TSF-ID corresponding to the TSF value 3927*5113495bSYour Name * @tsf_id_valid: flag indicating whether TSD-ID is valid 3928*5113495bSYour Name * 3929*5113495bSYour Name * Driver uses this structure to store the tsf information. 3930*5113495bSYour Name */ 3931*5113495bSYour Name struct stsf { 3932*5113495bSYour Name uint32_t vdev_id; 3933*5113495bSYour Name uint32_t tsf_low; 3934*5113495bSYour Name uint32_t tsf_high; 3935*5113495bSYour Name uint32_t soc_timer_low; 3936*5113495bSYour Name uint32_t soc_timer_high; 3937*5113495bSYour Name uint32_t global_tsf_low; 3938*5113495bSYour Name uint32_t global_tsf_high; 3939*5113495bSYour Name uint32_t mac_id; 3940*5113495bSYour Name uint32_t mac_id_valid; 3941*5113495bSYour Name uint32_t tsf_id; 3942*5113495bSYour Name uint32_t tsf_id_valid; 3943*5113495bSYour Name }; 3944*5113495bSYour Name 3945*5113495bSYour Name /* ie + extn ie */ 3946*5113495bSYour Name #define SIR_BCN_FLT_MAX_ELEMS_IE_LIST (8 + 8) 3947*5113495bSYour Name /** 3948*5113495bSYour Name * struct beacon_filter_param - parameters for beacon filtering 3949*5113495bSYour Name * @vdev_id: vdev id 3950*5113495bSYour Name * @ie_map: bitwise map of IEs that needs to be filtered 3951*5113495bSYour Name * 3952*5113495bSYour Name */ 3953*5113495bSYour Name struct beacon_filter_param { 3954*5113495bSYour Name uint32_t vdev_id; 3955*5113495bSYour Name uint32_t ie_map[SIR_BCN_FLT_MAX_ELEMS_IE_LIST]; 3956*5113495bSYour Name }; 3957*5113495bSYour Name 3958*5113495bSYour Name /** 3959*5113495bSYour Name * struct adaptive_dwelltime_params - the adaptive dwelltime params 3960*5113495bSYour Name * @vdev_id: vdev id 3961*5113495bSYour Name * @is_enabled: Adaptive dwell time is enabled/disabled 3962*5113495bSYour Name * @dwelltime_mode: global default adaptive dwell mode 3963*5113495bSYour Name * @lpf_weight: weight to calculate the average low pass 3964*5113495bSYour Name * filter for channel congestion 3965*5113495bSYour Name * @passive_mon_intval: intval to monitor wifi activity in passive scan in msec 3966*5113495bSYour Name * @wifi_act_threshold: % of wifi activity used in passive scan 0-100 3967*5113495bSYour Name * 3968*5113495bSYour Name */ 3969*5113495bSYour Name struct adaptive_dwelltime_params { 3970*5113495bSYour Name uint32_t vdev_id; 3971*5113495bSYour Name bool is_enabled; 3972*5113495bSYour Name uint8_t dwelltime_mode; 3973*5113495bSYour Name uint8_t lpf_weight; 3974*5113495bSYour Name uint8_t passive_mon_intval; 3975*5113495bSYour Name uint8_t wifi_act_threshold; 3976*5113495bSYour Name }; 3977*5113495bSYour Name 3978*5113495bSYour Name /** 3979*5113495bSYour Name * enum obss_ht40_scancmd_type - obss scan command type 3980*5113495bSYour Name * @HT40_OBSS_SCAN_PARAM_START: OBSS scan start 3981*5113495bSYour Name * @HT40_OBSS_SCAN_PARAM_UPDATE: OBSS scan param update 3982*5113495bSYour Name */ 3983*5113495bSYour Name enum obss_ht40_scancmd_type { 3984*5113495bSYour Name HT40_OBSS_SCAN_PARAM_START, 3985*5113495bSYour Name HT40_OBSS_SCAN_PARAM_UPDATE 3986*5113495bSYour Name }; 3987*5113495bSYour Name 3988*5113495bSYour Name /** 3989*5113495bSYour Name * struct sme_obss_ht40_scanind_msg - sme obss scan params 3990*5113495bSYour Name * @msg_type: message type 3991*5113495bSYour Name * @length: message length 3992*5113495bSYour Name * @mac_addr: mac address 3993*5113495bSYour Name */ 3994*5113495bSYour Name struct sme_obss_ht40_scanind_msg { 3995*5113495bSYour Name uint16_t msg_type; 3996*5113495bSYour Name uint16_t length; 3997*5113495bSYour Name struct qdf_mac_addr mac_addr; 3998*5113495bSYour Name }; 3999*5113495bSYour Name 4000*5113495bSYour Name /** 4001*5113495bSYour Name * struct obss_ht40_scanind - ht40 obss scan request 4002*5113495bSYour Name * @cmd: message type 4003*5113495bSYour Name * @scan_type: message length 4004*5113495bSYour Name * @obss_passive_dwelltime: obss passive dwelltime 4005*5113495bSYour Name * @obss_active_dwelltime: obss active dwelltime 4006*5113495bSYour Name * @obss_width_trigger_interval: scan interval 4007*5113495bSYour Name * @obss_passive_total_per_channel: total passive scan time per channel 4008*5113495bSYour Name * @obss_active_total_per_channel: total active scan time per channel 4009*5113495bSYour Name * @bsswidth_ch_trans_delay: OBSS transition delay time 4010*5113495bSYour Name * @obss_activity_threshold: OBSS activity threshold 4011*5113495bSYour Name * @self_sta_idx: self sta identification 4012*5113495bSYour Name * @bss_id: BSS index 4013*5113495bSYour Name * @fortymhz_intolerent: Ht40mhz intolerance 4014*5113495bSYour Name * @channel_count: channel count 4015*5113495bSYour Name * @chan_freq_list: List of channel frequencies in MHz 4016*5113495bSYour Name * @current_operatingclass: operating class 4017*5113495bSYour Name * @iefield_len: ie's length 4018*5113495bSYour Name * @iefiled: ie's information 4019*5113495bSYour Name */ 4020*5113495bSYour Name struct obss_ht40_scanind { 4021*5113495bSYour Name enum obss_ht40_scancmd_type cmd; 4022*5113495bSYour Name enum eSirScanType scan_type; 4023*5113495bSYour Name /* In TUs */ 4024*5113495bSYour Name uint16_t obss_passive_dwelltime; 4025*5113495bSYour Name uint16_t obss_active_dwelltime; 4026*5113495bSYour Name /* In seconds */ 4027*5113495bSYour Name uint16_t obss_width_trigger_interval; 4028*5113495bSYour Name /* In TU's */ 4029*5113495bSYour Name uint16_t obss_passive_total_per_channel; 4030*5113495bSYour Name uint16_t obss_active_total_per_channel; 4031*5113495bSYour Name uint16_t bsswidth_ch_trans_delay; 4032*5113495bSYour Name uint16_t obss_activity_threshold; 4033*5113495bSYour Name uint8_t self_sta_idx; 4034*5113495bSYour Name uint8_t bss_id; 4035*5113495bSYour Name uint8_t fortymhz_intolerent; 4036*5113495bSYour Name uint8_t channel_count; 4037*5113495bSYour Name uint32_t chan_freq_list[CFG_VALID_CHANNEL_LIST_LEN]; 4038*5113495bSYour Name uint8_t current_operatingclass; 4039*5113495bSYour Name uint16_t iefield_len; 4040*5113495bSYour Name uint8_t iefield[SIR_ROAM_SCAN_MAX_PB_REQ_SIZE]; 4041*5113495bSYour Name }; 4042*5113495bSYour Name 4043*5113495bSYour Name /** 4044*5113495bSYour Name * struct obss_scanparam - OBSS scan parameters 4045*5113495bSYour Name * @obss_passive_dwelltime: message type 4046*5113495bSYour Name * @obss_active_dwelltime: message length 4047*5113495bSYour Name * @obss_width_trigger_interval: obss passive dwelltime 4048*5113495bSYour Name * @obss_passive_total_per_channel: obss passive total scan time 4049*5113495bSYour Name * @obss_active_total_per_channel: obss active total scan time 4050*5113495bSYour Name * @bsswidth_ch_trans_delay: OBSS transition delay time 4051*5113495bSYour Name * @obss_activity_threshold: OBSS activity threshold 4052*5113495bSYour Name */ 4053*5113495bSYour Name struct obss_scanparam { 4054*5113495bSYour Name uint16_t obss_passive_dwelltime; 4055*5113495bSYour Name uint16_t obss_active_dwelltime; 4056*5113495bSYour Name uint16_t obss_width_trigger_interval; 4057*5113495bSYour Name uint16_t obss_passive_total_per_channel; 4058*5113495bSYour Name uint16_t obss_active_total_per_channel; 4059*5113495bSYour Name uint16_t bsswidth_ch_trans_delay; 4060*5113495bSYour Name uint16_t obss_activity_threshold; 4061*5113495bSYour Name }; 4062*5113495bSYour Name 4063*5113495bSYour Name /** 4064*5113495bSYour Name * struct sir_apf_set_offload - set apf filter instructions 4065*5113495bSYour Name * @session_id: session identifier 4066*5113495bSYour Name * @version: host apf version 4067*5113495bSYour Name * @filter_id: Filter ID for APF filter 4068*5113495bSYour Name * @total_length: The total length of the full instruction 4069*5113495bSYour Name * total_length equal to 0 means reset 4070*5113495bSYour Name * @current_offset: current offset, 0 means start a new setting 4071*5113495bSYour Name * @current_length: Length of current @program 4072*5113495bSYour Name * @program: APF instructions 4073*5113495bSYour Name */ 4074*5113495bSYour Name struct sir_apf_set_offload { 4075*5113495bSYour Name uint8_t session_id; 4076*5113495bSYour Name uint32_t version; 4077*5113495bSYour Name uint32_t filter_id; 4078*5113495bSYour Name uint32_t total_length; 4079*5113495bSYour Name uint32_t current_offset; 4080*5113495bSYour Name uint32_t current_length; 4081*5113495bSYour Name uint8_t *program; 4082*5113495bSYour Name }; 4083*5113495bSYour Name 4084*5113495bSYour Name /** 4085*5113495bSYour Name * struct sir_apf_offload_capabilities - get apf Capabilities 4086*5113495bSYour Name * @apf_version: fw's implement version 4087*5113495bSYour Name * @max_apf_filters: max filters that fw supports 4088*5113495bSYour Name * @max_bytes_for_apf_inst: the max bytes that can be used as apf instructions 4089*5113495bSYour Name */ 4090*5113495bSYour Name struct sir_apf_get_offload { 4091*5113495bSYour Name uint32_t apf_version; 4092*5113495bSYour Name uint32_t max_apf_filters; 4093*5113495bSYour Name uint32_t max_bytes_for_apf_inst; 4094*5113495bSYour Name }; 4095*5113495bSYour Name 4096*5113495bSYour Name #ifdef WLAN_FEATURE_NAN 4097*5113495bSYour Name /** 4098*5113495bSYour Name * enum ndp_end_type - NDP end type 4099*5113495bSYour Name * @NDP_END_TYPE_UNSPECIFIED: type is unspecified 4100*5113495bSYour Name * @NDP_END_TYPE_PEER_UNAVAILABLE: type is peer unavailable 4101*5113495bSYour Name * @NDP_END_TYPE_OTA_FRAME: NDP end frame received from peer 4102*5113495bSYour Name * 4103*5113495bSYour Name */ 4104*5113495bSYour Name enum ndp_end_type { 4105*5113495bSYour Name NDP_END_TYPE_UNSPECIFIED = 0x00, 4106*5113495bSYour Name NDP_END_TYPE_PEER_UNAVAILABLE = 0x01, 4107*5113495bSYour Name NDP_END_TYPE_OTA_FRAME = 0x02, 4108*5113495bSYour Name }; 4109*5113495bSYour Name 4110*5113495bSYour Name /** 4111*5113495bSYour Name * enum ndp_end_reason_code - NDP end reason code 4112*5113495bSYour Name * @NDP_END_REASON_UNSPECIFIED: reason is unspecified 4113*5113495bSYour Name * @NDP_END_REASON_INACTIVITY: reason is peer inactivity 4114*5113495bSYour Name * @NDP_END_REASON_PEER_DATA_END: data end indication received from peer 4115*5113495bSYour Name * 4116*5113495bSYour Name */ 4117*5113495bSYour Name enum ndp_end_reason_code { 4118*5113495bSYour Name NDP_END_REASON_UNSPECIFIED = 0x00, 4119*5113495bSYour Name NDP_END_REASON_INACTIVITY = 0x01, 4120*5113495bSYour Name NDP_END_REASON_PEER_DATA_END = 0x02, 4121*5113495bSYour Name }; 4122*5113495bSYour Name 4123*5113495bSYour Name /** 4124*5113495bSYour Name * enum nan_status_type - NDP status type 4125*5113495bSYour Name * @NDP_RSP_STATUS_SUCCESS: request was successful 4126*5113495bSYour Name * @NDP_RSP_STATUS_ERROR: request failed 4127*5113495bSYour Name */ 4128*5113495bSYour Name enum nan_status_type { 4129*5113495bSYour Name NDP_RSP_STATUS_SUCCESS = 0x00, 4130*5113495bSYour Name NDP_RSP_STATUS_ERROR = 0x01, 4131*5113495bSYour Name }; 4132*5113495bSYour Name 4133*5113495bSYour Name /** 4134*5113495bSYour Name * enum nan_reason_code - NDP command rsp reason code value 4135*5113495bSYour Name * @NDP_UNSUPPORTED_CONCURRENCY: Will be used in unsupported concurrency cases 4136*5113495bSYour Name * @NDP_NAN_DATA_IFACE_CREATE_FAILED: ndi create failed 4137*5113495bSYour Name * @NDP_NAN_DATA_IFACE_DELETE_FAILED: ndi delete failed 4138*5113495bSYour Name * @NDP_DATA_INITIATOR_REQ_FAILED: data initiator request failed 4139*5113495bSYour Name * @NDP_DATA_RESPONDER_REQ_FAILED: data responder request failed 4140*5113495bSYour Name * @NDP_INVALID_SERVICE_INSTANCE_ID: invalid service instance id 4141*5113495bSYour Name * @NDP_INVALID_NDP_INSTANCE_ID: invalid ndp instance id 4142*5113495bSYour Name * @NDP_INVALID_RSP_CODE: invalid response code in ndp responder request 4143*5113495bSYour Name * @NDP_INVALID_APP_INFO_LEN: invalid app info length 4144*5113495bSYour Name * @NDP_NMF_REQ_FAIL: OTA nan mgmt frame failure for data request 4145*5113495bSYour Name * @NDP_NMF_RSP_FAIL: OTA nan mgmt frame failure for data response 4146*5113495bSYour Name * @NDP_NMF_CNF_FAIL: OTA nan mgmt frame failure for confirm 4147*5113495bSYour Name * @NDP_END_FAILED: ndp end failed 4148*5113495bSYour Name * @NDP_NMF_END_REQ_FAIL: OTA nan mgmt frame failure for data end 4149*5113495bSYour Name * @NDP_VENDOR_SPECIFIC_ERROR: other vendor specific failures 4150*5113495bSYour Name */ 4151*5113495bSYour Name enum nan_reason_code { 4152*5113495bSYour Name NDP_UNSUPPORTED_CONCURRENCY = 9000, 4153*5113495bSYour Name NDP_NAN_DATA_IFACE_CREATE_FAILED = 9001, 4154*5113495bSYour Name NDP_NAN_DATA_IFACE_DELETE_FAILED = 9002, 4155*5113495bSYour Name NDP_DATA_INITIATOR_REQ_FAILED = 9003, 4156*5113495bSYour Name NDP_DATA_RESPONDER_REQ_FAILED = 9004, 4157*5113495bSYour Name NDP_INVALID_SERVICE_INSTANCE_ID = 9005, 4158*5113495bSYour Name NDP_INVALID_NDP_INSTANCE_ID = 9006, 4159*5113495bSYour Name NDP_INVALID_RSP_CODE = 9007, 4160*5113495bSYour Name NDP_INVALID_APP_INFO_LEN = 9008, 4161*5113495bSYour Name NDP_NMF_REQ_FAIL = 9009, 4162*5113495bSYour Name NDP_NMF_RSP_FAIL = 9010, 4163*5113495bSYour Name NDP_NMF_CNF_FAIL = 9011, 4164*5113495bSYour Name NDP_END_FAILED = 9012, 4165*5113495bSYour Name NDP_NMF_END_REQ_FAIL = 9013, 4166*5113495bSYour Name /* 9500 onwards vendor specific error codes */ 4167*5113495bSYour Name NDP_VENDOR_SPECIFIC_ERROR = 9500, 4168*5113495bSYour Name }; 4169*5113495bSYour Name 4170*5113495bSYour Name /** 4171*5113495bSYour Name * struct ndi_create_rsp - ndi create response params 4172*5113495bSYour Name * @status: request status 4173*5113495bSYour Name * @reason: reason if any 4174*5113495bSYour Name * 4175*5113495bSYour Name */ 4176*5113495bSYour Name struct ndi_create_rsp { 4177*5113495bSYour Name uint32_t status; 4178*5113495bSYour Name uint32_t reason; 4179*5113495bSYour Name uint8_t sta_id; 4180*5113495bSYour Name }; 4181*5113495bSYour Name 4182*5113495bSYour Name /** 4183*5113495bSYour Name * struct ndi_delete_rsp - ndi delete response params 4184*5113495bSYour Name * @status: request status 4185*5113495bSYour Name * @reason: reason if any 4186*5113495bSYour Name * 4187*5113495bSYour Name */ 4188*5113495bSYour Name struct ndi_delete_rsp { 4189*5113495bSYour Name uint32_t status; 4190*5113495bSYour Name uint32_t reason; 4191*5113495bSYour Name }; 4192*5113495bSYour Name 4193*5113495bSYour Name /** 4194*5113495bSYour Name * struct peer_ndp_map - mapping of NDP instances to peer to VDEV 4195*5113495bSYour Name * @vdev_id: session id of the interface over which ndp is being created 4196*5113495bSYour Name * @peer_ndi_mac_addr: peer NDI mac address 4197*5113495bSYour Name * @num_active_ndp_sessions: number of active NDP sessions on the peer 4198*5113495bSYour Name * @type: NDP end indication type 4199*5113495bSYour Name * @reason_code: NDP end indication reason code 4200*5113495bSYour Name * @ndp_instance_id: NDP instance ID 4201*5113495bSYour Name * 4202*5113495bSYour Name */ 4203*5113495bSYour Name struct peer_ndp_map { 4204*5113495bSYour Name uint32_t vdev_id; 4205*5113495bSYour Name struct qdf_mac_addr peer_ndi_mac_addr; 4206*5113495bSYour Name uint32_t num_active_ndp_sessions; 4207*5113495bSYour Name enum ndp_end_type type; 4208*5113495bSYour Name enum ndp_end_reason_code reason_code; 4209*5113495bSYour Name uint32_t ndp_instance_id; 4210*5113495bSYour Name }; 4211*5113495bSYour Name 4212*5113495bSYour Name #endif /* WLAN_FEATURE_NAN */ 4213*5113495bSYour Name 4214*5113495bSYour Name /** 4215*5113495bSYour Name * struct sir_p2p_lo_start - p2p listen offload start 4216*5113495bSYour Name * @vdev_id: vdev identifier 4217*5113495bSYour Name * @ctl_flags: control flag 4218*5113495bSYour Name * @freq: p2p listen frequency 4219*5113495bSYour Name * @period: listen offload period 4220*5113495bSYour Name * @interval: listen offload interval 4221*5113495bSYour Name * @count: number listen offload intervals 4222*5113495bSYour Name * @device_types: device types 4223*5113495bSYour Name * @dev_types_len: device types length 4224*5113495bSYour Name * @probe_resp_tmplt: probe response template 4225*5113495bSYour Name * @probe_resp_len: probe response template length 4226*5113495bSYour Name */ 4227*5113495bSYour Name struct sir_p2p_lo_start { 4228*5113495bSYour Name uint32_t vdev_id; 4229*5113495bSYour Name uint32_t ctl_flags; 4230*5113495bSYour Name uint32_t freq; 4231*5113495bSYour Name uint32_t period; 4232*5113495bSYour Name uint32_t interval; 4233*5113495bSYour Name uint32_t count; 4234*5113495bSYour Name uint8_t *device_types; 4235*5113495bSYour Name uint32_t dev_types_len; 4236*5113495bSYour Name uint8_t *probe_resp_tmplt; 4237*5113495bSYour Name uint32_t probe_resp_len; 4238*5113495bSYour Name }; 4239*5113495bSYour Name 4240*5113495bSYour Name /** 4241*5113495bSYour Name * struct sir_p2p_lo_event - P2P listen offload stop event 4242*5113495bSYour Name * @vdev_id: vdev identifier 4243*5113495bSYour Name * @reason_code: P2P listen offload stop reason 4244*5113495bSYour Name */ 4245*5113495bSYour Name struct sir_p2p_lo_event { 4246*5113495bSYour Name uint32_t vdev_id; 4247*5113495bSYour Name uint32_t reason_code; 4248*5113495bSYour Name }; 4249*5113495bSYour Name 4250*5113495bSYour Name /** 4251*5113495bSYour Name * struct sir_hal_pwr_dbg_cmd - unit test command parameters 4252*5113495bSYour Name * @pdev_id: pdev id 4253*5113495bSYour Name * @module_id: module id 4254*5113495bSYour Name * @num_args: number of arguments 4255*5113495bSYour Name * @args: arguments 4256*5113495bSYour Name */ 4257*5113495bSYour Name struct sir_mac_pwr_dbg_cmd { 4258*5113495bSYour Name uint32_t pdev_id; 4259*5113495bSYour Name uint32_t module_id; 4260*5113495bSYour Name uint32_t num_args; 4261*5113495bSYour Name uint32_t args[MAX_POWER_DBG_ARGS_SUPPORTED]; 4262*5113495bSYour Name }; 4263*5113495bSYour Name 4264*5113495bSYour Name /** 4265*5113495bSYour Name * struct sme_send_disassoc_frm_req - send disassoc request frame 4266*5113495bSYour Name * @msg_type: message type 4267*5113495bSYour Name * @length: length of message 4268*5113495bSYour Name * @vdev_id: vdev id 4269*5113495bSYour Name * @peer_mac: peer mac address 4270*5113495bSYour Name * @reason: reason for disassoc 4271*5113495bSYour Name * @wait_for_ack: wait for acknowledgment 4272*5113495bSYour Name **/ 4273*5113495bSYour Name struct sme_send_disassoc_frm_req { 4274*5113495bSYour Name uint16_t msg_type; 4275*5113495bSYour Name uint16_t length; 4276*5113495bSYour Name uint8_t vdev_id; 4277*5113495bSYour Name uint8_t peer_mac[6]; 4278*5113495bSYour Name uint16_t reason; 4279*5113495bSYour Name uint8_t wait_for_ack; 4280*5113495bSYour Name }; 4281*5113495bSYour Name 4282*5113495bSYour Name /** 4283*5113495bSYour Name * struct sme_update_access_policy_vendor_ie - update vendor ie and access 4284*5113495bSYour Name * policy 4285*5113495bSYour Name * @msg_type: message id 4286*5113495bSYour Name * @msg_len: message length 4287*5113495bSYour Name * @vdev_id: vdev id 4288*5113495bSYour Name * @ie: vendor ie 4289*5113495bSYour Name * @access_policy: access policy for vendor ie 4290*5113495bSYour Name */ 4291*5113495bSYour Name struct sme_update_access_policy_vendor_ie { 4292*5113495bSYour Name uint16_t msg_type; 4293*5113495bSYour Name uint16_t length; 4294*5113495bSYour Name uint32_t vdev_id; 4295*5113495bSYour Name uint8_t ie[WLAN_MAX_IE_LEN + 2]; 4296*5113495bSYour Name uint8_t access_policy; 4297*5113495bSYour Name }; 4298*5113495bSYour Name 4299*5113495bSYour Name /** 4300*5113495bSYour Name * struct sme_tx_fail_cnt_threshold - tx failure count for disconnect to fw 4301*5113495bSYour Name * @session_id: Session id 4302*5113495bSYour Name * @tx_fail_cnt_threshold: Tx failure count to do disconnect 4303*5113495bSYour Name */ 4304*5113495bSYour Name struct sme_tx_fail_cnt_threshold { 4305*5113495bSYour Name uint8_t session_id; 4306*5113495bSYour Name uint32_t tx_fail_cnt_threshold; 4307*5113495bSYour Name }; 4308*5113495bSYour Name 4309*5113495bSYour Name /** 4310*5113495bSYour Name * struct sme_short_retry_limit - transmission retry limit for short frames. 4311*5113495bSYour Name * @session_id: Session id 4312*5113495bSYour Name * @short_retry_limit: transmission retry limit for short frame. 4313*5113495bSYour Name * 4314*5113495bSYour Name */ 4315*5113495bSYour Name struct sme_short_retry_limit { 4316*5113495bSYour Name uint8_t session_id; 4317*5113495bSYour Name uint32_t short_retry_limit; 4318*5113495bSYour Name }; 4319*5113495bSYour Name 4320*5113495bSYour Name /** 4321*5113495bSYour Name * struct sme_long_retry_limit - transmission retry limit for long frames 4322*5113495bSYour Name * @session_id: Session id 4323*5113495bSYour Name * @short_retry_limit: transmission retry limit for long frames. 4324*5113495bSYour Name * 4325*5113495bSYour Name */ 4326*5113495bSYour Name struct sme_long_retry_limit { 4327*5113495bSYour Name uint8_t session_id; 4328*5113495bSYour Name uint32_t long_retry_limit; 4329*5113495bSYour Name }; 4330*5113495bSYour Name 4331*5113495bSYour Name /** 4332*5113495bSYour Name * struct sme_addba_accept - Allow/reject the addba request frame 4333*5113495bSYour Name * @session_id: Session id 4334*5113495bSYour Name * @addba_accept: Allow/reject the addba request frame 4335*5113495bSYour Name */ 4336*5113495bSYour Name struct sme_addba_accept { 4337*5113495bSYour Name uint8_t session_id; 4338*5113495bSYour Name uint8_t addba_accept; 4339*5113495bSYour Name }; 4340*5113495bSYour Name 4341*5113495bSYour Name /** 4342*5113495bSYour Name * struct sme_sta_inactivity_timeout - set sta_inactivity_timeout 4343*5113495bSYour Name * @session_id: session Id. 4344*5113495bSYour Name * @sta_inactivity_timeout: Timeout to disconnect STA after there 4345*5113495bSYour Name * is no activity. 4346*5113495bSYour Name */ 4347*5113495bSYour Name struct sme_sta_inactivity_timeout { 4348*5113495bSYour Name uint8_t session_id; 4349*5113495bSYour Name uint32_t sta_inactivity_timeout; 4350*5113495bSYour Name }; 4351*5113495bSYour Name 4352*5113495bSYour Name /** 4353*5113495bSYour Name * struct sme_vdev_pause - Pause vdev for a defined time interval 4354*5113495bSYour Name * @session_id: Session id 4355*5113495bSYour Name * @vdev_pause_duration: vdev pause duration 4356*5113495bSYour Name */ 4357*5113495bSYour Name struct sme_vdev_pause { 4358*5113495bSYour Name uint8_t session_id; 4359*5113495bSYour Name uint8_t vdev_pause_duration; 4360*5113495bSYour Name }; 4361*5113495bSYour Name 4362*5113495bSYour Name /* 4363*5113495bSYour Name * struct wow_pulse_mode - WoW Pulse set cmd struct 4364*5113495bSYour Name * @wow_pulse_enable: enable or disable this feature 4365*5113495bSYour Name * @wow_pulse_pin: GPIO PIN for Pulse 4366*5113495bSYour Name * @wow_pulse_interval_low: Pulse interval low 4367*5113495bSYour Name * @wow_pulse_interval_high: Pulse interval high 4368*5113495bSYour Name * @wow_pulse_repeat_count: Pulse repeat count 4369*5113495bSYour Name * @wow_pulse_init_state: Pulse init level 4370*5113495bSYour Name * 4371*5113495bSYour Name * SME uses this structure to configure wow pulse info 4372*5113495bSYour Name * and send it to WMA 4373*5113495bSYour Name */ 4374*5113495bSYour Name struct wow_pulse_mode { 4375*5113495bSYour Name bool wow_pulse_enable; 4376*5113495bSYour Name uint8_t wow_pulse_pin; 4377*5113495bSYour Name uint16_t wow_pulse_interval_high; 4378*5113495bSYour Name uint16_t wow_pulse_interval_low; 4379*5113495bSYour Name uint32_t wow_pulse_repeat_count; 4380*5113495bSYour Name uint32_t wow_pulse_init_state; 4381*5113495bSYour Name }; 4382*5113495bSYour Name 4383*5113495bSYour Name 4384*5113495bSYour Name /** 4385*5113495bSYour Name * umac_send_mb_message_to_mac(): post message to umac 4386*5113495bSYour Name * @msg: opaque message pointer 4387*5113495bSYour Name * 4388*5113495bSYour Name * Return: QDF status 4389*5113495bSYour Name */ 4390*5113495bSYour Name QDF_STATUS umac_send_mb_message_to_mac(void *msg); 4391*5113495bSYour Name 4392*5113495bSYour Name /** 4393*5113495bSYour Name * struct scan_chan_info - channel info 4394*5113495bSYour Name * @freq: radio frequence 4395*5113495bSYour Name * @cmd flag: cmd flag 4396*5113495bSYour Name * @noise_floor: noise floor 4397*5113495bSYour Name * @cycle_count: cycle count 4398*5113495bSYour Name * @rx_clear_count: rx clear count 4399*5113495bSYour Name * @tx_frame_count: TX frame count 4400*5113495bSYour Name * @clock_freq: clock frequence MHZ 4401*5113495bSYour Name * @cca_busy_subband_info: CCA busy for each possible 20Mhz subbands 4402*5113495bSYour Name * of the wideband scan channel 4403*5113495bSYour Name */ 4404*5113495bSYour Name struct scan_chan_info { 4405*5113495bSYour Name uint32_t freq; 4406*5113495bSYour Name uint32_t cmd_flag; 4407*5113495bSYour Name uint32_t noise_floor; 4408*5113495bSYour Name uint32_t cycle_count; 4409*5113495bSYour Name uint32_t rx_clear_count; 4410*5113495bSYour Name uint32_t tx_frame_count; 4411*5113495bSYour Name uint32_t clock_freq; 4412*5113495bSYour Name struct wide_band_scan_chan_info subband_info; 4413*5113495bSYour Name }; 4414*5113495bSYour Name 4415*5113495bSYour Name /** 4416*5113495bSYour Name * enum wow_resume_trigger - resume trigger override setting values 4417*5113495bSYour Name * @WOW_RESUME_TRIGGER_DEFAULT: fw to use platform default resume trigger 4418*5113495bSYour Name * @WOW_RESUME_TRIGGER_HTC_WAKEUP: force fw to use HTC Wakeup to resume 4419*5113495bSYour Name * @WOW_RESUME_TRIGGER_GPIO: force fw to use GPIO to resume 4420*5113495bSYour Name * @WOW_RESUME_TRIGGER_COUNT: number of resume trigger options 4421*5113495bSYour Name */ 4422*5113495bSYour Name enum wow_resume_trigger { 4423*5113495bSYour Name /* always first */ 4424*5113495bSYour Name WOW_RESUME_TRIGGER_DEFAULT = 0, 4425*5113495bSYour Name WOW_RESUME_TRIGGER_HTC_WAKEUP, 4426*5113495bSYour Name WOW_RESUME_TRIGGER_GPIO, 4427*5113495bSYour Name /* always last */ 4428*5113495bSYour Name WOW_RESUME_TRIGGER_COUNT 4429*5113495bSYour Name }; 4430*5113495bSYour Name 4431*5113495bSYour Name /** 4432*5113495bSYour Name * enum wow_interface_pause - interface pause override setting values 4433*5113495bSYour Name * @WOW_INTERFACE_PAUSE_DEFAULT: use platform default interface pause setting 4434*5113495bSYour Name * @WOW_INTERFACE_PAUSE_ENABLE: force interface pause setting to enabled 4435*5113495bSYour Name * @WOW_INTERFACE_PAUSE_DISABLE: force interface pause setting to disabled 4436*5113495bSYour Name * @WOW_INTERFACE_PAUSE_COUNT: number of interface pause options 4437*5113495bSYour Name */ 4438*5113495bSYour Name enum wow_interface_pause { 4439*5113495bSYour Name /* always first */ 4440*5113495bSYour Name WOW_INTERFACE_PAUSE_DEFAULT = 0, 4441*5113495bSYour Name WOW_INTERFACE_PAUSE_ENABLE, 4442*5113495bSYour Name WOW_INTERFACE_PAUSE_DISABLE, 4443*5113495bSYour Name /* always last */ 4444*5113495bSYour Name WOW_INTERFACE_PAUSE_COUNT 4445*5113495bSYour Name }; 4446*5113495bSYour Name 4447*5113495bSYour Name /** 4448*5113495bSYour Name * struct wow_enable_params - A collection of wow enable override parameters 4449*5113495bSYour Name * @is_unit_test: true to notify fw this is a unit-test suspend 4450*5113495bSYour Name * @interface_pause: used to override the interface pause indication sent to fw 4451*5113495bSYour Name * @resume_trigger: used to force fw to use a particular resume method 4452*5113495bSYour Name */ 4453*5113495bSYour Name struct wow_enable_params { 4454*5113495bSYour Name bool is_unit_test; 4455*5113495bSYour Name enum wow_interface_pause interface_pause; 4456*5113495bSYour Name enum wow_resume_trigger resume_trigger; 4457*5113495bSYour Name }; 4458*5113495bSYour Name 4459*5113495bSYour Name #define HE_LTF_1X 0 4460*5113495bSYour Name #define HE_LTF_2X 1 4461*5113495bSYour Name #define HE_LTF_4X 2 4462*5113495bSYour Name 4463*5113495bSYour Name #define HE_LTF_ALL 0x7 4464*5113495bSYour Name #define HE_SGI_MASK 0xFF00 4465*5113495bSYour Name 4466*5113495bSYour Name #define AUTO_RATE_GI_400NS 8 4467*5113495bSYour Name #define AUTO_RATE_GI_800NS 9 4468*5113495bSYour Name #define AUTO_RATE_GI_1600NS 10 4469*5113495bSYour Name #define AUTO_RATE_GI_3200NS 11 4470*5113495bSYour Name 4471*5113495bSYour Name #define AUTO_RATE_LDPC_DIS_BIT 16 4472*5113495bSYour Name 4473*5113495bSYour Name #define SET_AUTO_RATE_SGI_VAL(set_val, bit_mask) \ 4474*5113495bSYour Name (set_val = (set_val & HE_LTF_ALL) | bit_mask) 4475*5113495bSYour Name 4476*5113495bSYour Name #define SET_AUTO_RATE_HE_LTF_VAL(set_val, bit_mask) \ 4477*5113495bSYour Name (set_val = (set_val & HE_SGI_MASK) | bit_mask) 4478*5113495bSYour Name 4479*5113495bSYour Name #define MSCS_OUI_TYPE "\x58" 4480*5113495bSYour Name #define MSCS_OUI_SIZE 1 4481*5113495bSYour Name 4482*5113495bSYour Name #ifdef WLAN_FEATURE_11AX 4483*5113495bSYour Name #define HE_CAP_OUI_TYPE "\x23" 4484*5113495bSYour Name #define HE_CAP_OUI_SIZE 1 4485*5113495bSYour Name #define HE_OP_OUI_TYPE "\x24" 4486*5113495bSYour Name #define HE_OP_OUI_SIZE 1 4487*5113495bSYour Name 4488*5113495bSYour Name #define HE_RU_ALLOC_INDX0_MASK (0x01 << 0) 4489*5113495bSYour Name #define HE_RU_ALLOC_INDX1_MASK (0x01 << 1) 4490*5113495bSYour Name #define HE_RU_ALLOC_INDX2_MASK (0x01 << 2) 4491*5113495bSYour Name #define HE_RU_ALLOC_INDX3_MASK (0x01 << 3) 4492*5113495bSYour Name 4493*5113495bSYour Name /* 3 bits for NSS and 4 bits for RU Index */ 4494*5113495bSYour Name #define HE_PPET_NSS_LEN 3 4495*5113495bSYour Name #define HE_PEPT_RU_IDX_LEN 4 4496*5113495bSYour Name #define HE_PPET_NSS_RU_LEN (HE_PPET_NSS_LEN + HE_PEPT_RU_IDX_LEN) 4497*5113495bSYour Name #define HE_PPET_SIZE 3 4498*5113495bSYour Name #define HE_BYTE_SIZE 8 4499*5113495bSYour Name 4500*5113495bSYour Name struct ppet_hdr { 4501*5113495bSYour Name uint8_t nss:3; 4502*5113495bSYour Name uint8_t ru_idx_mask:4; 4503*5113495bSYour Name uint8_t remaining:1; 4504*5113495bSYour Name }; 4505*5113495bSYour Name 4506*5113495bSYour Name /* MAX PPET size = 7 bits + (max_nss X max_ru_number X 6) = 25 bytes */ 4507*5113495bSYour Name #define HE_MAX_PPET_SIZE WNI_CFG_HE_PPET_LEN 4508*5113495bSYour Name 4509*5113495bSYour Name #define HE_MAX_PHY_CAP_SIZE 3 4510*5113495bSYour Name 4511*5113495bSYour Name #define HE_CH_WIDTH_GET_BIT(ch_wd, bit) (((ch_wd) >> (bit)) & 1) 4512*5113495bSYour Name #define HE_CH_WIDTH_COMBINE(b0, b1, b2, b3, b4, b5, b6) \ 4513*5113495bSYour Name ((uint8_t)(b0) | ((b1) << 1) | ((b2) << 2) | ((b3) << 3) | \ 4514*5113495bSYour Name ((b4) << 4) | ((b5) << 5) | ((b6) << 6)) 4515*5113495bSYour Name #define HE_CH_WIDTH_CLR_BIT(ch_wd, bit) (((ch_wd) >> (bit)) & ~1) 4516*5113495bSYour Name 4517*5113495bSYour Name /* 4518*5113495bSYour Name * MCS values are interpreted as in IEEE 11ax-D1.4 spec onwards 4519*5113495bSYour Name * +-----------------------------------------------------+ 4520*5113495bSYour Name * | SS8 | SS7 | SS6 | SS5 | SS4 | SS3 | SS2 | SS1 | 4521*5113495bSYour Name * +-----------------------------------------------------+ 4522*5113495bSYour Name * | 15-14 | 13-12 | 11-10 | 9-8 | 7-6 | 5-4 | 3-2 | 1-0 | 4523*5113495bSYour Name * +-----------------------------------------------------+ 4524*5113495bSYour Name */ 4525*5113495bSYour Name #define HE_MCS_NSS_SHIFT(nss) (((nss) - 1) << 1) 4526*5113495bSYour Name #define HE_MCS_MSK_4_NSS(nss) (3 << HE_MCS_NSS_SHIFT(nss)) 4527*5113495bSYour Name #define HE_MCS_INV_MSK_4_NSS(nss) (~HE_MCS_MSK_4_NSS(nss)) 4528*5113495bSYour Name #define HE_GET_MCS_4_NSS(mcs_set, nss) \ 4529*5113495bSYour Name (((mcs_set) >> HE_MCS_NSS_SHIFT(nss)) & 3) 4530*5113495bSYour Name #define HE_SET_MCS_4_NSS(mcs_set, mcs, nss) \ 4531*5113495bSYour Name (((mcs_set) & HE_MCS_INV_MSK_4_NSS(nss)) | \ 4532*5113495bSYour Name ((mcs) << HE_MCS_NSS_SHIFT(nss))) 4533*5113495bSYour Name #define HE_MCS_IS_NSS_ENABLED(mcs_set, nss) \ 4534*5113495bSYour Name ((HE_MCS_MSK_4_NSS(nss) & (mcs_set)) != HE_MCS_MSK_4_NSS(nss)) 4535*5113495bSYour Name 4536*5113495bSYour Name #define HE_MCS_ALL_DISABLED 0xFFFF 4537*5113495bSYour Name 4538*5113495bSYour Name #define HE_MCS_0_7 0x0 4539*5113495bSYour Name #define HE_MCS_0_9 0x1 4540*5113495bSYour Name #define HE_MCS_0_11 0x2 4541*5113495bSYour Name #define HE_MCS_DISABLE 0x3 4542*5113495bSYour Name 4543*5113495bSYour Name #define HE_6G_MIN_MPDU_START_SAPCE_BIT_POS 0 4544*5113495bSYour Name #define HE_6G_MAX_AMPDU_LEN_EXP_BIT_POS 3 4545*5113495bSYour Name #define HE_6G_MAX_MPDU_LEN_BIT_POS 6 4546*5113495bSYour Name #define HE_6G_SMPS_BIT_POS 9 4547*5113495bSYour Name #define HE_6G_RD_RESP_BIT_POS 11 4548*5113495bSYour Name #define HE_6G_RX_ANT_PATTERN_BIT_POS 12 4549*5113495bSYour Name #define HE_6G_TX_ANT_PATTERN_BIT_POS 13 4550*5113495bSYour Name 4551*5113495bSYour Name /* 4552*5113495bSYour Name * Following formuala has been arrived at using karnaugh map and unit tested 4553*5113495bSYour Name * with sample code. Take MCS for each NSS as 2 bit value first and solve for 4554*5113495bSYour Name * 2 bit intersection of NSS. Use following table/Matrix as guide for solving 4555*5113495bSYour Name * K-Maps 4556*5113495bSYour Name * MCS 1\MCS 2 00 01 10 11 4557*5113495bSYour Name * 00 00 00 00 11 4558*5113495bSYour Name * 01 00 01 01 11 4559*5113495bSYour Name * 10 00 01 10 11 4560*5113495bSYour Name * 11 11 11 11 11 4561*5113495bSYour Name * if output MCS is o1o0, then as per K-map reduction: 4562*5113495bSYour Name * o0 = m1.m0 | n1.n0 | (~m1).m0.(n1^n0) | (~n1).n0.(m1^m0) 4563*5113495bSYour Name * o1 = m1.m0 | n1.n0 | m1.(~m0).n1.(~n0) 4564*5113495bSYour Name * 4565*5113495bSYour Name * Please note: Calculating MCS intersection is 80211 protocol specific and 4566*5113495bSYour Name * should be implemented in PE. WMA can use this macro rather than calling any 4567*5113495bSYour Name * lim API to do the intersection. 4568*5113495bSYour Name */ 4569*5113495bSYour Name #define HE_INTERSECT_MCS_BITS_PER_NSS(m1, m0, n1, n0) \ 4570*5113495bSYour Name (((m1 & m0) | (n1 & n0) | (((~m1) & m0) & (n1 ^ n0)) | \ 4571*5113495bSYour Name (((~n1) & n0) & (m1 ^ m0))) | (((m1 & m0) | (n1 & n0) | \ 4572*5113495bSYour Name (m1 & ~m0 & n1 & ~n0)) << 1)) 4573*5113495bSYour Name 4574*5113495bSYour Name /* following takes MCS as 2 bits */ 4575*5113495bSYour Name #define HE_INTERSECT_MCS_PER_NSS(mcs_1, mcs_2) \ 4576*5113495bSYour Name HE_INTERSECT_MCS_BITS_PER_NSS((mcs_1 >> 1), (mcs_1 & 1), \ 4577*5113495bSYour Name (mcs_2 >> 1), (mcs_2 & 1)) 4578*5113495bSYour Name 4579*5113495bSYour Name /* following takes MCS as 16 bits */ 4580*5113495bSYour Name #define HE_INTERSECT_MCS(mcs_1, mcs_2) ( \ 4581*5113495bSYour Name HE_INTERSECT_MCS_PER_NSS(HE_GET_MCS_4_NSS(mcs_1, 1), \ 4582*5113495bSYour Name HE_GET_MCS_4_NSS(mcs_2, 1)) << HE_MCS_NSS_SHIFT(1) | \ 4583*5113495bSYour Name HE_INTERSECT_MCS_PER_NSS(HE_GET_MCS_4_NSS(mcs_1, 2), \ 4584*5113495bSYour Name HE_GET_MCS_4_NSS(mcs_2, 2)) << HE_MCS_NSS_SHIFT(2) | \ 4585*5113495bSYour Name HE_INTERSECT_MCS_PER_NSS(HE_GET_MCS_4_NSS(mcs_1, 3), \ 4586*5113495bSYour Name HE_GET_MCS_4_NSS(mcs_2, 3)) << HE_MCS_NSS_SHIFT(3) | \ 4587*5113495bSYour Name HE_INTERSECT_MCS_PER_NSS(HE_GET_MCS_4_NSS(mcs_1, 4), \ 4588*5113495bSYour Name HE_GET_MCS_4_NSS(mcs_2, 4)) << HE_MCS_NSS_SHIFT(4) | \ 4589*5113495bSYour Name HE_INTERSECT_MCS_PER_NSS(HE_GET_MCS_4_NSS(mcs_1, 5), \ 4590*5113495bSYour Name HE_GET_MCS_4_NSS(mcs_2, 5)) << HE_MCS_NSS_SHIFT(5) | \ 4591*5113495bSYour Name HE_INTERSECT_MCS_PER_NSS(HE_GET_MCS_4_NSS(mcs_1, 6), \ 4592*5113495bSYour Name HE_GET_MCS_4_NSS(mcs_2, 6)) << HE_MCS_NSS_SHIFT(6) | \ 4593*5113495bSYour Name HE_INTERSECT_MCS_PER_NSS(HE_GET_MCS_4_NSS(mcs_1, 7), \ 4594*5113495bSYour Name HE_GET_MCS_4_NSS(mcs_2, 7)) << HE_MCS_NSS_SHIFT(7) | \ 4595*5113495bSYour Name HE_INTERSECT_MCS_PER_NSS(HE_GET_MCS_4_NSS(mcs_1, 8), \ 4596*5113495bSYour Name HE_GET_MCS_4_NSS(mcs_2, 8)) << HE_MCS_NSS_SHIFT(8)) 4597*5113495bSYour Name 4598*5113495bSYour Name /** 4599*5113495bSYour Name * struct he_capability - to store 11ax HE capabilities 4600*5113495bSYour Name * @phy_cap: HE PHY capabilities 4601*5113495bSYour Name * @mac_cap: HE MAC capabilities 4602*5113495bSYour Name * @mcs: HE MCS 4603*5113495bSYour Name * @ppet: HE PPE threshold 4604*5113495bSYour Name */ 4605*5113495bSYour Name struct he_capability { 4606*5113495bSYour Name uint32_t phy_cap[HE_MAX_PHY_CAP_SIZE]; 4607*5113495bSYour Name uint32_t mac_cap; 4608*5113495bSYour Name uint32_t mcs; 4609*5113495bSYour Name struct wlan_psoc_host_ppe_threshold ppet; 4610*5113495bSYour Name }; 4611*5113495bSYour Name #endif 4612*5113495bSYour Name 4613*5113495bSYour Name #define HE_GET_NSS(mcs, nss) \ 4614*5113495bSYour Name do { \ 4615*5113495bSYour Name (nss) = 0; \ 4616*5113495bSYour Name while ((((mcs) >> ((nss)*2)) & 3) != 3 && nss < 8) \ 4617*5113495bSYour Name (nss)++; \ 4618*5113495bSYour Name } while (0) 4619*5113495bSYour Name 4620*5113495bSYour Name #ifdef WLAN_FEATURE_11BE 4621*5113495bSYour Name #define EHT_MAX_PHY_CAP_SIZE 3 4622*5113495bSYour Name #define EHT_OP_OUI_TYPE "\x6a" 4623*5113495bSYour Name #define EHT_OP_OUI_SIZE 1 4624*5113495bSYour Name 4625*5113495bSYour Name #define MLO_IE_OUI_TYPE "\x6b" 4626*5113495bSYour Name #define MLO_IE_OUI_SIZE 1 4627*5113495bSYour Name 4628*5113495bSYour Name #define EHT_CAP_OUI_TYPE "\x6c" 4629*5113495bSYour Name #define EHT_CAP_OUI_SIZE 1 4630*5113495bSYour Name 4631*5113495bSYour Name /** 4632*5113495bSYour Name * struct eht_capability - to store 11be EHT capabilities 4633*5113495bSYour Name * @phy_cap: EHT PHY capabilities 4634*5113495bSYour Name * @mac_cap: EHT MAC capabilities 4635*5113495bSYour Name * @mcs: EHT MCS 4636*5113495bSYour Name */ 4637*5113495bSYour Name struct eht_capability { 4638*5113495bSYour Name uint32_t phy_cap[EHT_MAX_PHY_CAP_SIZE]; 4639*5113495bSYour Name uint32_t mac_cap; 4640*5113495bSYour Name uint32_t mcs; 4641*5113495bSYour Name }; 4642*5113495bSYour Name #endif 4643*5113495bSYour Name /** 4644*5113495bSYour Name * struct rsp_stats - arp packet stats 4645*5113495bSYour Name * @arp_req_enqueue: fw tx count 4646*5113495bSYour Name * @arp_req_tx_success: tx ack count 4647*5113495bSYour Name * @arp_req_tx_failure: tx ack fail count 4648*5113495bSYour Name * @arp_rsp_recvd: rx fw count 4649*5113495bSYour Name * @out_of_order_arp_rsp_drop_cnt: out of order count 4650*5113495bSYour Name * @dad_detected: dad detected 4651*5113495bSYour Name * @connect_status: connection status 4652*5113495bSYour Name * @ba_session_establishment_status: BA session status 4653*5113495bSYour Name * @connect_stats_present: connectivity stats present or not 4654*5113495bSYour Name * @tcp_ack_recvd: tcp syn ack's count 4655*5113495bSYour Name * @icmpv4_rsp_recvd: icmpv4 responses count 4656*5113495bSYour Name */ 4657*5113495bSYour Name struct rsp_stats { 4658*5113495bSYour Name uint32_t vdev_id; 4659*5113495bSYour Name uint32_t arp_req_enqueue; 4660*5113495bSYour Name uint32_t arp_req_tx_success; 4661*5113495bSYour Name uint32_t arp_req_tx_failure; 4662*5113495bSYour Name uint32_t arp_rsp_recvd; 4663*5113495bSYour Name uint32_t out_of_order_arp_rsp_drop_cnt; 4664*5113495bSYour Name uint32_t dad_detected; 4665*5113495bSYour Name uint32_t connect_status; 4666*5113495bSYour Name uint32_t ba_session_establishment_status; 4667*5113495bSYour Name bool connect_stats_present; 4668*5113495bSYour Name uint32_t tcp_ack_recvd; 4669*5113495bSYour Name uint32_t icmpv4_rsp_recvd; 4670*5113495bSYour Name }; 4671*5113495bSYour Name 4672*5113495bSYour Name /** 4673*5113495bSYour Name * struct set_arp_stats_params - set/reset arp stats 4674*5113495bSYour Name * @vdev_id: session id 4675*5113495bSYour Name * @flag: enable/disable stats 4676*5113495bSYour Name * @pkt_type: type of packet(1 - arp) 4677*5113495bSYour Name * @ip_addr: subnet ipv4 address in case of encrypted packets 4678*5113495bSYour Name * @pkt_type_bitmap: pkt bitmap 4679*5113495bSYour Name * @tcp_src_port: tcp src port for pkt tracking 4680*5113495bSYour Name * @tcp_dst_port: tcp dst port for pkt tracking 4681*5113495bSYour Name * @icmp_ipv4: target ipv4 address to track ping packets 4682*5113495bSYour Name * @reserved: reserved 4683*5113495bSYour Name */ 4684*5113495bSYour Name struct set_arp_stats_params { 4685*5113495bSYour Name uint32_t vdev_id; 4686*5113495bSYour Name uint8_t flag; 4687*5113495bSYour Name uint8_t pkt_type; 4688*5113495bSYour Name uint32_t ip_addr; 4689*5113495bSYour Name uint32_t pkt_type_bitmap; 4690*5113495bSYour Name uint32_t tcp_src_port; 4691*5113495bSYour Name uint32_t tcp_dst_port; 4692*5113495bSYour Name uint32_t icmp_ipv4; 4693*5113495bSYour Name uint32_t reserved; 4694*5113495bSYour Name }; 4695*5113495bSYour Name 4696*5113495bSYour Name /** 4697*5113495bSYour Name * struct get_arp_stats_params - get arp stats from firmware 4698*5113495bSYour Name * @pkt_type: packet type(1 - ARP) 4699*5113495bSYour Name * @vdev_id: session id 4700*5113495bSYour Name */ 4701*5113495bSYour Name struct get_arp_stats_params { 4702*5113495bSYour Name uint8_t pkt_type; 4703*5113495bSYour Name uint32_t vdev_id; 4704*5113495bSYour Name }; 4705*5113495bSYour Name 4706*5113495bSYour Name typedef void (*sme_rcpi_callback)(void *context, struct qdf_mac_addr mac_addr, 4707*5113495bSYour Name int32_t rcpi, QDF_STATUS status); 4708*5113495bSYour Name /** 4709*5113495bSYour Name * struct sme_rcpi_req - structure for querying rcpi info 4710*5113495bSYour Name * @session_id: session for which rcpi is required 4711*5113495bSYour Name * @measurement_type: type of measurement from enum rcpi_measurement_type 4712*5113495bSYour Name * @rcpi_callback: callback function to be invoked for rcpi response 4713*5113495bSYour Name * @rcpi_context: context info for rcpi callback 4714*5113495bSYour Name * @mac_addr: peer addr for which rcpi is required 4715*5113495bSYour Name */ 4716*5113495bSYour Name struct sme_rcpi_req { 4717*5113495bSYour Name uint32_t session_id; 4718*5113495bSYour Name enum rcpi_measurement_type measurement_type; 4719*5113495bSYour Name sme_rcpi_callback rcpi_callback; 4720*5113495bSYour Name void *rcpi_context; 4721*5113495bSYour Name struct qdf_mac_addr mac_addr; 4722*5113495bSYour Name }; 4723*5113495bSYour Name 4724*5113495bSYour Name /* 4725*5113495bSYour Name * @SCAN_REJECT_DEFAULT: default value 4726*5113495bSYour Name * @CONNECTION_IN_PROGRESS: connection is in progress 4727*5113495bSYour Name * @REASSOC_IN_PROGRESS: reassociation is in progress 4728*5113495bSYour Name * @EAPOL_IN_PROGRESS: STA/P2P-CLI is in middle of EAPOL/WPS exchange 4729*5113495bSYour Name * @SAP_EAPOL_IN_PROGRESS: SAP/P2P-GO is in middle of EAPOL/WPS exchange 4730*5113495bSYour Name * @SAP_CONNECTION_IN_PROGRESS: SAP/P2P-GO is in middle of connection. 4731*5113495bSYour Name * @NAN_ENABLE_DISABLE_IN_PROGRESS: NAN is in middle of enable/disable discovery 4732*5113495bSYour Name */ 4733*5113495bSYour Name enum scan_reject_states { 4734*5113495bSYour Name SCAN_REJECT_DEFAULT = 0, 4735*5113495bSYour Name CONNECTION_IN_PROGRESS, 4736*5113495bSYour Name REASSOC_IN_PROGRESS, 4737*5113495bSYour Name EAPOL_IN_PROGRESS, 4738*5113495bSYour Name SAP_EAPOL_IN_PROGRESS, 4739*5113495bSYour Name SAP_CONNECTION_IN_PROGRESS, 4740*5113495bSYour Name NAN_ENABLE_DISABLE_IN_PROGRESS, 4741*5113495bSYour Name }; 4742*5113495bSYour Name 4743*5113495bSYour Name /** 4744*5113495bSYour Name * sir_sme_rx_aggr_hole_ind - sme rx aggr hole indication 4745*5113495bSYour Name * @hole_cnt: num of holes detected 4746*5113495bSYour Name * @hole_info_array: hole info 4747*5113495bSYour Name */ 4748*5113495bSYour Name struct sir_sme_rx_aggr_hole_ind { 4749*5113495bSYour Name uint32_t hole_cnt; 4750*5113495bSYour Name uint32_t hole_info_array[]; 4751*5113495bSYour Name }; 4752*5113495bSYour Name 4753*5113495bSYour Name /** 4754*5113495bSYour Name * struct sir_set_rx_reorder_timeout_val - rx reorder timeout 4755*5113495bSYour Name * @rx_timeout_pri: reorder timeout for AC 4756*5113495bSYour Name * rx_timeout_pri[0] : AC_VO 4757*5113495bSYour Name * rx_timeout_pri[1] : AC_VI 4758*5113495bSYour Name * rx_timeout_pri[2] : AC_BE 4759*5113495bSYour Name * rx_timeout_pri[3] : AC_BK 4760*5113495bSYour Name */ 4761*5113495bSYour Name struct sir_set_rx_reorder_timeout_val { 4762*5113495bSYour Name uint32_t rx_timeout_pri[4]; 4763*5113495bSYour Name }; 4764*5113495bSYour Name 4765*5113495bSYour Name /** 4766*5113495bSYour Name * struct sir_peer_set_rx_blocksize - set rx blocksize 4767*5113495bSYour Name * @vdev_id: vdev id 4768*5113495bSYour Name * @peer_macaddr: peer mac address 4769*5113495bSYour Name * @rx_block_ack_win_limit: windows size limitation 4770*5113495bSYour Name */ 4771*5113495bSYour Name struct sir_peer_set_rx_blocksize { 4772*5113495bSYour Name uint32_t vdev_id; 4773*5113495bSYour Name struct qdf_mac_addr peer_macaddr; 4774*5113495bSYour Name uint32_t rx_block_ack_win_limit; 4775*5113495bSYour Name }; 4776*5113495bSYour Name 4777*5113495bSYour Name /** 4778*5113495bSYour Name * struct sir_rssi_disallow_lst - Structure holding Rssi based avoid candidate 4779*5113495bSYour Name * list 4780*5113495bSYour Name * @node: Node pointer 4781*5113495bSYour Name * @bssid: BSSID of the AP 4782*5113495bSYour Name * @retry_delay: Retry delay received during last rejection in ms 4783*5113495bSYour Name * @ expected_rssi: RSSI at which STA can initiate 4784*5113495bSYour Name * @time_during_rejection: Timestamp during last rejection in millisec 4785*5113495bSYour Name * @reject_reason: reason to add the BSSID to DLM 4786*5113495bSYour Name * @source: Source of adding the BSSID to DLM 4787*5113495bSYour Name * @original_timeout: original timeout sent by the AP 4788*5113495bSYour Name * @received_time: Timestamp when the AP was added to the Denylist 4789*5113495bSYour Name */ 4790*5113495bSYour Name struct sir_rssi_disallow_lst { 4791*5113495bSYour Name qdf_list_node_t node; 4792*5113495bSYour Name struct qdf_mac_addr bssid; 4793*5113495bSYour Name uint32_t retry_delay; 4794*5113495bSYour Name int8_t expected_rssi; 4795*5113495bSYour Name qdf_time_t time_during_rejection; 4796*5113495bSYour Name enum dlm_reject_ap_reason reject_reason; 4797*5113495bSYour Name enum dlm_reject_ap_source source; 4798*5113495bSYour Name uint32_t original_timeout; 4799*5113495bSYour Name qdf_time_t received_time; 4800*5113495bSYour Name }; 4801*5113495bSYour Name 4802*5113495bSYour Name /** 4803*5113495bSYour Name * struct chain_rssi_result - chain rssi result 4804*5113495bSYour Name * num_chains_valid: valid chain num 4805*5113495bSYour Name * @chain_rssi: chain rssi result as dBm unit 4806*5113495bSYour Name * @chain_evm: error vector magnitude 4807*5113495bSYour Name * @ant_id: antenna id 4808*5113495bSYour Name */ 4809*5113495bSYour Name #define CHAIN_MAX_NUM 8 4810*5113495bSYour Name struct chain_rssi_result { 4811*5113495bSYour Name uint32_t num_chains_valid; 4812*5113495bSYour Name uint32_t chain_rssi[CHAIN_MAX_NUM]; 4813*5113495bSYour Name int32_t chain_evm[CHAIN_MAX_NUM]; 4814*5113495bSYour Name uint32_t ant_id[CHAIN_MAX_NUM]; 4815*5113495bSYour Name }; 4816*5113495bSYour Name 4817*5113495bSYour Name /** 4818*5113495bSYour Name * struct get_chain_rssi_req_params - get chain rssi req params 4819*5113495bSYour Name * @peer_macaddr: specific peer mac address 4820*5113495bSYour Name * @session_id: session id 4821*5113495bSYour Name */ 4822*5113495bSYour Name struct get_chain_rssi_req_params { 4823*5113495bSYour Name struct qdf_mac_addr peer_macaddr; 4824*5113495bSYour Name uint8_t session_id; 4825*5113495bSYour Name }; 4826*5113495bSYour Name 4827*5113495bSYour Name /* 4828*5113495bSYour Name * struct sir_limit_off_chan - limit off-channel command parameters 4829*5113495bSYour Name * @vdev_id: vdev id 4830*5113495bSYour Name * @is_tos_active: status of the traffic (active/inactive) 4831*5113495bSYour Name * @max_off_chan_time: max allowed off channel time 4832*5113495bSYour Name * @rest_time: home channel time 4833*5113495bSYour Name * @skip_dfs_chans: skip dfs channels during scan 4834*5113495bSYour Name */ 4835*5113495bSYour Name struct sir_limit_off_chan { 4836*5113495bSYour Name uint8_t vdev_id; 4837*5113495bSYour Name bool is_tos_active; 4838*5113495bSYour Name uint32_t max_off_chan_time; 4839*5113495bSYour Name uint32_t rest_time; 4840*5113495bSYour Name bool skip_dfs_chans; 4841*5113495bSYour Name }; 4842*5113495bSYour Name 4843*5113495bSYour Name typedef void (*roam_scan_stats_cb)(void *context, 4844*5113495bSYour Name struct wmi_roam_scan_stats_res *res); 4845*5113495bSYour Name 4846*5113495bSYour Name /** 4847*5113495bSYour Name * struct sir_roam_scan_stats - Stores roam scan context 4848*5113495bSYour Name * @vdev_id: vdev id 4849*5113495bSYour Name * @cb: callback to be invoked for roam scan stats response 4850*5113495bSYour Name * @context: context of callback 4851*5113495bSYour Name */ 4852*5113495bSYour Name struct sir_roam_scan_stats { 4853*5113495bSYour Name uint32_t vdev_id; 4854*5113495bSYour Name roam_scan_stats_cb cb; 4855*5113495bSYour Name void *context; 4856*5113495bSYour Name }; 4857*5113495bSYour Name 4858*5113495bSYour Name /** 4859*5113495bSYour Name * struct sae_info - SAE info used for commit/confirm messages 4860*5113495bSYour Name * @msg_type: Message type 4861*5113495bSYour Name * @msg_len: length of message 4862*5113495bSYour Name * @vdev_id: vdev id 4863*5113495bSYour Name * @peer_mac_addr: peer MAC address 4864*5113495bSYour Name * @ssid: SSID 4865*5113495bSYour Name * @akm: key mgmt suite used 4866*5113495bSYour Name */ 4867*5113495bSYour Name struct sir_sae_info { 4868*5113495bSYour Name uint16_t msg_type; 4869*5113495bSYour Name uint16_t msg_len; 4870*5113495bSYour Name uint32_t vdev_id; 4871*5113495bSYour Name struct qdf_mac_addr peer_mac_addr; 4872*5113495bSYour Name tSirMacSSid ssid; 4873*5113495bSYour Name uint32_t akm; 4874*5113495bSYour Name }; 4875*5113495bSYour Name 4876*5113495bSYour Name /** 4877*5113495bSYour Name * struct sir_sae_msg - SAE msg used for message posting 4878*5113495bSYour Name * @message_type: message type 4879*5113495bSYour Name * @length: message length 4880*5113495bSYour Name * @vdev_id: vdev id 4881*5113495bSYour Name * @sae_status: SAE status, 0: Success, Non-zero: Failure. 4882*5113495bSYour Name * @pmkid: PMKID derived as part of SAE authentication 4883*5113495bSYour Name * @peer_mac_addr: peer MAC address 4884*5113495bSYour Name * @result_code: This carries the reason of the SAE auth failure. 4885*5113495bSYour Name * Currently, SAE authentication failure may happen due to 4886*5113495bSYour Name * 1. Authentication failure detected as part of SAE auth frame 4887*5113495bSYour Name * exchanges and validation. 4888*5113495bSYour Name * 2. Deauth received from AP while SAE authentication is in 4889*5113495bSYour Name * progress. 4890*5113495bSYour Name */ 4891*5113495bSYour Name struct sir_sae_msg { 4892*5113495bSYour Name uint16_t message_type; 4893*5113495bSYour Name uint16_t length; 4894*5113495bSYour Name uint16_t vdev_id; 4895*5113495bSYour Name uint8_t pmkid[PMKID_LEN]; 4896*5113495bSYour Name uint8_t sae_status; 4897*5113495bSYour Name tSirMacAddr peer_mac_addr; 4898*5113495bSYour Name tSirResultCodes result_code; 4899*5113495bSYour Name }; 4900*5113495bSYour Name 4901*5113495bSYour Name #ifdef WLAN_FEATURE_MOTION_DETECTION 4902*5113495bSYour Name /** 4903*5113495bSYour Name * struct sir_md_evt - motion detection event status 4904*5113495bSYour Name * @vdev_id: vdev id 4905*5113495bSYour Name * @status: md event status 4906*5113495bSYour Name */ 4907*5113495bSYour Name struct sir_md_evt { 4908*5113495bSYour Name uint8_t vdev_id; 4909*5113495bSYour Name uint32_t status; 4910*5113495bSYour Name }; 4911*5113495bSYour Name 4912*5113495bSYour Name /** 4913*5113495bSYour Name * struct sir_md_bl_evt - motion detection baseline event values 4914*5113495bSYour Name * @vdev_id: vdev id 4915*5113495bSYour Name * @bl_baseline_value: baseline correlation value calculated during baselining 4916*5113495bSYour Name * @bl_max_corr_reserved: max corr value obtained during baselining phase in % 4917*5113495bSYour Name * @bl_min_corr_reserved: min corr value obtained during baselining phase in % 4918*5113495bSYour Name */ 4919*5113495bSYour Name struct sir_md_bl_evt { 4920*5113495bSYour Name uint8_t vdev_id; 4921*5113495bSYour Name uint32_t bl_baseline_value; 4922*5113495bSYour Name uint32_t bl_max_corr_reserved; 4923*5113495bSYour Name uint32_t bl_min_corr_reserved; 4924*5113495bSYour Name }; 4925*5113495bSYour Name #endif /* WLAN_FEATURE_MOTION_DETECTION */ 4926*5113495bSYour Name 4927*5113495bSYour Name #ifdef WLAN_MWS_INFO_DEBUGFS 4928*5113495bSYour Name /** 4929*5113495bSYour Name * struct sir_get_mws_coex_info - Get MWS coex info 4930*5113495bSYour Name * @vdev_id: vdev id 4931*5113495bSYour Name * @cmd_id: wmi mws-coex command IDs 4932*5113495bSYour Name */ 4933*5113495bSYour Name struct sir_get_mws_coex_info { 4934*5113495bSYour Name uint32_t vdev_id; 4935*5113495bSYour Name uint32_t cmd_id; 4936*5113495bSYour Name }; 4937*5113495bSYour Name #endif /* WLAN_MWS_INFO_DEBUGFS */ 4938*5113495bSYour Name 4939*5113495bSYour Name /* 4940*5113495bSYour Name * struct sir_update_session_txq_edca_param 4941*5113495bSYour Name * @message_type: SME message type 4942*5113495bSYour Name * @length: size of struct sir_update_session_txq_edca_param 4943*5113495bSYour Name * @vdev_id: vdev ID 4944*5113495bSYour Name * @txq_edca_params: txq edca parameter to update 4945*5113495bSYour Name */ 4946*5113495bSYour Name struct sir_update_session_txq_edca_param { 4947*5113495bSYour Name uint16_t message_type; 4948*5113495bSYour Name uint16_t length; 4949*5113495bSYour Name uint8_t vdev_id; 4950*5113495bSYour Name tSirMacEdcaParamRecord txq_edca_params; 4951*5113495bSYour Name }; 4952*5113495bSYour Name 4953*5113495bSYour Name /* struct channel_change_req - Change channel 4954*5113495bSYour Name * request for SAP 4955*5113495bSYour Name * @vdev_id: vdev id 4956*5113495bSYour Name * @target_chan_freq: New channel frequency 4957*5113495bSYour Name * @sec_ch_offset: second channel offset 4958*5113495bSYour Name * @center_freq_seg0: channel center freq 0 4959*5113495bSYour Name * @center_freq_seg1: channel center freq 1 4960*5113495bSYour Name * @target_punc_bitmap: New channel puncturing bitmap 4961*5113495bSYour Name * @dot11mode: dot11 mode 4962*5113495bSYour Name * @nw_type: nw type 4963*5113495bSYour Name * @cac_duration_ms: cac duration in ms 4964*5113495bSYour Name * @dfs_regdomain: dfs regdomain 4965*5113495bSYour Name * @opr_rates: operational rates 4966*5113495bSYour Name * @ext_rates: extended rates 4967*5113495bSYour Name */ 4968*5113495bSYour Name struct channel_change_req { 4969*5113495bSYour Name uint8_t vdev_id; 4970*5113495bSYour Name uint32_t target_chan_freq; 4971*5113495bSYour Name uint8_t sec_ch_offset; 4972*5113495bSYour Name enum phy_ch_width ch_width; 4973*5113495bSYour Name uint8_t center_freq_seg0; 4974*5113495bSYour Name uint8_t center_freq_seg1; 4975*5113495bSYour Name #ifdef WLAN_FEATURE_11BE 4976*5113495bSYour Name uint16_t target_punc_bitmap; 4977*5113495bSYour Name #endif 4978*5113495bSYour Name uint32_t dot11mode; 4979*5113495bSYour Name tSirNwType nw_type; 4980*5113495bSYour Name uint32_t cac_duration_ms; 4981*5113495bSYour Name uint32_t dfs_regdomain; 4982*5113495bSYour Name tSirMacRateSet opr_rates; 4983*5113495bSYour Name tSirMacRateSet ext_rates; 4984*5113495bSYour Name }; 4985*5113495bSYour Name 4986*5113495bSYour Name /* struct start_bss_config - Start BSS 4987*5113495bSYour Name * request configurations 4988*5113495bSYour Name * @vdev_id: vdev id 4989*5113495bSYour Name * @cmd_id: serialization command id 4990*5113495bSYour Name * @ssId: ssid 4991*5113495bSYour Name * @dtimPeriod: dtim period 4992*5113495bSYour Name * @ssidHidden: hidden ssid parameter 4993*5113495bSYour Name * @privacy: ssid privacy 4994*5113495bSYour Name * @authType: authentication type 4995*5113495bSYour Name * @rsnIE: RSN IE of the AP 4996*5113495bSYour Name * @add_ie_params: additional IEs 4997*5113495bSYour Name * @oper_ch_freq: operating frequency 4998*5113495bSYour Name * @vht_channel_width: channel width 4999*5113495bSYour Name * @center_freq_seg0: channel center freq 0 5000*5113495bSYour Name * @center_freq_seg1: channel center freq 1 5001*5113495bSYour Name * @sec_ch_offset: secondary channel offset 5002*5113495bSYour Name * @wps_state: wps config 5003*5113495bSYour Name * @dot11mode: dot11 mode 5004*5113495bSYour Name * @nwType: nw type 5005*5113495bSYour Name * @operationalRateSet: operational rates 5006*5113495bSYour Name * @extendedRateSet: extended rates 5007*5113495bSYour Name * @beacon_tx_rate: Tx rate for beacon 5008*5113495bSYour Name * @cac_duration_ms: cac duration in ms 5009*5113495bSYour Name * @dfs_regdomain: dfs regdomain 5010*5113495bSYour Name */ 5011*5113495bSYour Name struct start_bss_config { 5012*5113495bSYour Name uint8_t vdev_id; 5013*5113495bSYour Name uint32_t cmd_id; 5014*5113495bSYour Name tSirMacSSid ssId; 5015*5113495bSYour Name uint16_t beaconInterval; 5016*5113495bSYour Name uint32_t dtimPeriod; 5017*5113495bSYour Name uint8_t ssidHidden; 5018*5113495bSYour Name 5019*5113495bSYour Name uint8_t privacy; 5020*5113495bSYour Name tAniAuthType authType; 5021*5113495bSYour Name tSirRSNie rsnIE; 5022*5113495bSYour Name struct add_ie_params add_ie_params; 5023*5113495bSYour Name 5024*5113495bSYour Name uint32_t oper_ch_freq; 5025*5113495bSYour Name uint8_t vht_channel_width; 5026*5113495bSYour Name uint8_t center_freq_seg0; 5027*5113495bSYour Name uint8_t center_freq_seg1; 5028*5113495bSYour Name uint8_t sec_ch_offset; 5029*5113495bSYour Name 5030*5113495bSYour Name uint8_t wps_state; 5031*5113495bSYour Name uint8_t dot11mode; 5032*5113495bSYour Name tSirNwType nwType; 5033*5113495bSYour Name 5034*5113495bSYour Name tSirMacRateSet operationalRateSet; 5035*5113495bSYour Name tSirMacRateSet extendedRateSet; 5036*5113495bSYour Name uint16_t beacon_tx_rate; 5037*5113495bSYour Name uint32_t cac_duration_ms; 5038*5113495bSYour Name uint32_t dfs_regdomain; 5039*5113495bSYour Name }; 5040*5113495bSYour Name 5041*5113495bSYour Name #endif /* __SIR_API_H */ 5042