1*5113495bSYour Name /* 2*5113495bSYour Name * Copyright (c) 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 any 5*5113495bSYour Name * purpose with or without fee is hereby granted, provided that the above 6*5113495bSYour Name * copyright notice and this permission notice appear in all copies. 7*5113495bSYour Name * 8*5113495bSYour Name * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 9*5113495bSYour Name * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 10*5113495bSYour Name * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 11*5113495bSYour Name * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 12*5113495bSYour Name * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 13*5113495bSYour Name * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 14*5113495bSYour Name * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15*5113495bSYour Name */ 16*5113495bSYour Name 17*5113495bSYour Name #ifndef _RECEIVED_TRIGGER_INFO_DETAILS_H_ 18*5113495bSYour Name #define _RECEIVED_TRIGGER_INFO_DETAILS_H_ 19*5113495bSYour Name #if !defined(__ASSEMBLER__) 20*5113495bSYour Name #endif 21*5113495bSYour Name 22*5113495bSYour Name #define NUM_OF_DWORDS_RECEIVED_TRIGGER_INFO_DETAILS 5 23*5113495bSYour Name 24*5113495bSYour Name 25*5113495bSYour Name struct received_trigger_info_details { 26*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 27*5113495bSYour Name uint32_t trigger_type : 4, // [3:0] 28*5113495bSYour Name ax_trigger_source : 1, // [4:4] 29*5113495bSYour Name ax_trigger_type : 4, // [8:5] 30*5113495bSYour Name trigger_source_sta_full_aid : 13, // [21:9] 31*5113495bSYour Name frame_control_valid : 1, // [22:22] 32*5113495bSYour Name qos_control_valid : 1, // [23:23] 33*5113495bSYour Name he_control_info_valid : 1, // [24:24] 34*5113495bSYour Name ranging_trigger_subtype : 4, // [28:25] 35*5113495bSYour Name reserved_0b : 3; // [31:29] 36*5113495bSYour Name uint32_t phy_ppdu_id : 16, // [15:0] 37*5113495bSYour Name lsig_response_length : 12, // [27:16] 38*5113495bSYour Name reserved_1a : 4; // [31:28] 39*5113495bSYour Name uint32_t frame_control : 16, // [15:0] 40*5113495bSYour Name qos_control : 16; // [31:16] 41*5113495bSYour Name uint32_t sw_peer_id : 16, // [15:0] 42*5113495bSYour Name reserved_3a : 16; // [31:16] 43*5113495bSYour Name uint32_t he_control : 32; // [31:0] 44*5113495bSYour Name #else 45*5113495bSYour Name uint32_t reserved_0b : 3, // [31:29] 46*5113495bSYour Name ranging_trigger_subtype : 4, // [28:25] 47*5113495bSYour Name he_control_info_valid : 1, // [24:24] 48*5113495bSYour Name qos_control_valid : 1, // [23:23] 49*5113495bSYour Name frame_control_valid : 1, // [22:22] 50*5113495bSYour Name trigger_source_sta_full_aid : 13, // [21:9] 51*5113495bSYour Name ax_trigger_type : 4, // [8:5] 52*5113495bSYour Name ax_trigger_source : 1, // [4:4] 53*5113495bSYour Name trigger_type : 4; // [3:0] 54*5113495bSYour Name uint32_t reserved_1a : 4, // [31:28] 55*5113495bSYour Name lsig_response_length : 12, // [27:16] 56*5113495bSYour Name phy_ppdu_id : 16; // [15:0] 57*5113495bSYour Name uint32_t qos_control : 16, // [31:16] 58*5113495bSYour Name frame_control : 16; // [15:0] 59*5113495bSYour Name uint32_t reserved_3a : 16, // [31:16] 60*5113495bSYour Name sw_peer_id : 16; // [15:0] 61*5113495bSYour Name uint32_t he_control : 32; // [31:0] 62*5113495bSYour Name #endif 63*5113495bSYour Name }; 64*5113495bSYour Name 65*5113495bSYour Name 66*5113495bSYour Name /* Description TRIGGER_TYPE 67*5113495bSYour Name 68*5113495bSYour Name This field indicates for what type of trigger has been received 69*5113495bSYour Name 70*5113495bSYour Name 71*5113495bSYour Name <enum 0 SCH_Qboost_trigger> 72*5113495bSYour Name <enum 1 SCH_PSPOLL_trigger> 73*5113495bSYour Name <enum 2 SCH_UAPSD_trigger> 74*5113495bSYour Name <enum 3 SCH_11ax_trigger> 75*5113495bSYour Name Field "AX_trigger_type" indicates the ID of the received 76*5113495bSYour Name trigger 77*5113495bSYour Name <enum 7 SCH_EHT_trigger> 78*5113495bSYour Name Field "AX_trigger_type" indicates the ID of the received 79*5113495bSYour Name trigger 80*5113495bSYour Name <enum 4 SCH_11ax_wildcard_trigger> 81*5113495bSYour Name Field "AX_trigger_type" indicates the ID of the received 82*5113495bSYour Name trigger 83*5113495bSYour Name <enum 5 SCH_11ax_unassoc_wildcard_trigger> 84*5113495bSYour Name Field "AX_trigger_type" indicates the ID of the received 85*5113495bSYour Name trigger 86*5113495bSYour Name <enum 6 SCH_11az_ranging_trigger> Field "AX_trigger_type" 87*5113495bSYour Name indicates the subtype of the received trigger 88*5113495bSYour Name 89*5113495bSYour Name <legal 0-7> 90*5113495bSYour Name */ 91*5113495bSYour Name 92*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_TRIGGER_TYPE_OFFSET 0x00000000 93*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_TRIGGER_TYPE_LSB 0 94*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_TRIGGER_TYPE_MSB 3 95*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_TRIGGER_TYPE_MASK 0x0000000f 96*5113495bSYour Name 97*5113495bSYour Name 98*5113495bSYour Name /* Description AX_TRIGGER_SOURCE 99*5113495bSYour Name 100*5113495bSYour Name Field Only valid when Trigger_type is an 11ax related trigger 101*5113495bSYour Name 102*5113495bSYour Name 103*5113495bSYour Name <enum 0 11ax_trigger_frame> 104*5113495bSYour Name <enum 1 he_control_based_trigger> 105*5113495bSYour Name 106*5113495bSYour Name <legal all> 107*5113495bSYour Name */ 108*5113495bSYour Name 109*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_AX_TRIGGER_SOURCE_OFFSET 0x00000000 110*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_AX_TRIGGER_SOURCE_LSB 4 111*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_AX_TRIGGER_SOURCE_MSB 4 112*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_AX_TRIGGER_SOURCE_MASK 0x00000010 113*5113495bSYour Name 114*5113495bSYour Name 115*5113495bSYour Name /* Description AX_TRIGGER_TYPE 116*5113495bSYour Name 117*5113495bSYour Name Field Only valid when Trigger_type is an 11ax related trigger 118*5113495bSYour Name 119*5113495bSYour Name 120*5113495bSYour Name The 11AX trigger type/ trigger number: 121*5113495bSYour Name It identifies which trigger was received. 122*5113495bSYour Name <enum 0 ax_trigger_basic> 123*5113495bSYour Name <enum 1 ax_trigger_brpoll> 124*5113495bSYour Name <enum 2 ax_trigger_mu_bar> 125*5113495bSYour Name <enum 3 ax_trigger_mu_rts> 126*5113495bSYour Name <enum 4 ax_trigger_buffer_size> 127*5113495bSYour Name <enum 5 ax_trigger_gcr_mu_bar> 128*5113495bSYour Name <enum 6 ax_trigger_BQRP> 129*5113495bSYour Name <enum 7 ax_trigger_NDP_fb_report_poll> 130*5113495bSYour Name <enum 8 ax_tb_ranging_trigger> Indicates the reception of 131*5113495bSYour Name Ranging Trigger Frame of subvariant indicated by Ranging_Trigger_Subtype 132*5113495bSYour Name 133*5113495bSYour Name <enum 9 ax_trigger_reserved_9> 134*5113495bSYour Name <enum 10 ax_trigger_reserved_10> 135*5113495bSYour Name <enum 11 ax_trigger_reserved_11> 136*5113495bSYour Name <enum 12 ax_trigger_reserved_12> 137*5113495bSYour Name <enum 13 ax_trigger_reserved_13> 138*5113495bSYour Name <enum 14 ax_trigger_reserved_14> 139*5113495bSYour Name <enum 15 ax_trigger_reserved_15> 140*5113495bSYour Name 141*5113495bSYour Name <legal all> 142*5113495bSYour Name */ 143*5113495bSYour Name 144*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_AX_TRIGGER_TYPE_OFFSET 0x00000000 145*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_AX_TRIGGER_TYPE_LSB 5 146*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_AX_TRIGGER_TYPE_MSB 8 147*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_AX_TRIGGER_TYPE_MASK 0x000001e0 148*5113495bSYour Name 149*5113495bSYour Name 150*5113495bSYour Name /* Description TRIGGER_SOURCE_STA_FULL_AID 151*5113495bSYour Name 152*5113495bSYour Name The sta_full_aid of the sta/ap that generated the trigger. 153*5113495bSYour Name 154*5113495bSYour Name Comes from the address_search_entry 155*5113495bSYour Name 156*5113495bSYour Name <legal all> 157*5113495bSYour Name */ 158*5113495bSYour Name 159*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_TRIGGER_SOURCE_STA_FULL_AID_OFFSET 0x00000000 160*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_TRIGGER_SOURCE_STA_FULL_AID_LSB 9 161*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_TRIGGER_SOURCE_STA_FULL_AID_MSB 21 162*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_TRIGGER_SOURCE_STA_FULL_AID_MASK 0x003ffe00 163*5113495bSYour Name 164*5113495bSYour Name 165*5113495bSYour Name /* Description FRAME_CONTROL_VALID 166*5113495bSYour Name 167*5113495bSYour Name When set, the 'frame_control' field contains valid info 168*5113495bSYour Name <legal all> 169*5113495bSYour Name */ 170*5113495bSYour Name 171*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_FRAME_CONTROL_VALID_OFFSET 0x00000000 172*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_FRAME_CONTROL_VALID_LSB 22 173*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_FRAME_CONTROL_VALID_MSB 22 174*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_FRAME_CONTROL_VALID_MASK 0x00400000 175*5113495bSYour Name 176*5113495bSYour Name 177*5113495bSYour Name /* Description QOS_CONTROL_VALID 178*5113495bSYour Name 179*5113495bSYour Name When set, the 'QoS_control' field contains valid info 180*5113495bSYour Name <legal all> 181*5113495bSYour Name */ 182*5113495bSYour Name 183*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_QOS_CONTROL_VALID_OFFSET 0x00000000 184*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_QOS_CONTROL_VALID_LSB 23 185*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_QOS_CONTROL_VALID_MSB 23 186*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_QOS_CONTROL_VALID_MASK 0x00800000 187*5113495bSYour Name 188*5113495bSYour Name 189*5113495bSYour Name /* Description HE_CONTROL_INFO_VALID 190*5113495bSYour Name 191*5113495bSYour Name When set, the 'HE control' field contains valid info 192*5113495bSYour Name <legal all> 193*5113495bSYour Name */ 194*5113495bSYour Name 195*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_HE_CONTROL_INFO_VALID_OFFSET 0x00000000 196*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_HE_CONTROL_INFO_VALID_LSB 24 197*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_HE_CONTROL_INFO_VALID_MSB 24 198*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_HE_CONTROL_INFO_VALID_MASK 0x01000000 199*5113495bSYour Name 200*5113495bSYour Name 201*5113495bSYour Name /* Description RANGING_TRIGGER_SUBTYPE 202*5113495bSYour Name 203*5113495bSYour Name Field only valid if AX_Trigger_type = ax_tb_ranging_trigger 204*5113495bSYour Name 205*5113495bSYour Name 206*5113495bSYour Name Indicates the Trigger subtype for the current ranging TF 207*5113495bSYour Name 208*5113495bSYour Name 209*5113495bSYour Name <enum 0 TF_Poll> 210*5113495bSYour Name <enum 1 TF_Sound> 211*5113495bSYour Name <enum 2 TF_Secure_Sound> 212*5113495bSYour Name <enum 3 TF_Report> 213*5113495bSYour Name 214*5113495bSYour Name <legal 0-3> 215*5113495bSYour Name */ 216*5113495bSYour Name 217*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_RANGING_TRIGGER_SUBTYPE_OFFSET 0x00000000 218*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_RANGING_TRIGGER_SUBTYPE_LSB 25 219*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_RANGING_TRIGGER_SUBTYPE_MSB 28 220*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_RANGING_TRIGGER_SUBTYPE_MASK 0x1e000000 221*5113495bSYour Name 222*5113495bSYour Name 223*5113495bSYour Name /* Description RESERVED_0B 224*5113495bSYour Name 225*5113495bSYour Name <legal 0> 226*5113495bSYour Name */ 227*5113495bSYour Name 228*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_RESERVED_0B_OFFSET 0x00000000 229*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_RESERVED_0B_LSB 29 230*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_RESERVED_0B_MSB 31 231*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_RESERVED_0B_MASK 0xe0000000 232*5113495bSYour Name 233*5113495bSYour Name 234*5113495bSYour Name /* Description PHY_PPDU_ID 235*5113495bSYour Name 236*5113495bSYour Name A ppdu counter value that PHY increments for every PPDU 237*5113495bSYour Name received. The counter value wraps around 238*5113495bSYour Name <legal all> 239*5113495bSYour Name */ 240*5113495bSYour Name 241*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_PHY_PPDU_ID_OFFSET 0x00000004 242*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_PHY_PPDU_ID_LSB 0 243*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_PHY_PPDU_ID_MSB 15 244*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_PHY_PPDU_ID_MASK 0x0000ffff 245*5113495bSYour Name 246*5113495bSYour Name 247*5113495bSYour Name /* Description LSIG_RESPONSE_LENGTH 248*5113495bSYour Name 249*5113495bSYour Name Field only valid in case of OFDMA trigger 250*5113495bSYour Name 251*5113495bSYour Name Indicates the value of the L-SIG Length field of the HE 252*5113495bSYour Name trigger-based PPDU that is the response to the Trigger frame 253*5113495bSYour Name 254*5113495bSYour Name 255*5113495bSYour Name <legal all> 256*5113495bSYour Name */ 257*5113495bSYour Name 258*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_LSIG_RESPONSE_LENGTH_OFFSET 0x00000004 259*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_LSIG_RESPONSE_LENGTH_LSB 16 260*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_LSIG_RESPONSE_LENGTH_MSB 27 261*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_LSIG_RESPONSE_LENGTH_MASK 0x0fff0000 262*5113495bSYour Name 263*5113495bSYour Name 264*5113495bSYour Name /* Description RESERVED_1A 265*5113495bSYour Name 266*5113495bSYour Name <legal 0> 267*5113495bSYour Name */ 268*5113495bSYour Name 269*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_RESERVED_1A_OFFSET 0x00000004 270*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_RESERVED_1A_LSB 28 271*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_RESERVED_1A_MSB 31 272*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_RESERVED_1A_MASK 0xf0000000 273*5113495bSYour Name 274*5113495bSYour Name 275*5113495bSYour Name /* Description FRAME_CONTROL 276*5113495bSYour Name 277*5113495bSYour Name frame control field of the received frame 278*5113495bSYour Name <legal all> 279*5113495bSYour Name */ 280*5113495bSYour Name 281*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_FRAME_CONTROL_OFFSET 0x00000008 282*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_FRAME_CONTROL_LSB 0 283*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_FRAME_CONTROL_MSB 15 284*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_FRAME_CONTROL_MASK 0x0000ffff 285*5113495bSYour Name 286*5113495bSYour Name 287*5113495bSYour Name /* Description QOS_CONTROL 288*5113495bSYour Name 289*5113495bSYour Name frame control field of the received frame (if present) 290*5113495bSYour Name <legal all> 291*5113495bSYour Name */ 292*5113495bSYour Name 293*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_QOS_CONTROL_OFFSET 0x00000008 294*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_QOS_CONTROL_LSB 16 295*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_QOS_CONTROL_MSB 31 296*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_QOS_CONTROL_MASK 0xffff0000 297*5113495bSYour Name 298*5113495bSYour Name 299*5113495bSYour Name /* Description SW_PEER_ID 300*5113495bSYour Name 301*5113495bSYour Name A unique identifier for this STA. Extracted from the Address_Search_Entry 302*5113495bSYour Name 303*5113495bSYour Name 304*5113495bSYour Name Used by the SCH to find linkage between this trigger and 305*5113495bSYour Name potentially pre-programmed responses. 306*5113495bSYour Name <legal all> 307*5113495bSYour Name */ 308*5113495bSYour Name 309*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_SW_PEER_ID_OFFSET 0x0000000c 310*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_SW_PEER_ID_LSB 0 311*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_SW_PEER_ID_MSB 15 312*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_SW_PEER_ID_MASK 0x0000ffff 313*5113495bSYour Name 314*5113495bSYour Name 315*5113495bSYour Name /* Description RESERVED_3A 316*5113495bSYour Name 317*5113495bSYour Name <legal 0> 318*5113495bSYour Name */ 319*5113495bSYour Name 320*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_RESERVED_3A_OFFSET 0x0000000c 321*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_RESERVED_3A_LSB 16 322*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_RESERVED_3A_MSB 31 323*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_RESERVED_3A_MASK 0xffff0000 324*5113495bSYour Name 325*5113495bSYour Name 326*5113495bSYour Name /* Description HE_CONTROL 327*5113495bSYour Name 328*5113495bSYour Name Field only valid when HE_control_info_valid is set 329*5113495bSYour Name 330*5113495bSYour Name This is the 'RAW HE_CONTROL field' that was present in the 331*5113495bSYour Name frame. 332*5113495bSYour Name <legal all> 333*5113495bSYour Name */ 334*5113495bSYour Name 335*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_HE_CONTROL_OFFSET 0x00000010 336*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_HE_CONTROL_LSB 0 337*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_HE_CONTROL_MSB 31 338*5113495bSYour Name #define RECEIVED_TRIGGER_INFO_DETAILS_HE_CONTROL_MASK 0xffffffff 339*5113495bSYour Name 340*5113495bSYour Name 341*5113495bSYour Name 342*5113495bSYour Name #endif // RECEIVED_TRIGGER_INFO_DETAILS 343