blob: ea83ae42b7ed3e113efb58f3f293a435b4b7b9f3 [file] [log] [blame]
/* Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#ifndef _TX_CBF_INFO_H_
#define _TX_CBF_INFO_H_
#if !defined(__ASSEMBLER__)
#endif
#define NUM_OF_DWORDS_TX_CBF_INFO 16
#define NUM_OF_QWORDS_TX_CBF_INFO 8
struct tx_cbf_info {
#ifndef WIFI_BIT_ORDER_BIG_ENDIAN
uint32_t sw_peer_id : 16, // [15:0]
pre_cbf_duration : 16; // [31:16]
uint32_t brpoll_info_valid : 1, // [0:0]
trigger_brpoll_info_valid : 1, // [1:1]
npda_info_11ac_valid : 1, // [2:2]
npda_info_11ax_valid : 1, // [3:3]
dot11ax_su_extended : 1, // [4:4]
bandwidth : 3, // [7:5]
brpoll_info : 8, // [15:8]
cbf_response_table_base_index : 8, // [23:16]
peer_index : 3, // [26:24]
pkt_type : 4, // [30:27]
txop_duration_all_ones : 1; // [31:31]
uint32_t trigger_brpoll_common_info_15_0 : 16, // [15:0]
trigger_brpoll_common_info_31_16 : 16; // [31:16]
uint32_t trigger_brpoll_user_info_15_0 : 16, // [15:0]
trigger_brpoll_user_info_31_16 : 16; // [31:16]
uint32_t addr1_31_0 : 32; // [31:0]
uint32_t addr1_47_32 : 16, // [15:0]
addr2_15_0 : 16; // [31:16]
uint32_t addr2_47_16 : 32; // [31:0]
uint32_t addr3_31_0 : 32; // [31:0]
uint32_t addr3_47_32 : 16, // [15:0]
sta_partial_aid : 11, // [26:16]
reserved_8a : 4, // [30:27]
cbf_resp_pwr_mgmt : 1; // [31:31]
uint32_t group_id : 6, // [5:0]
rssi_comb : 8, // [13:6]
reserved_9a : 2, // [15:14]
vht_ndpa_sta_info : 16; // [31:16]
uint32_t he_eht_sta_info_15_0 : 16, // [15:0]
he_eht_sta_info_31_16 : 16; // [31:16]
uint32_t dot11ax_received_format_indication : 1, // [0:0]
dot11ax_received_dl_ul_flag : 1, // [1:1]
dot11ax_received_bss_color_id : 6, // [7:2]
dot11ax_received_spatial_reuse : 4, // [11:8]
dot11ax_received_cp_size : 2, // [13:12]
dot11ax_received_ltf_size : 2, // [15:14]
dot11ax_received_coding : 1, // [16:16]
dot11ax_received_dcm : 1, // [17:17]
dot11ax_received_doppler_indication : 1, // [18:18]
dot11ax_received_ext_ru_size : 4, // [22:19]
dot11ax_dl_ul_flag : 1, // [23:23]
reserved_11a : 8; // [31:24]
uint32_t sw_response_frame_length : 16, // [15:0]
sw_response_tlv_from_crypto : 1, // [16:16]
wait_sifs_config_valid : 1, // [17:17]
wait_sifs : 2, // [19:18]
ranging : 1, // [20:20]
secure : 1, // [21:21]
tb_ranging_response_required : 2, // [23:22]
reserved_12a : 2, // [25:24]
u_sig_puncture_pattern_encoding : 6; // [31:26]
uint32_t dot11be_puncture_bitmap : 16, // [15:0]
dot11be_response : 1, // [16:16]
punctured_response : 1, // [17:17]
npda_info_11be_valid : 1, // [18:18]
eht_duplicate_mode : 2, // [20:19]
reserved_13a : 11; // [31:21]
uint32_t eht_sta_info_39_32 : 8, // [7:0]
reserved_14a : 24; // [31:8]
uint32_t tlv64_padding : 32; // [31:0]
#else
uint32_t pre_cbf_duration : 16, // [31:16]
sw_peer_id : 16; // [15:0]
uint32_t txop_duration_all_ones : 1, // [31:31]
pkt_type : 4, // [30:27]
peer_index : 3, // [26:24]
cbf_response_table_base_index : 8, // [23:16]
brpoll_info : 8, // [15:8]
bandwidth : 3, // [7:5]
dot11ax_su_extended : 1, // [4:4]
npda_info_11ax_valid : 1, // [3:3]
npda_info_11ac_valid : 1, // [2:2]
trigger_brpoll_info_valid : 1, // [1:1]
brpoll_info_valid : 1; // [0:0]
uint32_t trigger_brpoll_common_info_31_16 : 16, // [31:16]
trigger_brpoll_common_info_15_0 : 16; // [15:0]
uint32_t trigger_brpoll_user_info_31_16 : 16, // [31:16]
trigger_brpoll_user_info_15_0 : 16; // [15:0]
uint32_t addr1_31_0 : 32; // [31:0]
uint32_t addr2_15_0 : 16, // [31:16]
addr1_47_32 : 16; // [15:0]
uint32_t addr2_47_16 : 32; // [31:0]
uint32_t addr3_31_0 : 32; // [31:0]
uint32_t cbf_resp_pwr_mgmt : 1, // [31:31]
reserved_8a : 4, // [30:27]
sta_partial_aid : 11, // [26:16]
addr3_47_32 : 16; // [15:0]
uint32_t vht_ndpa_sta_info : 16, // [31:16]
reserved_9a : 2, // [15:14]
rssi_comb : 8, // [13:6]
group_id : 6; // [5:0]
uint32_t he_eht_sta_info_31_16 : 16, // [31:16]
he_eht_sta_info_15_0 : 16; // [15:0]
uint32_t reserved_11a : 8, // [31:24]
dot11ax_dl_ul_flag : 1, // [23:23]
dot11ax_received_ext_ru_size : 4, // [22:19]
dot11ax_received_doppler_indication : 1, // [18:18]
dot11ax_received_dcm : 1, // [17:17]
dot11ax_received_coding : 1, // [16:16]
dot11ax_received_ltf_size : 2, // [15:14]
dot11ax_received_cp_size : 2, // [13:12]
dot11ax_received_spatial_reuse : 4, // [11:8]
dot11ax_received_bss_color_id : 6, // [7:2]
dot11ax_received_dl_ul_flag : 1, // [1:1]
dot11ax_received_format_indication : 1; // [0:0]
uint32_t u_sig_puncture_pattern_encoding : 6, // [31:26]
reserved_12a : 2, // [25:24]
tb_ranging_response_required : 2, // [23:22]
secure : 1, // [21:21]
ranging : 1, // [20:20]
wait_sifs : 2, // [19:18]
wait_sifs_config_valid : 1, // [17:17]
sw_response_tlv_from_crypto : 1, // [16:16]
sw_response_frame_length : 16; // [15:0]
uint32_t reserved_13a : 11, // [31:21]
eht_duplicate_mode : 2, // [20:19]
npda_info_11be_valid : 1, // [18:18]
punctured_response : 1, // [17:17]
dot11be_response : 1, // [16:16]
dot11be_puncture_bitmap : 16; // [15:0]
uint32_t reserved_14a : 24, // [31:8]
eht_sta_info_39_32 : 8; // [7:0]
uint32_t tlv64_padding : 32; // [31:0]
#endif
};
/* Description SW_PEER_ID
An identifier indicating from which AP this CBF is being
requested. Helps in crosschecking that the MAC and PHY
are still in sync on what is stored in the cbf_mem_index
location.
<legal all>
*/
#define TX_CBF_INFO_SW_PEER_ID_OFFSET 0x0000000000000000
#define TX_CBF_INFO_SW_PEER_ID_LSB 0
#define TX_CBF_INFO_SW_PEER_ID_MSB 15
#define TX_CBF_INFO_SW_PEER_ID_MASK 0x000000000000ffff
/* Description PRE_CBF_DURATION
NPDA_duration_field - SIFS - NDP_pkt_time or BRPOLL_duration_field.
The cbf_duration_field = pre_cbf_duration - cbf_pkt_time
This will be the pre-NDP duration or pre-LMR duration in
case of .11az ranging (field Ranging below is set).
*/
#define TX_CBF_INFO_PRE_CBF_DURATION_OFFSET 0x0000000000000000
#define TX_CBF_INFO_PRE_CBF_DURATION_LSB 16
#define TX_CBF_INFO_PRE_CBF_DURATION_MSB 31
#define TX_CBF_INFO_PRE_CBF_DURATION_MASK 0x00000000ffff0000
/* Description BRPOLL_INFO_VALID
When set, legacy type brpoll info is valid. TXPCU will have
to trigger the PDG for response transmission
It will not be clear here what the PHY's response format
will be. Could be 11ac or 11ax. MAC is not 'remembering'
the format type, but PHY will know.
MAC will get to know based on the field Cbf_response_type
in the PHYRX_CBF_READ_REQUEST_ACK TLV.
<legal all>
*/
#define TX_CBF_INFO_BRPOLL_INFO_VALID_OFFSET 0x0000000000000000
#define TX_CBF_INFO_BRPOLL_INFO_VALID_LSB 32
#define TX_CBF_INFO_BRPOLL_INFO_VALID_MSB 32
#define TX_CBF_INFO_BRPOLL_INFO_VALID_MASK 0x0000000100000000
/* Description TRIGGER_BRPOLL_INFO_VALID
When set with Ranging = 0, trigger based brpoll info is
valid.
When set with Ranging = 1, .11az sounding trigger info is
valid for trigger-based ranging (TBR).
This also implies that RXPCU has already triggered the PDG
for response transmission
<legal all>
*/
#define TX_CBF_INFO_TRIGGER_BRPOLL_INFO_VALID_OFFSET 0x0000000000000000
#define TX_CBF_INFO_TRIGGER_BRPOLL_INFO_VALID_LSB 33
#define TX_CBF_INFO_TRIGGER_BRPOLL_INFO_VALID_MSB 33
#define TX_CBF_INFO_TRIGGER_BRPOLL_INFO_VALID_MASK 0x0000000200000000
/* Description NPDA_INFO_11AC_VALID
When set, 11ac_NDPA info is valid.
TXPCU will have to trigger the PDG for response transmission
PHY's response will be be in 11ac format
<legal all>
*/
#define TX_CBF_INFO_NPDA_INFO_11AC_VALID_OFFSET 0x0000000000000000
#define TX_CBF_INFO_NPDA_INFO_11AC_VALID_LSB 34
#define TX_CBF_INFO_NPDA_INFO_11AC_VALID_MSB 34
#define TX_CBF_INFO_NPDA_INFO_11AC_VALID_MASK 0x0000000400000000
/* Description NPDA_INFO_11AX_VALID
When set, 11ax_NDPA info is valid.
TXPCU will have to trigger the PDG for response transmission
PHY's response will be be in 11ax format
There is a separate Npda_info_11be_valid field near the
end of this TLV.
<legal all>
*/
#define TX_CBF_INFO_NPDA_INFO_11AX_VALID_OFFSET 0x0000000000000000
#define TX_CBF_INFO_NPDA_INFO_11AX_VALID_LSB 35
#define TX_CBF_INFO_NPDA_INFO_11AX_VALID_MSB 35
#define TX_CBF_INFO_NPDA_INFO_11AX_VALID_MASK 0x0000000800000000
/* Description DOT11AX_SU_EXTENDED
When set, frame was received in 11ax or 11be extended range
format
*/
#define TX_CBF_INFO_DOT11AX_SU_EXTENDED_OFFSET 0x0000000000000000
#define TX_CBF_INFO_DOT11AX_SU_EXTENDED_LSB 36
#define TX_CBF_INFO_DOT11AX_SU_EXTENDED_MSB 36
#define TX_CBF_INFO_DOT11AX_SU_EXTENDED_MASK 0x0000001000000000
/* Description BANDWIDTH
Field only valid when Brpoll_info_valid , Npda_info_11ac_valid
or Npda_info_11ax_valid is set.
The bandwidth that TXPCU uses to select the final response
table entry. That entry will contain all response info
for the CBF frame.
<enum 0 20_mhz>20 Mhz BW
<enum 1 40_mhz>40 Mhz BW
<enum 2 80_mhz>80 Mhz BW
<enum 3 160_mhz>160 Mhz BW
<enum 4 320_mhz>320 Mhz BW
<enum 5 240_mhz>240 Mhz BW
*/
#define TX_CBF_INFO_BANDWIDTH_OFFSET 0x0000000000000000
#define TX_CBF_INFO_BANDWIDTH_LSB 37
#define TX_CBF_INFO_BANDWIDTH_MSB 39
#define TX_CBF_INFO_BANDWIDTH_MASK 0x000000e000000000
/* Description BRPOLL_INFO
Field only valid when Brpoll_info_valid is set.
Feedback Segment retransmission feedback field from the
BRPOLL frame.
<legal all>
*/
#define TX_CBF_INFO_BRPOLL_INFO_OFFSET 0x0000000000000000
#define TX_CBF_INFO_BRPOLL_INFO_LSB 40
#define TX_CBF_INFO_BRPOLL_INFO_MSB 47
#define TX_CBF_INFO_BRPOLL_INFO_MASK 0x0000ff0000000000
/* Description CBF_RESPONSE_TABLE_BASE_INDEX
Field only valid when Brpoll_info_valid or
Npda_info_11ac_valid or Npda_info_11ax_valid is set.
When set to 0, use the register based lookup for determining
the CBF response rates.
When > 0, TXPCU shall use this response table index for
the 20 MHz response, and higher BW responses are in the
subsequent response table entries
This will be the LMR response table base index in case of
.11az ranging (field Ranging below is set).
<legal all>
*/
#define TX_CBF_INFO_CBF_RESPONSE_TABLE_BASE_INDEX_OFFSET 0x0000000000000000
#define TX_CBF_INFO_CBF_RESPONSE_TABLE_BASE_INDEX_LSB 48
#define TX_CBF_INFO_CBF_RESPONSE_TABLE_BASE_INDEX_MSB 55
#define TX_CBF_INFO_CBF_RESPONSE_TABLE_BASE_INDEX_MASK 0x00ff000000000000
/* Description PEER_INDEX
Field only valid when Brpoll_info_valid or
Npda_info_11ac_valid or Npda_info_11ax_valid is set.
Indicates the CBF peer index to be used by TxPCU to determine
the look-up table index for CBF response frames. RxPCU
populate this field from the peer_entry.
<legal 0-7>
*/
#define TX_CBF_INFO_PEER_INDEX_OFFSET 0x0000000000000000
#define TX_CBF_INFO_PEER_INDEX_LSB 56
#define TX_CBF_INFO_PEER_INDEX_MSB 58
#define TX_CBF_INFO_PEER_INDEX_MASK 0x0700000000000000
/* Description PKT_TYPE
Received Packet type:
<enum 0 dot11a>802.11a PPDU type
<enum 1 dot11b>802.11b PPDU type
<enum 2 dot11n_mm>802.11n Mixed Mode PPDU type
<enum 3 dot11ac>802.11ac PPDU type
<enum 4 dot11ax>802.11ax PPDU type
<enum 5 dot11ba>802.11ba (WUR) PPDU type
<enum 6 dot11be>802.11be PPDU type
<enum 7 dot11az>802.11az (ranging) PPDU type
<enum 8 dot11n_gf>802.11n Green Field PPDU type (unsupported
& aborted)
*/
#define TX_CBF_INFO_PKT_TYPE_OFFSET 0x0000000000000000
#define TX_CBF_INFO_PKT_TYPE_LSB 59
#define TX_CBF_INFO_PKT_TYPE_MSB 62
#define TX_CBF_INFO_PKT_TYPE_MASK 0x7800000000000000
/* Description TXOP_DURATION_ALL_ONES
When set, either the TXOP_DURATION of the received frame
was set to all 1s or there is a BSS color collision. The
TXOP_DURATION of the transmit response should be forced
to all 1s.
<legal all>
*/
#define TX_CBF_INFO_TXOP_DURATION_ALL_ONES_OFFSET 0x0000000000000000
#define TX_CBF_INFO_TXOP_DURATION_ALL_ONES_LSB 63
#define TX_CBF_INFO_TXOP_DURATION_ALL_ONES_MSB 63
#define TX_CBF_INFO_TXOP_DURATION_ALL_ONES_MASK 0x8000000000000000
/* Description TRIGGER_BRPOLL_COMMON_INFO_15_0
Field only valid when Trigger_Brpoll_info_valid is set.
Trigger based BRPOLL or .11az sounding (TBR) request info...
bits [15:0]
This is the variable common info field from the trigger
related to the BTPOLL. For field definition see IEEE spec
Note: final IEEE field might not need all these bits. If
so, the extra bits become reserved fields.
<legal all>
*/
#define TX_CBF_INFO_TRIGGER_BRPOLL_COMMON_INFO_15_0_OFFSET 0x0000000000000008
#define TX_CBF_INFO_TRIGGER_BRPOLL_COMMON_INFO_15_0_LSB 0
#define TX_CBF_INFO_TRIGGER_BRPOLL_COMMON_INFO_15_0_MSB 15
#define TX_CBF_INFO_TRIGGER_BRPOLL_COMMON_INFO_15_0_MASK 0x000000000000ffff
/* Description TRIGGER_BRPOLL_COMMON_INFO_31_16
Field only valid when Trigger_Brpoll_info_valid is set.
Trigger based BRPOLL or .11az sounding (TBR) request info...
bits [31:15]
This is the variable common info field from the trigger
related to the BTPOLL. For field definition see IEEE spec
Note: final IEEE field might not need all these bits. If
so, the extra bits become reserved fields.
<legal all>
*/
#define TX_CBF_INFO_TRIGGER_BRPOLL_COMMON_INFO_31_16_OFFSET 0x0000000000000008
#define TX_CBF_INFO_TRIGGER_BRPOLL_COMMON_INFO_31_16_LSB 16
#define TX_CBF_INFO_TRIGGER_BRPOLL_COMMON_INFO_31_16_MSB 31
#define TX_CBF_INFO_TRIGGER_BRPOLL_COMMON_INFO_31_16_MASK 0x00000000ffff0000
/* Description TRIGGER_BRPOLL_USER_INFO_15_0
Field only valid when Trigger_Brpoll_info_valid is set.
BRPOLL or .11az sounding (TBR) trigger Type dependent User
information bits [15:0]
This is the variable user info field from the trigger related
to the BTPOLL.
For field definition see IEEE spec
Note: final IEEE field might not need all these bits. If
so, the extra bits become reserved fields.
<legal all>
*/
#define TX_CBF_INFO_TRIGGER_BRPOLL_USER_INFO_15_0_OFFSET 0x0000000000000008
#define TX_CBF_INFO_TRIGGER_BRPOLL_USER_INFO_15_0_LSB 32
#define TX_CBF_INFO_TRIGGER_BRPOLL_USER_INFO_15_0_MSB 47
#define TX_CBF_INFO_TRIGGER_BRPOLL_USER_INFO_15_0_MASK 0x0000ffff00000000
/* Description TRIGGER_BRPOLL_USER_INFO_31_16
Field only valid when Trigger_Brpoll_info_valid is set.
BRPOLL or .11az sounding (TBR) trigger Type dependent User
information bits [31:16]
This is the variable user info field from the trigger related
to the BTPOLL.
For field definition see IEEE spec
Note: final IEEE field might not need all these bits. If
so, the extra bits become reserved fields.
<legal all>
*/
#define TX_CBF_INFO_TRIGGER_BRPOLL_USER_INFO_31_16_OFFSET 0x0000000000000008
#define TX_CBF_INFO_TRIGGER_BRPOLL_USER_INFO_31_16_LSB 48
#define TX_CBF_INFO_TRIGGER_BRPOLL_USER_INFO_31_16_MSB 63
#define TX_CBF_INFO_TRIGGER_BRPOLL_USER_INFO_31_16_MASK 0xffff000000000000
/* Description ADDR1_31_0
CBF address1[31:0]
*/
#define TX_CBF_INFO_ADDR1_31_0_OFFSET 0x0000000000000010
#define TX_CBF_INFO_ADDR1_31_0_LSB 0
#define TX_CBF_INFO_ADDR1_31_0_MSB 31
#define TX_CBF_INFO_ADDR1_31_0_MASK 0x00000000ffffffff
/* Description ADDR1_47_32
CBF address1[47:32]
*/
#define TX_CBF_INFO_ADDR1_47_32_OFFSET 0x0000000000000010
#define TX_CBF_INFO_ADDR1_47_32_LSB 32
#define TX_CBF_INFO_ADDR1_47_32_MSB 47
#define TX_CBF_INFO_ADDR1_47_32_MASK 0x0000ffff00000000
/* Description ADDR2_15_0
CBF address2[15:0]
*/
#define TX_CBF_INFO_ADDR2_15_0_OFFSET 0x0000000000000010
#define TX_CBF_INFO_ADDR2_15_0_LSB 48
#define TX_CBF_INFO_ADDR2_15_0_MSB 63
#define TX_CBF_INFO_ADDR2_15_0_MASK 0xffff000000000000
/* Description ADDR2_47_16
CBF address2[47:16]
*/
#define TX_CBF_INFO_ADDR2_47_16_OFFSET 0x0000000000000018
#define TX_CBF_INFO_ADDR2_47_16_LSB 0
#define TX_CBF_INFO_ADDR2_47_16_MSB 31
#define TX_CBF_INFO_ADDR2_47_16_MASK 0x00000000ffffffff
/* Description ADDR3_31_0
CBF address3[31:0]
*/
#define TX_CBF_INFO_ADDR3_31_0_OFFSET 0x0000000000000018
#define TX_CBF_INFO_ADDR3_31_0_LSB 32
#define TX_CBF_INFO_ADDR3_31_0_MSB 63
#define TX_CBF_INFO_ADDR3_31_0_MASK 0xffffffff00000000
/* Description ADDR3_47_32
CBF address3[47:16]
*/
#define TX_CBF_INFO_ADDR3_47_32_OFFSET 0x0000000000000020
#define TX_CBF_INFO_ADDR3_47_32_LSB 0
#define TX_CBF_INFO_ADDR3_47_32_MSB 15
#define TX_CBF_INFO_ADDR3_47_32_MASK 0x000000000000ffff
/* Description STA_PARTIAL_AID
Partial AID field
*/
#define TX_CBF_INFO_STA_PARTIAL_AID_OFFSET 0x0000000000000020
#define TX_CBF_INFO_STA_PARTIAL_AID_LSB 16
#define TX_CBF_INFO_STA_PARTIAL_AID_MSB 26
#define TX_CBF_INFO_STA_PARTIAL_AID_MASK 0x0000000007ff0000
/* Description RESERVED_8A
<legal 0>
*/
#define TX_CBF_INFO_RESERVED_8A_OFFSET 0x0000000000000020
#define TX_CBF_INFO_RESERVED_8A_LSB 27
#define TX_CBF_INFO_RESERVED_8A_MSB 30
#define TX_CBF_INFO_RESERVED_8A_MASK 0x0000000078000000
/* Description CBF_RESP_PWR_MGMT
Power management bit of the response CBF frame or LMR frame
in case of .11az ranging (field Ranging below is set).
*/
#define TX_CBF_INFO_CBF_RESP_PWR_MGMT_OFFSET 0x0000000000000020
#define TX_CBF_INFO_CBF_RESP_PWR_MGMT_LSB 31
#define TX_CBF_INFO_CBF_RESP_PWR_MGMT_MSB 31
#define TX_CBF_INFO_CBF_RESP_PWR_MGMT_MASK 0x0000000080000000
/* Description GROUP_ID
Group ID field
*/
#define TX_CBF_INFO_GROUP_ID_OFFSET 0x0000000000000020
#define TX_CBF_INFO_GROUP_ID_LSB 32
#define TX_CBF_INFO_GROUP_ID_MSB 37
#define TX_CBF_INFO_GROUP_ID_MASK 0x0000003f00000000
/* Description RSSI_COMB
The combined RSSI of the legacy STF of RX PPDU of all active
chains and bandwidths.
*/
#define TX_CBF_INFO_RSSI_COMB_OFFSET 0x0000000000000020
#define TX_CBF_INFO_RSSI_COMB_LSB 38
#define TX_CBF_INFO_RSSI_COMB_MSB 45
#define TX_CBF_INFO_RSSI_COMB_MASK 0x00003fc000000000
/* Description RESERVED_9A
Bit 14: force_extra_symbol:
Set to 1 to force an extra OFDM symbol (or symbols) even
if the PPDU encoding process does not result in an extra
OFDM symbol (or symbols)
Not supported in Hamilton v1
<legal 0-1>
*/
#define TX_CBF_INFO_RESERVED_9A_OFFSET 0x0000000000000020
#define TX_CBF_INFO_RESERVED_9A_LSB 46
#define TX_CBF_INFO_RESERVED_9A_MSB 47
#define TX_CBF_INFO_RESERVED_9A_MASK 0x0000c00000000000
/* Description VHT_NDPA_STA_INFO
Field only valid when Npda_info_11ac_valid is set
The complete (RAW) STA INFO field that MAC extracted from
the VHT NDPA frame.
Put here for backup reasons in case last moment fields got
added that PHY needs to be able to interpret
This field contains
{
VHT STA_INFO.NC_INDEX[2:0],
VHT STA_INFO.FEEDBACK_TYPE,
VHT STA_INFO.AID12[11:0]
}
<legal all>
*/
#define TX_CBF_INFO_VHT_NDPA_STA_INFO_OFFSET 0x0000000000000020
#define TX_CBF_INFO_VHT_NDPA_STA_INFO_LSB 48
#define TX_CBF_INFO_VHT_NDPA_STA_INFO_MSB 63
#define TX_CBF_INFO_VHT_NDPA_STA_INFO_MASK 0xffff000000000000
/* Description HE_EHT_STA_INFO_15_0
Field only valid when Npda_info_11ax_valid or Npda_info_11be_valid
is set
The first 16 bits of the RAW HE or EHT STA INFO field in
the NDPA frame
Put here for backup reasons in case last moment fields got
added that PHY needs to be able to interpret
<legal all>
*/
#define TX_CBF_INFO_HE_EHT_STA_INFO_15_0_OFFSET 0x0000000000000028
#define TX_CBF_INFO_HE_EHT_STA_INFO_15_0_LSB 0
#define TX_CBF_INFO_HE_EHT_STA_INFO_15_0_MSB 15
#define TX_CBF_INFO_HE_EHT_STA_INFO_15_0_MASK 0x000000000000ffff
/* Description HE_EHT_STA_INFO_31_16
Field only valid when Npda_info_11ax_valid or Npda_info_11be_valid
is set
The second 16 bits of the RAW HE or EHT STA INFO field in
the NDPA frame
Put here for backup reasons in case last moment fields got
added that PHY needs to be able to interpret
There is an EHT_STA_INFO_39_32 field near the end of this
TLV.
<legal all>
*/
#define TX_CBF_INFO_HE_EHT_STA_INFO_31_16_OFFSET 0x0000000000000028
#define TX_CBF_INFO_HE_EHT_STA_INFO_31_16_LSB 16
#define TX_CBF_INFO_HE_EHT_STA_INFO_31_16_MSB 31
#define TX_CBF_INFO_HE_EHT_STA_INFO_31_16_MASK 0x00000000ffff0000
/* Description DOT11AX_RECEIVED_FORMAT_INDICATION
This field is only valid for pkt_type == 11ax
Format_Indication from the received frame.
<enum 0 HE_SIGA_FORMAT_HE_TRIG>
<enum 1 HE_SIGA_FORMAT_SU_OR_EXT_SU>
<legal all>
*/
#define TX_CBF_INFO_DOT11AX_RECEIVED_FORMAT_INDICATION_OFFSET 0x0000000000000028
#define TX_CBF_INFO_DOT11AX_RECEIVED_FORMAT_INDICATION_LSB 32
#define TX_CBF_INFO_DOT11AX_RECEIVED_FORMAT_INDICATION_MSB 32
#define TX_CBF_INFO_DOT11AX_RECEIVED_FORMAT_INDICATION_MASK 0x0000000100000000
/* Description DOT11AX_RECEIVED_DL_UL_FLAG
This field is only valid for pkt_type == 11ax
DL_UL_flag from the received frame
Differentiates between DL and UL transmission
<enum 0 DL_UL_FLAG_IS_DL_OR_TDLS>
<enum 1 DL_UL_FLAG_IS_UL>
<legal all>
*/
#define TX_CBF_INFO_DOT11AX_RECEIVED_DL_UL_FLAG_OFFSET 0x0000000000000028
#define TX_CBF_INFO_DOT11AX_RECEIVED_DL_UL_FLAG_LSB 33
#define TX_CBF_INFO_DOT11AX_RECEIVED_DL_UL_FLAG_MSB 33
#define TX_CBF_INFO_DOT11AX_RECEIVED_DL_UL_FLAG_MASK 0x0000000200000000
/* Description DOT11AX_RECEIVED_BSS_COLOR_ID
This field is only valid for pkt_type == 11ax
BSS_color_id from the received frame
<legal all>
*/
#define TX_CBF_INFO_DOT11AX_RECEIVED_BSS_COLOR_ID_OFFSET 0x0000000000000028
#define TX_CBF_INFO_DOT11AX_RECEIVED_BSS_COLOR_ID_LSB 34
#define TX_CBF_INFO_DOT11AX_RECEIVED_BSS_COLOR_ID_MSB 39
#define TX_CBF_INFO_DOT11AX_RECEIVED_BSS_COLOR_ID_MASK 0x000000fc00000000
/* Description DOT11AX_RECEIVED_SPATIAL_REUSE
This field is only valid for pkt_type == 11ax
Spatial reuse from the received frame
<legal all>
*/
#define TX_CBF_INFO_DOT11AX_RECEIVED_SPATIAL_REUSE_OFFSET 0x0000000000000028
#define TX_CBF_INFO_DOT11AX_RECEIVED_SPATIAL_REUSE_LSB 40
#define TX_CBF_INFO_DOT11AX_RECEIVED_SPATIAL_REUSE_MSB 43
#define TX_CBF_INFO_DOT11AX_RECEIVED_SPATIAL_REUSE_MASK 0x00000f0000000000
/* Description DOT11AX_RECEIVED_CP_SIZE
This field is only valid for pkt_type == 11ax
CP size of the received frame
<enum 0 0_8_us_sgi > Legacy normal GI. Can also be used
for HE
<enum 1 0_4_us_sgi > Legacy short GI. Can also be used
for HE
<enum 2 1_6_us_sgi > HE related GI
<enum 3 3_2_us_sgi > HE related GI
<legal 0 - 3>
*/
#define TX_CBF_INFO_DOT11AX_RECEIVED_CP_SIZE_OFFSET 0x0000000000000028
#define TX_CBF_INFO_DOT11AX_RECEIVED_CP_SIZE_LSB 44
#define TX_CBF_INFO_DOT11AX_RECEIVED_CP_SIZE_MSB 45
#define TX_CBF_INFO_DOT11AX_RECEIVED_CP_SIZE_MASK 0x0000300000000000
/* Description DOT11AX_RECEIVED_LTF_SIZE
This field is only valid for pkt_type == 11ax
LTF size of the received frame
<enum 0 ltf_1x >
<enum 1 ltf_2x >
<enum 2 ltf_4x >
<legal 0 - 2>
*/
#define TX_CBF_INFO_DOT11AX_RECEIVED_LTF_SIZE_OFFSET 0x0000000000000028
#define TX_CBF_INFO_DOT11AX_RECEIVED_LTF_SIZE_LSB 46
#define TX_CBF_INFO_DOT11AX_RECEIVED_LTF_SIZE_MSB 47
#define TX_CBF_INFO_DOT11AX_RECEIVED_LTF_SIZE_MASK 0x0000c00000000000
/* Description DOT11AX_RECEIVED_CODING
This field is only valid for pkt_type == 11ax
Coding from the received frame
<legal all>
*/
#define TX_CBF_INFO_DOT11AX_RECEIVED_CODING_OFFSET 0x0000000000000028
#define TX_CBF_INFO_DOT11AX_RECEIVED_CODING_LSB 48
#define TX_CBF_INFO_DOT11AX_RECEIVED_CODING_MSB 48
#define TX_CBF_INFO_DOT11AX_RECEIVED_CODING_MASK 0x0001000000000000
/* Description DOT11AX_RECEIVED_DCM
This field is only valid for pkt_type == 11ax
DCM from the received frame
<legal all>
*/
#define TX_CBF_INFO_DOT11AX_RECEIVED_DCM_OFFSET 0x0000000000000028
#define TX_CBF_INFO_DOT11AX_RECEIVED_DCM_LSB 49
#define TX_CBF_INFO_DOT11AX_RECEIVED_DCM_MSB 49
#define TX_CBF_INFO_DOT11AX_RECEIVED_DCM_MASK 0x0002000000000000
/* Description DOT11AX_RECEIVED_DOPPLER_INDICATION
This field is only valid for pkt_type == 11ax
Doppler_indication from the received frame
<legal all>
*/
#define TX_CBF_INFO_DOT11AX_RECEIVED_DOPPLER_INDICATION_OFFSET 0x0000000000000028
#define TX_CBF_INFO_DOT11AX_RECEIVED_DOPPLER_INDICATION_LSB 50
#define TX_CBF_INFO_DOT11AX_RECEIVED_DOPPLER_INDICATION_MSB 50
#define TX_CBF_INFO_DOT11AX_RECEIVED_DOPPLER_INDICATION_MASK 0x0004000000000000
/* Description DOT11AX_RECEIVED_EXT_RU_SIZE
This field is only valid for pkt_type == 11ax OR pkt_type
== 11be AND dot11ax_su_extended is set
The number of (basic) RUs in this extended range reception
RXPCU gets this from the received HE_SIG_A
<legal all>
*/
#define TX_CBF_INFO_DOT11AX_RECEIVED_EXT_RU_SIZE_OFFSET 0x0000000000000028
#define TX_CBF_INFO_DOT11AX_RECEIVED_EXT_RU_SIZE_LSB 51
#define TX_CBF_INFO_DOT11AX_RECEIVED_EXT_RU_SIZE_MSB 54
#define TX_CBF_INFO_DOT11AX_RECEIVED_EXT_RU_SIZE_MASK 0x0078000000000000
/* Description DOT11AX_DL_UL_FLAG
This field is only valid for pkt_type == 11ax
DL_UL_flag to be used for response frame sent to this device.
Differentiates between DL and UL transmission
<enum 0 DL_UL_FLAG_IS_DL_OR_TDLS>
<enum 1 DL_UL_FLAG_IS_UL>
Note: this setting can also come from response look-up table
in TXPCU...
The selection is SW programmable
<legal all>
*/
#define TX_CBF_INFO_DOT11AX_DL_UL_FLAG_OFFSET 0x0000000000000028
#define TX_CBF_INFO_DOT11AX_DL_UL_FLAG_LSB 55
#define TX_CBF_INFO_DOT11AX_DL_UL_FLAG_MSB 55
#define TX_CBF_INFO_DOT11AX_DL_UL_FLAG_MASK 0x0080000000000000
/* Description RESERVED_11A
<legal 0>
*/
#define TX_CBF_INFO_RESERVED_11A_OFFSET 0x0000000000000028
#define TX_CBF_INFO_RESERVED_11A_LSB 56
#define TX_CBF_INFO_RESERVED_11A_MSB 63
#define TX_CBF_INFO_RESERVED_11A_MASK 0xff00000000000000
/* Description SW_RESPONSE_FRAME_LENGTH
Field only valid when SW_Response_tlv_from_crypto is set
This is the size of the frame (in bytes) that SW will generate
as the response frame. In those scenarios where TXPCU needs
to indicate a frame_length in the PDG_RESPONSE TLV, this
will be the value that TXPCU needs to use.
Note that this length value includes the FCS.
<legal all>
*/
#define TX_CBF_INFO_SW_RESPONSE_FRAME_LENGTH_OFFSET 0x0000000000000030
#define TX_CBF_INFO_SW_RESPONSE_FRAME_LENGTH_LSB 0
#define TX_CBF_INFO_SW_RESPONSE_FRAME_LENGTH_MSB 15
#define TX_CBF_INFO_SW_RESPONSE_FRAME_LENGTH_MASK 0x000000000000ffff
/* Description SW_RESPONSE_TLV_FROM_CRYPTO
Field can only be set by MAC mitigation logic
The idea is here that normally TXPCU generates the response
frame.
But as a backup scenario, in case of a last moment some
CBF frame BA format change happens or there is some other
issue, the CBF frame could be fully generated in the MAC
micro CPU and pushed into TXPCU through the Crypto - TXPCU
TLV interface.
From TXPCU perspective, all interaction with PDG remains
exactly the same, accept that the frame length is now coming
from field SW_Response_frame_length and the response frame
is pushed into TXPCU over the CRYPTO - TXPCU TLV interface
When set, this feature kick in
When clear, this feature is not enabled
<legal all>
*/
#define TX_CBF_INFO_SW_RESPONSE_TLV_FROM_CRYPTO_OFFSET 0x0000000000000030
#define TX_CBF_INFO_SW_RESPONSE_TLV_FROM_CRYPTO_LSB 16
#define TX_CBF_INFO_SW_RESPONSE_TLV_FROM_CRYPTO_MSB 16
#define TX_CBF_INFO_SW_RESPONSE_TLV_FROM_CRYPTO_MASK 0x0000000000010000
/* Description WAIT_SIFS_CONFIG_VALID
When set, TXPCU shall follow the wait_sifs configuration.
<legal all>
*/
#define TX_CBF_INFO_WAIT_SIFS_CONFIG_VALID_OFFSET 0x0000000000000030
#define TX_CBF_INFO_WAIT_SIFS_CONFIG_VALID_LSB 17
#define TX_CBF_INFO_WAIT_SIFS_CONFIG_VALID_MSB 17
#define TX_CBF_INFO_WAIT_SIFS_CONFIG_VALID_MASK 0x0000000000020000
/* Description WAIT_SIFS
Indicates to the TXPCU how precise the SIFS the response
timing shall be...
The configuration for this is coming from SW programmable
registers in RXPCU, where RXPCU shall allow SW to program
different settings for the following scenarios: BRPOLL,
NDPA-NDP, 11ax trigger frame based BRPOLL
<enum 0 NO_SIFS_TIMING> Transmission shall start with the
normal delay in PHY after receiving this notification
<enum 1 SIFS_TIMING_DESIRED> Transmission shall be made
at the SIFS boundary. If shall never start before SIFS boundary,
but if it a little later, it is not ideal and should be
flagged, but transmission shall not be aborted.
<enum 2 SIFS_TIMING_MANDATED> Transmission shall be made
at exactly SIFS boundary. If this notification is received
by the PHY after SIFS boundary already passed, the PHY
shall abort the transmission
<legal 0-2>
*/
#define TX_CBF_INFO_WAIT_SIFS_OFFSET 0x0000000000000030
#define TX_CBF_INFO_WAIT_SIFS_LSB 18
#define TX_CBF_INFO_WAIT_SIFS_MSB 19
#define TX_CBF_INFO_WAIT_SIFS_MASK 0x00000000000c0000
/* Description RANGING
0: This TLV is generated for Tx CBF generation.
1: TLV is generated due to an active ranging session (.11az).
<legal all>
*/
#define TX_CBF_INFO_RANGING_OFFSET 0x0000000000000030
#define TX_CBF_INFO_RANGING_LSB 20
#define TX_CBF_INFO_RANGING_MSB 20
#define TX_CBF_INFO_RANGING_MASK 0x0000000000100000
/* Description SECURE
Field only valid if Ranging is set to 1.
0: Current ranging session is non-secure.
1: Current ranging session is secure.
<legal all>
*/
#define TX_CBF_INFO_SECURE_OFFSET 0x0000000000000030
#define TX_CBF_INFO_SECURE_LSB 21
#define TX_CBF_INFO_SECURE_MSB 21
#define TX_CBF_INFO_SECURE_MASK 0x0000000000200000
/* Description TB_RANGING_RESPONSE_REQUIRED
Field only valid in case of TB Ranging
<enum 0 No_TB_Ranging_Resp>
<enum 1 CTS2S_Resp_to_TF_poll > DO NOT USE.
<enum 2 LMR_Resp_to_TF_report> DO NOT USE.
<enum 3 NDP_Resp_to_TF_sound> TXPCU to generate TB ranging
NDP in response
<legal 0-3>
*/
#define TX_CBF_INFO_TB_RANGING_RESPONSE_REQUIRED_OFFSET 0x0000000000000030
#define TX_CBF_INFO_TB_RANGING_RESPONSE_REQUIRED_LSB 22
#define TX_CBF_INFO_TB_RANGING_RESPONSE_REQUIRED_MSB 23
#define TX_CBF_INFO_TB_RANGING_RESPONSE_REQUIRED_MASK 0x0000000000c00000
/* Description RESERVED_12A
<legal 0>
*/
#define TX_CBF_INFO_RESERVED_12A_OFFSET 0x0000000000000030
#define TX_CBF_INFO_RESERVED_12A_LSB 24
#define TX_CBF_INFO_RESERVED_12A_MSB 25
#define TX_CBF_INFO_RESERVED_12A_MASK 0x0000000003000000
/* Description U_SIG_PUNCTURE_PATTERN_ENCODING
This field is only valid if Punctured_response is set
The 6-bit value used in U-SIG and/or EHT-SIG Common field
for the puncture pattern
<legal 0-29>
*/
#define TX_CBF_INFO_U_SIG_PUNCTURE_PATTERN_ENCODING_OFFSET 0x0000000000000030
#define TX_CBF_INFO_U_SIG_PUNCTURE_PATTERN_ENCODING_LSB 26
#define TX_CBF_INFO_U_SIG_PUNCTURE_PATTERN_ENCODING_MSB 31
#define TX_CBF_INFO_U_SIG_PUNCTURE_PATTERN_ENCODING_MASK 0x00000000fc000000
/* Description DOT11BE_PUNCTURE_BITMAP
This field is only valid if Punctured_response is set
The bitmap of 20 MHz sub-bands valid in this EHT reception
RXPCU gets this from the received U-SIG and/or EHT-SIG via
PHY microcode.
<legal all>
*/
#define TX_CBF_INFO_DOT11BE_PUNCTURE_BITMAP_OFFSET 0x0000000000000030
#define TX_CBF_INFO_DOT11BE_PUNCTURE_BITMAP_LSB 32
#define TX_CBF_INFO_DOT11BE_PUNCTURE_BITMAP_MSB 47
#define TX_CBF_INFO_DOT11BE_PUNCTURE_BITMAP_MASK 0x0000ffff00000000
/* Description DOT11BE_RESPONSE
Indicates that the peer supports .11be response protocols,
e.g. .11be BW indication in scrambler seed, .11be dynamic
BW procedure, punctured response, etc.
*/
#define TX_CBF_INFO_DOT11BE_RESPONSE_OFFSET 0x0000000000000030
#define TX_CBF_INFO_DOT11BE_RESPONSE_LSB 48
#define TX_CBF_INFO_DOT11BE_RESPONSE_MSB 48
#define TX_CBF_INFO_DOT11BE_RESPONSE_MASK 0x0001000000000000
/* Description PUNCTURED_RESPONSE
Field only valid if Dot11be_response is set
Indicates that the response shall use preamble puncturing
*/
#define TX_CBF_INFO_PUNCTURED_RESPONSE_OFFSET 0x0000000000000030
#define TX_CBF_INFO_PUNCTURED_RESPONSE_LSB 49
#define TX_CBF_INFO_PUNCTURED_RESPONSE_MSB 49
#define TX_CBF_INFO_PUNCTURED_RESPONSE_MASK 0x0002000000000000
/* Description NPDA_INFO_11BE_VALID
When set, 11be_NDPA info is valid.
TXPCU will have to trigger the PDG for response transmission
.
PHY's response will be in 11be format.
<legal all>
*/
#define TX_CBF_INFO_NPDA_INFO_11BE_VALID_OFFSET 0x0000000000000030
#define TX_CBF_INFO_NPDA_INFO_11BE_VALID_LSB 50
#define TX_CBF_INFO_NPDA_INFO_11BE_VALID_MSB 50
#define TX_CBF_INFO_NPDA_INFO_11BE_VALID_MASK 0x0004000000000000
/* Description EHT_DUPLICATE_MODE
Field only valid for pkt_type == 11be
Indicates EHT duplicate modulation
<enum 0 eht_no_duplicate>
<enum 1 eht_2x_duplicate>
<enum 2 eht_4x_duplicate>
<legal 0-2>
*/
#define TX_CBF_INFO_EHT_DUPLICATE_MODE_OFFSET 0x0000000000000030
#define TX_CBF_INFO_EHT_DUPLICATE_MODE_LSB 51
#define TX_CBF_INFO_EHT_DUPLICATE_MODE_MSB 52
#define TX_CBF_INFO_EHT_DUPLICATE_MODE_MASK 0x0018000000000000
/* Description RESERVED_13A
<legal 0>
*/
#define TX_CBF_INFO_RESERVED_13A_OFFSET 0x0000000000000030
#define TX_CBF_INFO_RESERVED_13A_LSB 53
#define TX_CBF_INFO_RESERVED_13A_MSB 63
#define TX_CBF_INFO_RESERVED_13A_MASK 0xffe0000000000000
/* Description EHT_STA_INFO_39_32
Field only valid when Npda_info_11be_valid is set
The fifth 8 bits of the RAW EHT STA INFO field in the NDPA
frame
*/
#define TX_CBF_INFO_EHT_STA_INFO_39_32_OFFSET 0x0000000000000038
#define TX_CBF_INFO_EHT_STA_INFO_39_32_LSB 0
#define TX_CBF_INFO_EHT_STA_INFO_39_32_MSB 7
#define TX_CBF_INFO_EHT_STA_INFO_39_32_MASK 0x00000000000000ff
/* Description RESERVED_14A
Can be used for future expansion
<legal 0>
*/
#define TX_CBF_INFO_RESERVED_14A_OFFSET 0x0000000000000038
#define TX_CBF_INFO_RESERVED_14A_LSB 8
#define TX_CBF_INFO_RESERVED_14A_MSB 31
#define TX_CBF_INFO_RESERVED_14A_MASK 0x00000000ffffff00
/* Description TLV64_PADDING
Automatic DWORD padding inserted while converting TLV32
to TLV64 for 64 bit ARCH
<legal 0>
*/
#define TX_CBF_INFO_TLV64_PADDING_OFFSET 0x0000000000000038
#define TX_CBF_INFO_TLV64_PADDING_LSB 32
#define TX_CBF_INFO_TLV64_PADDING_MSB 63
#define TX_CBF_INFO_TLV64_PADDING_MASK 0xffffffff00000000
#endif // TX_CBF_INFO