1*5113495bSYour Name /* 2*5113495bSYour Name * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. 3*5113495bSYour Name * 4*5113495bSYour Name * Permission to use, copy, modify, and/or distribute this software for 5*5113495bSYour Name * any purpose with or without fee is hereby granted, provided that the 6*5113495bSYour Name * above copyright notice and this permission notice appear in all 7*5113495bSYour Name * copies. 8*5113495bSYour Name * 9*5113495bSYour Name * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 10*5113495bSYour Name * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 11*5113495bSYour Name * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 12*5113495bSYour Name * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 13*5113495bSYour Name * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 14*5113495bSYour Name * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 15*5113495bSYour Name * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 16*5113495bSYour Name * PERFORMANCE OF THIS SOFTWARE. 17*5113495bSYour Name */ 18*5113495bSYour Name 19*5113495bSYour Name /** 20*5113495bSYour Name * DOC: This file contains various structures, macros used by the TWT 21*5113495bSYour Name * component and other components interfacing with TWT component. 22*5113495bSYour Name */ 23*5113495bSYour Name 24*5113495bSYour Name #ifndef _WLAN_TWT_PUBLIC_STRUCTS_H_ 25*5113495bSYour Name #define _WLAN_TWT_PUBLIC_STRUCTS_H_ 26*5113495bSYour Name 27*5113495bSYour Name #include <qdf_types.h> 28*5113495bSYour Name 29*5113495bSYour Name #define WLAN_MAX_TWT_SESSIONS_PER_PEER 1 30*5113495bSYour Name #define TWT_ALL_SESSIONS_DIALOG_ID 255 31*5113495bSYour Name 32*5113495bSYour Name /** 33*5113495bSYour Name * enum wlan_twt_commands - TWT commands 34*5113495bSYour Name * @WLAN_TWT_NONE: Indicates none of the TWT commands are active. 35*5113495bSYour Name * @WLAN_TWT_SETUP: TWT setup 36*5113495bSYour Name * @WLAN_TWT_TERMINATE: TWT terminate 37*5113495bSYour Name * @WLAN_TWT_SUSPEND: TWT suspend 38*5113495bSYour Name * @WLAN_TWT_RESUME: TWT resume 39*5113495bSYour Name * @WLAN_TWT_NUDGE: TWT nudge 40*5113495bSYour Name * @WLAN_TWT_STATISTICS: TWT statistics 41*5113495bSYour Name * @WLAN_TWT_CLEAR_STATISTICS: TWT clear statistics 42*5113495bSYour Name * @WLAN_TWT_ANY: Indicates one of the commands is in progress. 43*5113495bSYour Name */ 44*5113495bSYour Name enum wlan_twt_commands { 45*5113495bSYour Name WLAN_TWT_NONE = 0, 46*5113495bSYour Name WLAN_TWT_SETUP = BIT(0), 47*5113495bSYour Name WLAN_TWT_TERMINATE = BIT(1), 48*5113495bSYour Name WLAN_TWT_SUSPEND = BIT(2), 49*5113495bSYour Name WLAN_TWT_RESUME = BIT(3), 50*5113495bSYour Name WLAN_TWT_NUDGE = BIT(4), 51*5113495bSYour Name WLAN_TWT_STATISTICS = BIT(5), 52*5113495bSYour Name WLAN_TWT_CLEAR_STATISTICS = BIT(6), 53*5113495bSYour Name WLAN_TWT_ANY = 0xFF, 54*5113495bSYour Name }; 55*5113495bSYour Name 56*5113495bSYour Name /** 57*5113495bSYour Name * enum wlan_twt_capabilities - Represents the Bitmap of TWT capabilities 58*5113495bSYour Name * supported by device and peer. 59*5113495bSYour Name * @WLAN_TWT_CAPA_REQUESTOR: TWT requestor support is advertised by TWT 60*5113495bSYour Name * non-scheduling STA. 61*5113495bSYour Name * @WLAN_TWT_CAPA_RESPONDER: TWT responder support is advertised by TWT 62*5113495bSYour Name * AP. 63*5113495bSYour Name * @WLAN_TWT_CAPA_BROADCAST: This indicates support for the role of broadcast 64*5113495bSYour Name * TWT scheduling/receiving functionality. 65*5113495bSYour Name * @WLAN_TWT_CAPA_FLEXIBLE: Device supports flexible TWT schedule. 66*5113495bSYour Name * @WLAN_TWT_CAPA_REQUIRED: The TWT Required is advertised by AP to indicate 67*5113495bSYour Name * that it mandates the associated HE STAs to support TWT. 68*5113495bSYour Name */ 69*5113495bSYour Name enum wlan_twt_capabilities { 70*5113495bSYour Name WLAN_TWT_CAPA_REQUESTOR = BIT(0), 71*5113495bSYour Name WLAN_TWT_CAPA_RESPONDER = BIT(1), 72*5113495bSYour Name WLAN_TWT_CAPA_BROADCAST = BIT(2), 73*5113495bSYour Name WLAN_TWT_CAPA_FLEXIBLE = BIT(3), 74*5113495bSYour Name WLAN_TWT_CAPA_REQUIRED = BIT(4), 75*5113495bSYour Name }; 76*5113495bSYour Name 77*5113495bSYour Name /** 78*5113495bSYour Name * enum wlan_twt_session_state - TWT session state for a dialog id 79*5113495bSYour Name * @WLAN_TWT_SETUP_STATE_NOT_ESTABLISHED: Session doesn't exist 80*5113495bSYour Name * @WLAN_TWT_SETUP_STATE_ACTIVE: TWT session is active 81*5113495bSYour Name * @WLAN_TWT_SETUP_STATE_SUSPEND: TWT session is suspended 82*5113495bSYour Name */ 83*5113495bSYour Name enum wlan_twt_session_state { 84*5113495bSYour Name WLAN_TWT_SETUP_STATE_NOT_ESTABLISHED = 0, 85*5113495bSYour Name WLAN_TWT_SETUP_STATE_ACTIVE = 1, 86*5113495bSYour Name WLAN_TWT_SETUP_STATE_SUSPEND = 2, 87*5113495bSYour Name }; 88*5113495bSYour Name 89*5113495bSYour Name /** 90*5113495bSYour Name * enum TWT_ROLE - role specified in ext conf in wmi_twt_enable/disable_cmd 91*5113495bSYour Name * @TWT_ROLE_REQUESTOR: TWT role is requestor 92*5113495bSYour Name * @TWT_ROLE_RESPONDER: TWT role is responder 93*5113495bSYour Name */ 94*5113495bSYour Name enum TWT_ROLE { 95*5113495bSYour Name TWT_ROLE_REQUESTOR, 96*5113495bSYour Name TWT_ROLE_RESPONDER, 97*5113495bSYour Name }; 98*5113495bSYour Name 99*5113495bSYour Name /** 100*5113495bSYour Name * enum TWT_OPERATION - specified in ext conf in wmi_twt_enable/disable_cmd 101*5113495bSYour Name * @TWT_OPERATION_INDIVIDUAL: Individual TWT operation 102*5113495bSYour Name * @TWT_OPERATION_BROADCAST: Broadcast TWT operation 103*5113495bSYour Name */ 104*5113495bSYour Name enum TWT_OPERATION { 105*5113495bSYour Name TWT_OPERATION_INDIVIDUAL, 106*5113495bSYour Name TWT_OPERATION_BROADCAST, 107*5113495bSYour Name }; 108*5113495bSYour Name 109*5113495bSYour Name /** 110*5113495bSYour Name * struct twt_enable_param: 111*5113495bSYour Name * @pdev_id: pdev_id for identifying the MAC. 112*5113495bSYour Name * @sta_cong_timer_ms: STA TWT congestion timer TO value in terms of ms 113*5113495bSYour Name * @mbss_support: Flag indicating if AP TWT feature supported in 114*5113495bSYour Name * MBSS mode or not. 115*5113495bSYour Name * @default_slot_size: This is the default value for the TWT slot setup 116*5113495bSYour Name * by AP (units = microseconds) 117*5113495bSYour Name * @congestion_thresh_setup: Minimum congestion required to start setting 118*5113495bSYour Name * up TWT sessions 119*5113495bSYour Name * @congestion_thresh_teardown: Minimum congestion below which TWT will be 120*5113495bSYour Name * torn down (in percent of occupied airtime) 121*5113495bSYour Name * @congestion_thresh_critical: Threshold above which TWT will not be active 122*5113495bSYour Name * (in percent of occupied airtime) 123*5113495bSYour Name * @interference_thresh_teardown: Minimum interference above that TWT 124*5113495bSYour Name * will not be active. The interference parameters use an 125*5113495bSYour Name * abstract method of evaluating interference. 126*5113495bSYour Name * The parameters are in percent, ranging from 0 for no 127*5113495bSYour Name * interference, to 100 for interference extreme enough 128*5113495bSYour Name * to completely block the signal of interest. 129*5113495bSYour Name * @interference_thresh_setup: Minimum interference below that TWT session 130*5113495bSYour Name * can be setup. The interference parameters use an 131*5113495bSYour Name * abstract method of evaluating interference. 132*5113495bSYour Name * The parameters are in percent, ranging from 0 for no 133*5113495bSYour Name * interference, to 100 for interference extreme enough 134*5113495bSYour Name * to completely block the signal of interest. 135*5113495bSYour Name * @min_no_sta_setup: Minimum no of STA required to start TWT setup 136*5113495bSYour Name * @min_no_sta_teardown: Minimum no of STA below which TWT will be torn down 137*5113495bSYour Name * @no_of_bcast_mcast_slots: Number of default slot sizes reserved for 138*5113495bSYour Name * BCAST/MCAST delivery 139*5113495bSYour Name * @min_no_twt_slots: Minimum no of available slots for TWT to be operational 140*5113495bSYour Name * @max_no_sta_twt: Max no of STA with which TWT is possible 141*5113495bSYour Name * (must be <= the wmi_resource_config's twt_ap_sta_count value) 142*5113495bSYour Name * * The below interval parameters have units of milliseconds. 143*5113495bSYour Name * @mode_check_interval: Interval between two successive check to decide the 144*5113495bSYour Name * mode of TWT. (units = milliseconds) 145*5113495bSYour Name * @add_sta_slot_interval: Interval between decisions making to create 146*5113495bSYour Name * TWT slots for STAs. (units = milliseconds) 147*5113495bSYour Name * @remove_sta_slot_interval: Inrerval between decisions making to remove TWT 148*5113495bSYour Name * slot of STAs. (units = milliseconds) 149*5113495bSYour Name * @twt_role: values from enum TWT_ROLE. 150*5113495bSYour Name * @twt_oper: values from enum TWT_OPERATION. 151*5113495bSYour Name * @ext_conf_present: If requestor/responder extend config is present. 152*5113495bSYour Name * @b_twt_enable: Enable or disable broadcast TWT. 153*5113495bSYour Name * @b_twt_legacy_mbss_enable: Enable or disable legacy MBSSID TWT. 154*5113495bSYour Name * @b_twt_ax_mbss_enable: Enable or disable 11AX MBSSID TWT. 155*5113495bSYour Name * @r_twt_enable: Restricted TWT enable or disable. 156*5113495bSYour Name */ 157*5113495bSYour Name struct twt_enable_param { 158*5113495bSYour Name uint32_t pdev_id; 159*5113495bSYour Name uint32_t sta_cong_timer_ms; 160*5113495bSYour Name uint32_t mbss_support; 161*5113495bSYour Name uint32_t default_slot_size; 162*5113495bSYour Name uint32_t congestion_thresh_setup; 163*5113495bSYour Name uint32_t congestion_thresh_teardown; 164*5113495bSYour Name uint32_t congestion_thresh_critical; 165*5113495bSYour Name uint32_t interference_thresh_teardown; 166*5113495bSYour Name uint32_t interference_thresh_setup; 167*5113495bSYour Name uint32_t min_no_sta_setup; 168*5113495bSYour Name uint32_t min_no_sta_teardown; 169*5113495bSYour Name uint32_t no_of_bcast_mcast_slots; 170*5113495bSYour Name uint32_t min_no_twt_slots; 171*5113495bSYour Name uint32_t max_no_sta_twt; 172*5113495bSYour Name uint32_t mode_check_interval; 173*5113495bSYour Name uint32_t add_sta_slot_interval; 174*5113495bSYour Name uint32_t remove_sta_slot_interval; 175*5113495bSYour Name enum TWT_ROLE twt_role; 176*5113495bSYour Name enum TWT_OPERATION twt_oper; 177*5113495bSYour Name bool ext_conf_present; 178*5113495bSYour Name uint32_t b_twt_enable:1, 179*5113495bSYour Name b_twt_legacy_mbss_enable:1, 180*5113495bSYour Name b_twt_ax_mbss_enable:1; 181*5113495bSYour Name bool r_twt_enable; 182*5113495bSYour Name }; 183*5113495bSYour Name 184*5113495bSYour Name /** 185*5113495bSYour Name * enum HOST_TWT_DISABLE_REASON - reason code of disable TWT 186*5113495bSYour Name * @HOST_TWT_DISABLE_REASON_NONE: Host sends TWT disable command to firmware 187*5113495bSYour Name * in normal case. 188*5113495bSYour Name * @HOST_TWT_DISABLE_REASON_CONCURRENCY_SCC: Host sends TWT disable command 189*5113495bSYour Name * to firmware when SCC concurrency exist. 190*5113495bSYour Name * @HOST_TWT_DISABLE_REASON_CONCURRENCY_MCC: Host sends TWT disable command 191*5113495bSYour Name * to firmware when MCC concurrency exist. 192*5113495bSYour Name * @HOST_TWT_DISABLE_REASON_CHANGE_CONGESTION_TIMEOUT: Host sends TWT disable 193*5113495bSYour Name * command to firmware to change congestion timeout 194*5113495bSYour Name * @HOST_TWT_DISABLE_REASON_P2P_GO_NOA: Host sends TWT disable command to 195*5113495bSYour Name * firmware when P2P GO NOA exist. 196*5113495bSYour Name */ 197*5113495bSYour Name enum HOST_TWT_DISABLE_REASON { 198*5113495bSYour Name HOST_TWT_DISABLE_REASON_NONE, 199*5113495bSYour Name HOST_TWT_DISABLE_REASON_CONCURRENCY_SCC, 200*5113495bSYour Name HOST_TWT_DISABLE_REASON_CONCURRENCY_MCC, 201*5113495bSYour Name HOST_TWT_DISABLE_REASON_CHANGE_CONGESTION_TIMEOUT, 202*5113495bSYour Name HOST_TWT_DISABLE_REASON_P2P_GO_NOA, 203*5113495bSYour Name }; 204*5113495bSYour Name 205*5113495bSYour Name /** 206*5113495bSYour Name * struct twt_disable_param: 207*5113495bSYour Name * @pdev_id: pdev_id for identifying the MAC. 208*5113495bSYour Name * @ext_conf_present: If requestor/responder extend config is present. 209*5113495bSYour Name * @twt_role: values from enum TWT_ROLE. 210*5113495bSYour Name * @twt_oper: values from enum TWT_OPERATION. 211*5113495bSYour Name * @dis_reason_code: values from disable reason code. 212*5113495bSYour Name */ 213*5113495bSYour Name struct twt_disable_param { 214*5113495bSYour Name uint32_t pdev_id; 215*5113495bSYour Name bool ext_conf_present; 216*5113495bSYour Name enum TWT_ROLE twt_role; 217*5113495bSYour Name enum TWT_OPERATION twt_oper; 218*5113495bSYour Name enum HOST_TWT_DISABLE_REASON dis_reason_code; 219*5113495bSYour Name }; 220*5113495bSYour Name 221*5113495bSYour Name /** 222*5113495bSYour Name * enum HOST_TWT_ENABLE_STATUS - status code of enabling TWT 223*5113495bSYour Name * @HOST_TWT_ENABLE_STATUS_OK: enabling TWT successfully completed 224*5113495bSYour Name * @HOST_TWT_ENABLE_STATUS_ALREADY_ENABLED: TWT already enabled 225*5113495bSYour Name * @HOST_TWT_ENABLE_STATUS_NOT_READY: FW not ready for enabling TWT 226*5113495bSYour Name * @HOST_TWT_ENABLE_INVALID_PARAM: invalid parameters 227*5113495bSYour Name * @HOST_TWT_ENABLE_STATUS_UNKNOWN_ERROR: enabling TWT failed with an 228*5113495bSYour Name * unknown reason 229*5113495bSYour Name */ 230*5113495bSYour Name enum HOST_TWT_ENABLE_STATUS { 231*5113495bSYour Name HOST_TWT_ENABLE_STATUS_OK, 232*5113495bSYour Name HOST_TWT_ENABLE_STATUS_ALREADY_ENABLED, 233*5113495bSYour Name HOST_TWT_ENABLE_STATUS_NOT_READY, 234*5113495bSYour Name HOST_TWT_ENABLE_INVALID_PARAM, 235*5113495bSYour Name HOST_TWT_ENABLE_STATUS_UNKNOWN_ERROR, 236*5113495bSYour Name }; 237*5113495bSYour Name 238*5113495bSYour Name /** 239*5113495bSYour Name * enum HOST_ADD_TWT_STATUS - status code of adding TWT dialog 240*5113495bSYour Name * @HOST_ADD_TWT_STATUS_OK: adding TWT dialog successfully completed 241*5113495bSYour Name * @HOST_ADD_TWT_STATUS_TWT_NOT_ENABLED: TWT not enabled 242*5113495bSYour Name * @HOST_ADD_TWT_STATUS_USED_DIALOG_ID: TWT dialog ID is already used 243*5113495bSYour Name * @HOST_ADD_TWT_STATUS_INVALID_PARAM: invalid parameters 244*5113495bSYour Name * @HOST_ADD_TWT_STATUS_NOT_READY: FW not ready 245*5113495bSYour Name * @HOST_ADD_TWT_STATUS_NO_RESOURCE: FW resource exhausted 246*5113495bSYour Name * @HOST_ADD_TWT_STATUS_NO_ACK: peer AP/STA did not ACK the 247*5113495bSYour Name * request/response frame 248*5113495bSYour Name * @HOST_ADD_TWT_STATUS_NO_RESPONSE: peer AP did not send the response frame 249*5113495bSYour Name * @HOST_ADD_TWT_STATUS_DENIED: AP did not accept the request 250*5113495bSYour Name * @HOST_ADD_TWT_STATUS_UNKNOWN_ERROR: adding TWT dialog failed with 251*5113495bSYour Name * an unknown reason 252*5113495bSYour Name * @HOST_ADD_TWT_STATUS_AP_PARAMS_NOT_IN_RANGE: peer AP wake interval, 253*5113495bSYour Name * duration not in range 254*5113495bSYour Name * @HOST_ADD_TWT_STATUS_AP_IE_VALIDATION_FAILED: peer AP IE Validation 255*5113495bSYour Name * Failed 256*5113495bSYour Name * @HOST_ADD_TWT_STATUS_ROAM_IN_PROGRESS: Roaming in progress 257*5113495bSYour Name * @HOST_ADD_TWT_STATUS_CHAN_SW_IN_PROGRESS: Channel switch in progress 258*5113495bSYour Name * @HOST_ADD_TWT_STATUS_SCAN_IN_PROGRESS: Scan is in progress 259*5113495bSYour Name * @HOST_ADD_TWT_STATUS_LINK_SWITCH_IN_PROGRESS: Link switch is in progress 260*5113495bSYour Name * @HOST_ADD_TWT_STATUS_UNSUPPORTED_MODE_MLMR: MLMR mode is not supported 261*5113495bSYour Name */ 262*5113495bSYour Name enum HOST_ADD_TWT_STATUS { 263*5113495bSYour Name HOST_ADD_TWT_STATUS_OK, 264*5113495bSYour Name HOST_ADD_TWT_STATUS_TWT_NOT_ENABLED, 265*5113495bSYour Name HOST_ADD_TWT_STATUS_USED_DIALOG_ID, 266*5113495bSYour Name HOST_ADD_TWT_STATUS_INVALID_PARAM, 267*5113495bSYour Name HOST_ADD_TWT_STATUS_NOT_READY, 268*5113495bSYour Name HOST_ADD_TWT_STATUS_NO_RESOURCE, 269*5113495bSYour Name HOST_ADD_TWT_STATUS_NO_ACK, 270*5113495bSYour Name HOST_ADD_TWT_STATUS_NO_RESPONSE, 271*5113495bSYour Name HOST_ADD_TWT_STATUS_DENIED, 272*5113495bSYour Name HOST_ADD_TWT_STATUS_UNKNOWN_ERROR, 273*5113495bSYour Name HOST_ADD_TWT_STATUS_AP_PARAMS_NOT_IN_RANGE, 274*5113495bSYour Name HOST_ADD_TWT_STATUS_AP_IE_VALIDATION_FAILED, 275*5113495bSYour Name HOST_ADD_TWT_STATUS_ROAM_IN_PROGRESS, 276*5113495bSYour Name HOST_ADD_TWT_STATUS_CHAN_SW_IN_PROGRESS, 277*5113495bSYour Name HOST_ADD_TWT_STATUS_SCAN_IN_PROGRESS, 278*5113495bSYour Name HOST_ADD_TWT_STATUS_LINK_SWITCH_IN_PROGRESS, 279*5113495bSYour Name HOST_ADD_TWT_STATUS_UNSUPPORTED_MODE_MLMR, 280*5113495bSYour Name }; 281*5113495bSYour Name 282*5113495bSYour Name /** 283*5113495bSYour Name * struct twt_enable_complete_event_param: 284*5113495bSYour Name * @pdev_id: pdev_id for identifying the MAC. 285*5113495bSYour Name * @status: From enum TWT_ENABLE_STATUS 286*5113495bSYour Name */ 287*5113495bSYour Name struct twt_enable_complete_event_param { 288*5113495bSYour Name uint32_t pdev_id; 289*5113495bSYour Name uint32_t status; 290*5113495bSYour Name }; 291*5113495bSYour Name 292*5113495bSYour Name /** 293*5113495bSYour Name * enum HOST_TWT_DISABLE_STATUS - status code of disable TWT 294*5113495bSYour Name * @HOST_TWT_DISABLE_STATUS_OK: TWT disable is successfully completed 295*5113495bSYour Name * @HOST_TWT_DISABLE_STATUS_ROAM_IN_PROGRESS: roaming in progress 296*5113495bSYour Name * @HOST_TWT_DISABLE_STATUS_CHAN_SW_IN_PROGRESS: channel switch in progress 297*5113495bSYour Name * @HOST_TWT_DISABLE_STATUS_SCAN_IN_PROGRESS: scan in progress 298*5113495bSYour Name * @HOST_TWT_DISABLE_STATUS_UNKNOWN_ERROR: unknown error 299*5113495bSYour Name */ 300*5113495bSYour Name enum HOST_TWT_DISABLE_STATUS { 301*5113495bSYour Name HOST_TWT_DISABLE_STATUS_OK, 302*5113495bSYour Name HOST_TWT_DISABLE_STATUS_ROAM_IN_PROGRESS, 303*5113495bSYour Name HOST_TWT_DISABLE_STATUS_CHAN_SW_IN_PROGRESS, 304*5113495bSYour Name HOST_TWT_DISABLE_STATUS_SCAN_IN_PROGRESS, 305*5113495bSYour Name HOST_TWT_DISABLE_STATUS_UNKNOWN_ERROR, 306*5113495bSYour Name }; 307*5113495bSYour Name 308*5113495bSYour Name /** 309*5113495bSYour Name * struct twt_disable_complete_event_param: 310*5113495bSYour Name * @pdev_id: pdev_id for identifying the MAC. 311*5113495bSYour Name * @status: From enum HOST_TWT_DISABLE_STATUS 312*5113495bSYour Name */ 313*5113495bSYour Name struct twt_disable_complete_event_param { 314*5113495bSYour Name uint32_t pdev_id; 315*5113495bSYour Name uint32_t status; 316*5113495bSYour Name }; 317*5113495bSYour Name 318*5113495bSYour Name /** 319*5113495bSYour Name * struct twt_ack_context: twt ack private context 320*5113495bSYour Name * @vdev_id: vdev id 321*5113495bSYour Name * @peer_macaddr: peer mac address 322*5113495bSYour Name * @dialog_id: dialog id 323*5113495bSYour Name * @twt_cmd_ack: twt ack command 324*5113495bSYour Name * @status: twt command status 325*5113495bSYour Name */ 326*5113495bSYour Name struct twt_ack_context { 327*5113495bSYour Name uint32_t vdev_id; 328*5113495bSYour Name struct qdf_mac_addr peer_macaddr; 329*5113495bSYour Name uint32_t dialog_id; 330*5113495bSYour Name uint32_t twt_cmd_ack; 331*5113495bSYour Name uint32_t status; 332*5113495bSYour Name }; 333*5113495bSYour Name 334*5113495bSYour Name /** 335*5113495bSYour Name * struct twt_en_dis_context: twt enable/disable private context 336*5113495bSYour Name * @twt_role: twt role. When the upper layer is invoking requestor/responder 337*5113495bSYour Name * enable/disable command via the TWT component API, Firmware WMI event 338*5113495bSYour Name * doesn't have the info in the event params to distinguish if this enable or 339*5113495bSYour Name * disable is for requestor or responder, hence TWT component stores this role 340*5113495bSYour Name * before the request is sent to the firmware. 341*5113495bSYour Name * @context: cookie. This is the cookie information passed back to the upper 342*5113495bSYour Name * layer to help identify the request structure 343*5113495bSYour Name */ 344*5113495bSYour Name struct twt_en_dis_context { 345*5113495bSYour Name enum TWT_ROLE twt_role; 346*5113495bSYour Name void *context; 347*5113495bSYour Name }; 348*5113495bSYour Name 349*5113495bSYour Name /** 350*5113495bSYour Name * struct twt_ack_complete_event_param: 351*5113495bSYour Name * @vdev_id: vdev id 352*5113495bSYour Name * @peer_macaddr: peer mac address 353*5113495bSYour Name * @dialog_id: dialog id 354*5113495bSYour Name * @twt_cmd_ack: ack event to the corresponding twt command 355*5113495bSYour Name * @status: twt command status 356*5113495bSYour Name */ 357*5113495bSYour Name struct twt_ack_complete_event_param { 358*5113495bSYour Name uint32_t vdev_id; 359*5113495bSYour Name struct qdf_mac_addr peer_macaddr; 360*5113495bSYour Name uint32_t dialog_id; 361*5113495bSYour Name uint32_t twt_cmd_ack; 362*5113495bSYour Name uint32_t status; 363*5113495bSYour Name }; 364*5113495bSYour Name 365*5113495bSYour Name /** 366*5113495bSYour Name * struct twt_session_stats_info: 367*5113495bSYour Name * @vdev_id: id of VDEV for twt session 368*5113495bSYour Name * @peer_mac: MAC address of node 369*5113495bSYour Name * @event_type: Indicates TWT session type (SETUP/TEARDOWN/UPDATE) 370*5113495bSYour Name * @flow_id: TWT flow identifier established with TWT peer 371*5113495bSYour Name * @bcast: If this is a broadcast TWT session 372*5113495bSYour Name * @trig: If the TWT session is trigger enabled 373*5113495bSYour Name * @announ: If the flow type is announced/unannounced 374*5113495bSYour Name * @protection: If the TWT protection field is set 375*5113495bSYour Name * @info_frame_disabled: If the TWT Information frame is disabled 376*5113495bSYour Name * @pm_responder_bit_valid: is pm_responder_bit valid 377*5113495bSYour Name * @pm_responder_bit: set pm_responder_bit 378*5113495bSYour Name * @dialog_id: Dialog_id of current session 379*5113495bSYour Name * @wake_dura_us: wake duration in us 380*5113495bSYour Name * @wake_intvl_us: wake time interval in us 381*5113495bSYour Name * @sp_offset_us: Time until initial TWT SP occurs 382*5113495bSYour Name * @sp_tsf_us_lo: TWT wake time TSF in usecs lower bits - 31:0 383*5113495bSYour Name * @sp_tsf_us_hi: TWT wake time TSF in usecs higher bits - 63:32 384*5113495bSYour Name */ 385*5113495bSYour Name struct twt_session_stats_info { 386*5113495bSYour Name uint32_t vdev_id; 387*5113495bSYour Name struct qdf_mac_addr peer_mac; 388*5113495bSYour Name uint32_t event_type; 389*5113495bSYour Name uint32_t flow_id:16, 390*5113495bSYour Name bcast:1, 391*5113495bSYour Name trig:1, 392*5113495bSYour Name announ:1, 393*5113495bSYour Name protection:1, 394*5113495bSYour Name info_frame_disabled:1, 395*5113495bSYour Name pm_responder_bit_valid:1, 396*5113495bSYour Name pm_responder_bit:1; 397*5113495bSYour Name uint32_t dialog_id; 398*5113495bSYour Name uint32_t wake_dura_us; 399*5113495bSYour Name uint32_t wake_intvl_us; 400*5113495bSYour Name uint32_t sp_offset_us; 401*5113495bSYour Name uint32_t sp_tsf_us_lo; 402*5113495bSYour Name uint32_t sp_tsf_us_hi; 403*5113495bSYour Name }; 404*5113495bSYour Name 405*5113495bSYour Name /** 406*5113495bSYour Name * struct twt_session_stats_event_param: 407*5113495bSYour Name * @pdev_id: pdev_id for identifying the MAC. 408*5113495bSYour Name * @num_sessions: number of TWT sessions 409*5113495bSYour Name * @twt_sessions: received TWT sessions 410*5113495bSYour Name */ 411*5113495bSYour Name struct twt_session_stats_event_param { 412*5113495bSYour Name uint32_t pdev_id; 413*5113495bSYour Name uint32_t num_sessions; 414*5113495bSYour Name }; 415*5113495bSYour Name 416*5113495bSYour Name /* from IEEE 802.11ah section 9.4.2.200 */ 417*5113495bSYour Name enum HOST_TWT_COMMAND { 418*5113495bSYour Name HOST_TWT_COMMAND_REQUEST_TWT = 0, 419*5113495bSYour Name HOST_TWT_COMMAND_SUGGEST_TWT = 1, 420*5113495bSYour Name HOST_TWT_COMMAND_DEMAND_TWT = 2, 421*5113495bSYour Name HOST_TWT_COMMAND_TWT_GROUPING = 3, 422*5113495bSYour Name HOST_TWT_COMMAND_ACCEPT_TWT = 4, 423*5113495bSYour Name HOST_TWT_COMMAND_ALTERNATE_TWT = 5, 424*5113495bSYour Name HOST_TWT_COMMAND_DICTATE_TWT = 6, 425*5113495bSYour Name HOST_TWT_COMMAND_REJECT_TWT = 7, 426*5113495bSYour Name }; 427*5113495bSYour Name 428*5113495bSYour Name /** 429*5113495bSYour Name * struct twt_add_dialog_param - 430*5113495bSYour Name * @vdev_id: VDEV identifier 431*5113495bSYour Name * @peer_macaddr: peer MAC address when vdev is AP VDEV 432*5113495bSYour Name * @dialog_id: diaglog_id (TWT dialog ID) 433*5113495bSYour Name * This dialog ID must be unique within its vdev. 434*5113495bSYour Name * @wake_intvl_us: TWT Wake Interval in units of us 435*5113495bSYour Name * @wake_intvl_mantis: TWT Wake Interval Mantissa 436*5113495bSYour Name * - wake_intvl_mantis must be <= 0xFFFF 437*5113495bSYour Name * - wake_intvl_us must be divided evenly by wake_intvl_mantis, 438*5113495bSYour Name * i.e., wake_intvl_us % wake_intvl_mantis == 0 439*5113495bSYour Name * - the quotient of wake_intvl_us/wake_intvl_mantis must be 440*5113495bSYour Name * 2 to N-th(0<=N<=31) power, 441*5113495bSYour Name * i.e., wake_intvl_us/wake_intvl_mantis == 2^N, 0<=N<=31 442*5113495bSYour Name * @min_wake_intvl_us: Min tolerance limit of TWT wake interval 443*5113495bSYour Name * @max_wake_intvl_us: Max tolerance limit of TWT wake interval 444*5113495bSYour Name * @wake_dura_us: TWT Wake Duration in units of us, must be <= 0xFFFF 445*5113495bSYour Name * wake_dura_us must be divided evenly by 256, 446*5113495bSYour Name * i.e., wake_dura_us % 256 == 0 447*5113495bSYour Name * @min_wake_dura_us: Min tolerance limit of TWT wake duration. 448*5113495bSYour Name * @max_wake_dura_us: Max tolerance limit of TWT wake duration. 449*5113495bSYour Name * @sp_offset_us: this long time after TWT setup the 1st SP will start. 450*5113495bSYour Name * @twt_cmd: cmd from enum HOST_TWT_COMMAND 451*5113495bSYour Name * @flag_bcast: 0 means Individual TWT, 452*5113495bSYour Name * 1 means Broadcast TWT 453*5113495bSYour Name * @flag_trigger: 0 means non-Trigger-enabled TWT, 454*5113495bSYour Name * 1 means means Trigger-enabled TWT 455*5113495bSYour Name * @flag_flow_type: 0 means announced TWT, 456*5113495bSYour Name * 1 means un-announced TWT 457*5113495bSYour Name * @flag_protection: 0 means TWT protection is required, 458*5113495bSYour Name * 1 means TWT protection is not required 459*5113495bSYour Name * @b_twt_id0: 0 means BTWT recommendation will not be used 460*5113495bSYour Name * 1 means BTWT recommendation will be used 461*5113495bSYour Name * @flag_reserved: unused bits 462*5113495bSYour Name * @b_twt_recommendation: defines types of frames tx during bTWT SP 463*5113495bSYour Name * @b_twt_persistence: Countdown VAL frames to param update/teardown 464*5113495bSYour Name * @wake_time_tsf: Absolute TSF value to start first TWT service period 465*5113495bSYour Name * @announce_timeout_us: Timeout value before sending QoS NULL frame. 466*5113495bSYour Name * @link_id_bitmap: MLD links to which R-TWT element applies 467*5113495bSYour Name * @r_twt_dl_tid_bitmap: DL TIDs for R-TWT scheduling 468*5113495bSYour Name * @r_twt_ul_tid_bitmap: UL TIDs for R-TWT scheduling 469*5113495bSYour Name */ 470*5113495bSYour Name struct twt_add_dialog_param { 471*5113495bSYour Name uint32_t vdev_id; 472*5113495bSYour Name struct qdf_mac_addr peer_macaddr; 473*5113495bSYour Name uint32_t dialog_id; 474*5113495bSYour Name uint32_t wake_intvl_us; 475*5113495bSYour Name uint32_t wake_intvl_mantis; 476*5113495bSYour Name uint32_t min_wake_intvl_us; 477*5113495bSYour Name uint32_t max_wake_intvl_us; 478*5113495bSYour Name uint32_t wake_dura_us; 479*5113495bSYour Name uint32_t min_wake_dura_us; 480*5113495bSYour Name uint32_t max_wake_dura_us; 481*5113495bSYour Name uint32_t sp_offset_us; 482*5113495bSYour Name enum HOST_TWT_COMMAND twt_cmd; 483*5113495bSYour Name uint32_t 484*5113495bSYour Name flag_bcast:1, 485*5113495bSYour Name flag_trigger:1, 486*5113495bSYour Name flag_flow_type:1, 487*5113495bSYour Name flag_protection:1, 488*5113495bSYour Name flag_b_twt_id0:1, 489*5113495bSYour Name flag_reserved:11, 490*5113495bSYour Name b_twt_persistence:8, 491*5113495bSYour Name b_twt_recommendation:3; 492*5113495bSYour Name uint64_t wake_time_tsf; 493*5113495bSYour Name uint32_t announce_timeout_us; 494*5113495bSYour Name uint32_t link_id_bitmap; 495*5113495bSYour Name uint32_t r_twt_dl_tid_bitmap; 496*5113495bSYour Name uint32_t r_twt_ul_tid_bitmap; 497*5113495bSYour Name }; 498*5113495bSYour Name 499*5113495bSYour Name /** 500*5113495bSYour Name * enum HOST_TWT_GET_STATS_STATUS - status code of TWT Get stats dialog id 501*5113495bSYour Name * @HOST_TWT_GET_STATS_STATUS_OK: Get status TWT dialog successfully completed 502*5113495bSYour Name * @HOST_TWT_GET_STATS_STATUS_DIALOG_ID_NOT_EXIST: TWT dialog ID does not exist 503*5113495bSYour Name * @HOST_TWT_GET_STATS_STATUS_INVALID_PARAM: Invalid parameters 504*5113495bSYour Name * @HOST_TWT_GET_STATS_STATUS_UNKNOWN_ERROR: Unknown error 505*5113495bSYour Name */ 506*5113495bSYour Name enum HOST_TWT_GET_STATS_STATUS { 507*5113495bSYour Name HOST_TWT_GET_STATS_STATUS_OK, 508*5113495bSYour Name HOST_TWT_GET_STATS_STATUS_DIALOG_ID_NOT_EXIST, 509*5113495bSYour Name HOST_TWT_GET_STATS_STATUS_INVALID_PARAM, 510*5113495bSYour Name HOST_TWT_GET_STATS_STATUS_UNKNOWN_ERROR, 511*5113495bSYour Name }; 512*5113495bSYour Name 513*5113495bSYour Name /** 514*5113495bSYour Name * enum HOST_TWT_ADD_STATUS - status code of TWT add dialog 515*5113495bSYour Name * @HOST_TWT_ADD_STATUS_OK: add TWT dialog successfully completed 516*5113495bSYour Name * @HOST_TWT_ADD_STATUS_TWT_NOT_ENABLED: TWT not enabled 517*5113495bSYour Name * @HOST_TWT_ADD_STATUS_USED_DIALOG_ID: TWT dialog ID is already used 518*5113495bSYour Name * @HOST_TWT_ADD_STATUS_INVALID_PARAM: invalid parameters 519*5113495bSYour Name * @HOST_TWT_ADD_STATUS_NOT_READY: FW not ready 520*5113495bSYour Name * @HOST_TWT_ADD_STATUS_NO_RESOURCE: FW resource exhausted 521*5113495bSYour Name * @HOST_TWT_ADD_STATUS_NO_ACK: peer AP/STA did not ACK the 522*5113495bSYour Name * request/response frame 523*5113495bSYour Name * @HOST_TWT_ADD_STATUS_NO_RESPONSE: peer AP did not send the response frame 524*5113495bSYour Name * @HOST_TWT_ADD_STATUS_DENIED: AP did not accept the request 525*5113495bSYour Name * @HOST_TWT_ADD_STATUS_UNKNOWN_ERROR: adding TWT dialog failed with 526*5113495bSYour Name * an unknown reason 527*5113495bSYour Name * @HOST_TWT_ADD_STATUS_AP_PARAMS_NOT_IN_RANGE: peer AP wake interval, 528*5113495bSYour Name * duration not in range 529*5113495bSYour Name * @HOST_TWT_ADD_STATUS_AP_IE_VALIDATION_FAILED: peer AP IE Validation 530*5113495bSYour Name * Failed 531*5113495bSYour Name * @HOST_TWT_ADD_STATUS_ROAM_IN_PROGRESS: Roaming in progress 532*5113495bSYour Name * @HOST_TWT_ADD_STATUS_CHAN_SW_IN_PROGRESS: Channel switch in progress 533*5113495bSYour Name * @HOST_TWT_ADD_STATUS_SCAN_IN_PROGRESS: Scan is in progress 534*5113495bSYour Name * @HOST_TWT_ADD_STATUS_LINK_SWITCH_IN_PROGRESS: link switch is in progress 535*5113495bSYour Name * @HOST_TWT_ADD_STATUS_UNSUPPORTED_MODE_MLMR: MLMR not supported 536*5113495bSYour Name */ 537*5113495bSYour Name enum HOST_TWT_ADD_STATUS { 538*5113495bSYour Name HOST_TWT_ADD_STATUS_OK, 539*5113495bSYour Name HOST_TWT_ADD_STATUS_TWT_NOT_ENABLED, 540*5113495bSYour Name HOST_TWT_ADD_STATUS_USED_DIALOG_ID, 541*5113495bSYour Name HOST_TWT_ADD_STATUS_INVALID_PARAM, 542*5113495bSYour Name HOST_TWT_ADD_STATUS_NOT_READY, 543*5113495bSYour Name HOST_TWT_ADD_STATUS_NO_RESOURCE, 544*5113495bSYour Name HOST_TWT_ADD_STATUS_NO_ACK, 545*5113495bSYour Name HOST_TWT_ADD_STATUS_NO_RESPONSE, 546*5113495bSYour Name HOST_TWT_ADD_STATUS_DENIED, 547*5113495bSYour Name HOST_TWT_ADD_STATUS_UNKNOWN_ERROR, 548*5113495bSYour Name HOST_TWT_ADD_STATUS_AP_PARAMS_NOT_IN_RANGE, 549*5113495bSYour Name HOST_TWT_ADD_STATUS_AP_IE_VALIDATION_FAILED, 550*5113495bSYour Name HOST_TWT_ADD_STATUS_ROAM_IN_PROGRESS, 551*5113495bSYour Name HOST_TWT_ADD_STATUS_CHAN_SW_IN_PROGRESS, 552*5113495bSYour Name HOST_TWT_ADD_STATUS_SCAN_IN_PROGRESS, 553*5113495bSYour Name HOST_TWT_ADD_STATUS_LINK_SWITCH_IN_PROGRESS, 554*5113495bSYour Name HOST_TWT_ADD_STATUS_UNSUPPORTED_MODE_MLMR, 555*5113495bSYour Name }; 556*5113495bSYour Name 557*5113495bSYour Name /** 558*5113495bSYour Name * struct twt_add_dialog_additional_params - 559*5113495bSYour Name * @twt_cmd: TWT command 560*5113495bSYour Name * @bcast: 0 means Individual TWT 561*5113495bSYour Name * 1 means Broadcast TWT 562*5113495bSYour Name * @trig_en: 0 means non-Trigger-enabled TWT 563*5113495bSYour Name * 1 means Trigger-enabled TWT 564*5113495bSYour Name * @announce: 0 means announced TWT 565*5113495bSYour Name * 1 means un-announced TWT 566*5113495bSYour Name * @protection: 0 means TWT protection is required 567*5113495bSYour Name * 1 means TWT protection is not required 568*5113495bSYour Name * @b_twt_id0: 0 means non-0 B-TWT ID or I-TWT 569*5113495bSYour Name * 1 means B-TWT ID 0 570*5113495bSYour Name * @info_frame_disabled: 0 means TWT Information frame is enabled 571*5113495bSYour Name * 1 means TWT Information frame is disabled 572*5113495bSYour Name * @pm_responder_bit_valid: 1 means responder pm mode field is valid 573*5113495bSYour Name * 0 means responder pm mode field is not valid 574*5113495bSYour Name * @pm_responder_bit: 1 means that responder set responder pm mode to 1 575*5113495bSYour Name * 0 means that responder set responder pm mode to 0 576*5113495bSYour Name * @wake_dur_us: wake duration in us 577*5113495bSYour Name * @wake_intvl_us: wake time interval in us 578*5113495bSYour Name * @sp_offset_us: Time until initial TWT SP occurs 579*5113495bSYour Name * @sp_tsf_us_lo: TWT service period tsf in usecs lower bits - 31:0 580*5113495bSYour Name * @sp_tsf_us_hi: TWT service period tsf in usecs higher bits - 63:32 581*5113495bSYour Name */ 582*5113495bSYour Name struct twt_add_dialog_additional_params { 583*5113495bSYour Name uint32_t twt_cmd:8, 584*5113495bSYour Name bcast:1, 585*5113495bSYour Name trig_en:1, 586*5113495bSYour Name announce:1, 587*5113495bSYour Name protection:1, 588*5113495bSYour Name b_twt_id0:1, 589*5113495bSYour Name info_frame_disabled:1, 590*5113495bSYour Name pm_responder_bit_valid:1, 591*5113495bSYour Name pm_responder_bit:1; 592*5113495bSYour Name uint32_t wake_dur_us; 593*5113495bSYour Name uint32_t wake_intvl_us; 594*5113495bSYour Name uint32_t sp_offset_us; 595*5113495bSYour Name uint32_t sp_tsf_us_lo; 596*5113495bSYour Name uint32_t sp_tsf_us_hi; 597*5113495bSYour Name }; 598*5113495bSYour Name 599*5113495bSYour Name /** 600*5113495bSYour Name * struct twt_add_dialog_complete_event_param: 601*5113495bSYour Name * @vdev_id: VDEV identifier 602*5113495bSYour Name * @peer_macaddr: Peer mac address 603*5113495bSYour Name * @dialog_id: TWT dialog ID 604*5113495bSYour Name * @status: refer to HOST_TWT_ADD_STATUS enum 605*5113495bSYour Name * @num_additional_twt_params: no of additional_twt_params available 606*5113495bSYour Name */ 607*5113495bSYour Name struct twt_add_dialog_complete_event_param { 608*5113495bSYour Name uint32_t vdev_id; 609*5113495bSYour Name struct qdf_mac_addr peer_macaddr; 610*5113495bSYour Name uint32_t dialog_id; 611*5113495bSYour Name uint32_t status; 612*5113495bSYour Name uint32_t num_additional_twt_params; 613*5113495bSYour Name }; 614*5113495bSYour Name 615*5113495bSYour Name /** 616*5113495bSYour Name * struct twt_add_dialog_complete_event - TWT add dialog complete event 617*5113495bSYour Name * @params: Fixed parameters for TWT add dialog complete event 618*5113495bSYour Name * @additional_params: additional parameters for TWT add dialog complete event 619*5113495bSYour Name * 620*5113495bSYour Name * Holds the fixed and additional parameters from add dialog 621*5113495bSYour Name * complete event 622*5113495bSYour Name */ 623*5113495bSYour Name struct twt_add_dialog_complete_event { 624*5113495bSYour Name struct twt_add_dialog_complete_event_param params; 625*5113495bSYour Name struct twt_add_dialog_additional_params additional_params; 626*5113495bSYour Name }; 627*5113495bSYour Name 628*5113495bSYour Name /** 629*5113495bSYour Name * struct twt_del_dialog_param - 630*5113495bSYour Name * @vdev_id: VDEV identifier 631*5113495bSYour Name * @peer_macaddr: Peer mac address 632*5113495bSYour Name * @dialog_id: TWT dialog ID 633*5113495bSYour Name * @b_twt_persistence: persistence val for b-twt 634*5113495bSYour Name */ 635*5113495bSYour Name struct twt_del_dialog_param { 636*5113495bSYour Name uint32_t vdev_id; 637*5113495bSYour Name struct qdf_mac_addr peer_macaddr; 638*5113495bSYour Name uint32_t dialog_id; 639*5113495bSYour Name #ifdef WLAN_SUPPORT_BCAST_TWT 640*5113495bSYour Name uint32_t b_twt_persistence; 641*5113495bSYour Name #endif 642*5113495bSYour Name }; 643*5113495bSYour Name 644*5113495bSYour Name /** 645*5113495bSYour Name * enum HOST_TWT_DEL_STATUS - status code of delete TWT dialog 646*5113495bSYour Name * @HOST_TWT_DEL_STATUS_OK: deleting TWT dialog successfully completed 647*5113495bSYour Name * @HOST_TWT_DEL_STATUS_DIALOG_ID_NOT_EXIST: TWT dialog ID not exists 648*5113495bSYour Name * @HOST_TWT_DEL_STATUS_INVALID_PARAM: invalid parameters 649*5113495bSYour Name * @HOST_TWT_DEL_STATUS_DIALOG_ID_BUSY: FW is in the process of handling 650*5113495bSYour Name * this dialog 651*5113495bSYour Name * @HOST_TWT_DEL_STATUS_NO_RESOURCE: FW resource exhausted 652*5113495bSYour Name * @HOST_TWT_DEL_STATUS_NO_ACK: peer AP/STA did not ACK the request/response 653*5113495bSYour Name * frame 654*5113495bSYour Name * @HOST_TWT_DEL_STATUS_UNKNOWN_ERROR: deleting TWT dialog failed with an 655*5113495bSYour Name * unknown reason 656*5113495bSYour Name * @HOST_TWT_DEL_STATUS_PEER_INIT_TEARDOWN: Peer initiated TWT teardown 657*5113495bSYour Name * @HOST_TWT_DEL_STATUS_ROAMING: TWT teardown due to roaming. 658*5113495bSYour Name * @HOST_TWT_DEL_STATUS_CONCURRENCY: TWT session teardown due to 659*5113495bSYour Name * concurrent session coming up. 660*5113495bSYour Name * @HOST_TWT_DEL_STATUS_CHAN_SW_IN_PROGRESS: Channel switch in progress 661*5113495bSYour Name * @HOST_TWT_DEL_STATUS_SCAN_IN_PROGRESS: Scan is in progress 662*5113495bSYour Name * @HOST_TWT_DEL_STATUS_PS_DISABLE_TEARDOWN: PS disable TWT teardown 663*5113495bSYour Name */ 664*5113495bSYour Name enum HOST_TWT_DEL_STATUS { 665*5113495bSYour Name HOST_TWT_DEL_STATUS_OK, 666*5113495bSYour Name HOST_TWT_DEL_STATUS_DIALOG_ID_NOT_EXIST, 667*5113495bSYour Name HOST_TWT_DEL_STATUS_INVALID_PARAM, 668*5113495bSYour Name HOST_TWT_DEL_STATUS_DIALOG_ID_BUSY, 669*5113495bSYour Name HOST_TWT_DEL_STATUS_NO_RESOURCE, 670*5113495bSYour Name HOST_TWT_DEL_STATUS_NO_ACK, 671*5113495bSYour Name HOST_TWT_DEL_STATUS_UNKNOWN_ERROR, 672*5113495bSYour Name HOST_TWT_DEL_STATUS_PEER_INIT_TEARDOWN, 673*5113495bSYour Name HOST_TWT_DEL_STATUS_ROAMING, 674*5113495bSYour Name HOST_TWT_DEL_STATUS_CONCURRENCY, 675*5113495bSYour Name HOST_TWT_DEL_STATUS_CHAN_SW_IN_PROGRESS, 676*5113495bSYour Name HOST_TWT_DEL_STATUS_SCAN_IN_PROGRESS, 677*5113495bSYour Name HOST_TWT_DEL_STATUS_PS_DISABLE_TEARDOWN, 678*5113495bSYour Name }; 679*5113495bSYour Name 680*5113495bSYour Name /** 681*5113495bSYour Name * struct twt_del_dialog_complete_event_param - 682*5113495bSYour Name * @vdev_id: VDEV identifier 683*5113495bSYour Name * @peer_macaddr: Peer mac address 684*5113495bSYour Name * @dialog_id: TWT dialog ID 685*5113495bSYour Name * @b_twt_persistence: persistence val for b-twt 686*5113495bSYour Name * @status: refer to HOST_TWT_DEL_STATUS enum 687*5113495bSYour Name */ 688*5113495bSYour Name struct twt_del_dialog_complete_event_param { 689*5113495bSYour Name uint32_t vdev_id; 690*5113495bSYour Name struct qdf_mac_addr peer_macaddr; 691*5113495bSYour Name uint32_t dialog_id; 692*5113495bSYour Name #ifdef WLAN_SUPPORT_BCAST_TWT 693*5113495bSYour Name uint32_t b_twt_persistence; 694*5113495bSYour Name #endif 695*5113495bSYour Name uint32_t status; 696*5113495bSYour Name }; 697*5113495bSYour Name 698*5113495bSYour Name /** 699*5113495bSYour Name * struct twt_pause_dialog_cmd_param - 700*5113495bSYour Name * @vdev_id: VDEV identifier 701*5113495bSYour Name * @peer_macaddr: Peer mac address 702*5113495bSYour Name * @dialog_id: TWT dialog ID 703*5113495bSYour Name */ 704*5113495bSYour Name struct twt_pause_dialog_cmd_param { 705*5113495bSYour Name uint32_t vdev_id; 706*5113495bSYour Name struct qdf_mac_addr peer_macaddr; 707*5113495bSYour Name uint32_t dialog_id; 708*5113495bSYour Name }; 709*5113495bSYour Name 710*5113495bSYour Name /** 711*5113495bSYour Name * struct twt_nudge_dialog_cmd_param - 712*5113495bSYour Name * @vdev_id: VDEV identifier 713*5113495bSYour Name * @peer_macaddr: Peer mac address 714*5113495bSYour Name * @dialog_id: TWT dialog ID 715*5113495bSYour Name * @suspend_duration: TWT suspend duration in microseconds 716*5113495bSYour Name * @next_twt_size: next TWT size 717*5113495bSYour Name * @sp_start_offset: value to offset the start of service period 718*5113495bSYour Name */ 719*5113495bSYour Name struct twt_nudge_dialog_cmd_param { 720*5113495bSYour Name uint32_t vdev_id; 721*5113495bSYour Name struct qdf_mac_addr peer_macaddr; 722*5113495bSYour Name uint32_t dialog_id; 723*5113495bSYour Name uint32_t suspend_duration; 724*5113495bSYour Name uint32_t next_twt_size; 725*5113495bSYour Name int32_t sp_start_offset; 726*5113495bSYour Name }; 727*5113495bSYour Name 728*5113495bSYour Name /** 729*5113495bSYour Name * enum HOST_TWT_PAUSE_STATUS - status code of pause TWT dialog 730*5113495bSYour Name * @HOST_TWT_PAUSE_STATUS_OK: pausing TWT dialog successfully completed 731*5113495bSYour Name * @HOST_TWT_PAUSE_STATUS_DIALOG_ID_NOT_EXIST: TWT dialog ID not exists 732*5113495bSYour Name * @HOST_TWT_PAUSE_STATUS_INVALID_PARAM: invalid parameters 733*5113495bSYour Name * @HOST_TWT_PAUSE_STATUS_DIALOG_ID_BUSY: FW is in the process of handling 734*5113495bSYour Name * this dialog 735*5113495bSYour Name * @HOST_TWT_PAUSE_STATUS_NO_RESOURCE: FW resource exhausted 736*5113495bSYour Name * @HOST_TWT_PAUSE_STATUS_NO_ACK: peer AP/STA did not ACK the 737*5113495bSYour Name * request/response frame 738*5113495bSYour Name * @HOST_TWT_PAUSE_STATUS_UNKNOWN_ERROR: pausing TWT dialog failed with an 739*5113495bSYour Name * unknown reason 740*5113495bSYour Name * @HOST_TWT_PAUSE_STATUS_ALREADY_PAUSED: TWT dialog already in paused state 741*5113495bSYour Name * @HOST_TWT_PAUSE_STATUS_CHAN_SW_IN_PROGRESS: Channel switch in progress 742*5113495bSYour Name * @HOST_TWT_PAUSE_STATUS_ROAM_IN_PROGRESS: Roaming is in progress 743*5113495bSYour Name * @HOST_TWT_PAUSE_STATUS_SCAN_IN_PROGRESS: Scan is in progress 744*5113495bSYour Name */ 745*5113495bSYour Name enum HOST_TWT_PAUSE_STATUS { 746*5113495bSYour Name HOST_TWT_PAUSE_STATUS_OK, 747*5113495bSYour Name HOST_TWT_PAUSE_STATUS_DIALOG_ID_NOT_EXIST, 748*5113495bSYour Name HOST_TWT_PAUSE_STATUS_INVALID_PARAM, 749*5113495bSYour Name HOST_TWT_PAUSE_STATUS_DIALOG_ID_BUSY, 750*5113495bSYour Name HOST_TWT_PAUSE_STATUS_NO_RESOURCE, 751*5113495bSYour Name HOST_TWT_PAUSE_STATUS_NO_ACK, 752*5113495bSYour Name HOST_TWT_PAUSE_STATUS_UNKNOWN_ERROR, 753*5113495bSYour Name HOST_TWT_PAUSE_STATUS_ALREADY_PAUSED, 754*5113495bSYour Name HOST_TWT_PAUSE_STATUS_CHAN_SW_IN_PROGRESS, 755*5113495bSYour Name HOST_TWT_PAUSE_STATUS_ROAM_IN_PROGRESS, 756*5113495bSYour Name HOST_TWT_PAUSE_STATUS_SCAN_IN_PROGRESS, 757*5113495bSYour Name }; 758*5113495bSYour Name 759*5113495bSYour Name /** 760*5113495bSYour Name * struct twt_pause_dialog_complete_event_param - 761*5113495bSYour Name * @vdev_id: VDEV identifier 762*5113495bSYour Name * @peer_macaddr: Peer mac address 763*5113495bSYour Name * @dialog_id: TWT dialog ID 764*5113495bSYour Name * @status: refer to HOST_TWT_PAUSE_STATUS 765*5113495bSYour Name */ 766*5113495bSYour Name struct twt_pause_dialog_complete_event_param { 767*5113495bSYour Name uint32_t vdev_id; 768*5113495bSYour Name struct qdf_mac_addr peer_macaddr; 769*5113495bSYour Name uint32_t dialog_id; 770*5113495bSYour Name enum HOST_TWT_PAUSE_STATUS status; 771*5113495bSYour Name }; 772*5113495bSYour Name 773*5113495bSYour Name /** 774*5113495bSYour Name * enum HOST_TWT_NUDGE_STATUS - status code of nudge TWT dialog 775*5113495bSYour Name * @HOST_TWT_NUDGE_STATUS_OK: nudge TWT dialog successfully completed 776*5113495bSYour Name * @HOST_TWT_NUDGE_STATUS_DIALOG_ID_NOT_EXIST: TWT dialog ID not exists 777*5113495bSYour Name * @HOST_TWT_NUDGE_STATUS_INVALID_PARAM: invalid parameters 778*5113495bSYour Name * @HOST_TWT_NUDGE_STATUS_DIALOG_ID_BUSY: FW is in the process of handling 779*5113495bSYour Name * this dialog 780*5113495bSYour Name * @HOST_TWT_NUDGE_STATUS_NO_RESOURCE: FW resource exhausted 781*5113495bSYour Name * @HOST_TWT_NUDGE_STATUS_NO_ACK: peer AP/STA did not ACK the 782*5113495bSYour Name * request/response frame 783*5113495bSYour Name * @HOST_TWT_NUDGE_STATUS_UNKNOWN_ERROR: nudge TWT dialog failed with an 784*5113495bSYour Name * unknown reason 785*5113495bSYour Name * @HOST_TWT_NUDGE_STATUS_ALREADY_PAUSED: TWT dialog already in paused state 786*5113495bSYour Name * @HOST_TWT_NUDGE_STATUS_CHAN_SW_IN_PROGRESS: Channel switch in progress 787*5113495bSYour Name * @HOST_TWT_NUDGE_STATUS_ROAM_IN_PROGRESS: Roaming in progress 788*5113495bSYour Name * @HOST_TWT_NUDGE_STATUS_SCAN_IN_PROGRESS: Scan is in progress 789*5113495bSYour Name */ 790*5113495bSYour Name enum HOST_TWT_NUDGE_STATUS { 791*5113495bSYour Name HOST_TWT_NUDGE_STATUS_OK, 792*5113495bSYour Name HOST_TWT_NUDGE_STATUS_DIALOG_ID_NOT_EXIST, 793*5113495bSYour Name HOST_TWT_NUDGE_STATUS_INVALID_PARAM, 794*5113495bSYour Name HOST_TWT_NUDGE_STATUS_DIALOG_ID_BUSY, 795*5113495bSYour Name HOST_TWT_NUDGE_STATUS_NO_RESOURCE, 796*5113495bSYour Name HOST_TWT_NUDGE_STATUS_NO_ACK, 797*5113495bSYour Name HOST_TWT_NUDGE_STATUS_UNKNOWN_ERROR, 798*5113495bSYour Name HOST_TWT_NUDGE_STATUS_ALREADY_PAUSED, 799*5113495bSYour Name HOST_TWT_NUDGE_STATUS_CHAN_SW_IN_PROGRESS, 800*5113495bSYour Name HOST_TWT_NUDGE_STATUS_ROAM_IN_PROGRESS, 801*5113495bSYour Name HOST_TWT_NUDGE_STATUS_SCAN_IN_PROGRESS, 802*5113495bSYour Name }; 803*5113495bSYour Name 804*5113495bSYour Name /** 805*5113495bSYour Name * struct twt_nudge_dialog_complete_event_param - 806*5113495bSYour Name * @vdev_id: VDEV identifier 807*5113495bSYour Name * @peer_macaddr: Peer mac address 808*5113495bSYour Name * @dialog_id: TWT dialog ID 809*5113495bSYour Name * @status: refer to HOST_TWT_PAUSE_STATUS 810*5113495bSYour Name * @next_twt_tsf_us_lo: TSF lower bits (31:0) of next wake time 811*5113495bSYour Name * @next_twt_tsf_us_hi: TSF higher bits (32:63) of next wake time 812*5113495bSYour Name */ 813*5113495bSYour Name struct twt_nudge_dialog_complete_event_param { 814*5113495bSYour Name uint32_t vdev_id; 815*5113495bSYour Name struct qdf_mac_addr peer_macaddr; 816*5113495bSYour Name uint32_t dialog_id; 817*5113495bSYour Name enum HOST_TWT_NUDGE_STATUS status; 818*5113495bSYour Name uint32_t next_twt_tsf_us_lo; 819*5113495bSYour Name uint32_t next_twt_tsf_us_hi; 820*5113495bSYour Name }; 821*5113495bSYour Name 822*5113495bSYour Name /** 823*5113495bSYour Name * struct twt_resume_dialog_cmd_param - 824*5113495bSYour Name * @vdev_id: VDEV identifier 825*5113495bSYour Name * @peer_macaddr: Peer mac address 826*5113495bSYour Name * @dialog_id: TWT dialog ID 827*5113495bSYour Name * @sp_offset_us: this long time after TWT resumed the 1st SP will start 828*5113495bSYour Name * @next_twt_size: Next TWT subfield Size. 829*5113495bSYour Name * Refer IEEE 802.11ax section "9.4.1.60 TWT Information field" 830*5113495bSYour Name */ 831*5113495bSYour Name struct twt_resume_dialog_cmd_param { 832*5113495bSYour Name uint32_t vdev_id; 833*5113495bSYour Name struct qdf_mac_addr peer_macaddr; 834*5113495bSYour Name uint32_t dialog_id; 835*5113495bSYour Name uint32_t sp_offset_us; 836*5113495bSYour Name uint32_t next_twt_size; 837*5113495bSYour Name }; 838*5113495bSYour Name 839*5113495bSYour Name /** 840*5113495bSYour Name * enum HOST_TWT_RESUME_STATUS - status code of resume TWT dialog 841*5113495bSYour Name * @HOST_TWT_RESUME_STATUS_OK: resuming TWT dialog successfully completed 842*5113495bSYour Name * @HOST_TWT_RESUME_STATUS_DIALOG_ID_NOT_EXIST: TWT dialog ID not exists 843*5113495bSYour Name * @HOST_TWT_RESUME_STATUS_INVALID_PARAM: invalid parameters 844*5113495bSYour Name * @HOST_TWT_RESUME_STATUS_DIALOG_ID_BUSY: FW is in the process of handling 845*5113495bSYour Name * this dialog 846*5113495bSYour Name * @HOST_TWT_RESUME_STATUS_NOT_PAUSED: dialog not paused currently 847*5113495bSYour Name * @HOST_TWT_RESUME_STATUS_NO_RESOURCE: FW resource exhausted 848*5113495bSYour Name * @HOST_TWT_RESUME_STATUS_NO_ACK: peer AP/STA did not ACK the 849*5113495bSYour Name * request/response frame 850*5113495bSYour Name * @HOST_TWT_RESUME_STATUS_UNKNOWN_ERROR: resuming TWT dialog failed with an 851*5113495bSYour Name * unknown reason 852*5113495bSYour Name * @HOST_TWT_RESUME_STATUS_CHAN_SW_IN_PROGRESS: Channel switch in progress 853*5113495bSYour Name * @HOST_TWT_RESUME_STATUS_ROAM_IN_PROGRESS: Roaming in progress 854*5113495bSYour Name * @HOST_TWT_RESUME_STATUS_SCAN_IN_PROGRESS: Scan is in progress 855*5113495bSYour Name */ 856*5113495bSYour Name enum HOST_TWT_RESUME_STATUS { 857*5113495bSYour Name HOST_TWT_RESUME_STATUS_OK, 858*5113495bSYour Name HOST_TWT_RESUME_STATUS_DIALOG_ID_NOT_EXIST, 859*5113495bSYour Name HOST_TWT_RESUME_STATUS_INVALID_PARAM, 860*5113495bSYour Name HOST_TWT_RESUME_STATUS_DIALOG_ID_BUSY, 861*5113495bSYour Name HOST_TWT_RESUME_STATUS_NOT_PAUSED, 862*5113495bSYour Name HOST_TWT_RESUME_STATUS_NO_RESOURCE, 863*5113495bSYour Name HOST_TWT_RESUME_STATUS_NO_ACK, 864*5113495bSYour Name HOST_TWT_RESUME_STATUS_UNKNOWN_ERROR, 865*5113495bSYour Name HOST_TWT_RESUME_STATUS_CHAN_SW_IN_PROGRESS, 866*5113495bSYour Name HOST_TWT_RESUME_STATUS_ROAM_IN_PROGRESS, 867*5113495bSYour Name HOST_TWT_RESUME_STATUS_SCAN_IN_PROGRESS, 868*5113495bSYour Name }; 869*5113495bSYour Name 870*5113495bSYour Name /** 871*5113495bSYour Name * struct twt_resume_dialog_complete_event_param - 872*5113495bSYour Name * @vdev_id: VDEV identifier 873*5113495bSYour Name * @peer_macaddr: Peer mac address 874*5113495bSYour Name * @dialog_id: TWT dialog ID 875*5113495bSYour Name * @status: refer to HOST_TWT_RESUME_STATUS 876*5113495bSYour Name */ 877*5113495bSYour Name struct twt_resume_dialog_complete_event_param { 878*5113495bSYour Name uint32_t vdev_id; 879*5113495bSYour Name struct qdf_mac_addr peer_macaddr; 880*5113495bSYour Name uint32_t dialog_id; 881*5113495bSYour Name uint32_t status; 882*5113495bSYour Name }; 883*5113495bSYour Name 884*5113495bSYour Name /** 885*5113495bSYour Name * enum HOST_TWT_NOTIFY_STATUS - status code of notify TWT event 886*5113495bSYour Name * @HOST_TWT_NOTIFY_EVENT_READY: FW is ready to process the TWT setup request. 887*5113495bSYour Name * @HOST_TWT_NOTIFY_EVENT_AP_TWT_REQ_BIT_SET: AP set the TWT required bit 888*5113495bSYour Name * @HOST_TWT_NOTIFY_EVENT_AP_TWT_REQ_BIT_CLEAR: AP cleared the TWT required bit 889*5113495bSYour Name */ 890*5113495bSYour Name enum HOST_TWT_NOTIFY_STATUS { 891*5113495bSYour Name HOST_TWT_NOTIFY_EVENT_READY, 892*5113495bSYour Name HOST_TWT_NOTIFY_EVENT_AP_TWT_REQ_BIT_SET, 893*5113495bSYour Name HOST_TWT_NOTIFY_EVENT_AP_TWT_REQ_BIT_CLEAR, 894*5113495bSYour Name }; 895*5113495bSYour Name 896*5113495bSYour Name /** 897*5113495bSYour Name * struct twt_notify_event_param - 898*5113495bSYour Name * @vdev_id: VDEV identifier 899*5113495bSYour Name * @status: refer to HOST_TWT_NOTIFY_STATUS 900*5113495bSYour Name */ 901*5113495bSYour Name struct twt_notify_event_param { 902*5113495bSYour Name uint32_t vdev_id; 903*5113495bSYour Name enum HOST_TWT_NOTIFY_STATUS status; 904*5113495bSYour Name }; 905*5113495bSYour Name 906*5113495bSYour Name /** 907*5113495bSYour Name * enum HOST_TWT_NEXT_WORK_ACTION - next action of TWT worker thread 908*5113495bSYour Name * @HOST_TWT_SEND_DELETE_CMD: Send TWT delete command request 909*5113495bSYour Name */ 910*5113495bSYour Name enum HOST_TWT_NEXT_WORK_ACTION { 911*5113495bSYour Name HOST_TWT_SEND_DELETE_CMD = 1, 912*5113495bSYour Name }; 913*5113495bSYour Name 914*5113495bSYour Name /** 915*5113495bSYour Name * struct twt_work_params 916*5113495bSYour Name * @peer_macaddr: peer mac address 917*5113495bSYour Name * @dialog_id: Dialog ID 918*5113495bSYour Name * @is_ps_disabled: Whether power save is disabled or not. 919*5113495bSYour Name */ 920*5113495bSYour Name struct twt_work_params { 921*5113495bSYour Name struct qdf_mac_addr peer_macaddr; 922*5113495bSYour Name uint32_t dialog_id; 923*5113495bSYour Name bool is_ps_disabled; 924*5113495bSYour Name }; 925*5113495bSYour Name #ifdef WLAN_SUPPORT_BCAST_TWT 926*5113495bSYour Name /** 927*5113495bSYour Name * struct twt_btwt_invite_sta_cmd_param - 928*5113495bSYour Name * @vdev_id: VDEV identifier 929*5113495bSYour Name * @peer_macaddr: Peer mac address 930*5113495bSYour Name * @dialog_id: TWT dialog ID 931*5113495bSYour Name * @r_twt_dl_tid_bitmap: rTWT DL tids bitmap 932*5113495bSYour Name * @r_twt_ul_tid_bitmap: rTWT UL tids bitmap 933*5113495bSYour Name */ 934*5113495bSYour Name struct twt_btwt_invite_sta_cmd_param { 935*5113495bSYour Name uint32_t vdev_id; 936*5113495bSYour Name struct qdf_mac_addr peer_macaddr; 937*5113495bSYour Name uint32_t dialog_id; 938*5113495bSYour Name uint32_t r_twt_dl_tid_bitmap; 939*5113495bSYour Name uint32_t r_twt_ul_tid_bitmap; 940*5113495bSYour Name }; 941*5113495bSYour Name 942*5113495bSYour Name /** 943*5113495bSYour Name * enum HOST_TWT_INVITATION_BTWT_STATUS - status code of TWT Invitation 944*5113495bSYour Name * dialog 945*5113495bSYour Name * @HOST_TWT_INVITATION_BTWT_STATUS_OK: BTWT invitation successfully 946*5113495bSYour Name * completed 947*5113495bSYour Name * @HOST_TWT_INVITATION_BTWT_STATUS_DIALOG_ID_NOT_EXIST: BTWT dialog ID not 948*5113495bSYour Name * exists 949*5113495bSYour Name * @HOST_TWT_INVITATION_BTWT_STATUS_INVALID_PARAM: invalid parameters 950*5113495bSYour Name * @HOST_TWT_INVITATION_BTWT_STATUS_DIALOG_ID_BUSY: FW is in the process of 951*5113495bSYour Name * handling this dialog 952*5113495bSYour Name * @HOST_TWT_INVITATION_BTWT_STATUS_NO_RESOURCE: FW resource exhausted 953*5113495bSYour Name * @HOST_TWT_INVITATION_BTWT_STATUS_NO_ACK: peer AP/STA did not ACK the 954*5113495bSYour Name * request/response frame 955*5113495bSYour Name * @HOST_TWT_INVITATION_BTWT_STATUS_UNKNOWN_ERROR: BTWT invitation failed 956*5113495bSYour Name * with an unknown reason 957*5113495bSYour Name */ 958*5113495bSYour Name enum HOST_TWT_INVITATION_BTWT_STATUS { 959*5113495bSYour Name HOST_TWT_INVITATION_BTWT_STATUS_OK, 960*5113495bSYour Name HOST_TWT_INVITATION_BTWT_STATUS_DIALOG_ID_NOT_EXIST, 961*5113495bSYour Name HOST_TWT_INVITATION_BTWT_STATUS_INVALID_PARAM, 962*5113495bSYour Name HOST_TWT_INVITATION_BTWT_STATUS_DIALOG_ID_BUSY, 963*5113495bSYour Name HOST_TWT_INVITATION_BTWT_STATUS_NO_RESOURCE, 964*5113495bSYour Name HOST_TWT_INVITATION_BTWT_STATUS_NO_ACK, 965*5113495bSYour Name HOST_TWT_INVITATION_BTWT_STATUS_UNKNOWN_ERROR, 966*5113495bSYour Name }; 967*5113495bSYour Name 968*5113495bSYour Name /** 969*5113495bSYour Name * struct twt_btwt_invite_sta_complete_event_param - 970*5113495bSYour Name * @vdev_id: VDEV identifier 971*5113495bSYour Name * @peer_macaddr: Peer mac address 972*5113495bSYour Name * @dialog_id: BTWT dialog ID 973*5113495bSYour Name * @status: refer to HOST_TWT_INVITATION_BTWT_STATUS 974*5113495bSYour Name */ 975*5113495bSYour Name struct twt_btwt_invite_sta_complete_event_param { 976*5113495bSYour Name uint32_t vdev_id; 977*5113495bSYour Name struct qdf_mac_addr peer_macaddr; 978*5113495bSYour Name uint32_t dialog_id; 979*5113495bSYour Name uint32_t status; 980*5113495bSYour Name }; 981*5113495bSYour Name 982*5113495bSYour Name /** 983*5113495bSYour Name * struct twt_btwt_remove_sta_cmd_param - 984*5113495bSYour Name * @vdev_id: VDEV identifier 985*5113495bSYour Name * @peer_macaddr: Peer mac address 986*5113495bSYour Name * @dialog_id: BTWT dialog ID 987*5113495bSYour Name * @r_twt_dl_tid_bitmap: rTWT DL tids bitmap 988*5113495bSYour Name * @r_twt_ul_tid_bitmap: rTWT UL tids bitmap 989*5113495bSYour Name */ 990*5113495bSYour Name struct twt_btwt_remove_sta_cmd_param { 991*5113495bSYour Name uint32_t vdev_id; 992*5113495bSYour Name struct qdf_mac_addr peer_macaddr; 993*5113495bSYour Name uint32_t dialog_id; 994*5113495bSYour Name uint32_t r_twt_dl_tid_bitmap; 995*5113495bSYour Name uint32_t r_twt_ul_tid_bitmap; 996*5113495bSYour Name }; 997*5113495bSYour Name 998*5113495bSYour Name /** 999*5113495bSYour Name * enum HOST_TWT_KICKOFF_BTWT_STATUS - status code of kickoff BTWT dialog 1000*5113495bSYour Name * @HOST_TWT_KICKOFF_BTWT_STATUS_OK: TWT kickoff successfully completed 1001*5113495bSYour Name * @HOST_TWT_KICKOFF_BTWT_STATUS_DIALOG_ID_NOT_EXIST: BTWT dialog ID not 1002*5113495bSYour Name * exists 1003*5113495bSYour Name * @HOST_TWT_KICKOFF_BTWT_STATUS_INVALID_PARAM: invalid parameters 1004*5113495bSYour Name * @HOST_TWT_KICKOFF_BTWT_STATUS_DIALOG_ID_BUSY: FW is in the process of 1005*5113495bSYour Name * handling this dialog 1006*5113495bSYour Name * @HOST_TWT_KICKOFF_BTWT_STATUS_NOT_PAUSED: Dialog not currently paused 1007*5113495bSYour Name * @HOST_TWT_KICKOFF_BTWT_STATUS_NO_RESOURCE: FW resource exhausted 1008*5113495bSYour Name * @HOST_TWT_KICKOFF_BTWT_STATUS_NO_ACK: peer AP/STA did not ACK the 1009*5113495bSYour Name * request/response frame 1010*5113495bSYour Name * @HOST_TWT_KICKOFF_BTWT_STATUS_UNKNOWN_ERROR: BTWT kickoff failed with an 1011*5113495bSYour Name * unknown reason 1012*5113495bSYour Name */ 1013*5113495bSYour Name enum HOST_TWT_KICKOFF_BTWT_STATUS { 1014*5113495bSYour Name HOST_TWT_KICKOFF_BTWT_STATUS_OK, 1015*5113495bSYour Name HOST_TWT_KICKOFF_BTWT_STATUS_DIALOG_ID_NOT_EXIST, 1016*5113495bSYour Name HOST_TWT_KICKOFF_BTWT_STATUS_INVALID_PARAM, 1017*5113495bSYour Name HOST_TWT_KICKOFF_BTWT_STATUS_DIALOG_ID_BUSY, 1018*5113495bSYour Name HOST_TWT_KICKOFF_BTWT_STATUS_NOT_PAUSED, 1019*5113495bSYour Name HOST_TWT_KICKOFF_BTWT_STATUS_NO_RESOURCE, 1020*5113495bSYour Name HOST_TWT_KICKOFF_BTWT_STATUS_NO_ACK, 1021*5113495bSYour Name HOST_TWT_KICKOFF_BTWT_STATUS_UNKNOWN_ERROR, 1022*5113495bSYour Name }; 1023*5113495bSYour Name 1024*5113495bSYour Name /** 1025*5113495bSYour Name * struct twt_btwt_remove_sta_complete_event_param - 1026*5113495bSYour Name * @vdev_id: VDEV identifier 1027*5113495bSYour Name * @peer_macaddr: Peer mac address 1028*5113495bSYour Name * @dialog_id: BTWT dialog ID 1029*5113495bSYour Name * @status: refer to HOST_TWT_KICKOFF_BTWT_STATUS 1030*5113495bSYour Name */ 1031*5113495bSYour Name struct twt_btwt_remove_sta_complete_event_param { 1032*5113495bSYour Name uint32_t vdev_id; 1033*5113495bSYour Name struct qdf_mac_addr peer_macaddr; 1034*5113495bSYour Name uint32_t dialog_id; 1035*5113495bSYour Name uint32_t status; 1036*5113495bSYour Name }; 1037*5113495bSYour Name #endif 1038*5113495bSYour Name 1039*5113495bSYour Name /** 1040*5113495bSYour Name * enum HOST_TWT_CMD_FOR_ACK_EVENT - Ack event for different TWT command 1041*5113495bSYour Name * @HOST_TWT_ADD_DIALOG_CMDID: Ack event for add dialog command 1042*5113495bSYour Name * @HOST_TWT_DEL_DIALOG_CMDID: Ack event for delete dialog command 1043*5113495bSYour Name * @HOST_TWT_PAUSE_DIALOG_CMDID: Ack event for pause command 1044*5113495bSYour Name * @HOST_TWT_RESUME_DIALOG_CMDID: Ack event for resume command 1045*5113495bSYour Name * @HOST_TWT_NUDGE_DIALOG_CMDID: Ack event for nudge command 1046*5113495bSYour Name * @HOST_TWT_UNKNOWN_CMDID: Ack event for unknown TWT command 1047*5113495bSYour Name */ 1048*5113495bSYour Name enum HOST_TWT_CMD_FOR_ACK_EVENT { 1049*5113495bSYour Name HOST_TWT_ADD_DIALOG_CMDID = 0, 1050*5113495bSYour Name HOST_TWT_DEL_DIALOG_CMDID, 1051*5113495bSYour Name HOST_TWT_PAUSE_DIALOG_CMDID, 1052*5113495bSYour Name HOST_TWT_RESUME_DIALOG_CMDID, 1053*5113495bSYour Name HOST_TWT_NUDGE_DIALOG_CMDID, 1054*5113495bSYour Name HOST_TWT_UNKNOWN_CMDID, 1055*5113495bSYour Name }; 1056*5113495bSYour Name 1057*5113495bSYour Name /* access categories */ 1058*5113495bSYour Name enum twt_traffic_ac { 1059*5113495bSYour Name TWT_AC_VO = 0, 1060*5113495bSYour Name TWT_AC_VI = 1, 1061*5113495bSYour Name TWT_AC_BE = 2, 1062*5113495bSYour Name TWT_AC_BK = 3, 1063*5113495bSYour Name TWT_AC_MAX = 4, 1064*5113495bSYour Name }; 1065*5113495bSYour Name 1066*5113495bSYour Name /** 1067*5113495bSYour Name * enum twt_disable_reason - twt disable/enable reason 1068*5113495bSYour Name * @REASON_PMO_SUSPEND: reason is suspended 1069*5113495bSYour Name */ 1070*5113495bSYour Name enum twt_disable_reason { 1071*5113495bSYour Name REASON_PMO_SUSPEND = 0x1, 1072*5113495bSYour Name }; 1073*5113495bSYour Name 1074*5113495bSYour Name #endif /* _WLAN_TWT_PUBLIC_STRUCTS_H_ */ 1075*5113495bSYour Name 1076