1*5113495bSYour Name /* 2*5113495bSYour Name * Copyright (c) 2017-2021 The Linux Foundation. All rights reserved. 3*5113495bSYour Name * Copyright (c) 2022-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 * DOC: wlan_tdls_public_structs.h 22*5113495bSYour Name * 23*5113495bSYour Name * TDLS public structure definitions 24*5113495bSYour Name */ 25*5113495bSYour Name 26*5113495bSYour Name #ifndef _WLAN_TDLS_STRUCTS_H_ 27*5113495bSYour Name #define _WLAN_TDLS_STRUCTS_H_ 28*5113495bSYour Name #include <qdf_timer.h> 29*5113495bSYour Name #include <qdf_list.h> 30*5113495bSYour Name #include <qdf_mc_timer.h> 31*5113495bSYour Name #include <wlan_cmn.h> 32*5113495bSYour Name #include <wlan_cmn_ieee80211.h> 33*5113495bSYour Name #ifdef FEATURE_RUNTIME_PM 34*5113495bSYour Name #include <wlan_pmo_common_public_struct.h> 35*5113495bSYour Name #endif 36*5113495bSYour Name 37*5113495bSYour Name #define WLAN_TDLS_STA_MAX_NUM 8 38*5113495bSYour Name #define WLAN_TDLS_STA_P_UAPSD_OFFCHAN_MAX_NUM 1 39*5113495bSYour Name #define WLAN_TDLS_PEER_LIST_SIZE 16 40*5113495bSYour Name #define WLAN_TDLS_CT_TABLE_SIZE 8 41*5113495bSYour Name #define WLAN_TDLS_PEER_SUB_LIST_SIZE 10 42*5113495bSYour Name #define WLAN_MAC_MAX_EXTN_CAP 8 43*5113495bSYour Name #define WLAN_MAC_MAX_SUPP_CHANNELS 100 44*5113495bSYour Name #define WLAN_MAC_WMI_MAX_SUPP_CHANNELS 128 45*5113495bSYour Name #define WLAN_MAX_SUPP_OPER_CLASSES 32 46*5113495bSYour Name #define WLAN_MAC_MAX_SUPP_RATES 32 47*5113495bSYour Name #define WLAN_CHANNEL_14 14 48*5113495bSYour Name 49*5113495bSYour Name /* Enable TDLS off-channel switch */ 50*5113495bSYour Name #define ENABLE_CHANSWITCH 1 51*5113495bSYour Name 52*5113495bSYour Name /* 53*5113495bSYour Name * Passive(peer requested) responder mode off-channel switch. 54*5113495bSYour Name * If peer initiates off channel request, that will be honored in 55*5113495bSYour Name * this mode 56*5113495bSYour Name */ 57*5113495bSYour Name #define DISABLE_CHANSWITCH 2 58*5113495bSYour Name 59*5113495bSYour Name /* 60*5113495bSYour Name * Disable TDLS off-channel operation completely. 61*5113495bSYour Name * Peer initiated requests will also be discarded. 62*5113495bSYour Name */ 63*5113495bSYour Name #define DISABLE_ACTIVE_CHANSWITCH 3 64*5113495bSYour Name 65*5113495bSYour Name #define WLAN_TDLS_PREFERRED_OFF_CHANNEL_NUM_MIN 1 66*5113495bSYour Name #define WLAN_TDLS_PREFERRED_OFF_CHANNEL_NUM_MAX 165 67*5113495bSYour Name #define WLAN_TDLS_PREFERRED_OFF_CHANNEL_NUM_DEF 36 68*5113495bSYour Name #define WLAN_TDLS_PREFERRED_OFF_CHANNEL_FRQ_DEF 5180 69*5113495bSYour Name #define WLAN_TDLS_MAX_CONCURRENT_VDEV_SUPPORTED 3 70*5113495bSYour Name 71*5113495bSYour Name #define AC_PRIORITY_NUM 4 72*5113495bSYour Name 73*5113495bSYour Name /* Default tdls serialize timeout is set to 4 (peer delete) + 1 secs */ 74*5113495bSYour Name #ifdef FEATURE_RUNTIME_PM 75*5113495bSYour Name /* Add extra PMO_RESUME_TIMEOUT for runtime PM resume timeout */ 76*5113495bSYour Name #define TDLS_DELETE_PEER_CMD_TIMEOUT (4000 + 1000 + PMO_RESUME_TIMEOUT) 77*5113495bSYour Name #else 78*5113495bSYour Name #define TDLS_DELETE_PEER_CMD_TIMEOUT (4000 + 1000) 79*5113495bSYour Name #endif 80*5113495bSYour Name 81*5113495bSYour Name /** Maximum time(ms) to wait for tdls del sta to complete **/ 82*5113495bSYour Name #define WAIT_TIME_TDLS_DEL_STA (TDLS_DELETE_PEER_CMD_TIMEOUT + 1000) 83*5113495bSYour Name 84*5113495bSYour Name #define TDLS_DEFAULT_SERIALIZE_CMD_TIMEOUT (4000) 85*5113495bSYour Name 86*5113495bSYour Name /** Maximum time(ms) to wait for tdls add sta to complete **/ 87*5113495bSYour Name #define WAIT_TIME_TDLS_ADD_STA (TDLS_DEFAULT_SERIALIZE_CMD_TIMEOUT + 1000) 88*5113495bSYour Name 89*5113495bSYour Name /** Maximum time(ms) to wait for Link Establish Req to complete **/ 90*5113495bSYour Name #define WAIT_TIME_TDLS_LINK_ESTABLISH_REQ 1500 91*5113495bSYour Name 92*5113495bSYour Name /** Maximum time(ms) to wait for tdls mgmt to complete **/ 93*5113495bSYour Name #define WAIT_TIME_FOR_TDLS_MGMT 3000 94*5113495bSYour Name 95*5113495bSYour Name /** Maximum time(ms) to wait for tdls mgmt to complete **/ 96*5113495bSYour Name #define WAIT_TIME_FOR_TDLS_USER_CMD 11000 97*5113495bSYour Name 98*5113495bSYour Name /** Maximum waittime for TDLS teardown links **/ 99*5113495bSYour Name #define WAIT_TIME_FOR_TDLS_TEARDOWN_LINKS 10000 100*5113495bSYour Name 101*5113495bSYour Name /** Maximum waittime for TDLS antenna switch **/ 102*5113495bSYour Name #define WAIT_TIME_FOR_TDLS_ANTENNA_SWITCH 1000 103*5113495bSYour Name 104*5113495bSYour Name #define TDLS_TEARDOWN_PEER_UNREACHABLE 25 105*5113495bSYour Name #define TDLS_TEARDOWN_PEER_UNSPEC_REASON 26 106*5113495bSYour Name 107*5113495bSYour Name #define INVALID_TDLS_PEER_INDEX 0xFF 108*5113495bSYour Name 109*5113495bSYour Name #ifdef WLAN_FEATURE_11AX 110*5113495bSYour Name #define MIN_TDLS_HE_CAP_LEN 17 111*5113495bSYour Name #define MAX_TDLS_HE_CAP_LEN 29 112*5113495bSYour Name #endif 113*5113495bSYour Name 114*5113495bSYour Name /** 115*5113495bSYour Name * enum tdls_add_oper - add peer type 116*5113495bSYour Name * @TDLS_OPER_NONE: none 117*5113495bSYour Name * @TDLS_OPER_ADD: add new peer 118*5113495bSYour Name * @TDLS_OPER_UPDATE: used to update peer 119*5113495bSYour Name */ 120*5113495bSYour Name enum tdls_add_oper { 121*5113495bSYour Name TDLS_OPER_NONE, 122*5113495bSYour Name TDLS_OPER_ADD, 123*5113495bSYour Name TDLS_OPER_UPDATE 124*5113495bSYour Name }; 125*5113495bSYour Name 126*5113495bSYour Name /** 127*5113495bSYour Name * enum tdls_conc_cap - tdls concurrency support 128*5113495bSYour Name * @TDLS_SUPPORTED_ONLY_ON_STA: only support sta tdls 129*5113495bSYour Name * @TDLS_SUPPORTED_ONLY_ON_P2P_CLIENT: only support p2p client tdls 130*5113495bSYour Name */ 131*5113495bSYour Name enum tdls_conc_cap { 132*5113495bSYour Name TDLS_SUPPORTED_ONLY_ON_STA = 0, 133*5113495bSYour Name TDLS_SUPPORTED_ONLY_ON_P2P_CLIENT, 134*5113495bSYour Name }; 135*5113495bSYour Name 136*5113495bSYour Name /** 137*5113495bSYour Name * enum tdls_peer_capab - tdls capability type 138*5113495bSYour Name * @TDLS_CAP_NOT_SUPPORTED: tdls not supported 139*5113495bSYour Name * @TDLS_CAP_UNKNOWN: unknown capability 140*5113495bSYour Name * @TDLS_CAP_SUPPORTED: tdls capability supported 141*5113495bSYour Name */ 142*5113495bSYour Name enum tdls_peer_capab { 143*5113495bSYour Name TDLS_CAP_NOT_SUPPORTED = -1, 144*5113495bSYour Name TDLS_CAP_UNKNOWN = 0, 145*5113495bSYour Name TDLS_CAP_SUPPORTED = 1, 146*5113495bSYour Name }; 147*5113495bSYour Name 148*5113495bSYour Name /** 149*5113495bSYour Name * enum tdls_peer_state - tdls peer state 150*5113495bSYour Name * @TDLS_PEER_STATE_PEERING: tdls connection in progress 151*5113495bSYour Name * @TDLS_PEER_STATE_CONNECTED: tdls peer is connected 152*5113495bSYour Name * @TDLS_PEER_STATE_TEARDOWN: tdls peer is tear down 153*5113495bSYour Name * @TDLS_PEER_ADD_MAC_ADDR: add peer mac into connection table 154*5113495bSYour Name * @TDLS_PEER_REMOVE_MAC_ADDR: remove peer mac from connection table 155*5113495bSYour Name */ 156*5113495bSYour Name enum tdls_peer_state { 157*5113495bSYour Name TDLS_PEER_STATE_PEERING, 158*5113495bSYour Name TDLS_PEER_STATE_CONNECTED, 159*5113495bSYour Name TDLS_PEER_STATE_TEARDOWN, 160*5113495bSYour Name TDLS_PEER_ADD_MAC_ADDR, 161*5113495bSYour Name TDLS_PEER_REMOVE_MAC_ADDR 162*5113495bSYour Name }; 163*5113495bSYour Name 164*5113495bSYour Name /** 165*5113495bSYour Name * enum tdls_link_state - tdls link state 166*5113495bSYour Name * @TDLS_LINK_IDLE: tdls link idle 167*5113495bSYour Name * @TDLS_LINK_DISCOVERING: tdls link discovering 168*5113495bSYour Name * @TDLS_LINK_DISCOVERED: tdls link discovered 169*5113495bSYour Name * @TDLS_LINK_CONNECTING: tdls link connecting 170*5113495bSYour Name * @TDLS_LINK_CONNECTED: tdls link connected 171*5113495bSYour Name * @TDLS_LINK_TEARING: tdls link tearing 172*5113495bSYour Name */ 173*5113495bSYour Name enum tdls_link_state { 174*5113495bSYour Name TDLS_LINK_IDLE = 0, 175*5113495bSYour Name TDLS_LINK_DISCOVERING, 176*5113495bSYour Name TDLS_LINK_DISCOVERED, 177*5113495bSYour Name TDLS_LINK_CONNECTING, 178*5113495bSYour Name TDLS_LINK_CONNECTED, 179*5113495bSYour Name TDLS_LINK_TEARING, 180*5113495bSYour Name }; 181*5113495bSYour Name 182*5113495bSYour Name /** 183*5113495bSYour Name * enum tdls_link_state_reason - tdls link reason 184*5113495bSYour Name * @TDLS_LINK_SUCCESS: Success 185*5113495bSYour Name * @TDLS_LINK_UNSPECIFIED: Unspecified reason 186*5113495bSYour Name * @TDLS_LINK_NOT_SUPPORTED: Remote side doesn't support TDLS 187*5113495bSYour Name * @TDLS_LINK_UNSUPPORTED_BAND: Remote side doesn't support this band 188*5113495bSYour Name * @TDLS_LINK_NOT_BENEFICIAL: Going to AP is better than direct 189*5113495bSYour Name * @TDLS_LINK_DROPPED_BY_REMOTE: Remote side doesn't want it anymore 190*5113495bSYour Name */ 191*5113495bSYour Name enum tdls_link_state_reason { 192*5113495bSYour Name TDLS_LINK_SUCCESS, 193*5113495bSYour Name TDLS_LINK_UNSPECIFIED = -1, 194*5113495bSYour Name TDLS_LINK_NOT_SUPPORTED = -2, 195*5113495bSYour Name TDLS_LINK_UNSUPPORTED_BAND = -3, 196*5113495bSYour Name TDLS_LINK_NOT_BENEFICIAL = -4, 197*5113495bSYour Name TDLS_LINK_DROPPED_BY_REMOTE = -5, 198*5113495bSYour Name }; 199*5113495bSYour Name 200*5113495bSYour Name /** 201*5113495bSYour Name * enum tdls_feature_mode - TDLS support mode 202*5113495bSYour Name * @TDLS_SUPPORT_DISABLED: Disabled in ini or FW 203*5113495bSYour Name * @TDLS_SUPPORT_SUSPENDED: TDLS supported by ini and FW, but disabled 204*5113495bSYour Name * temporarily due to off-channel operations or due to other reasons 205*5113495bSYour Name * @TDLS_SUPPORT_EXP_TRIG_ONLY: Explicit trigger mode 206*5113495bSYour Name * @TDLS_SUPPORT_IMP_MODE: Implicit mode 207*5113495bSYour Name * @TDLS_SUPPORT_EXT_CONTROL: External control mode 208*5113495bSYour Name */ 209*5113495bSYour Name enum tdls_feature_mode { 210*5113495bSYour Name TDLS_SUPPORT_DISABLED = 0, 211*5113495bSYour Name TDLS_SUPPORT_SUSPENDED, 212*5113495bSYour Name TDLS_SUPPORT_EXP_TRIG_ONLY, 213*5113495bSYour Name TDLS_SUPPORT_IMP_MODE, 214*5113495bSYour Name TDLS_SUPPORT_EXT_CONTROL, 215*5113495bSYour Name }; 216*5113495bSYour Name 217*5113495bSYour Name /** 218*5113495bSYour Name * enum tdls_command_type - TDLS command type 219*5113495bSYour Name * @TDLS_CMD_TX_ACTION: send tdls action frame 220*5113495bSYour Name * @TDLS_CMD_ADD_STA: add tdls peer 221*5113495bSYour Name * @TDLS_CMD_CHANGE_STA: change tdls peer 222*5113495bSYour Name * @TDLS_CMD_ENABLE_LINK: enable tdls link 223*5113495bSYour Name * @TDLS_CMD_DISABLE_LINK: disable tdls link 224*5113495bSYour Name * @TDLS_CMD_CONFIG_FORCE_PEER: config external peer 225*5113495bSYour Name * @TDLS_CMD_REMOVE_FORCE_PEER: remove external peer 226*5113495bSYour Name * @TDLS_CMD_STATS_UPDATE: update tdls stats 227*5113495bSYour Name * @TDLS_CMD_CONFIG_UPDATE: config tdls 228*5113495bSYour Name * @TDLS_CMD_SCAN_DONE: scon done event 229*5113495bSYour Name * @TDLS_CMD_SET_RESPONDER: responder event 230*5113495bSYour Name * @TDLS_NOTIFY_STA_CONNECTION: notify sta connection 231*5113495bSYour Name * @TDLS_NOTIFY_STA_DISCONNECTION: notify sta disconnection 232*5113495bSYour Name * @TDLS_CMD_SET_TDLS_MODE: set the tdls mode 233*5113495bSYour Name * @TDLS_CMD_SESSION_INCREMENT: notify session increment 234*5113495bSYour Name * @TDLS_CMD_SESSION_DECREMENT: notify session decrement 235*5113495bSYour Name * @TDLS_CMD_TEARDOWN_LINKS: notify teardown 236*5113495bSYour Name * @TDLS_NOTIFY_RESET_ADAPTERS: notify adapter reset 237*5113495bSYour Name * @TDLS_CMD_GET_ALL_PEERS: get all the tdls peers from the list 238*5113495bSYour Name * @TDLS_CMD_ANTENNA_SWITCH: dynamic tdls antenna switch 239*5113495bSYour Name * @TDLS_CMD_SET_OFFCHANNEL: tdls offchannel 240*5113495bSYour Name * @TDLS_CMD_SET_OFFCHANMODE: tdls offchannel mode 241*5113495bSYour Name * @TDLS_CMD_SET_SECOFFCHANOFFSET: tdls secondary offchannel offset 242*5113495bSYour Name * @TDLS_DELETE_ALL_PEERS_INDICATION: tdls delete all peers indication 243*5113495bSYour Name * @TDLS_CMD_START_BSS: SAP start indication to tdls module 244*5113495bSYour Name * @TDLS_CMD_SET_LINK_UNFORCE: tdls to unforce link for MLO case 245*5113495bSYour Name */ 246*5113495bSYour Name enum tdls_command_type { 247*5113495bSYour Name TDLS_CMD_TX_ACTION = 1, 248*5113495bSYour Name TDLS_CMD_ADD_STA, 249*5113495bSYour Name TDLS_CMD_CHANGE_STA, 250*5113495bSYour Name TDLS_CMD_ENABLE_LINK, 251*5113495bSYour Name TDLS_CMD_DISABLE_LINK, 252*5113495bSYour Name TDLS_CMD_CONFIG_FORCE_PEER, 253*5113495bSYour Name TDLS_CMD_REMOVE_FORCE_PEER, 254*5113495bSYour Name TDLS_CMD_STATS_UPDATE, 255*5113495bSYour Name TDLS_CMD_CONFIG_UPDATE, 256*5113495bSYour Name TDLS_CMD_SCAN_DONE, 257*5113495bSYour Name TDLS_CMD_SET_RESPONDER, 258*5113495bSYour Name TDLS_NOTIFY_STA_CONNECTION, 259*5113495bSYour Name TDLS_NOTIFY_STA_DISCONNECTION, 260*5113495bSYour Name TDLS_CMD_SET_TDLS_MODE, 261*5113495bSYour Name TDLS_CMD_SESSION_INCREMENT, 262*5113495bSYour Name TDLS_CMD_SESSION_DECREMENT, 263*5113495bSYour Name TDLS_CMD_TEARDOWN_LINKS, 264*5113495bSYour Name TDLS_NOTIFY_RESET_ADAPTERS, 265*5113495bSYour Name TDLS_CMD_GET_ALL_PEERS, 266*5113495bSYour Name TDLS_CMD_ANTENNA_SWITCH, 267*5113495bSYour Name TDLS_CMD_SET_OFFCHANNEL, 268*5113495bSYour Name TDLS_CMD_SET_OFFCHANMODE, 269*5113495bSYour Name TDLS_CMD_SET_SECOFFCHANOFFSET, 270*5113495bSYour Name TDLS_DELETE_ALL_PEERS_INDICATION, 271*5113495bSYour Name TDLS_CMD_START_BSS, 272*5113495bSYour Name TDLS_CMD_SET_LINK_UNFORCE 273*5113495bSYour Name }; 274*5113495bSYour Name 275*5113495bSYour Name /** 276*5113495bSYour Name * enum tdls_event_type - TDLS event type 277*5113495bSYour Name * @TDLS_EVENT_VDEV_STATE_CHANGE: umac connect/disconnect event 278*5113495bSYour Name * @TDLS_EVENT_MGMT_TX_ACK_CNF: tx tdls frame ack event 279*5113495bSYour Name * @TDLS_EVENT_RX_MGMT: rx discovery response frame 280*5113495bSYour Name * @TDLS_EVENT_ADD_PEER: add peer or update peer 281*5113495bSYour Name * @TDLS_EVENT_DEL_PEER: delete peer 282*5113495bSYour Name * @TDLS_EVENT_DISCOVERY_REQ: discovery request 283*5113495bSYour Name * @TDLS_EVENT_TEARDOWN_REQ: teardown request 284*5113495bSYour Name * @TDLS_EVENT_SETUP_REQ: setup request 285*5113495bSYour Name * @TDLS_EVENT_TEARDOWN_LINKS_DONE: teardown completion event 286*5113495bSYour Name * @TDLS_EVENT_USER_CMD: tdls user command 287*5113495bSYour Name * @TDLS_EVENT_ANTENNA_SWITCH: antenna switch event 288*5113495bSYour Name */ 289*5113495bSYour Name enum tdls_event_type { 290*5113495bSYour Name TDLS_EVENT_VDEV_STATE_CHANGE = 0, 291*5113495bSYour Name TDLS_EVENT_MGMT_TX_ACK_CNF, 292*5113495bSYour Name TDLS_EVENT_RX_MGMT, 293*5113495bSYour Name TDLS_EVENT_ADD_PEER, 294*5113495bSYour Name TDLS_EVENT_DEL_PEER, 295*5113495bSYour Name TDLS_EVENT_DISCOVERY_REQ, 296*5113495bSYour Name TDLS_EVENT_TEARDOWN_REQ, 297*5113495bSYour Name TDLS_EVENT_SETUP_REQ, 298*5113495bSYour Name TDLS_EVENT_TEARDOWN_LINKS_DONE, 299*5113495bSYour Name TDLS_EVENT_USER_CMD, 300*5113495bSYour Name TDLS_EVENT_ANTENNA_SWITCH, 301*5113495bSYour Name }; 302*5113495bSYour Name 303*5113495bSYour Name /** 304*5113495bSYour Name * enum tdls_state_t - tdls state 305*5113495bSYour Name * @QCA_WIFI_HAL_TDLS_S_DISABLED: TDLS is not enabled, or is disabled now 306*5113495bSYour Name * @QCA_WIFI_HAL_TDLS_S_ENABLED: TDLS is enabled, but not yet tried 307*5113495bSYour Name * @QCA_WIFI_HAL_TDLS_S_ESTABLISHED: Direct link is established 308*5113495bSYour Name * @QCA_WIFI_HAL_TDLS_S_ESTABLISHED_OFF_CHANNEL: Direct link established using 309*5113495bSYour Name * MCC 310*5113495bSYour Name * @QCA_WIFI_HAL_TDLS_S_DROPPED: Direct link was established, but is now dropped 311*5113495bSYour Name * @QCA_WIFI_HAL_TDLS_S_FAILED: Direct link failed 312*5113495bSYour Name */ 313*5113495bSYour Name enum tdls_state_t { 314*5113495bSYour Name QCA_WIFI_HAL_TDLS_S_DISABLED = 1, 315*5113495bSYour Name QCA_WIFI_HAL_TDLS_S_ENABLED, 316*5113495bSYour Name QCA_WIFI_HAL_TDLS_S_ESTABLISHED, 317*5113495bSYour Name QCA_WIFI_HAL_TDLS_S_ESTABLISHED_OFF_CHANNEL, 318*5113495bSYour Name QCA_WIFI_HAL_TDLS_S_DROPPED, 319*5113495bSYour Name QCA_WIFI_HAL_TDLS_S_FAILED, 320*5113495bSYour Name }; 321*5113495bSYour Name 322*5113495bSYour Name /** 323*5113495bSYour Name * enum tdls_off_chan_mode - mode for WMI_TDLS_SET_OFFCHAN_MODE_CMDID 324*5113495bSYour Name * @TDLS_ENABLE_OFFCHANNEL: enable off channel 325*5113495bSYour Name * @TDLS_DISABLE_OFFCHANNEL: disable off channel 326*5113495bSYour Name */ 327*5113495bSYour Name enum tdls_off_chan_mode { 328*5113495bSYour Name TDLS_ENABLE_OFFCHANNEL, 329*5113495bSYour Name TDLS_DISABLE_OFFCHANNEL 330*5113495bSYour Name }; 331*5113495bSYour Name 332*5113495bSYour Name /** 333*5113495bSYour Name * enum tdls_event_msg_type - TDLS event message type 334*5113495bSYour Name * @TDLS_SHOULD_DISCOVER: should do discover for peer (based on tx bytes per 335*5113495bSYour Name * second > tx_discover threshold) 336*5113495bSYour Name * @TDLS_SHOULD_TEARDOWN: recommend teardown the link for peer due to tx bytes 337*5113495bSYour Name * per second below tx_teardown_threshold 338*5113495bSYour Name * @TDLS_PEER_DISCONNECTED: tdls peer disconnected 339*5113495bSYour Name * @TDLS_CONNECTION_TRACKER_NOTIFY: TDLS/BT role change notification for 340*5113495bSYour Name * connection tracker 341*5113495bSYour Name */ 342*5113495bSYour Name enum tdls_event_msg_type { 343*5113495bSYour Name TDLS_SHOULD_DISCOVER = 0, 344*5113495bSYour Name TDLS_SHOULD_TEARDOWN, 345*5113495bSYour Name TDLS_PEER_DISCONNECTED, 346*5113495bSYour Name TDLS_CONNECTION_TRACKER_NOTIFY 347*5113495bSYour Name }; 348*5113495bSYour Name 349*5113495bSYour Name /** 350*5113495bSYour Name * enum tdls_event_reason - TDLS event reason 351*5113495bSYour Name * @TDLS_TEARDOWN_TX: tdls teardown recommended due to low transmits 352*5113495bSYour Name * @TDLS_TEARDOWN_RSSI: tdls link tear down recommended due to poor RSSI 353*5113495bSYour Name * @TDLS_TEARDOWN_SCAN: tdls link tear down recommended due to offchannel scan 354*5113495bSYour Name * @TDLS_TEARDOWN_PTR_TIMEOUT: tdls peer disconnected due to PTR timeout 355*5113495bSYour Name * @TDLS_TEARDOWN_BAD_PTR: tdls peer disconnected due wrong PTR format 356*5113495bSYour Name * @TDLS_TEARDOWN_NO_RSP: tdls peer not responding 357*5113495bSYour Name * @TDLS_DISCONNECTED_PEER_DELETE: tdls peer disconnected due to peer deletion 358*5113495bSYour Name * @TDLS_PEER_ENTER_BUF_STA: tdls entered buffer STA role, TDLS connection 359*5113495bSYour Name * tracker needs to handle this 360*5113495bSYour Name * @TDLS_PEER_EXIT_BUF_STA: tdls exited buffer STA role, TDLS connection tracker 361*5113495bSYour Name * needs to handle this 362*5113495bSYour Name * @TDLS_ENTER_BT_BUSY: BT entered busy mode, TDLS connection tracker needs to 363*5113495bSYour Name * handle this 364*5113495bSYour Name * @TDLS_EXIT_BT_BUSY: BT exited busy mode, TDLS connection tracker needs to 365*5113495bSYour Name * handle this 366*5113495bSYour Name * @TDLS_SCAN_STARTED: TDLS module received a scan start event, TDLS connection 367*5113495bSYour Name * tracker needs to handle this 368*5113495bSYour Name * @TDLS_SCAN_COMPLETED: TDLS module received a scan complete event, TDLS 369*5113495bSYour Name * connection tracker needs to handle this 370*5113495bSYour Name */ 371*5113495bSYour Name enum tdls_event_reason { 372*5113495bSYour Name TDLS_TEARDOWN_TX, 373*5113495bSYour Name TDLS_TEARDOWN_RSSI, 374*5113495bSYour Name TDLS_TEARDOWN_SCAN, 375*5113495bSYour Name TDLS_TEARDOWN_PTR_TIMEOUT, 376*5113495bSYour Name TDLS_TEARDOWN_BAD_PTR, 377*5113495bSYour Name TDLS_TEARDOWN_NO_RSP, 378*5113495bSYour Name TDLS_DISCONNECTED_PEER_DELETE, 379*5113495bSYour Name TDLS_PEER_ENTER_BUF_STA, 380*5113495bSYour Name TDLS_PEER_EXIT_BUF_STA, 381*5113495bSYour Name TDLS_ENTER_BT_BUSY, 382*5113495bSYour Name TDLS_EXIT_BT_BUSY, 383*5113495bSYour Name TDLS_SCAN_STARTED, 384*5113495bSYour Name TDLS_SCAN_COMPLETED, 385*5113495bSYour Name }; 386*5113495bSYour Name 387*5113495bSYour Name /** 388*5113495bSYour Name * enum tdls_disable_sources - TDLS disable sources 389*5113495bSYour Name * @TDLS_SET_MODE_SOURCE_USER: disable from user 390*5113495bSYour Name * @TDLS_SET_MODE_SOURCE_SCAN: disable during scan 391*5113495bSYour Name * @TDLS_SET_MODE_SOURCE_OFFCHANNEL: disable during offchannel 392*5113495bSYour Name * @TDLS_SET_MODE_SOURCE_BTC: disable during bluetooth 393*5113495bSYour Name * @TDLS_SET_MODE_SOURCE_P2P: disable during p2p 394*5113495bSYour Name */ 395*5113495bSYour Name enum tdls_disable_sources { 396*5113495bSYour Name TDLS_SET_MODE_SOURCE_USER = 0, 397*5113495bSYour Name TDLS_SET_MODE_SOURCE_SCAN, 398*5113495bSYour Name TDLS_SET_MODE_SOURCE_OFFCHANNEL, 399*5113495bSYour Name TDLS_SET_MODE_SOURCE_BTC, 400*5113495bSYour Name TDLS_SET_MODE_SOURCE_P2P, 401*5113495bSYour Name }; 402*5113495bSYour Name 403*5113495bSYour Name /** 404*5113495bSYour Name * struct tdls_osif_indication - tdls indication to os if layer 405*5113495bSYour Name * @vdev: vdev object 406*5113495bSYour Name * @reason: used with teardown indication 407*5113495bSYour Name * @peer_mac: MAC address of the TDLS peer 408*5113495bSYour Name * @status: operation status 409*5113495bSYour Name */ 410*5113495bSYour Name struct tdls_osif_indication { 411*5113495bSYour Name struct wlan_objmgr_vdev *vdev; 412*5113495bSYour Name uint16_t reason; 413*5113495bSYour Name uint8_t peer_mac[QDF_MAC_ADDR_SIZE]; 414*5113495bSYour Name QDF_STATUS status; 415*5113495bSYour Name }; 416*5113495bSYour Name 417*5113495bSYour Name /** 418*5113495bSYour Name * struct tx_frame - tx frame 419*5113495bSYour Name * @buf: frame buffer 420*5113495bSYour Name * @buf_len: buffer length 421*5113495bSYour Name * @tx_timer: tx send timer 422*5113495bSYour Name */ 423*5113495bSYour Name struct tx_frame { 424*5113495bSYour Name uint8_t *buf; 425*5113495bSYour Name size_t buf_len; 426*5113495bSYour Name qdf_timer_t tx_timer; 427*5113495bSYour Name }; 428*5113495bSYour Name 429*5113495bSYour Name enum tdls_configured_external_control { 430*5113495bSYour Name TDLS_STRICT_EXTERNAL_CONTROL = 1, 431*5113495bSYour Name TDLS_LIBERAL_EXTERNAL_CONTROL = 2, 432*5113495bSYour Name }; 433*5113495bSYour Name 434*5113495bSYour Name /** 435*5113495bSYour Name * enum tdls_feature_bit 436*5113495bSYour Name * @TDLS_FEATURE_OFF_CHANNEL: tdls off channel 437*5113495bSYour Name * @TDLS_FEATURE_WMM: tdls wmm 438*5113495bSYour Name * @TDLS_FEATURE_BUFFER_STA: tdls buffer sta 439*5113495bSYour Name * @TDLS_FEATURE_SLEEP_STA: tdls sleep sta feature 440*5113495bSYour Name * @TDLS_FEATURE_SCAN: tdls scan 441*5113495bSYour Name * @TDLS_FEATURE_ENABLE: tdls enabled 442*5113495bSYour Name * @TDLS_FEAUTRE_IMPLICIT_TRIGGER: tdls implicit trigger 443*5113495bSYour Name * @TDLS_FEATURE_EXTERNAL_CONTROL: enforce strict tdls external control 444*5113495bSYour Name * @TDLS_FEATURE_LIBERAL_EXTERNAL_CONTROL: liberal external tdls control 445*5113495bSYour Name */ 446*5113495bSYour Name enum tdls_feature_bit { 447*5113495bSYour Name TDLS_FEATURE_OFF_CHANNEL, 448*5113495bSYour Name TDLS_FEATURE_WMM, 449*5113495bSYour Name TDLS_FEATURE_BUFFER_STA, 450*5113495bSYour Name TDLS_FEATURE_SLEEP_STA, 451*5113495bSYour Name TDLS_FEATURE_SCAN, 452*5113495bSYour Name TDLS_FEATURE_ENABLE, 453*5113495bSYour Name TDLS_FEAUTRE_IMPLICIT_TRIGGER, 454*5113495bSYour Name TDLS_FEATURE_EXTERNAL_CONTROL, 455*5113495bSYour Name TDLS_FEATURE_LIBERAL_EXTERNAL_CONTROL, 456*5113495bSYour Name }; 457*5113495bSYour Name 458*5113495bSYour Name #define TDLS_IS_OFF_CHANNEL_ENABLED(flags) \ 459*5113495bSYour Name CHECK_BIT(flags, TDLS_FEATURE_OFF_CHANNEL) 460*5113495bSYour Name #define TDLS_IS_WMM_ENABLED(flags) \ 461*5113495bSYour Name CHECK_BIT(flags, TDLS_FEATURE_WMM) 462*5113495bSYour Name #define TDLS_IS_BUFFER_STA_ENABLED(flags) \ 463*5113495bSYour Name CHECK_BIT(flags, TDLS_FEATURE_BUFFER_STA) 464*5113495bSYour Name #define TDLS_IS_SLEEP_STA_ENABLED(flags) \ 465*5113495bSYour Name CHECK_BIT(flags, TDLS_FEATURE_SLEEP_STA) 466*5113495bSYour Name #define TDLS_IS_SCAN_ENABLED(flags) \ 467*5113495bSYour Name CHECK_BIT(flags, TDLS_FEATURE_SCAN) 468*5113495bSYour Name #define TDLS_IS_ENABLED(flags) \ 469*5113495bSYour Name CHECK_BIT(flags, TDLS_FEATURE_ENABLE) 470*5113495bSYour Name #define TDLS_IS_IMPLICIT_TRIG_ENABLED(flags) \ 471*5113495bSYour Name CHECK_BIT(flags, TDLS_FEAUTRE_IMPLICIT_TRIGGER) 472*5113495bSYour Name #define TDLS_IS_EXTERNAL_CONTROL_ENABLED(flags) \ 473*5113495bSYour Name CHECK_BIT(flags, TDLS_FEATURE_EXTERNAL_CONTROL) 474*5113495bSYour Name #define TDLS_IS_LIBERAL_EXTERNAL_CONTROL_ENABLED(flags) \ 475*5113495bSYour Name CHECK_BIT(flags, TDLS_FEATURE_LIBERAL_EXTERNAL_CONTROL) 476*5113495bSYour Name 477*5113495bSYour Name /** 478*5113495bSYour Name * struct tdls_user_config - TDLS user configuration 479*5113495bSYour Name * @tdls_tx_states_period: tdls tx states period 480*5113495bSYour Name * @tdls_tx_pkt_threshold: tdls tx packets threshold 481*5113495bSYour Name * @tdls_rx_pkt_threshold: tdls rx packets threshold 482*5113495bSYour Name * @tdls_max_discovery_attempt: tdls discovery max times 483*5113495bSYour Name * @tdls_idle_timeout: tdls idle timeout 484*5113495bSYour Name * @tdls_idle_pkt_threshold: tdls idle packets threshold 485*5113495bSYour Name * @tdls_rssi_trigger_threshold: tdls rssi trigger threshold 486*5113495bSYour Name * @tdls_rssi_teardown_threshold: tdls rssi tear down threshold 487*5113495bSYour Name * @tdls_rssi_delta: tdls rssi delta 488*5113495bSYour Name * @tdls_uapsd_mask: tdls uapsd mask 489*5113495bSYour Name * @tdls_uapsd_inactivity_time: tdls uapsd inactivity time 490*5113495bSYour Name * @tdls_uapsd_pti_window: tdls peer traffic indication window 491*5113495bSYour Name * @tdls_uapsd_ptr_timeout: tdls peer response timeout 492*5113495bSYour Name * @tdls_feature_flags: tdls feature flags 493*5113495bSYour Name * @tdls_pre_off_chan_num: tdls off channel number 494*5113495bSYour Name * @tdls_pre_off_chan_freq_6g: tdls pref off channel freq for 6g band 495*5113495bSYour Name * @tdls_pre_off_chan_bw: tdls off channel bandwidth 496*5113495bSYour Name * @tdls_peer_kickout_threshold: sta kickout threshold for tdls peer 497*5113495bSYour Name * @tdls_discovery_wake_timeout: tdls discovery wake timeout 498*5113495bSYour Name * @delayed_trig_framint: delayed trigger frame interval 499*5113495bSYour Name * @tdls_vdev_nss_2g: tdls NSS setting for 2G band 500*5113495bSYour Name * @tdls_vdev_nss_5g: tdls NSS setting for 5G band 501*5113495bSYour Name * @tdls_buffer_sta_enable: tdls buffer station enable 502*5113495bSYour Name * @tdls_off_chan_enable: tdls off channel enable 503*5113495bSYour Name * @tdls_off_chan_enable_orig: original tdls off channel enable 504*5113495bSYour Name * @tdls_wmm_mode_enable: tdls wmm mode enable 505*5113495bSYour Name * @tdls_external_control: tdls external control enable 506*5113495bSYour Name * @tdls_implicit_trigger_enable: tdls implicit trigger enable 507*5113495bSYour Name * @tdls_scan_enable: tdls scan enable 508*5113495bSYour Name * @tdls_sleep_sta_enable: tdls sleep sta enable 509*5113495bSYour Name * @tdls_support_enable: tdls support enable 510*5113495bSYour Name * @tdls_link_id: mlo link id 511*5113495bSYour Name */ 512*5113495bSYour Name struct tdls_user_config { 513*5113495bSYour Name uint32_t tdls_tx_states_period; 514*5113495bSYour Name uint32_t tdls_tx_pkt_threshold; 515*5113495bSYour Name uint32_t tdls_rx_pkt_threshold; 516*5113495bSYour Name uint32_t tdls_max_discovery_attempt; 517*5113495bSYour Name uint32_t tdls_idle_timeout; 518*5113495bSYour Name uint32_t tdls_idle_pkt_threshold; 519*5113495bSYour Name int32_t tdls_rssi_trigger_threshold; 520*5113495bSYour Name int32_t tdls_rssi_teardown_threshold; 521*5113495bSYour Name uint32_t tdls_rssi_delta; 522*5113495bSYour Name uint32_t tdls_uapsd_mask; 523*5113495bSYour Name uint32_t tdls_uapsd_inactivity_time; 524*5113495bSYour Name uint32_t tdls_uapsd_pti_window; 525*5113495bSYour Name uint32_t tdls_uapsd_ptr_timeout; 526*5113495bSYour Name uint32_t tdls_feature_flags; 527*5113495bSYour Name uint32_t tdls_pre_off_chan_num; 528*5113495bSYour Name uint32_t tdls_pre_off_chan_freq_6g; 529*5113495bSYour Name uint32_t tdls_pre_off_chan_bw; 530*5113495bSYour Name uint32_t tdls_peer_kickout_threshold; 531*5113495bSYour Name uint32_t tdls_discovery_wake_timeout; 532*5113495bSYour Name uint32_t delayed_trig_framint; 533*5113495bSYour Name uint8_t tdls_vdev_nss_2g; 534*5113495bSYour Name uint8_t tdls_vdev_nss_5g; 535*5113495bSYour Name bool tdls_buffer_sta_enable; 536*5113495bSYour Name bool tdls_off_chan_enable; 537*5113495bSYour Name bool tdls_off_chan_enable_orig; 538*5113495bSYour Name bool tdls_wmm_mode_enable; 539*5113495bSYour Name uint8_t tdls_external_control; 540*5113495bSYour Name bool tdls_implicit_trigger_enable; 541*5113495bSYour Name bool tdls_scan_enable; 542*5113495bSYour Name bool tdls_sleep_sta_enable; 543*5113495bSYour Name bool tdls_support_enable; 544*5113495bSYour Name int tdls_link_id; 545*5113495bSYour Name }; 546*5113495bSYour Name 547*5113495bSYour Name /** 548*5113495bSYour Name * struct tdls_config_params - tdls configure paramets 549*5113495bSYour Name * @tdls: tdls support mode 550*5113495bSYour Name * @tx_period_t: tdls tx stats period 551*5113495bSYour Name * @tx_packet_n: tdls tx packets number threshold 552*5113495bSYour Name * @discovery_tries_n: tdls max discovery attempt count 553*5113495bSYour Name * @idle_timeout_t: tdls idle time timeout 554*5113495bSYour Name * @idle_packet_n: tdls idle pkt threshold 555*5113495bSYour Name * @rssi_trigger_threshold: tdls rssi trigger threshold, checked before setup 556*5113495bSYour Name * @rssi_teardown_threshold: tdls rssi teardown threshold 557*5113495bSYour Name * @rssi_delta: rssi delta 558*5113495bSYour Name */ 559*5113495bSYour Name struct tdls_config_params { 560*5113495bSYour Name uint32_t tdls; 561*5113495bSYour Name uint32_t tx_period_t; 562*5113495bSYour Name uint32_t tx_packet_n; 563*5113495bSYour Name uint32_t discovery_tries_n; 564*5113495bSYour Name uint32_t idle_timeout_t; 565*5113495bSYour Name uint32_t idle_packet_n; 566*5113495bSYour Name int32_t rssi_trigger_threshold; 567*5113495bSYour Name int32_t rssi_teardown_threshold; 568*5113495bSYour Name int32_t rssi_delta; 569*5113495bSYour Name }; 570*5113495bSYour Name 571*5113495bSYour Name /** 572*5113495bSYour Name * struct tdls_tx_cnf: tdls tx ack 573*5113495bSYour Name * @vdev_id: vdev id 574*5113495bSYour Name * @action_cookie: frame cookie 575*5113495bSYour Name * @buf: frame buf 576*5113495bSYour Name * @buf_len: buffer length 577*5113495bSYour Name * @status: tx send status 578*5113495bSYour Name */ 579*5113495bSYour Name struct tdls_tx_cnf { 580*5113495bSYour Name int vdev_id; 581*5113495bSYour Name uint64_t action_cookie; 582*5113495bSYour Name void *buf; 583*5113495bSYour Name size_t buf_len; 584*5113495bSYour Name int status; 585*5113495bSYour Name }; 586*5113495bSYour Name 587*5113495bSYour Name /** 588*5113495bSYour Name * struct tdls_rx_mgmt_frame - rx mgmt frame structure 589*5113495bSYour Name * @frame_len: frame length 590*5113495bSYour Name * @rx_freq: rx freq 591*5113495bSYour Name * @vdev_id: vdev id 592*5113495bSYour Name * @frm_type: frame type 593*5113495bSYour Name * @rx_rssi: rx rssi 594*5113495bSYour Name * @buf: buffer address 595*5113495bSYour Name */ 596*5113495bSYour Name struct tdls_rx_mgmt_frame { 597*5113495bSYour Name uint32_t frame_len; 598*5113495bSYour Name uint32_t rx_freq; 599*5113495bSYour Name uint32_t vdev_id; 600*5113495bSYour Name uint32_t frm_type; 601*5113495bSYour Name uint32_t rx_rssi; 602*5113495bSYour Name QDF_FLEX_ARRAY(uint8_t, buf); 603*5113495bSYour Name }; 604*5113495bSYour Name 605*5113495bSYour Name /** 606*5113495bSYour Name * typedef tdls_rx_callback() - Callback for rx mgmt frame 607*5113495bSYour Name * @user_data: user data associated to this rx mgmt frame. 608*5113495bSYour Name * @rx_frame: RX mgmt frame 609*5113495bSYour Name * 610*5113495bSYour Name * This callback will be used to give rx frames to hdd. 611*5113495bSYour Name * 612*5113495bSYour Name * Return: None 613*5113495bSYour Name */ 614*5113495bSYour Name typedef void (*tdls_rx_callback)(void *user_data, 615*5113495bSYour Name struct tdls_rx_mgmt_frame *rx_frame); 616*5113495bSYour Name 617*5113495bSYour Name /** 618*5113495bSYour Name * typedef tdls_wmm_check() - Callback for wmm info 619*5113495bSYour Name * @vdev_id: ID of the vdev to check 620*5113495bSYour Name * 621*5113495bSYour Name * This callback will be used to check wmm information 622*5113495bSYour Name * 623*5113495bSYour Name * Return: true or false 624*5113495bSYour Name */ 625*5113495bSYour Name typedef bool (*tdls_wmm_check)(uint8_t vdev_id); 626*5113495bSYour Name 627*5113495bSYour Name 628*5113495bSYour Name /* This callback is used to report state change of peer to wpa_supplicant */ 629*5113495bSYour Name typedef int (*tdls_state_change_callback)(const uint8_t *mac, 630*5113495bSYour Name uint32_t opclass, 631*5113495bSYour Name uint32_t channel, 632*5113495bSYour Name uint32_t state, 633*5113495bSYour Name int32_t reason, void *ctx); 634*5113495bSYour Name 635*5113495bSYour Name /* This callback is used to report events to os_if layer */ 636*5113495bSYour Name typedef void (*tdls_evt_callback) (void *data, 637*5113495bSYour Name enum tdls_event_type ev_type, 638*5113495bSYour Name struct tdls_osif_indication *event); 639*5113495bSYour Name 640*5113495bSYour Name /* This callback is used to register TDLS peer with the datapath */ 641*5113495bSYour Name typedef QDF_STATUS (*tdls_register_peer_callback)(void *userdata, 642*5113495bSYour Name uint32_t vdev_id, 643*5113495bSYour Name const uint8_t *mac, 644*5113495bSYour Name uint8_t qos); 645*5113495bSYour Name 646*5113495bSYour Name /* This callback is used to deregister TDLS peer from the datapath */ 647*5113495bSYour Name typedef QDF_STATUS 648*5113495bSYour Name (*tdls_deregister_peer_callback)(void *userdata, 649*5113495bSYour Name uint32_t vdev_id, 650*5113495bSYour Name struct qdf_mac_addr *peer_mac); 651*5113495bSYour Name 652*5113495bSYour Name /* This callback is used to update datapath vdev flags */ 653*5113495bSYour Name typedef QDF_STATUS 654*5113495bSYour Name (*tdls_dp_vdev_update_flags_callback)(void *cbk_data, 655*5113495bSYour Name uint8_t vdev_id, 656*5113495bSYour Name uint32_t vdev_param, 657*5113495bSYour Name bool is_link_up); 658*5113495bSYour Name 659*5113495bSYour Name /* This callback is to release vdev ref for tdls offchan param related msg */ 660*5113495bSYour Name typedef void (*tdls_offchan_parms_callback)(struct wlan_objmgr_vdev *vdev); 661*5113495bSYour Name 662*5113495bSYour Name /** 663*5113495bSYour Name * typedef tdls_vdev_init_cb() - Callback for initializing the tdls private 664*5113495bSYour Name * structure 665*5113495bSYour Name * @vdev: vdev object 666*5113495bSYour Name * 667*5113495bSYour Name * This callback will be used to create the vdev private object and store 668*5113495bSYour Name * in os_priv. 669*5113495bSYour Name * 670*5113495bSYour Name * Return: QDF_STATUS 671*5113495bSYour Name */ 672*5113495bSYour Name typedef QDF_STATUS (*tdls_vdev_init_cb)(struct wlan_objmgr_vdev *vdev); 673*5113495bSYour Name 674*5113495bSYour Name /** 675*5113495bSYour Name * typedef tdls_vdev_deinit_cb() - Callback for deinitializing the tdls 676*5113495bSYour Name * private structure 677*5113495bSYour Name * @vdev: vdev object 678*5113495bSYour Name * 679*5113495bSYour Name * This callback will be used to destroy the vdev private object. 680*5113495bSYour Name * 681*5113495bSYour Name * Return: None 682*5113495bSYour Name */ 683*5113495bSYour Name typedef void (*tdls_vdev_deinit_cb)(struct wlan_objmgr_vdev *vdev); 684*5113495bSYour Name 685*5113495bSYour Name /** 686*5113495bSYour Name * struct tdls_osif_cb - Callbacks for updating osif params. 687*5113495bSYour Name * @tdls_osif_conn_update: Update osif params when TDLS peer is connected 688*5113495bSYour Name * @tdls_osif_disconn_update: Update osif params when TDLS peer is disconnected 689*5113495bSYour Name * 690*5113495bSYour Name * These callbacks will be used for updating osif params. 691*5113495bSYour Name */ 692*5113495bSYour Name struct tdls_osif_cb { 693*5113495bSYour Name void (*tdls_osif_conn_update)(struct wlan_objmgr_vdev *vdev); 694*5113495bSYour Name void (*tdls_osif_disconn_update)(struct wlan_objmgr_vdev *vdev); 695*5113495bSYour Name }; 696*5113495bSYour Name 697*5113495bSYour Name /** 698*5113495bSYour Name * struct tdls_start_params - tdls start params 699*5113495bSYour Name * @config: tdls user config 700*5113495bSYour Name * @tdls_send_mgmt_req: pass eWNI_SME_TDLS_SEND_MGMT_REQ value 701*5113495bSYour Name * @tdls_add_sta_req: pass eWNI_SME_TDLS_ADD_STA_REQ value 702*5113495bSYour Name * @tdls_del_sta_req: pass eWNI_SME_TDLS_DEL_STA_REQ value 703*5113495bSYour Name * @tdls_update_peer_state: pass WMA_UPDATE_TDLS_PEER_STATE value 704*5113495bSYour Name * @tdls_del_all_peers: pass eWNI_SME_DEL_ALL_TDLS_PEERS 705*5113495bSYour Name * @tdls_update_dp_vdev_flags: pass CDP_UPDATE_TDLS_FLAGS 706*5113495bSYour Name * @tdls_rx_cb: TDLS RX callback 707*5113495bSYour Name * @tdls_rx_cb_data: TDLS RX callback context 708*5113495bSYour Name * @tdls_wmm_cb: TDLS WMM check callback 709*5113495bSYour Name * @tdls_wmm_cb_data: TDLS WMM check callback context 710*5113495bSYour Name * @tdls_event_cb: tdls event callback 711*5113495bSYour Name * @tdls_evt_cb_data: tdls event data 712*5113495bSYour Name * @tdls_peer_context: userdata for register/deregister TDLS peer 713*5113495bSYour Name * @tdls_reg_peer: register tdls peer with datapath 714*5113495bSYour Name * @tdls_dp_vdev_update: update vdev flags in datapath 715*5113495bSYour Name * @tdls_osif_init_cb: callback to initialize the tdls priv 716*5113495bSYour Name * @tdls_osif_deinit_cb: callback to deinitialize the tdls priv 717*5113495bSYour Name * @tdls_osif_update_cb: callback to update osif params 718*5113495bSYour Name */ 719*5113495bSYour Name struct tdls_start_params { 720*5113495bSYour Name struct tdls_user_config config; 721*5113495bSYour Name uint16_t tdls_send_mgmt_req; 722*5113495bSYour Name uint16_t tdls_add_sta_req; 723*5113495bSYour Name uint16_t tdls_del_sta_req; 724*5113495bSYour Name uint16_t tdls_update_peer_state; 725*5113495bSYour Name uint16_t tdls_del_all_peers; 726*5113495bSYour Name uint32_t tdls_update_dp_vdev_flags; 727*5113495bSYour Name tdls_rx_callback tdls_rx_cb; 728*5113495bSYour Name void *tdls_rx_cb_data; 729*5113495bSYour Name tdls_wmm_check tdls_wmm_cb; 730*5113495bSYour Name void *tdls_wmm_cb_data; 731*5113495bSYour Name tdls_evt_callback tdls_event_cb; 732*5113495bSYour Name void *tdls_evt_cb_data; 733*5113495bSYour Name void *tdls_peer_context; 734*5113495bSYour Name tdls_register_peer_callback tdls_reg_peer; 735*5113495bSYour Name tdls_dp_vdev_update_flags_callback tdls_dp_vdev_update; 736*5113495bSYour Name tdls_vdev_init_cb tdls_osif_init_cb; 737*5113495bSYour Name tdls_vdev_deinit_cb tdls_osif_deinit_cb; 738*5113495bSYour Name struct tdls_osif_cb tdls_osif_update_cb; 739*5113495bSYour Name }; 740*5113495bSYour Name 741*5113495bSYour Name /** 742*5113495bSYour Name * struct tdls_add_peer_params - add peer request parameter 743*5113495bSYour Name * @peer_addr: peer mac addr 744*5113495bSYour Name * @peer_type: peer type 745*5113495bSYour Name * @vdev_id: vdev id 746*5113495bSYour Name */ 747*5113495bSYour Name struct tdls_add_peer_params { 748*5113495bSYour Name uint8_t peer_addr[QDF_MAC_ADDR_SIZE]; 749*5113495bSYour Name uint32_t peer_type; 750*5113495bSYour Name uint32_t vdev_id; 751*5113495bSYour Name }; 752*5113495bSYour Name 753*5113495bSYour Name /** 754*5113495bSYour Name * struct tdls_add_peer_request - peer add request 755*5113495bSYour Name * @vdev: vdev 756*5113495bSYour Name * @add_peer_req: add peer request parameters 757*5113495bSYour Name */ 758*5113495bSYour Name struct tdls_add_peer_request { 759*5113495bSYour Name struct wlan_objmgr_vdev *vdev; 760*5113495bSYour Name struct tdls_add_peer_params add_peer_req; 761*5113495bSYour Name }; 762*5113495bSYour Name 763*5113495bSYour Name /** 764*5113495bSYour Name * struct tdls_del_peer_params - delete peer request parameter 765*5113495bSYour Name * @peer_addr: peer mac addr 766*5113495bSYour Name * @peer_type: peer type 767*5113495bSYour Name * @vdev_id: vdev id 768*5113495bSYour Name */ 769*5113495bSYour Name struct tdls_del_peer_params { 770*5113495bSYour Name const uint8_t *peer_addr; 771*5113495bSYour Name uint32_t peer_type; 772*5113495bSYour Name uint32_t vdev_id; 773*5113495bSYour Name }; 774*5113495bSYour Name 775*5113495bSYour Name /** 776*5113495bSYour Name * struct tdls_del_peer_request - peer delete request 777*5113495bSYour Name * @vdev: vdev 778*5113495bSYour Name * @del_peer_req: delete peer request parameters 779*5113495bSYour Name */ 780*5113495bSYour Name struct tdls_del_peer_request { 781*5113495bSYour Name struct wlan_objmgr_vdev *vdev; 782*5113495bSYour Name struct tdls_del_peer_params del_peer_req; 783*5113495bSYour Name }; 784*5113495bSYour Name 785*5113495bSYour Name /** 786*5113495bSYour Name * struct vhtmcsinfo - VHT MCS information 787*5113495bSYour Name * @rx_mcs_map: RX MCS map 2 bits for each stream, total 8 streams 788*5113495bSYour Name * @rx_highest: Indicates highest long GI VHT PPDU data rate 789*5113495bSYour Name * STA can receive. Rate expressed in units of 1 Mbps. 790*5113495bSYour Name * If this field is 0 this value should not be used to 791*5113495bSYour Name * consider the highest RX data rate supported. 792*5113495bSYour Name * @tx_mcs_map: TX MCS map 2 bits for each stream, total 8 streams 793*5113495bSYour Name * @tx_highest: Indicates highest long GI VHT PPDU data rate 794*5113495bSYour Name * STA can transmit. Rate expressed in units of 1 Mbps. 795*5113495bSYour Name * If this field is 0 this value should not be used to 796*5113495bSYour Name * consider the highest TX data rate supported. 797*5113495bSYour Name */ 798*5113495bSYour Name struct vhtmcsinfo { 799*5113495bSYour Name uint16_t rx_mcs_map; 800*5113495bSYour Name uint16_t rx_highest; 801*5113495bSYour Name uint16_t tx_mcs_map; 802*5113495bSYour Name uint16_t tx_highest; 803*5113495bSYour Name }; 804*5113495bSYour Name 805*5113495bSYour Name /** 806*5113495bSYour Name * struct vhtcap - VHT capabilities 807*5113495bSYour Name * 808*5113495bSYour Name * This structure is the "VHT capabilities element" as 809*5113495bSYour Name * described in 802.11ac D3.0 8.4.2.160 810*5113495bSYour Name * @vht_capinfo: VHT capability info 811*5113495bSYour Name * @supp_mcs: VHT MCS supported rates 812*5113495bSYour Name */ 813*5113495bSYour Name struct vhtcap { 814*5113495bSYour Name uint32_t vht_capinfo; 815*5113495bSYour Name struct vhtmcsinfo supp_mcs; 816*5113495bSYour Name }; 817*5113495bSYour Name 818*5113495bSYour Name #ifdef WLAN_FEATURE_11AX 819*5113495bSYour Name /** 820*5113495bSYour Name * struct hecap - HE capabilities 821*5113495bSYour Name * 822*5113495bSYour Name * This structure is the "HE capabilities element" as 823*5113495bSYour Name * described in 802.11ax D4.0 section 9.4.2.232.3 824*5113495bSYour Name * @mac_cap_info: MAC capability info 825*5113495bSYour Name * @phycap_info: Phy Capability info 826*5113495bSYour Name * @he_cap_mcs_info: HE capabilities MCS information 827*5113495bSYour Name */ 828*5113495bSYour Name struct hecap { 829*5113495bSYour Name uint8_t mac_cap_info[6]; 830*5113495bSYour Name uint8_t phycap_info[11]; 831*5113495bSYour Name struct { 832*5113495bSYour Name uint16_t rx_he_mcs_map_lt_80; 833*5113495bSYour Name uint16_t tx_he_mcs_map_lt_80; 834*5113495bSYour Name uint16_t rx_he_mcs_map_160; 835*5113495bSYour Name uint16_t tx_he_mcs_map_160; 836*5113495bSYour Name uint16_t rx_he_mcs_map_80_80; 837*5113495bSYour Name uint16_t tx_he_mcs_map_80_80; 838*5113495bSYour Name } he_cap_mcs_info; 839*5113495bSYour Name } qdf_packed; 840*5113495bSYour Name 841*5113495bSYour Name struct hecap_6ghz { 842*5113495bSYour Name /* Minimum MPDU Start Spacing B0..B2 843*5113495bSYour Name * Maximum A-MPDU Length Exponent B3..B5 844*5113495bSYour Name * Maximum MPDU Length B6..B7 */ 845*5113495bSYour Name uint8_t a_mpdu_params; /* B0..B7 */ 846*5113495bSYour Name uint8_t info; /* B8..B15 */ 847*5113495bSYour Name }; 848*5113495bSYour Name #endif 849*5113495bSYour Name 850*5113495bSYour Name #ifdef WLAN_FEATURE_11BE 851*5113495bSYour Name /** 852*5113495bSYour Name * struct ehtcapfixed - EHT capabilities fixed data 853*5113495bSYour Name * @mac_cap_info: MAC capabilities 854*5113495bSYour Name * @phy_cap_info: PHY capabilities 855*5113495bSYour Name */ 856*5113495bSYour Name struct ehtcapfixed { 857*5113495bSYour Name uint8_t mac_cap_info[2]; 858*5113495bSYour Name uint8_t phy_cap_info[9]; 859*5113495bSYour Name }; 860*5113495bSYour Name 861*5113495bSYour Name /** 862*5113495bSYour Name * struct ehtcap - EHT capabilities 863*5113495bSYour Name * @eht_cap_fixed: fixed parts, see &ehtcapfixed 864*5113495bSYour Name * @optional: optional parts 865*5113495bSYour Name */ 866*5113495bSYour Name struct ehtcap { 867*5113495bSYour Name struct ehtcapfixed eht_cap_fixed; 868*5113495bSYour Name uint8_t optional[]; 869*5113495bSYour Name } qdf_packed; 870*5113495bSYour Name #endif 871*5113495bSYour Name 872*5113495bSYour Name struct tdls_update_peer_params { 873*5113495bSYour Name uint8_t peer_addr[QDF_MAC_ADDR_SIZE]; 874*5113495bSYour Name uint32_t peer_type; 875*5113495bSYour Name uint32_t vdev_id; 876*5113495bSYour Name uint16_t capability; 877*5113495bSYour Name uint8_t extn_capability[WLAN_MAC_MAX_EXTN_CAP]; 878*5113495bSYour Name uint8_t supported_rates_len; 879*5113495bSYour Name uint8_t supported_rates[WLAN_MAC_MAX_SUPP_RATES]; 880*5113495bSYour Name uint8_t htcap_present; 881*5113495bSYour Name struct htcap_cmn_ie ht_cap; 882*5113495bSYour Name uint8_t vhtcap_present; 883*5113495bSYour Name struct vhtcap vht_cap; 884*5113495bSYour Name #ifdef WLAN_FEATURE_11AX 885*5113495bSYour Name uint8_t he_cap_len; 886*5113495bSYour Name struct hecap he_cap; 887*5113495bSYour Name struct hecap_6ghz he_6ghz_cap; 888*5113495bSYour Name #endif 889*5113495bSYour Name #ifdef WLAN_FEATURE_11BE 890*5113495bSYour Name uint8_t ehtcap_present; 891*5113495bSYour Name uint8_t eht_cap_len; 892*5113495bSYour Name struct ehtcap eht_cap; 893*5113495bSYour Name #endif 894*5113495bSYour Name uint8_t uapsd_queues; 895*5113495bSYour Name uint8_t max_sp; 896*5113495bSYour Name uint8_t supported_channels_len; 897*5113495bSYour Name qdf_freq_t supported_chan_freq[WLAN_MAC_MAX_SUPP_CHANNELS]; 898*5113495bSYour Name uint8_t supported_oper_classes_len; 899*5113495bSYour Name uint8_t supported_oper_classes[WLAN_MAX_SUPP_OPER_CLASSES]; 900*5113495bSYour Name bool is_qos_wmm_sta; 901*5113495bSYour Name bool is_pmf; 902*5113495bSYour Name }; 903*5113495bSYour Name 904*5113495bSYour Name struct tdls_update_peer_request { 905*5113495bSYour Name struct wlan_objmgr_vdev *vdev; 906*5113495bSYour Name struct tdls_update_peer_params update_peer_req; 907*5113495bSYour Name }; 908*5113495bSYour Name 909*5113495bSYour Name /** 910*5113495bSYour Name * struct tdls_oper_request - tdls operation request 911*5113495bSYour Name * @vdev: vdev object 912*5113495bSYour Name * @peer_addr: MAC address of the TDLS peer 913*5113495bSYour Name */ 914*5113495bSYour Name struct tdls_oper_request { 915*5113495bSYour Name struct wlan_objmgr_vdev *vdev; 916*5113495bSYour Name uint8_t peer_addr[QDF_MAC_ADDR_SIZE]; 917*5113495bSYour Name }; 918*5113495bSYour Name 919*5113495bSYour Name /** 920*5113495bSYour Name * struct tdls_oper_config_force_peer_request - tdls enable force peer request 921*5113495bSYour Name * @vdev: vdev object 922*5113495bSYour Name * @peer_addr: MAC address of the TDLS peer 923*5113495bSYour Name * @chan: channel 924*5113495bSYour Name * @ch_freq: ch_freq 925*5113495bSYour Name * @max_latency: maximum latency 926*5113495bSYour Name * @op_class: operation class 927*5113495bSYour Name * @min_bandwidth: minimal bandwidth 928*5113495bSYour Name * @callback: state change callback 929*5113495bSYour Name */ 930*5113495bSYour Name struct tdls_oper_config_force_peer_request { 931*5113495bSYour Name struct wlan_objmgr_vdev *vdev; 932*5113495bSYour Name uint8_t peer_addr[QDF_MAC_ADDR_SIZE]; 933*5113495bSYour Name uint32_t chan; 934*5113495bSYour Name qdf_freq_t ch_freq; 935*5113495bSYour Name uint32_t max_latency; 936*5113495bSYour Name uint32_t op_class; 937*5113495bSYour Name uint32_t min_bandwidth; 938*5113495bSYour Name tdls_state_change_callback callback; 939*5113495bSYour Name }; 940*5113495bSYour Name 941*5113495bSYour Name /** 942*5113495bSYour Name * struct tdls_info - tdls info 943*5113495bSYour Name * 944*5113495bSYour Name * @vdev_id: vdev id 945*5113495bSYour Name * @tdls_state: tdls state 946*5113495bSYour Name * @notification_interval_ms: notification interval in ms 947*5113495bSYour Name * @tx_discovery_threshold: tx discovery threshold 948*5113495bSYour Name * @tx_teardown_threshold: tx teardown threshold 949*5113495bSYour Name * @rssi_teardown_threshold: rx teardown threshold 950*5113495bSYour Name * @rssi_delta: rssi delta 951*5113495bSYour Name * @tdls_options: tdls options 952*5113495bSYour Name * @peer_traffic_ind_window: peer traffic indication window 953*5113495bSYour Name * @peer_traffic_response_timeout: peer traffic response timeout 954*5113495bSYour Name * @puapsd_mask: puapsd mask 955*5113495bSYour Name * @puapsd_inactivity_time: puapsd inactivity time 956*5113495bSYour Name * @puapsd_rx_frame_threshold: puapsd rx frame threshold 957*5113495bSYour Name * @teardown_notification_ms: tdls teardown notification interval 958*5113495bSYour Name * @tdls_peer_kickout_threshold: tdls packets threshold 959*5113495bSYour Name * for peer kickout operation 960*5113495bSYour Name * @tdls_discovery_wake_timeout: tdls discovery wake timeout 961*5113495bSYour Name */ 962*5113495bSYour Name struct tdls_info { 963*5113495bSYour Name uint32_t vdev_id; 964*5113495bSYour Name uint32_t tdls_state; 965*5113495bSYour Name uint32_t notification_interval_ms; 966*5113495bSYour Name uint32_t tx_discovery_threshold; 967*5113495bSYour Name uint32_t tx_teardown_threshold; 968*5113495bSYour Name int32_t rssi_teardown_threshold; 969*5113495bSYour Name int32_t rssi_delta; 970*5113495bSYour Name uint32_t tdls_options; 971*5113495bSYour Name uint32_t peer_traffic_ind_window; 972*5113495bSYour Name uint32_t peer_traffic_response_timeout; 973*5113495bSYour Name uint32_t puapsd_mask; 974*5113495bSYour Name uint32_t puapsd_inactivity_time; 975*5113495bSYour Name uint32_t puapsd_rx_frame_threshold; 976*5113495bSYour Name uint32_t teardown_notification_ms; 977*5113495bSYour Name uint32_t tdls_peer_kickout_threshold; 978*5113495bSYour Name uint32_t tdls_discovery_wake_timeout; 979*5113495bSYour Name }; 980*5113495bSYour Name 981*5113495bSYour Name /** 982*5113495bSYour Name * struct tdls_ch_params - channel parameters 983*5113495bSYour Name * @ch_freq: Channel frequency 984*5113495bSYour Name * @pwr: power level 985*5113495bSYour Name * @dfs_set: is dfs supported or not 986*5113495bSYour Name * @half_rate: is the channel operating at 10MHz 987*5113495bSYour Name * @quarter_rate: is the channel operating at 5MHz 988*5113495bSYour Name */ 989*5113495bSYour Name struct tdls_ch_params { 990*5113495bSYour Name qdf_freq_t ch_freq; 991*5113495bSYour Name uint8_t pwr; 992*5113495bSYour Name bool dfs_set; 993*5113495bSYour Name bool half_rate; 994*5113495bSYour Name bool quarter_rate; 995*5113495bSYour Name }; 996*5113495bSYour Name 997*5113495bSYour Name /** 998*5113495bSYour Name * struct tdls_peer_params - TDLS peer capabilities parameters 999*5113495bSYour Name * @is_peer_responder: is peer responder or not 1000*5113495bSYour Name * @peer_uapsd_queue: peer uapsd queue 1001*5113495bSYour Name * @peer_max_sp: peer max SP value 1002*5113495bSYour Name * @peer_buff_sta_support: peer buffer sta supported or not 1003*5113495bSYour Name * @peer_off_chan_support: peer offchannel support 1004*5113495bSYour Name * @peer_curr_operclass: peer current operating class 1005*5113495bSYour Name * @self_curr_operclass: self current operating class 1006*5113495bSYour Name * @peer_chanlen: peer channel length 1007*5113495bSYour Name * @peer_chan: peer channel list 1008*5113495bSYour Name * @peer_oper_classlen: peer operating class length 1009*5113495bSYour Name * @peer_oper_class: peer operating class 1010*5113495bSYour Name * @pref_off_channum: preferred offchannel number 1011*5113495bSYour Name * @pref_off_chan_bandwidth: peer offchannel bandwidth 1012*5113495bSYour Name * @opclass_for_prefoffchan: operating class for offchannel 1013*5113495bSYour Name * @pref_offchan_freq: preferred offchannel frequency 1014*5113495bSYour Name */ 1015*5113495bSYour Name struct tdls_peer_params { 1016*5113495bSYour Name uint8_t is_peer_responder; 1017*5113495bSYour Name uint8_t peer_uapsd_queue; 1018*5113495bSYour Name uint8_t peer_max_sp; 1019*5113495bSYour Name uint8_t peer_buff_sta_support; 1020*5113495bSYour Name uint8_t peer_off_chan_support; 1021*5113495bSYour Name uint8_t peer_curr_operclass; 1022*5113495bSYour Name uint8_t self_curr_operclass; 1023*5113495bSYour Name uint8_t peer_chanlen; 1024*5113495bSYour Name struct tdls_ch_params peer_chan[WLAN_MAC_WMI_MAX_SUPP_CHANNELS]; 1025*5113495bSYour Name uint8_t peer_oper_classlen; 1026*5113495bSYour Name uint8_t peer_oper_class[WLAN_MAX_SUPP_OPER_CLASSES]; 1027*5113495bSYour Name uint8_t pref_off_channum; 1028*5113495bSYour Name uint8_t pref_off_chan_bandwidth; 1029*5113495bSYour Name uint8_t opclass_for_prefoffchan; 1030*5113495bSYour Name uint32_t pref_offchan_freq; 1031*5113495bSYour Name }; 1032*5113495bSYour Name 1033*5113495bSYour Name /** 1034*5113495bSYour Name * struct tdls_peer_update_state - TDLS peer state parameters 1035*5113495bSYour Name * @vdev_id: vdev id 1036*5113495bSYour Name * @peer_macaddr: peer mac address 1037*5113495bSYour Name * @peer_state: peer state 1038*5113495bSYour Name * @peer_cap: peer capabality 1039*5113495bSYour Name * @resp_reqd: response needed 1040*5113495bSYour Name */ 1041*5113495bSYour Name struct tdls_peer_update_state { 1042*5113495bSYour Name uint32_t vdev_id; 1043*5113495bSYour Name uint8_t peer_macaddr[QDF_MAC_ADDR_SIZE]; 1044*5113495bSYour Name uint32_t peer_state; 1045*5113495bSYour Name struct tdls_peer_params peer_cap; 1046*5113495bSYour Name bool resp_reqd; 1047*5113495bSYour Name }; 1048*5113495bSYour Name 1049*5113495bSYour Name /** 1050*5113495bSYour Name * struct tdls_channel_switch_params - channel switch parameter structure 1051*5113495bSYour Name * @vdev_id: vdev ID 1052*5113495bSYour Name * @peer_mac_addr: Peer mac address 1053*5113495bSYour Name * @tdls_off_ch_bw_offset: Target off-channel bandwidth offset 1054*5113495bSYour Name * @tdls_off_ch: Target Off Channel 1055*5113495bSYour Name * @tdls_sw_mode: Switch mode 1056*5113495bSYour Name * @oper_class: Operating class for target channel 1057*5113495bSYour Name * @is_responder: Responder or initiator 1058*5113495bSYour Name * @tdls_off_chan_freq: Target Off Channel frequency 1059*5113495bSYour Name * @num_off_channels: Number of channels allowed for off channel operation 1060*5113495bSYour Name * @allowed_off_channels: Channel list allowed for off channels 1061*5113495bSYour Name */ 1062*5113495bSYour Name struct tdls_channel_switch_params { 1063*5113495bSYour Name uint32_t vdev_id; 1064*5113495bSYour Name uint8_t peer_mac_addr[QDF_MAC_ADDR_SIZE]; 1065*5113495bSYour Name uint8_t tdls_off_ch_bw_offset; 1066*5113495bSYour Name uint8_t tdls_off_ch; 1067*5113495bSYour Name uint8_t tdls_sw_mode; 1068*5113495bSYour Name uint8_t oper_class; 1069*5113495bSYour Name uint8_t is_responder; 1070*5113495bSYour Name uint32_t tdls_off_chan_freq; 1071*5113495bSYour Name uint16_t num_off_channels; 1072*5113495bSYour Name struct tdls_ch_params allowed_off_channels[WLAN_MAC_WMI_MAX_SUPP_CHANNELS]; 1073*5113495bSYour Name }; 1074*5113495bSYour Name 1075*5113495bSYour Name /** 1076*5113495bSYour Name * enum uapsd_access_cat - U-APSD Access Categories 1077*5113495bSYour Name * @UAPSD_AC_BE: best effort 1078*5113495bSYour Name * @UAPSD_AC_BK: back ground 1079*5113495bSYour Name * @UAPSD_AC_VI: video 1080*5113495bSYour Name * @UAPSD_AC_VO: voice 1081*5113495bSYour Name */ 1082*5113495bSYour Name enum uapsd_access_cat { 1083*5113495bSYour Name UAPSD_AC_BE, 1084*5113495bSYour Name UAPSD_AC_BK, 1085*5113495bSYour Name UAPSD_AC_VI, 1086*5113495bSYour Name UAPSD_AC_VO 1087*5113495bSYour Name }; 1088*5113495bSYour Name 1089*5113495bSYour Name /** 1090*5113495bSYour Name * enum tspec_dir_type - TSPEC Direction type 1091*5113495bSYour Name * @TX_DIR: uplink 1092*5113495bSYour Name * @RX_DIR: downlink 1093*5113495bSYour Name * @BI_DIR: bidirectional 1094*5113495bSYour Name */ 1095*5113495bSYour Name enum tspec_dir_type { 1096*5113495bSYour Name TX_DIR = 0, 1097*5113495bSYour Name RX_DIR = 1, 1098*5113495bSYour Name BI_DIR = 2, 1099*5113495bSYour Name }; 1100*5113495bSYour Name 1101*5113495bSYour Name /** 1102*5113495bSYour Name * struct tdls_event_info - firmware tdls event 1103*5113495bSYour Name * @vdev_id: vdev id 1104*5113495bSYour Name * @peermac: peer mac address 1105*5113495bSYour Name * @message_type: message type 1106*5113495bSYour Name * @peer_reason: reason 1107*5113495bSYour Name */ 1108*5113495bSYour Name struct tdls_event_info { 1109*5113495bSYour Name uint8_t vdev_id; 1110*5113495bSYour Name struct qdf_mac_addr peermac; 1111*5113495bSYour Name uint16_t message_type; 1112*5113495bSYour Name uint32_t peer_reason; 1113*5113495bSYour Name }; 1114*5113495bSYour Name 1115*5113495bSYour Name /** 1116*5113495bSYour Name * struct tdls_event_notify - tdls event notify 1117*5113495bSYour Name * @vdev: vdev object 1118*5113495bSYour Name * @event: tdls event 1119*5113495bSYour Name */ 1120*5113495bSYour Name struct tdls_event_notify { 1121*5113495bSYour Name struct wlan_objmgr_vdev *vdev; 1122*5113495bSYour Name struct tdls_event_info event; 1123*5113495bSYour Name }; 1124*5113495bSYour Name 1125*5113495bSYour Name /** 1126*5113495bSYour Name * struct tdls_send_mgmt - tdls send management frame 1127*5113495bSYour Name * @peer_mac: peer's mac address 1128*5113495bSYour Name * @frame_type: Type of TDLS mgmt frame to be sent 1129*5113495bSYour Name * @dialog: dialog token used in the frame. 1130*5113495bSYour Name * @status_code: status to be included in the frame 1131*5113495bSYour Name * @responder: Tdls request type 1132*5113495bSYour Name * @peer_capability: peer cpabilities 1133*5113495bSYour Name * @len: length of additional Ies 1134*5113495bSYour Name * @buf: additional IEs to be included 1135*5113495bSYour Name */ 1136*5113495bSYour Name struct tdls_send_mgmt { 1137*5113495bSYour Name struct qdf_mac_addr peer_mac; 1138*5113495bSYour Name uint8_t frame_type; 1139*5113495bSYour Name uint8_t dialog; 1140*5113495bSYour Name uint16_t status_code; 1141*5113495bSYour Name uint8_t responder; 1142*5113495bSYour Name uint32_t peer_capability; 1143*5113495bSYour Name uint8_t len; 1144*5113495bSYour Name /* Variable length, do not add anything after this */ 1145*5113495bSYour Name uint8_t buf[]; 1146*5113495bSYour Name }; 1147*5113495bSYour Name 1148*5113495bSYour Name /** 1149*5113495bSYour Name * struct tdls_validate_action_req - tdls validate mgmt request 1150*5113495bSYour Name * @action_code: action code 1151*5113495bSYour Name * @peer_mac: peer mac address 1152*5113495bSYour Name * @dialog_token: dialog code 1153*5113495bSYour Name * @status_code: status code to add 1154*5113495bSYour Name * @len: len of the frame 1155*5113495bSYour Name * @responder: whether to respond or not 1156*5113495bSYour Name */ 1157*5113495bSYour Name struct tdls_validate_action_req { 1158*5113495bSYour Name uint8_t action_code; 1159*5113495bSYour Name uint8_t peer_mac[QDF_MAC_ADDR_SIZE]; 1160*5113495bSYour Name uint8_t dialog_token; 1161*5113495bSYour Name uint8_t status_code; 1162*5113495bSYour Name size_t len; 1163*5113495bSYour Name int responder; 1164*5113495bSYour Name }; 1165*5113495bSYour Name 1166*5113495bSYour Name /** 1167*5113495bSYour Name * struct tdls_get_all_peers - get all peers from the list 1168*5113495bSYour Name * @vdev: vdev object 1169*5113495bSYour Name * @buf: output string buffer to hold the peer info 1170*5113495bSYour Name * @buf_len: the size of output string buffer 1171*5113495bSYour Name */ 1172*5113495bSYour Name struct tdls_get_all_peers { 1173*5113495bSYour Name struct wlan_objmgr_vdev *vdev; 1174*5113495bSYour Name char *buf; 1175*5113495bSYour Name int buf_len; 1176*5113495bSYour Name }; 1177*5113495bSYour Name 1178*5113495bSYour Name /** 1179*5113495bSYour Name * struct tdls_action_frame_request - tdls send mgmt request 1180*5113495bSYour Name * @vdev: vdev object 1181*5113495bSYour Name * @chk_frame: This struct used to validate mgmt frame 1182*5113495bSYour Name * @session_id: session id 1183*5113495bSYour Name * @link_id: link id 1184*5113495bSYour Name * @vdev_id: vdev id 1185*5113495bSYour Name * @cmd_buf: cmd buffer 1186*5113495bSYour Name * @len: length of the frame 1187*5113495bSYour Name * @use_default_ac: access category 1188*5113495bSYour Name * @link_active: whether link active command send successfully 1189*5113495bSYour Name * @tdls_mgmt: tdls management 1190*5113495bSYour Name */ 1191*5113495bSYour Name struct tdls_action_frame_request { 1192*5113495bSYour Name struct wlan_objmgr_vdev *vdev; 1193*5113495bSYour Name struct tdls_validate_action_req chk_frame; 1194*5113495bSYour Name uint8_t session_id; 1195*5113495bSYour Name uint8_t link_id; 1196*5113495bSYour Name uint8_t vdev_id; 1197*5113495bSYour Name const uint8_t *cmd_buf; 1198*5113495bSYour Name uint8_t len; 1199*5113495bSYour Name bool use_default_ac; 1200*5113495bSYour Name bool link_active; 1201*5113495bSYour Name /* Variable length, do not add anything after this */ 1202*5113495bSYour Name struct tdls_send_mgmt tdls_mgmt; 1203*5113495bSYour Name }; 1204*5113495bSYour Name 1205*5113495bSYour Name /** 1206*5113495bSYour Name * struct tdls_set_responder_req - tdls set responder in peer 1207*5113495bSYour Name * @vdev: vdev object 1208*5113495bSYour Name * @peer_mac: peer mac address 1209*5113495bSYour Name * @responder: whether to respond or not 1210*5113495bSYour Name */ 1211*5113495bSYour Name struct tdls_set_responder_req { 1212*5113495bSYour Name struct wlan_objmgr_vdev *vdev; 1213*5113495bSYour Name uint8_t peer_mac[QDF_MAC_ADDR_SIZE]; 1214*5113495bSYour Name uint8_t responder; 1215*5113495bSYour Name }; 1216*5113495bSYour Name 1217*5113495bSYour Name /** 1218*5113495bSYour Name * struct tdls_sta_notify_params - STA connection notify info 1219*5113495bSYour Name * @vdev: vdev object 1220*5113495bSYour Name * @tdls_prohibited: peer mac addr 1221*5113495bSYour Name * @tdls_chan_swit_prohibited: peer type 1222*5113495bSYour Name * @lfr_roam: is trigger due to lfr 1223*5113495bSYour Name * @user_disconnect: should userspace be notified of disconnect 1224*5113495bSYour Name * @session_id: session id 1225*5113495bSYour Name */ 1226*5113495bSYour Name struct tdls_sta_notify_params { 1227*5113495bSYour Name struct wlan_objmgr_vdev *vdev; 1228*5113495bSYour Name bool tdls_prohibited; 1229*5113495bSYour Name bool tdls_chan_swit_prohibited; 1230*5113495bSYour Name bool lfr_roam; 1231*5113495bSYour Name bool user_disconnect; 1232*5113495bSYour Name uint8_t session_id; 1233*5113495bSYour Name }; 1234*5113495bSYour Name 1235*5113495bSYour Name /** 1236*5113495bSYour Name * struct tdls_delete_all_peers_params - TDLS set mode params 1237*5113495bSYour Name * @vdev: vdev object 1238*5113495bSYour Name */ 1239*5113495bSYour Name struct tdls_delete_all_peers_params { 1240*5113495bSYour Name struct wlan_objmgr_vdev *vdev; 1241*5113495bSYour Name }; 1242*5113495bSYour Name 1243*5113495bSYour Name /** 1244*5113495bSYour Name * struct tdls_set_mode_params - TDLS set mode params 1245*5113495bSYour Name * @vdev: vdev object 1246*5113495bSYour Name * @tdls_mode: tdls mode to set 1247*5113495bSYour Name * @update_last: inform to update last tdls mode 1248*5113495bSYour Name * @source: mode change requester 1249*5113495bSYour Name */ 1250*5113495bSYour Name struct tdls_set_mode_params { 1251*5113495bSYour Name struct wlan_objmgr_vdev *vdev; 1252*5113495bSYour Name enum tdls_feature_mode tdls_mode; 1253*5113495bSYour Name bool update_last; 1254*5113495bSYour Name enum tdls_disable_sources source; 1255*5113495bSYour Name }; 1256*5113495bSYour Name 1257*5113495bSYour Name /** 1258*5113495bSYour Name * struct tdls_del_all_tdls_peers - delete all tdls peers 1259*5113495bSYour Name * @msg_type: type of message 1260*5113495bSYour Name * @msg_len: length of message 1261*5113495bSYour Name * @bssid: bssid of peer device 1262*5113495bSYour Name */ 1263*5113495bSYour Name struct tdls_del_all_tdls_peers { 1264*5113495bSYour Name uint16_t msg_type; 1265*5113495bSYour Name uint16_t msg_len; 1266*5113495bSYour Name struct qdf_mac_addr bssid; 1267*5113495bSYour Name }; 1268*5113495bSYour Name 1269*5113495bSYour Name /** 1270*5113495bSYour Name * struct tdls_antenna_switch_request - TDLS antenna switch request 1271*5113495bSYour Name * @vdev: vdev object 1272*5113495bSYour Name * @mode: antenna mode, 1x1 or 2x2 1273*5113495bSYour Name */ 1274*5113495bSYour Name struct tdls_antenna_switch_request { 1275*5113495bSYour Name struct wlan_objmgr_vdev *vdev; 1276*5113495bSYour Name uint32_t mode; 1277*5113495bSYour Name }; 1278*5113495bSYour Name 1279*5113495bSYour Name /** 1280*5113495bSYour Name * struct tdls_set_offchannel - TDLS set offchannel 1281*5113495bSYour Name * @vdev: vdev object 1282*5113495bSYour Name * @offchannel: Updated tdls offchannel value. 1283*5113495bSYour Name * @callback: callback to release vdev ref. 1284*5113495bSYour Name */ 1285*5113495bSYour Name struct tdls_set_offchannel { 1286*5113495bSYour Name struct wlan_objmgr_vdev *vdev; 1287*5113495bSYour Name uint16_t offchannel; 1288*5113495bSYour Name tdls_offchan_parms_callback callback; 1289*5113495bSYour Name }; 1290*5113495bSYour Name 1291*5113495bSYour Name /** 1292*5113495bSYour Name * struct tdls_set_offchanmode - TDLS set offchannel mode 1293*5113495bSYour Name * @vdev: vdev object 1294*5113495bSYour Name * @offchan_mode: Updated tdls offchannel mode value. 1295*5113495bSYour Name * @callback: callback to release vdev ref. 1296*5113495bSYour Name */ 1297*5113495bSYour Name struct tdls_set_offchanmode { 1298*5113495bSYour Name struct wlan_objmgr_vdev *vdev; 1299*5113495bSYour Name uint8_t offchan_mode; 1300*5113495bSYour Name tdls_offchan_parms_callback callback; 1301*5113495bSYour Name }; 1302*5113495bSYour Name 1303*5113495bSYour Name /** 1304*5113495bSYour Name * struct tdls_set_secoffchanneloffset - TDLS set secondary offchannel offset 1305*5113495bSYour Name * @vdev: vdev object 1306*5113495bSYour Name * @offchan_offset: Offchan offset value. 1307*5113495bSYour Name * @callback: callback to release vdev ref. 1308*5113495bSYour Name */ 1309*5113495bSYour Name struct tdls_set_secoffchanneloffset { 1310*5113495bSYour Name struct wlan_objmgr_vdev *vdev; 1311*5113495bSYour Name int offchan_offset; 1312*5113495bSYour Name tdls_offchan_parms_callback callback; 1313*5113495bSYour Name }; 1314*5113495bSYour Name 1315*5113495bSYour Name /** 1316*5113495bSYour Name * enum legacy_result_code - defined to comply with tSirResultCodes, need refine 1317*5113495bSYour Name * when mlme converged. 1318*5113495bSYour Name * @legacy_result_success: success 1319*5113495bSYour Name * @legacy_result_max: max result value 1320*5113495bSYour Name */ 1321*5113495bSYour Name enum legacy_result_code { 1322*5113495bSYour Name legacy_result_success, 1323*5113495bSYour Name legacy_result_max = 0x7FFFFFFF 1324*5113495bSYour Name }; 1325*5113495bSYour Name 1326*5113495bSYour Name /** 1327*5113495bSYour Name * struct tdls_send_mgmt_rsp - TDLS Response struct PE --> TDLS module 1328*5113495bSYour Name * @vdev_id: vdev id 1329*5113495bSYour Name * @status_code: status code as tSirResultCodes 1330*5113495bSYour Name * @psoc: soc object 1331*5113495bSYour Name */ 1332*5113495bSYour Name struct tdls_send_mgmt_rsp { 1333*5113495bSYour Name uint8_t vdev_id; 1334*5113495bSYour Name enum legacy_result_code status_code; 1335*5113495bSYour Name struct wlan_objmgr_psoc *psoc; 1336*5113495bSYour Name }; 1337*5113495bSYour Name 1338*5113495bSYour Name /** 1339*5113495bSYour Name * struct tdls_mgmt_tx_completion_ind - TDLS TX completion PE --> TDLS module 1340*5113495bSYour Name * @vdev_id: vdev_id 1341*5113495bSYour Name * @tx_complete_status: tx complete status 1342*5113495bSYour Name * @psoc: soc object 1343*5113495bSYour Name */ 1344*5113495bSYour Name struct tdls_mgmt_tx_completion_ind { 1345*5113495bSYour Name uint8_t vdev_id; 1346*5113495bSYour Name uint32_t tx_complete_status; 1347*5113495bSYour Name struct wlan_objmgr_psoc *psoc; 1348*5113495bSYour Name }; 1349*5113495bSYour Name 1350*5113495bSYour Name /** 1351*5113495bSYour Name * struct tdls_add_sta_rsp - TDLS Response struct PE --> TDLS module 1352*5113495bSYour Name * @status_code: status code as tSirResultCodes 1353*5113495bSYour Name * @peermac: MAC address of the TDLS peer 1354*5113495bSYour Name * @session_id: session id 1355*5113495bSYour Name * @sta_type: sta type 1356*5113495bSYour Name * @tdls_oper: add peer type 1357*5113495bSYour Name * @psoc: soc object 1358*5113495bSYour Name */ 1359*5113495bSYour Name struct tdls_add_sta_rsp { 1360*5113495bSYour Name QDF_STATUS status_code; 1361*5113495bSYour Name struct qdf_mac_addr peermac; 1362*5113495bSYour Name uint8_t session_id; 1363*5113495bSYour Name uint16_t sta_type; 1364*5113495bSYour Name enum tdls_add_oper tdls_oper; 1365*5113495bSYour Name struct wlan_objmgr_psoc *psoc; 1366*5113495bSYour Name }; 1367*5113495bSYour Name 1368*5113495bSYour Name /** 1369*5113495bSYour Name * struct tdls_del_sta_rsp - TDLS Response struct PE --> TDLS module 1370*5113495bSYour Name * @session_id: session id 1371*5113495bSYour Name * @status_code: status code as tSirResultCodes 1372*5113495bSYour Name * @peermac: MAC address of the TDLS peer 1373*5113495bSYour Name * @psoc: soc object 1374*5113495bSYour Name */ 1375*5113495bSYour Name struct tdls_del_sta_rsp { 1376*5113495bSYour Name uint8_t session_id; 1377*5113495bSYour Name QDF_STATUS status_code; 1378*5113495bSYour Name struct qdf_mac_addr peermac; 1379*5113495bSYour Name struct wlan_objmgr_psoc *psoc; 1380*5113495bSYour Name }; 1381*5113495bSYour Name 1382*5113495bSYour Name /** 1383*5113495bSYour Name * struct tdls_send_mgmt_request - tdls management request 1384*5113495bSYour Name * @message_type: type of pe message 1385*5113495bSYour Name * @length: length of the frame. 1386*5113495bSYour Name * @session_id: session id 1387*5113495bSYour Name * @req_type: type of action frame 1388*5113495bSYour Name * @dialog: dialog token used in the frame. 1389*5113495bSYour Name * @status_code: status to be included in the frame. 1390*5113495bSYour Name * @responder: tdls request type 1391*5113495bSYour Name * @peer_capability: peer capability information 1392*5113495bSYour Name * @bssid: bssid 1393*5113495bSYour Name * @peer_mac: mac address of the peer 1394*5113495bSYour Name * @ac: Access Category to use 1395*5113495bSYour Name * @add_ie: additional ie's to be included 1396*5113495bSYour Name */ 1397*5113495bSYour Name struct tdls_send_mgmt_request { 1398*5113495bSYour Name uint16_t message_type; 1399*5113495bSYour Name uint16_t length; 1400*5113495bSYour Name uint8_t session_id; 1401*5113495bSYour Name uint8_t req_type; 1402*5113495bSYour Name uint8_t dialog; 1403*5113495bSYour Name uint16_t status_code; 1404*5113495bSYour Name uint8_t responder; 1405*5113495bSYour Name uint32_t peer_capability; 1406*5113495bSYour Name struct qdf_mac_addr bssid; 1407*5113495bSYour Name struct qdf_mac_addr peer_mac; 1408*5113495bSYour Name enum wifi_traffic_ac ac; 1409*5113495bSYour Name /* Variable length. Dont add any field after this. */ 1410*5113495bSYour Name QDF_FLEX_ARRAY(uint8_t, add_ie); 1411*5113495bSYour Name }; 1412*5113495bSYour Name 1413*5113495bSYour Name /** 1414*5113495bSYour Name * struct tdls_add_sta_req - TDLS request struct TDLS module --> PE 1415*5113495bSYour Name * @message_type: eWNI_SME_TDLS_ADD_STA_REQ 1416*5113495bSYour Name * @length: message length 1417*5113495bSYour Name * @session_id: session id 1418*5113495bSYour Name * @transaction_id: transaction id for cmd 1419*5113495bSYour Name * @bssid: bssid 1420*5113495bSYour Name * @tdls_oper: add peer type 1421*5113495bSYour Name * @peermac: MAC address for TDLS peer 1422*5113495bSYour Name * @capability: mac capability as sSirMacCapabilityInfo 1423*5113495bSYour Name * @extn_capability: extent capability 1424*5113495bSYour Name * @supported_rates_length: rates length 1425*5113495bSYour Name * @supported_rates: supported rates 1426*5113495bSYour Name * @htcap_present: ht capability present 1427*5113495bSYour Name * @ht_cap: ht capability 1428*5113495bSYour Name * @vhtcap_present: vht capability present 1429*5113495bSYour Name * @vht_cap: vht capability 1430*5113495bSYour Name * @he_cap_len: he capability length 1431*5113495bSYour Name * @he_cap: he capability 1432*5113495bSYour Name * @he_6ghz_cap: HE 6 GHz capability 1433*5113495bSYour Name * @ehtcap_present: eht capability present 1434*5113495bSYour Name * @eht_cap_len: eht capability length 1435*5113495bSYour Name * @eht_cap: eht capability 1436*5113495bSYour Name * @uapsd_queues: uapsd queue as sSirMacQosInfoStation 1437*5113495bSYour Name * @max_sp: maximum service period 1438*5113495bSYour Name * @is_pmf: is PMF active 1439*5113495bSYour Name */ 1440*5113495bSYour Name struct tdls_add_sta_req { 1441*5113495bSYour Name uint16_t message_type; 1442*5113495bSYour Name uint16_t length; 1443*5113495bSYour Name uint8_t session_id; 1444*5113495bSYour Name uint16_t transaction_id; 1445*5113495bSYour Name struct qdf_mac_addr bssid; 1446*5113495bSYour Name enum tdls_add_oper tdls_oper; 1447*5113495bSYour Name struct qdf_mac_addr peermac; 1448*5113495bSYour Name uint16_t capability; 1449*5113495bSYour Name uint8_t extn_capability[WLAN_MAC_MAX_EXTN_CAP]; 1450*5113495bSYour Name uint8_t supported_rates_length; 1451*5113495bSYour Name uint8_t supported_rates[WLAN_MAC_MAX_SUPP_RATES]; 1452*5113495bSYour Name uint8_t htcap_present; 1453*5113495bSYour Name struct htcap_cmn_ie ht_cap; 1454*5113495bSYour Name uint8_t vhtcap_present; 1455*5113495bSYour Name struct vhtcap vht_cap; 1456*5113495bSYour Name #ifdef WLAN_FEATURE_11AX 1457*5113495bSYour Name uint8_t he_cap_len; 1458*5113495bSYour Name struct hecap he_cap; 1459*5113495bSYour Name struct hecap_6ghz he_6ghz_cap; 1460*5113495bSYour Name #endif 1461*5113495bSYour Name #ifdef WLAN_FEATURE_11BE 1462*5113495bSYour Name uint8_t ehtcap_present; 1463*5113495bSYour Name uint8_t eht_cap_len; 1464*5113495bSYour Name struct ehtcap eht_cap; 1465*5113495bSYour Name #endif 1466*5113495bSYour Name uint8_t uapsd_queues; 1467*5113495bSYour Name uint8_t max_sp; 1468*5113495bSYour Name bool is_pmf; 1469*5113495bSYour Name }; 1470*5113495bSYour Name 1471*5113495bSYour Name /** 1472*5113495bSYour Name * struct tdls_del_sta_req - TDLS Request struct TDLS module --> PE 1473*5113495bSYour Name * @message_type: message type eWNI_SME_TDLS_DEL_STA_REQ 1474*5113495bSYour Name * @length: message length 1475*5113495bSYour Name * @session_id: session id 1476*5113495bSYour Name * @transaction_id: transaction id for cmd 1477*5113495bSYour Name * @bssid: bssid 1478*5113495bSYour Name * @peermac: MAC address of the TDLS peer 1479*5113495bSYour Name */ 1480*5113495bSYour Name struct tdls_del_sta_req { 1481*5113495bSYour Name uint16_t message_type; 1482*5113495bSYour Name uint16_t length; 1483*5113495bSYour Name uint8_t session_id; 1484*5113495bSYour Name uint16_t transaction_id; 1485*5113495bSYour Name struct qdf_mac_addr bssid; 1486*5113495bSYour Name struct qdf_mac_addr peermac; 1487*5113495bSYour Name }; 1488*5113495bSYour Name 1489*5113495bSYour Name /** 1490*5113495bSYour Name * struct tdls_link_teardown - TDLS link teardown struct 1491*5113495bSYour Name * @psoc: soc object 1492*5113495bSYour Name */ 1493*5113495bSYour Name struct tdls_link_teardown { 1494*5113495bSYour Name struct wlan_objmgr_psoc *psoc; 1495*5113495bSYour Name }; 1496*5113495bSYour Name 1497*5113495bSYour Name #ifdef FEATURE_SET 1498*5113495bSYour Name /** 1499*5113495bSYour Name * struct wlan_tdls_features - TDLS feature set struct 1500*5113495bSYour Name * @enable_tdls: enable/disable tdls 1501*5113495bSYour Name * @enable_tdls_offchannel: enable/disable tdls offchannel 1502*5113495bSYour Name * @max_tdls_peers: Max tdls Peers 1503*5113495bSYour Name * @enable_tdls_capability_enhance: enable tdls capability enhance 1504*5113495bSYour Name */ 1505*5113495bSYour Name struct wlan_tdls_features { 1506*5113495bSYour Name bool enable_tdls; 1507*5113495bSYour Name bool enable_tdls_offchannel; 1508*5113495bSYour Name uint8_t max_tdls_peers; 1509*5113495bSYour Name bool enable_tdls_capability_enhance; 1510*5113495bSYour Name }; 1511*5113495bSYour Name #endif 1512*5113495bSYour Name #endif 1513