1*5113495bSYour Name 2*5113495bSYour Name /* Copyright (c) 2022, 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 18*5113495bSYour Name 19*5113495bSYour Name 20*5113495bSYour Name 21*5113495bSYour Name 22*5113495bSYour Name 23*5113495bSYour Name 24*5113495bSYour Name 25*5113495bSYour Name 26*5113495bSYour Name #ifndef _TX_QUEUE_EXTENSION_H_ 27*5113495bSYour Name #define _TX_QUEUE_EXTENSION_H_ 28*5113495bSYour Name #if !defined(__ASSEMBLER__) 29*5113495bSYour Name #endif 30*5113495bSYour Name 31*5113495bSYour Name #define NUM_OF_DWORDS_TX_QUEUE_EXTENSION 14 32*5113495bSYour Name 33*5113495bSYour Name #define NUM_OF_QWORDS_TX_QUEUE_EXTENSION 7 34*5113495bSYour Name 35*5113495bSYour Name 36*5113495bSYour Name struct tx_queue_extension { 37*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 38*5113495bSYour Name uint32_t frame_ctl : 16, // [15:0] 39*5113495bSYour Name qos_ctl : 16; // [31:16] 40*5113495bSYour Name uint32_t ampdu_flag : 1, // [0:0] 41*5113495bSYour Name tx_notify_no_htc_override : 1, // [1:1] 42*5113495bSYour Name reserved_1a : 7, // [8:2] 43*5113495bSYour Name checksum_tso_disable_for_frag : 1, // [9:9] 44*5113495bSYour Name key_id : 8, // [17:10] 45*5113495bSYour Name qos_buf_state_overwrite : 1, // [18:18] 46*5113495bSYour Name buf_state_sta_id : 1, // [19:19] 47*5113495bSYour Name buf_state_source : 1, // [20:20] 48*5113495bSYour Name ht_control_overwrite_enable : 1, // [21:21] 49*5113495bSYour Name ht_control_overwrite_source : 4, // [25:22] 50*5113495bSYour Name reserved_1b : 6; // [31:26] 51*5113495bSYour Name uint32_t ul_headroom_insertion_enable : 1, // [0:0] 52*5113495bSYour Name ul_headroom_offset : 5, // [5:1] 53*5113495bSYour Name bqrp_insertion_enable : 1, // [6:6] 54*5113495bSYour Name bqrp_offset : 5, // [11:7] 55*5113495bSYour Name ul_headroom_rsvd_7_6 : 2, // [13:12] 56*5113495bSYour Name bqr_rsvd_9_8 : 2, // [15:14] 57*5113495bSYour Name base_pn_63_48 : 16; // [31:16] 58*5113495bSYour Name uint32_t base_pn_95_64 : 32; // [31:0] 59*5113495bSYour Name uint32_t base_pn_127_96 : 32; // [31:0] 60*5113495bSYour Name uint32_t ht_control_field_bw20 : 32; // [31:0] 61*5113495bSYour Name uint32_t ht_control_field_bw40 : 32; // [31:0] 62*5113495bSYour Name uint32_t ht_control_field_bw80 : 32; // [31:0] 63*5113495bSYour Name uint32_t ht_control_field_bw160 : 32; // [31:0] 64*5113495bSYour Name uint32_t ht_control_overwrite_mask : 32; // [31:0] 65*5113495bSYour Name uint32_t cas_control_info : 8, // [7:0] 66*5113495bSYour Name cas_offset : 5, // [12:8] 67*5113495bSYour Name cas_insertion_enable : 1, // [13:13] 68*5113495bSYour Name reserved_10a : 2, // [15:14] 69*5113495bSYour Name ht_control_overwrite_source_for_srp : 4, // [19:16] 70*5113495bSYour Name ht_control_overwrite_source_for_bsrp : 4, // [23:20] 71*5113495bSYour Name reserved_10b : 6, // [29:24] 72*5113495bSYour Name mpdu_hdr_len_override_en : 1, // [30:30] 73*5113495bSYour Name bar_ssn_overwrite_enable : 1; // [31:31] 74*5113495bSYour Name uint32_t bar_ssn_offset : 12, // [11:0] 75*5113495bSYour Name mpdu_hdr_len_override_val : 9, // [20:12] 76*5113495bSYour Name reserved_11a : 11; // [31:21] 77*5113495bSYour Name uint32_t ht_control_field_bw320 : 32; // [31:0] 78*5113495bSYour Name uint32_t fw2sw_info : 32; // [31:0] 79*5113495bSYour Name #else 80*5113495bSYour Name uint32_t qos_ctl : 16, // [31:16] 81*5113495bSYour Name frame_ctl : 16; // [15:0] 82*5113495bSYour Name uint32_t reserved_1b : 6, // [31:26] 83*5113495bSYour Name ht_control_overwrite_source : 4, // [25:22] 84*5113495bSYour Name ht_control_overwrite_enable : 1, // [21:21] 85*5113495bSYour Name buf_state_source : 1, // [20:20] 86*5113495bSYour Name buf_state_sta_id : 1, // [19:19] 87*5113495bSYour Name qos_buf_state_overwrite : 1, // [18:18] 88*5113495bSYour Name key_id : 8, // [17:10] 89*5113495bSYour Name checksum_tso_disable_for_frag : 1, // [9:9] 90*5113495bSYour Name reserved_1a : 7, // [8:2] 91*5113495bSYour Name tx_notify_no_htc_override : 1, // [1:1] 92*5113495bSYour Name ampdu_flag : 1; // [0:0] 93*5113495bSYour Name uint32_t base_pn_63_48 : 16, // [31:16] 94*5113495bSYour Name bqr_rsvd_9_8 : 2, // [15:14] 95*5113495bSYour Name ul_headroom_rsvd_7_6 : 2, // [13:12] 96*5113495bSYour Name bqrp_offset : 5, // [11:7] 97*5113495bSYour Name bqrp_insertion_enable : 1, // [6:6] 98*5113495bSYour Name ul_headroom_offset : 5, // [5:1] 99*5113495bSYour Name ul_headroom_insertion_enable : 1; // [0:0] 100*5113495bSYour Name uint32_t base_pn_95_64 : 32; // [31:0] 101*5113495bSYour Name uint32_t base_pn_127_96 : 32; // [31:0] 102*5113495bSYour Name uint32_t ht_control_field_bw20 : 32; // [31:0] 103*5113495bSYour Name uint32_t ht_control_field_bw40 : 32; // [31:0] 104*5113495bSYour Name uint32_t ht_control_field_bw80 : 32; // [31:0] 105*5113495bSYour Name uint32_t ht_control_field_bw160 : 32; // [31:0] 106*5113495bSYour Name uint32_t ht_control_overwrite_mask : 32; // [31:0] 107*5113495bSYour Name uint32_t bar_ssn_overwrite_enable : 1, // [31:31] 108*5113495bSYour Name mpdu_hdr_len_override_en : 1, // [30:30] 109*5113495bSYour Name reserved_10b : 6, // [29:24] 110*5113495bSYour Name ht_control_overwrite_source_for_bsrp : 4, // [23:20] 111*5113495bSYour Name ht_control_overwrite_source_for_srp : 4, // [19:16] 112*5113495bSYour Name reserved_10a : 2, // [15:14] 113*5113495bSYour Name cas_insertion_enable : 1, // [13:13] 114*5113495bSYour Name cas_offset : 5, // [12:8] 115*5113495bSYour Name cas_control_info : 8; // [7:0] 116*5113495bSYour Name uint32_t reserved_11a : 11, // [31:21] 117*5113495bSYour Name mpdu_hdr_len_override_val : 9, // [20:12] 118*5113495bSYour Name bar_ssn_offset : 12; // [11:0] 119*5113495bSYour Name uint32_t ht_control_field_bw320 : 32; // [31:0] 120*5113495bSYour Name uint32_t fw2sw_info : 32; // [31:0] 121*5113495bSYour Name #endif 122*5113495bSYour Name }; 123*5113495bSYour Name 124*5113495bSYour Name 125*5113495bSYour Name /* Description FRAME_CTL 126*5113495bSYour Name 127*5113495bSYour Name Consumer: TXOLE 128*5113495bSYour Name Producer: SW 129*5113495bSYour Name 130*5113495bSYour Name 131*5113495bSYour Name 802.11 Frame control field: 132*5113495bSYour Name fc [1:0]: Protocol Version 133*5113495bSYour Name fc[7:2]: type/subtypeFor non-11ah fc[3:2] = Type fc[7:4] = 134*5113495bSYour Name Subtype For 11ah fc[4:2] = Typefc[7:5] = PTID/SubType 135*5113495bSYour Name fc [8]: To DS ( for Non-11ah) From DS ( for 11ah ) 136*5113495bSYour Name fc [9]: From DS ( for Non-11ah ) 137*5113495bSYour Name More Frag ( for 11ah ) 138*5113495bSYour Name fc [10]: More Frag ( for Non-11ah ) 139*5113495bSYour Name Power Management ( for 11ah) 140*5113495bSYour Name fc [11]: Retry ( for Non-11ah ) 141*5113495bSYour Name More Data ( for 11ah ) 142*5113495bSYour Name fc [12]: Pwr Mgt ( for Non-11ah ) 143*5113495bSYour Name Protected Frame ( for 11ah ) 144*5113495bSYour Name fc [13]: More Data( for Non-11ah ) 145*5113495bSYour Name EOSP ( for 11ah ) 146*5113495bSYour Name fc [14]: Protected Frame ( for Non-11ah) 147*5113495bSYour Name Relayed Frame ( for 11ah ) 148*5113495bSYour Name fc [15]: Order ( for Non-11ah ) 149*5113495bSYour Name Ack Policy ( for 11ah ) 150*5113495bSYour Name Used by OLE during the encapsulation process for Native 151*5113495bSYour Name WiFi, Ethernet II, and 802.3. 152*5113495bSYour Name When the Order field is set, TXOLE shall insert 4 placeholder 153*5113495bSYour Name bytes for the HE-control field in the frame. TXPCU will 154*5113495bSYour Name overwrite them with the final actual value... 155*5113495bSYour Name */ 156*5113495bSYour Name 157*5113495bSYour Name #define TX_QUEUE_EXTENSION_FRAME_CTL_OFFSET 0x0000000000000000 158*5113495bSYour Name #define TX_QUEUE_EXTENSION_FRAME_CTL_LSB 0 159*5113495bSYour Name #define TX_QUEUE_EXTENSION_FRAME_CTL_MSB 15 160*5113495bSYour Name #define TX_QUEUE_EXTENSION_FRAME_CTL_MASK 0x000000000000ffff 161*5113495bSYour Name 162*5113495bSYour Name 163*5113495bSYour Name /* Description QOS_CTL 164*5113495bSYour Name 165*5113495bSYour Name Consumer: TXOLE 166*5113495bSYour Name Producer: SW 167*5113495bSYour Name 168*5113495bSYour Name QoS control field is valid if the type field is data and 169*5113495bSYour Name the upper bit of the subtype field is set. The field decode 170*5113495bSYour Name is as below: 171*5113495bSYour Name qos_ctl[3:0]: TID 172*5113495bSYour Name qos_ctl[4]: EOSP (with some exceptions) 173*5113495bSYour Name qos_ctl[6:5]: Ack Policy 174*5113495bSYour Name 0x0: Normal Ack or Implicit BAR 175*5113495bSYour Name 0x1: No Ack 176*5113495bSYour Name 0x2: No explicit Ack or PSMP Ack (not supported) 177*5113495bSYour Name 0x3: Block Ack (Not supported) 178*5113495bSYour Name Qos_ctl[7]: A-MSDU Present (with some exceptions) 179*5113495bSYour Name Qos_ctl[15:8]: TXOP limit, AP PS buffer state, TXOP duration 180*5113495bSYour Name requested or queue size 181*5113495bSYour Name This field is inserted into the 802.11 header during the 182*5113495bSYour Name encapsulation process 183*5113495bSYour Name <legal all> 184*5113495bSYour Name */ 185*5113495bSYour Name 186*5113495bSYour Name #define TX_QUEUE_EXTENSION_QOS_CTL_OFFSET 0x0000000000000000 187*5113495bSYour Name #define TX_QUEUE_EXTENSION_QOS_CTL_LSB 16 188*5113495bSYour Name #define TX_QUEUE_EXTENSION_QOS_CTL_MSB 31 189*5113495bSYour Name #define TX_QUEUE_EXTENSION_QOS_CTL_MASK 0x00000000ffff0000 190*5113495bSYour Name 191*5113495bSYour Name 192*5113495bSYour Name /* Description AMPDU_FLAG 193*5113495bSYour Name 194*5113495bSYour Name Consumer: PDG/TXPCU 195*5113495bSYour Name Producer: SW 196*5113495bSYour Name 197*5113495bSYour Name Note: 198*5113495bSYour Name For legacy rate transmissions (11 b and 11a, an 11g), this 199*5113495bSYour Name bit shall always be set to zero. 200*5113495bSYour Name 201*5113495bSYour Name 0: 202*5113495bSYour Name For legacy and .11n rates: 203*5113495bSYour Name MPDUs are only allowed to be sent out 1 at a time in NON 204*5113495bSYour Name A-MPDU format. 205*5113495bSYour Name For .11ac and .11ax rates: 206*5113495bSYour Name MPDUs are sent out in S-MPDU format (TXPCU sets the 'EOF' 207*5113495bSYour Name bit in the MPDU delimiter). 208*5113495bSYour Name 1: All MPDUs should be sent out using the A-MPDU format, 209*5113495bSYour Name even if there is only one MPDU. 210*5113495bSYour Name 211*5113495bSYour Name Note that this bit should be set to 0 in order to construct 212*5113495bSYour Name an S-MPDU frame. VHT and HE frames are all A-MPDU format 213*5113495bSYour Name but if this bit is clear, EOF bit is set to 1 for the MPDU 214*5113495bSYour Name delimiter in A-MPDU, which is the indicator of S-MPDU and 215*5113495bSYour Name solicits ACK rather than BA as response frame. 216*5113495bSYour Name 217*5113495bSYour Name This bit shall be set to 1 for any MD (Multi Destination) 218*5113495bSYour Name transmission. 219*5113495bSYour Name */ 220*5113495bSYour Name 221*5113495bSYour Name #define TX_QUEUE_EXTENSION_AMPDU_FLAG_OFFSET 0x0000000000000000 222*5113495bSYour Name #define TX_QUEUE_EXTENSION_AMPDU_FLAG_LSB 32 223*5113495bSYour Name #define TX_QUEUE_EXTENSION_AMPDU_FLAG_MSB 32 224*5113495bSYour Name #define TX_QUEUE_EXTENSION_AMPDU_FLAG_MASK 0x0000000100000000 225*5113495bSYour Name 226*5113495bSYour Name 227*5113495bSYour Name /* Description TX_NOTIFY_NO_HTC_OVERRIDE 228*5113495bSYour Name 229*5113495bSYour Name When set, and a 'TX_MPDU_START' TLV has Tx_notify_frame 230*5113495bSYour Name set to TX_HARD_NOTIFY or TX_SOFT_NOTIFY or TX_SEMI_HARD_NOTIFY, 231*5113495bSYour Name then PDG would have updated the rate fields for a legacy 232*5113495bSYour Name PPDU which may not support HT Control. 233*5113495bSYour Name 234*5113495bSYour Name In this case TXOLE shall not: 235*5113495bSYour Name set the Order/+HTC bit in the 'Frame Control,' 236*5113495bSYour Name include 4 bytes for TXPCU to fill the HT Control, or 237*5113495bSYour Name set vht_control_present in 'TX_MPDU_START,' 238*5113495bSYour Name even if requested, and instead shall subtract '4' from the 239*5113495bSYour Name mpdu_length in 'TX_MPDU_START' and overwrite it. 240*5113495bSYour Name 241*5113495bSYour Name Hamilton v1 used bits [29:26], [8:1] along with word 11 242*5113495bSYour Name bits [31:12] for 'HT_control_field_bw320.' 243*5113495bSYour Name <legal all> 244*5113495bSYour Name */ 245*5113495bSYour Name 246*5113495bSYour Name #define TX_QUEUE_EXTENSION_TX_NOTIFY_NO_HTC_OVERRIDE_OFFSET 0x0000000000000000 247*5113495bSYour Name #define TX_QUEUE_EXTENSION_TX_NOTIFY_NO_HTC_OVERRIDE_LSB 33 248*5113495bSYour Name #define TX_QUEUE_EXTENSION_TX_NOTIFY_NO_HTC_OVERRIDE_MSB 33 249*5113495bSYour Name #define TX_QUEUE_EXTENSION_TX_NOTIFY_NO_HTC_OVERRIDE_MASK 0x0000000200000000 250*5113495bSYour Name 251*5113495bSYour Name 252*5113495bSYour Name /* Description RESERVED_1A 253*5113495bSYour Name 254*5113495bSYour Name Hamilton v1 used bits [29:26], [8:1] along with word 11 255*5113495bSYour Name bits [31:12] for 'HT_control_field_bw320.' 256*5113495bSYour Name <legal 0> 257*5113495bSYour Name */ 258*5113495bSYour Name 259*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_1A_OFFSET 0x0000000000000000 260*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_1A_LSB 34 261*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_1A_MSB 40 262*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_1A_MASK 0x000001fc00000000 263*5113495bSYour Name 264*5113495bSYour Name 265*5113495bSYour Name /* Description CHECKSUM_TSO_DISABLE_FOR_FRAG 266*5113495bSYour Name 267*5113495bSYour Name Field only valid in case of level-1 fragmentation, identified 268*5113495bSYour Name by TXOLE getting the 'TX_FRAG_STATE' TLV 269*5113495bSYour Name 270*5113495bSYour Name If set, TXOLE disables all checksum and TSO overwrites for 271*5113495bSYour Name the fragment(s) being transmitted. 272*5113495bSYour Name 273*5113495bSYour Name This is useful if it is known that the checksum and TSO 274*5113495bSYour Name overwrites affect only the first fragment (or first few 275*5113495bSYour Name fragments) and for the rest these can be safely disabled. 276*5113495bSYour Name 277*5113495bSYour Name 278*5113495bSYour Name <legal all> 279*5113495bSYour Name */ 280*5113495bSYour Name 281*5113495bSYour Name #define TX_QUEUE_EXTENSION_CHECKSUM_TSO_DISABLE_FOR_FRAG_OFFSET 0x0000000000000000 282*5113495bSYour Name #define TX_QUEUE_EXTENSION_CHECKSUM_TSO_DISABLE_FOR_FRAG_LSB 41 283*5113495bSYour Name #define TX_QUEUE_EXTENSION_CHECKSUM_TSO_DISABLE_FOR_FRAG_MSB 41 284*5113495bSYour Name #define TX_QUEUE_EXTENSION_CHECKSUM_TSO_DISABLE_FOR_FRAG_MASK 0x0000020000000000 285*5113495bSYour Name 286*5113495bSYour Name 287*5113495bSYour Name /* Description KEY_ID 288*5113495bSYour Name 289*5113495bSYour Name Field only valid in case of encryption, and TXOLE being 290*5113495bSYour Name instructured to insert the IV. 291*5113495bSYour Name 292*5113495bSYour Name TXOLE blindly copies this field into the key ID octet (which 293*5113495bSYour Name is part of the IV) of the encrypted frame. 294*5113495bSYour Name 295*5113495bSYour Name For AES/TKIP the encoding is: 296*5113495bSYour Name key_id_octet[7:6]: key ID 297*5113495bSYour Name key_id_octet[5]: extended IV: 298*5113495bSYour Name key_id_octet[4:0]: Reserved bits 299*5113495bSYour Name 300*5113495bSYour Name For WEP the encoding is: 301*5113495bSYour Name key_id_octet[7:6]: key ID 302*5113495bSYour Name key_id_octet[5]: extended IV: 303*5113495bSYour Name key_id_octet[4:0]: Reserved bits 304*5113495bSYour Name 305*5113495bSYour Name For WAPI the encoding is: 306*5113495bSYour Name key_id_octet[7:2]: Reserved bits 307*5113495bSYour Name key_id_octet[1:0]: key ID 308*5113495bSYour Name 309*5113495bSYour Name <legal all> 310*5113495bSYour Name */ 311*5113495bSYour Name 312*5113495bSYour Name #define TX_QUEUE_EXTENSION_KEY_ID_OFFSET 0x0000000000000000 313*5113495bSYour Name #define TX_QUEUE_EXTENSION_KEY_ID_LSB 42 314*5113495bSYour Name #define TX_QUEUE_EXTENSION_KEY_ID_MSB 49 315*5113495bSYour Name #define TX_QUEUE_EXTENSION_KEY_ID_MASK 0x0003fc0000000000 316*5113495bSYour Name 317*5113495bSYour Name 318*5113495bSYour Name /* Description QOS_BUF_STATE_OVERWRITE 319*5113495bSYour Name 320*5113495bSYour Name When clear, TXPCU shall not overwrite buffer state field 321*5113495bSYour Name in the QoS frame control field. 322*5113495bSYour Name 323*5113495bSYour Name When set, TXPCU shall overwrite the buffer state field in 324*5113495bSYour Name the QoS frame control field, with info that SW has programmed 325*5113495bSYour Name in TXPCU registers. Note that TXPCU shall pick up the values 326*5113495bSYour Name related to this TID. 327*5113495bSYour Name <legal all> 328*5113495bSYour Name */ 329*5113495bSYour Name 330*5113495bSYour Name #define TX_QUEUE_EXTENSION_QOS_BUF_STATE_OVERWRITE_OFFSET 0x0000000000000000 331*5113495bSYour Name #define TX_QUEUE_EXTENSION_QOS_BUF_STATE_OVERWRITE_LSB 50 332*5113495bSYour Name #define TX_QUEUE_EXTENSION_QOS_BUF_STATE_OVERWRITE_MSB 50 333*5113495bSYour Name #define TX_QUEUE_EXTENSION_QOS_BUF_STATE_OVERWRITE_MASK 0x0004000000000000 334*5113495bSYour Name 335*5113495bSYour Name 336*5113495bSYour Name /* Description BUF_STATE_STA_ID 337*5113495bSYour Name 338*5113495bSYour Name Field only valid when QoS_Buf_state_overwrite is set. 339*5113495bSYour Name 340*5113495bSYour Name This field indicates what the STA ID register source is 341*5113495bSYour Name of the buffer status. 342*5113495bSYour Name 343*5113495bSYour Name 1'b0: TXPCU registers: STA0_buf_status_... 344*5113495bSYour Name 1'b1: TXPCU registers: STA1_buf_status_... 345*5113495bSYour Name <legal all> 346*5113495bSYour Name */ 347*5113495bSYour Name 348*5113495bSYour Name #define TX_QUEUE_EXTENSION_BUF_STATE_STA_ID_OFFSET 0x0000000000000000 349*5113495bSYour Name #define TX_QUEUE_EXTENSION_BUF_STATE_STA_ID_LSB 51 350*5113495bSYour Name #define TX_QUEUE_EXTENSION_BUF_STATE_STA_ID_MSB 51 351*5113495bSYour Name #define TX_QUEUE_EXTENSION_BUF_STATE_STA_ID_MASK 0x0008000000000000 352*5113495bSYour Name 353*5113495bSYour Name 354*5113495bSYour Name /* Description BUF_STATE_SOURCE 355*5113495bSYour Name 356*5113495bSYour Name Field only valid when QoS_Buf_state_overwrite is set. 357*5113495bSYour Name 358*5113495bSYour Name This field indicates what the source is of the actual value 359*5113495bSYour Name TXPCU will insert 360*5113495bSYour Name 361*5113495bSYour Name <enum 0 BUF_STATE_TID_BASED> TXPCU looks at the TID field 362*5113495bSYour Name in the QoS control frame and based on this TID, selects 363*5113495bSYour Name the buffer source value from the corresponding TID register. 364*5113495bSYour Name 365*5113495bSYour Name <enum 1 BUF_STATE_SUM_BASED> TXPCU inserts the value from 366*5113495bSYour Name the buffer_state_sum register 367*5113495bSYour Name 368*5113495bSYour Name <legal all> 369*5113495bSYour Name */ 370*5113495bSYour Name 371*5113495bSYour Name #define TX_QUEUE_EXTENSION_BUF_STATE_SOURCE_OFFSET 0x0000000000000000 372*5113495bSYour Name #define TX_QUEUE_EXTENSION_BUF_STATE_SOURCE_LSB 52 373*5113495bSYour Name #define TX_QUEUE_EXTENSION_BUF_STATE_SOURCE_MSB 52 374*5113495bSYour Name #define TX_QUEUE_EXTENSION_BUF_STATE_SOURCE_MASK 0x0010000000000000 375*5113495bSYour Name 376*5113495bSYour Name 377*5113495bSYour Name /* Description HT_CONTROL_OVERWRITE_ENABLE 378*5113495bSYour Name 379*5113495bSYour Name When set, TXPCU shall overwrite some (or all) of the HT_CONTROL 380*5113495bSYour Name field with values that are programmed in TXPCU registers: 381*5113495bSYour Name HT_CONTROL_OVERWRITE_IX??? 382*5113495bSYour Name 383*5113495bSYour Name See HT/HE control overwrite order NOTE after this table 384*5113495bSYour Name 385*5113495bSYour Name <legal all> 386*5113495bSYour Name */ 387*5113495bSYour Name 388*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_ENABLE_OFFSET 0x0000000000000000 389*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_ENABLE_LSB 53 390*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_ENABLE_MSB 53 391*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_ENABLE_MASK 0x0020000000000000 392*5113495bSYour Name 393*5113495bSYour Name 394*5113495bSYour Name /* Description HT_CONTROL_OVERWRITE_SOURCE 395*5113495bSYour Name 396*5113495bSYour Name Field only valid when HT_control_overwrite_enable is set. 397*5113495bSYour Name 398*5113495bSYour Name 399*5113495bSYour Name This field indicates the index of the TXPCU register HT_CONTROL_OVERWRITE_IX??? 400*5113495bSYour Name That is the source of the overwrite data. 401*5113495bSYour Name <legal all> 402*5113495bSYour Name */ 403*5113495bSYour Name 404*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_SOURCE_OFFSET 0x0000000000000000 405*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_SOURCE_LSB 54 406*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_SOURCE_MSB 57 407*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_SOURCE_MASK 0x03c0000000000000 408*5113495bSYour Name 409*5113495bSYour Name 410*5113495bSYour Name /* Description RESERVED_1B 411*5113495bSYour Name 412*5113495bSYour Name Hamilton v1 used bits [29:26], [8:1] along with word 11 413*5113495bSYour Name bits [31:12] for 'HT_control_field_bw320.' 414*5113495bSYour Name <legal 0> 415*5113495bSYour Name */ 416*5113495bSYour Name 417*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_1B_OFFSET 0x0000000000000000 418*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_1B_LSB 58 419*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_1B_MSB 63 420*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_1B_MASK 0xfc00000000000000 421*5113495bSYour Name 422*5113495bSYour Name 423*5113495bSYour Name /* Description UL_HEADROOM_INSERTION_ENABLE 424*5113495bSYour Name 425*5113495bSYour Name When set, and this transmission services a trigger response 426*5113495bSYour Name transmission, TXPCU shall create and insert the UL headroom 427*5113495bSYour Name info in the HE control field, starting at offset indicated 428*5113495bSYour Name by field: UL_headroom_offset 429*5113495bSYour Name 430*5113495bSYour Name See HT/HE control overwrite order NOTE after this table 431*5113495bSYour Name <legal all> 432*5113495bSYour Name */ 433*5113495bSYour Name 434*5113495bSYour Name #define TX_QUEUE_EXTENSION_UL_HEADROOM_INSERTION_ENABLE_OFFSET 0x0000000000000008 435*5113495bSYour Name #define TX_QUEUE_EXTENSION_UL_HEADROOM_INSERTION_ENABLE_LSB 0 436*5113495bSYour Name #define TX_QUEUE_EXTENSION_UL_HEADROOM_INSERTION_ENABLE_MSB 0 437*5113495bSYour Name #define TX_QUEUE_EXTENSION_UL_HEADROOM_INSERTION_ENABLE_MASK 0x0000000000000001 438*5113495bSYour Name 439*5113495bSYour Name 440*5113495bSYour Name /* Description UL_HEADROOM_OFFSET 441*5113495bSYour Name 442*5113495bSYour Name Field only valid when UL_headroom_insertion_enable is set. 443*5113495bSYour Name 444*5113495bSYour Name 445*5113495bSYour Name The bit location in HE_CONTROL Field where TXPCU will start 446*5113495bSYour Name writing the the 4 bit Control ID field that needs to be 447*5113495bSYour Name inserted, followed by the lower 6 bits of the 8 bit bit 448*5113495bSYour Name UL_headroom info (UPH Control). 449*5113495bSYour Name 450*5113495bSYour Name NOTE: currently on 6 bits are defined in the UPH control 451*5113495bSYour Name field. The upper two bits are provided by SW in UL_headroom_rsvd_7_6. 452*5113495bSYour Name 453*5113495bSYour Name 454*5113495bSYour Name <legal 2-20> 455*5113495bSYour Name */ 456*5113495bSYour Name 457*5113495bSYour Name #define TX_QUEUE_EXTENSION_UL_HEADROOM_OFFSET_OFFSET 0x0000000000000008 458*5113495bSYour Name #define TX_QUEUE_EXTENSION_UL_HEADROOM_OFFSET_LSB 1 459*5113495bSYour Name #define TX_QUEUE_EXTENSION_UL_HEADROOM_OFFSET_MSB 5 460*5113495bSYour Name #define TX_QUEUE_EXTENSION_UL_HEADROOM_OFFSET_MASK 0x000000000000003e 461*5113495bSYour Name 462*5113495bSYour Name 463*5113495bSYour Name /* Description BQRP_INSERTION_ENABLE 464*5113495bSYour Name 465*5113495bSYour Name When set, and this transmission services a BQRP trigger 466*5113495bSYour Name response transmission, TXPCU shall create and insert the 467*5113495bSYour Name BQR control field into the HE control field, as well as 468*5113495bSYour Name the 4 bit preceding Control ID field. 469*5113495bSYour Name 470*5113495bSYour Name See HT/HE control overwrite order NOTE after this table 471*5113495bSYour Name <legal all> 472*5113495bSYour Name */ 473*5113495bSYour Name 474*5113495bSYour Name #define TX_QUEUE_EXTENSION_BQRP_INSERTION_ENABLE_OFFSET 0x0000000000000008 475*5113495bSYour Name #define TX_QUEUE_EXTENSION_BQRP_INSERTION_ENABLE_LSB 6 476*5113495bSYour Name #define TX_QUEUE_EXTENSION_BQRP_INSERTION_ENABLE_MSB 6 477*5113495bSYour Name #define TX_QUEUE_EXTENSION_BQRP_INSERTION_ENABLE_MASK 0x0000000000000040 478*5113495bSYour Name 479*5113495bSYour Name 480*5113495bSYour Name /* Description BQRP_OFFSET 481*5113495bSYour Name 482*5113495bSYour Name Field only valid when BQRP_insertion_enable is set. 483*5113495bSYour Name 484*5113495bSYour Name The bit location in HE_CONTROL Field where TXPCU will start 485*5113495bSYour Name writing the 4 bit Control ID field that needs to be inserted, 486*5113495bSYour Name followed by the lower 8 bits of the 10 bit BQR control field. 487*5113495bSYour Name 488*5113495bSYour Name 489*5113495bSYour Name NOTE: currently only 8 bits are defined in the 10 bit BQR 490*5113495bSYour Name control field. The upper two bits are provided by SW in 491*5113495bSYour Name BQR_rsvd_9_8. 492*5113495bSYour Name 493*5113495bSYour Name <legal 2-20> 494*5113495bSYour Name */ 495*5113495bSYour Name 496*5113495bSYour Name #define TX_QUEUE_EXTENSION_BQRP_OFFSET_OFFSET 0x0000000000000008 497*5113495bSYour Name #define TX_QUEUE_EXTENSION_BQRP_OFFSET_LSB 7 498*5113495bSYour Name #define TX_QUEUE_EXTENSION_BQRP_OFFSET_MSB 11 499*5113495bSYour Name #define TX_QUEUE_EXTENSION_BQRP_OFFSET_MASK 0x0000000000000f80 500*5113495bSYour Name 501*5113495bSYour Name 502*5113495bSYour Name /* Description UL_HEADROOM_RSVD_7_6 503*5113495bSYour Name 504*5113495bSYour Name These will be used by TXPCU to fill the upper two bits of 505*5113495bSYour Name the UPH control field. 506*5113495bSYour Name <legal all> 507*5113495bSYour Name */ 508*5113495bSYour Name 509*5113495bSYour Name #define TX_QUEUE_EXTENSION_UL_HEADROOM_RSVD_7_6_OFFSET 0x0000000000000008 510*5113495bSYour Name #define TX_QUEUE_EXTENSION_UL_HEADROOM_RSVD_7_6_LSB 12 511*5113495bSYour Name #define TX_QUEUE_EXTENSION_UL_HEADROOM_RSVD_7_6_MSB 13 512*5113495bSYour Name #define TX_QUEUE_EXTENSION_UL_HEADROOM_RSVD_7_6_MASK 0x0000000000003000 513*5113495bSYour Name 514*5113495bSYour Name 515*5113495bSYour Name /* Description BQR_RSVD_9_8 516*5113495bSYour Name 517*5113495bSYour Name These will be used by TXPCU to fill the upper two bits of 518*5113495bSYour Name the BQR control field. 519*5113495bSYour Name NOTE: When overwriting CAS control (8-bit) at the same offset 520*5113495bSYour Name as BQR control (10-bit), TXPCU will ignore the BQR overwrite, 521*5113495bSYour Name including these upper two bits. 522*5113495bSYour Name <legal all> 523*5113495bSYour Name */ 524*5113495bSYour Name 525*5113495bSYour Name #define TX_QUEUE_EXTENSION_BQR_RSVD_9_8_OFFSET 0x0000000000000008 526*5113495bSYour Name #define TX_QUEUE_EXTENSION_BQR_RSVD_9_8_LSB 14 527*5113495bSYour Name #define TX_QUEUE_EXTENSION_BQR_RSVD_9_8_MSB 15 528*5113495bSYour Name #define TX_QUEUE_EXTENSION_BQR_RSVD_9_8_MASK 0x000000000000c000 529*5113495bSYour Name 530*5113495bSYour Name 531*5113495bSYour Name /* Description BASE_PN_63_48 532*5113495bSYour Name 533*5113495bSYour Name Upper bits PN number, in case a larger then 48 bit PN number 534*5113495bSYour Name needs to be inserted in the transmit frame. 535*5113495bSYour Name 536*5113495bSYour Name 63-48 bits of the 128-bit packet number 537*5113495bSYour Name <legal all> 538*5113495bSYour Name */ 539*5113495bSYour Name 540*5113495bSYour Name #define TX_QUEUE_EXTENSION_BASE_PN_63_48_OFFSET 0x0000000000000008 541*5113495bSYour Name #define TX_QUEUE_EXTENSION_BASE_PN_63_48_LSB 16 542*5113495bSYour Name #define TX_QUEUE_EXTENSION_BASE_PN_63_48_MSB 31 543*5113495bSYour Name #define TX_QUEUE_EXTENSION_BASE_PN_63_48_MASK 0x00000000ffff0000 544*5113495bSYour Name 545*5113495bSYour Name 546*5113495bSYour Name /* Description BASE_PN_95_64 547*5113495bSYour Name 548*5113495bSYour Name Upper bits PN number, in case a larger then 48 bit PN number 549*5113495bSYour Name needs to be inserted in the transmit frame. 550*5113495bSYour Name 551*5113495bSYour Name 95-64 bits of the 128-bit packet number 552*5113495bSYour Name <legal all> 553*5113495bSYour Name */ 554*5113495bSYour Name 555*5113495bSYour Name #define TX_QUEUE_EXTENSION_BASE_PN_95_64_OFFSET 0x0000000000000008 556*5113495bSYour Name #define TX_QUEUE_EXTENSION_BASE_PN_95_64_LSB 32 557*5113495bSYour Name #define TX_QUEUE_EXTENSION_BASE_PN_95_64_MSB 63 558*5113495bSYour Name #define TX_QUEUE_EXTENSION_BASE_PN_95_64_MASK 0xffffffff00000000 559*5113495bSYour Name 560*5113495bSYour Name 561*5113495bSYour Name /* Description BASE_PN_127_96 562*5113495bSYour Name 563*5113495bSYour Name Upper bits PN number, in case a larger then 48 bit PN number 564*5113495bSYour Name needs to be inserted in the transmit frame. 565*5113495bSYour Name 566*5113495bSYour Name 127-96 bits of the 128-bit packet number 567*5113495bSYour Name <legal all> 568*5113495bSYour Name */ 569*5113495bSYour Name 570*5113495bSYour Name #define TX_QUEUE_EXTENSION_BASE_PN_127_96_OFFSET 0x0000000000000010 571*5113495bSYour Name #define TX_QUEUE_EXTENSION_BASE_PN_127_96_LSB 0 572*5113495bSYour Name #define TX_QUEUE_EXTENSION_BASE_PN_127_96_MSB 31 573*5113495bSYour Name #define TX_QUEUE_EXTENSION_BASE_PN_127_96_MASK 0x00000000ffffffff 574*5113495bSYour Name 575*5113495bSYour Name 576*5113495bSYour Name /* Description HT_CONTROL_FIELD_BW20 577*5113495bSYour Name 578*5113495bSYour Name Field used by TXPCU when in TX_MPDU_START TLV field vht_control_present 579*5113495bSYour Name is set. 580*5113495bSYour Name 581*5113495bSYour Name Note that TXPCU might overwrite some fields. This is controlled 582*5113495bSYour Name with field HT_control_overwrite_enable 583*5113495bSYour Name 584*5113495bSYour Name See HT/HE control overwrite order NOTE after this table 585*5113495bSYour Name 586*5113495bSYour Name <legal all> 587*5113495bSYour Name */ 588*5113495bSYour Name 589*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW20_OFFSET 0x0000000000000010 590*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW20_LSB 32 591*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW20_MSB 63 592*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW20_MASK 0xffffffff00000000 593*5113495bSYour Name 594*5113495bSYour Name 595*5113495bSYour Name /* Description HT_CONTROL_FIELD_BW40 596*5113495bSYour Name 597*5113495bSYour Name Field used by TXPCU when in TX_MPDU_START TLV field vht_control_present 598*5113495bSYour Name is set. 599*5113495bSYour Name 600*5113495bSYour Name Note that TXPCU might overwrite some fields. This is controlled 601*5113495bSYour Name with field HT_control_overwrite_enable 602*5113495bSYour Name 603*5113495bSYour Name See HT/HE control overwrite order NOTE after this table 604*5113495bSYour Name 605*5113495bSYour Name <legal all> 606*5113495bSYour Name */ 607*5113495bSYour Name 608*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW40_OFFSET 0x0000000000000018 609*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW40_LSB 0 610*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW40_MSB 31 611*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW40_MASK 0x00000000ffffffff 612*5113495bSYour Name 613*5113495bSYour Name 614*5113495bSYour Name /* Description HT_CONTROL_FIELD_BW80 615*5113495bSYour Name 616*5113495bSYour Name Field used by TXPCU when in TX_MPDU_START TLV field vht_control_present 617*5113495bSYour Name is set. 618*5113495bSYour Name 619*5113495bSYour Name Note that TXPCU might overwrite some fields. This is controlled 620*5113495bSYour Name with field HT_control_overwrite_enable 621*5113495bSYour Name 622*5113495bSYour Name See HT/HE control overwrite order NOTE after this table 623*5113495bSYour Name 624*5113495bSYour Name <legal all> 625*5113495bSYour Name */ 626*5113495bSYour Name 627*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW80_OFFSET 0x0000000000000018 628*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW80_LSB 32 629*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW80_MSB 63 630*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW80_MASK 0xffffffff00000000 631*5113495bSYour Name 632*5113495bSYour Name 633*5113495bSYour Name /* Description HT_CONTROL_FIELD_BW160 634*5113495bSYour Name 635*5113495bSYour Name Field used by TXPCU when in TX_MPDU_START TLV field vht_control_present 636*5113495bSYour Name is set. 637*5113495bSYour Name 638*5113495bSYour Name Note that TXPCU might overwrite some fields. This is controlled 639*5113495bSYour Name with field HT_control_overwrite_enable 640*5113495bSYour Name 641*5113495bSYour Name See HT/HE control overwrite order NOTE after this table 642*5113495bSYour Name 643*5113495bSYour Name <legal all> 644*5113495bSYour Name */ 645*5113495bSYour Name 646*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW160_OFFSET 0x0000000000000020 647*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW160_LSB 0 648*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW160_MSB 31 649*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW160_MASK 0x00000000ffffffff 650*5113495bSYour Name 651*5113495bSYour Name 652*5113495bSYour Name /* Description HT_CONTROL_OVERWRITE_MASK 653*5113495bSYour Name 654*5113495bSYour Name Field only valid when HT_control_overwrite_enable is set. 655*5113495bSYour Name 656*5113495bSYour Name 657*5113495bSYour Name This field indicates which bits of the HT_CONTROL_FIELD 658*5113495bSYour Name shall be overwritten with bits from TXPCU register HT_CONTROL_OVERWRITE_IX??? 659*5113495bSYour Name 660*5113495bSYour Name Every bit that needs to be overwritten is set to 1 in this 661*5113495bSYour Name register. 662*5113495bSYour Name <legal all> 663*5113495bSYour Name */ 664*5113495bSYour Name 665*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_MASK_OFFSET 0x0000000000000020 666*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_MASK_LSB 32 667*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_MASK_MSB 63 668*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_MASK_MASK 0xffffffff00000000 669*5113495bSYour Name 670*5113495bSYour Name 671*5113495bSYour Name /* Description CAS_CONTROL_INFO 672*5113495bSYour Name 673*5113495bSYour Name This contains 8-bit CAS control field to be used for transmission 674*5113495bSYour Name during SRP window 675*5113495bSYour Name <legal all> 676*5113495bSYour Name */ 677*5113495bSYour Name 678*5113495bSYour Name #define TX_QUEUE_EXTENSION_CAS_CONTROL_INFO_OFFSET 0x0000000000000028 679*5113495bSYour Name #define TX_QUEUE_EXTENSION_CAS_CONTROL_INFO_LSB 0 680*5113495bSYour Name #define TX_QUEUE_EXTENSION_CAS_CONTROL_INFO_MSB 7 681*5113495bSYour Name #define TX_QUEUE_EXTENSION_CAS_CONTROL_INFO_MASK 0x00000000000000ff 682*5113495bSYour Name 683*5113495bSYour Name 684*5113495bSYour Name /* Description CAS_OFFSET 685*5113495bSYour Name 686*5113495bSYour Name 5 bit offset for CAS insertion 687*5113495bSYour Name <legal 2-20> 688*5113495bSYour Name */ 689*5113495bSYour Name 690*5113495bSYour Name #define TX_QUEUE_EXTENSION_CAS_OFFSET_OFFSET 0x0000000000000028 691*5113495bSYour Name #define TX_QUEUE_EXTENSION_CAS_OFFSET_LSB 8 692*5113495bSYour Name #define TX_QUEUE_EXTENSION_CAS_OFFSET_MSB 12 693*5113495bSYour Name #define TX_QUEUE_EXTENSION_CAS_OFFSET_MASK 0x0000000000001f00 694*5113495bSYour Name 695*5113495bSYour Name 696*5113495bSYour Name /* Description CAS_INSERTION_ENABLE 697*5113495bSYour Name 698*5113495bSYour Name single bit used as ENABLE for CAS control insertion for 699*5113495bSYour Name transmission during SRP window 700*5113495bSYour Name <legal all> 701*5113495bSYour Name */ 702*5113495bSYour Name 703*5113495bSYour Name #define TX_QUEUE_EXTENSION_CAS_INSERTION_ENABLE_OFFSET 0x0000000000000028 704*5113495bSYour Name #define TX_QUEUE_EXTENSION_CAS_INSERTION_ENABLE_LSB 13 705*5113495bSYour Name #define TX_QUEUE_EXTENSION_CAS_INSERTION_ENABLE_MSB 13 706*5113495bSYour Name #define TX_QUEUE_EXTENSION_CAS_INSERTION_ENABLE_MASK 0x0000000000002000 707*5113495bSYour Name 708*5113495bSYour Name 709*5113495bSYour Name /* Description RESERVED_10A 710*5113495bSYour Name 711*5113495bSYour Name <legal 0> 712*5113495bSYour Name */ 713*5113495bSYour Name 714*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_10A_OFFSET 0x0000000000000028 715*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_10A_LSB 14 716*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_10A_MSB 15 717*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_10A_MASK 0x000000000000c000 718*5113495bSYour Name 719*5113495bSYour Name 720*5113495bSYour Name /* Description HT_CONTROL_OVERWRITE_SOURCE_FOR_SRP 721*5113495bSYour Name 722*5113495bSYour Name 4-bit index similar to HT_control_overwrite_source field 723*5113495bSYour Name to be used for transmission during SRP window 724*5113495bSYour Name <legal all> 725*5113495bSYour Name */ 726*5113495bSYour Name 727*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_SOURCE_FOR_SRP_OFFSET 0x0000000000000028 728*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_SOURCE_FOR_SRP_LSB 16 729*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_SOURCE_FOR_SRP_MSB 19 730*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_SOURCE_FOR_SRP_MASK 0x00000000000f0000 731*5113495bSYour Name 732*5113495bSYour Name 733*5113495bSYour Name /* Description HT_CONTROL_OVERWRITE_SOURCE_FOR_BSRP 734*5113495bSYour Name 735*5113495bSYour Name 4-bit index similar to HT_control_overwrite_source field 736*5113495bSYour Name to be used for response to BSRP triggers (even during SRP 737*5113495bSYour Name window) 738*5113495bSYour Name <legal all> 739*5113495bSYour Name */ 740*5113495bSYour Name 741*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_SOURCE_FOR_BSRP_OFFSET 0x0000000000000028 742*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_SOURCE_FOR_BSRP_LSB 20 743*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_SOURCE_FOR_BSRP_MSB 23 744*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_SOURCE_FOR_BSRP_MASK 0x0000000000f00000 745*5113495bSYour Name 746*5113495bSYour Name 747*5113495bSYour Name /* Description RESERVED_10B 748*5113495bSYour Name 749*5113495bSYour Name <legal 0> 750*5113495bSYour Name */ 751*5113495bSYour Name 752*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_10B_OFFSET 0x0000000000000028 753*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_10B_LSB 24 754*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_10B_MSB 29 755*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_10B_MASK 0x000000003f000000 756*5113495bSYour Name 757*5113495bSYour Name 758*5113495bSYour Name /* Description MPDU_HDR_LEN_OVERRIDE_EN 759*5113495bSYour Name 760*5113495bSYour Name This is for the FW override of MPDU overhead length programmed 761*5113495bSYour Name in the TQM queue. 762*5113495bSYour Name 763*5113495bSYour Name If enabled, PDG will update the length of each MPDU by subtracting 764*5113495bSYour Name the value of field Mpdu_header_length in 'MPDU_QUEUE_OVERVIEW' 765*5113495bSYour Name and adding Mpdu_hdr_len_override_val (in this TLV). 766*5113495bSYour Name <legal all> 767*5113495bSYour Name */ 768*5113495bSYour Name 769*5113495bSYour Name #define TX_QUEUE_EXTENSION_MPDU_HDR_LEN_OVERRIDE_EN_OFFSET 0x0000000000000028 770*5113495bSYour Name #define TX_QUEUE_EXTENSION_MPDU_HDR_LEN_OVERRIDE_EN_LSB 30 771*5113495bSYour Name #define TX_QUEUE_EXTENSION_MPDU_HDR_LEN_OVERRIDE_EN_MSB 30 772*5113495bSYour Name #define TX_QUEUE_EXTENSION_MPDU_HDR_LEN_OVERRIDE_EN_MASK 0x0000000040000000 773*5113495bSYour Name 774*5113495bSYour Name 775*5113495bSYour Name /* Description BAR_SSN_OVERWRITE_ENABLE 776*5113495bSYour Name 777*5113495bSYour Name If enabled, TXPCU will overwrite the starting sequence number 778*5113495bSYour Name in case of Tx BAR or MU-BAR Trigger from with the sequence 779*5113495bSYour Name number from 'MPDU_QUEUE_OVERVIEW' 780*5113495bSYour Name <legal all> 781*5113495bSYour Name */ 782*5113495bSYour Name 783*5113495bSYour Name #define TX_QUEUE_EXTENSION_BAR_SSN_OVERWRITE_ENABLE_OFFSET 0x0000000000000028 784*5113495bSYour Name #define TX_QUEUE_EXTENSION_BAR_SSN_OVERWRITE_ENABLE_LSB 31 785*5113495bSYour Name #define TX_QUEUE_EXTENSION_BAR_SSN_OVERWRITE_ENABLE_MSB 31 786*5113495bSYour Name #define TX_QUEUE_EXTENSION_BAR_SSN_OVERWRITE_ENABLE_MASK 0x0000000080000000 787*5113495bSYour Name 788*5113495bSYour Name 789*5113495bSYour Name /* Description BAR_SSN_OFFSET 790*5113495bSYour Name 791*5113495bSYour Name Offset to the starting sequence number in case of Tx BAR 792*5113495bSYour Name or MU-BAR Trigger that TXPCU can overwrite with the sequence 793*5113495bSYour Name number from 'MPDU_QUEUE_OVERVIEW' 794*5113495bSYour Name <legal all> 795*5113495bSYour Name */ 796*5113495bSYour Name 797*5113495bSYour Name #define TX_QUEUE_EXTENSION_BAR_SSN_OFFSET_OFFSET 0x0000000000000028 798*5113495bSYour Name #define TX_QUEUE_EXTENSION_BAR_SSN_OFFSET_LSB 32 799*5113495bSYour Name #define TX_QUEUE_EXTENSION_BAR_SSN_OFFSET_MSB 43 800*5113495bSYour Name #define TX_QUEUE_EXTENSION_BAR_SSN_OFFSET_MASK 0x00000fff00000000 801*5113495bSYour Name 802*5113495bSYour Name 803*5113495bSYour Name /* Description MPDU_HDR_LEN_OVERRIDE_VAL 804*5113495bSYour Name 805*5113495bSYour Name This is for the FW override of MPDU overhead length programmed 806*5113495bSYour Name in the TQM queue. 807*5113495bSYour Name 808*5113495bSYour Name See field Mpdu_hdr_len_override_en. 809*5113495bSYour Name 810*5113495bSYour Name Hamilton v1 used bits [31:12] along with word 1 bits [29:26], [8:1] 811*5113495bSYour Name for 'HT_control_field_bw320.' 812*5113495bSYour Name <legal all> 813*5113495bSYour Name */ 814*5113495bSYour Name 815*5113495bSYour Name #define TX_QUEUE_EXTENSION_MPDU_HDR_LEN_OVERRIDE_VAL_OFFSET 0x0000000000000028 816*5113495bSYour Name #define TX_QUEUE_EXTENSION_MPDU_HDR_LEN_OVERRIDE_VAL_LSB 44 817*5113495bSYour Name #define TX_QUEUE_EXTENSION_MPDU_HDR_LEN_OVERRIDE_VAL_MSB 52 818*5113495bSYour Name #define TX_QUEUE_EXTENSION_MPDU_HDR_LEN_OVERRIDE_VAL_MASK 0x001ff00000000000 819*5113495bSYour Name 820*5113495bSYour Name 821*5113495bSYour Name /* Description RESERVED_11A 822*5113495bSYour Name 823*5113495bSYour Name Hamilton v1 used bits [31:12] along with word 1 bits [29:26], [8:1] 824*5113495bSYour Name for 'HT_control_field_bw320.' 825*5113495bSYour Name <legal 0> 826*5113495bSYour Name */ 827*5113495bSYour Name 828*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_11A_OFFSET 0x0000000000000028 829*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_11A_LSB 53 830*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_11A_MSB 63 831*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_11A_MASK 0xffe0000000000000 832*5113495bSYour Name 833*5113495bSYour Name 834*5113495bSYour Name /* Description HT_CONTROL_FIELD_BW320 835*5113495bSYour Name 836*5113495bSYour Name Field used by TXPCU when in TX_MPDU_START TLV field vht_control_present 837*5113495bSYour Name is set. 838*5113495bSYour Name 839*5113495bSYour Name Note that TXPCU might overwrite some fields. This is controlled 840*5113495bSYour Name with field HT_control_overwrite_enable 841*5113495bSYour Name 842*5113495bSYour Name See HT/HE control overwrite order NOTE after this table 843*5113495bSYour Name 844*5113495bSYour Name Hamilton v1 did not include this (and any subsequent) word. 845*5113495bSYour Name 846*5113495bSYour Name <legal all> 847*5113495bSYour Name */ 848*5113495bSYour Name 849*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW320_OFFSET 0x0000000000000030 850*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW320_LSB 0 851*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW320_MSB 31 852*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW320_MASK 0x00000000ffffffff 853*5113495bSYour Name 854*5113495bSYour Name 855*5113495bSYour Name /* Description FW2SW_INFO 856*5113495bSYour Name 857*5113495bSYour Name This field is provided by FW, to be logged via TXMON to 858*5113495bSYour Name host SW. It is transparent to HW. 859*5113495bSYour Name 860*5113495bSYour Name <legal all> 861*5113495bSYour Name */ 862*5113495bSYour Name 863*5113495bSYour Name #define TX_QUEUE_EXTENSION_FW2SW_INFO_OFFSET 0x0000000000000030 864*5113495bSYour Name #define TX_QUEUE_EXTENSION_FW2SW_INFO_LSB 32 865*5113495bSYour Name #define TX_QUEUE_EXTENSION_FW2SW_INFO_MSB 63 866*5113495bSYour Name #define TX_QUEUE_EXTENSION_FW2SW_INFO_MASK 0xffffffff00000000 867*5113495bSYour Name 868*5113495bSYour Name 869*5113495bSYour Name 870*5113495bSYour Name #endif // TX_QUEUE_EXTENSION 871