Files
android_kernel_samsung_sm86…/hw/qcn6432/mactx_phy_desc.h
Adwait Nayak c3fae0027c fw-api: Add qcnn6432 target header files to fw-api project
Added qcn6432 target header files based on E3R47 under qcn6432 to make fw-api
project compatible to host.

Change-Id: I3bdf6298281323f4f0fe75aed04db93cd698ee1f
CRs-Fixed: 3463782
2023-04-20 04:58:59 -07:00

1080 lines
46 KiB
C

/*
* Copyright (c) 2023 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 _MACTX_PHY_DESC_H_
#define _MACTX_PHY_DESC_H_
#if !defined(__ASSEMBLER__)
#endif
#define NUM_OF_DWORDS_MACTX_PHY_DESC 4
#define NUM_OF_QWORDS_MACTX_PHY_DESC 2
struct mactx_phy_desc {
#ifndef WIFI_BIT_ORDER_BIG_ENDIAN
uint32_t reserved_0a : 16, // [15:0]
bf_type : 2, // [17:16]
wait_sifs : 2, // [19:18]
dot11b_preamble_type : 1, // [20:20]
pkt_type : 4, // [24:21]
su_or_mu : 2, // [26:25]
mu_type : 1, // [27:27]
bandwidth : 3, // [30:28]
channel_capture : 1; // [31:31]
uint32_t mcs : 4, // [3:0]
global_ofdma_mimo_enable : 1, // [4:4]
reserved_1a : 1, // [5:5]
stbc : 1, // [6:6]
dot11ax_su_extended : 1, // [7:7]
dot11ax_trigger_frame_embedded : 1, // [8:8]
tx_pwr_shared : 8, // [16:9]
tx_pwr_unshared : 8, // [24:17]
measure_power : 1, // [25:25]
tpc_glut_self_cal : 1, // [26:26]
back_to_back_transmission_expected : 1, // [27:27]
heavy_clip_nss : 3, // [30:28]
txbf_per_packet_no_csd_no_walsh : 1; // [31:31]
uint32_t ndp : 2, // [1:0]
ul_flag : 1, // [2:2]
triggered : 1, // [3:3]
ap_pkt_bw : 3, // [6:4]
ru_position_start : 8, // [14:7]
pcu_ppdu_setup_start_reason : 3, // [17:15]
tlv_source : 1, // [18:18]
reserved_2a : 2, // [20:19]
nss : 3, // [23:21]
stream_offset : 3, // [26:24]
reserved_2b : 2, // [28:27]
clpc_enable : 1, // [29:29]
mu_ndp : 1, // [30:30]
response_expected : 1; // [31:31]
uint32_t rx_chain_mask : 8, // [7:0]
rx_chain_mask_valid : 1, // [8:8]
ant_sel_valid : 1, // [9:9]
ant_sel : 1, // [10:10]
cp_setting : 2, // [12:11]
he_ppdu_subtype : 2, // [14:13]
active_channel : 3, // [17:15]
generate_phyrx_tx_start_timing : 1, // [18:18]
ltf_size : 2, // [20:19]
ru_size_updated_v2 : 4, // [24:21]
reserved_3c : 1, // [25:25]
u_sig_puncture_pattern_encoding : 6; // [31:26]
#else
uint32_t channel_capture : 1, // [31:31]
bandwidth : 3, // [30:28]
mu_type : 1, // [27:27]
su_or_mu : 2, // [26:25]
pkt_type : 4, // [24:21]
dot11b_preamble_type : 1, // [20:20]
wait_sifs : 2, // [19:18]
bf_type : 2, // [17:16]
reserved_0a : 16; // [15:0]
uint32_t txbf_per_packet_no_csd_no_walsh : 1, // [31:31]
heavy_clip_nss : 3, // [30:28]
back_to_back_transmission_expected : 1, // [27:27]
tpc_glut_self_cal : 1, // [26:26]
measure_power : 1, // [25:25]
tx_pwr_unshared : 8, // [24:17]
tx_pwr_shared : 8, // [16:9]
dot11ax_trigger_frame_embedded : 1, // [8:8]
dot11ax_su_extended : 1, // [7:7]
stbc : 1, // [6:6]
reserved_1a : 1, // [5:5]
global_ofdma_mimo_enable : 1, // [4:4]
mcs : 4; // [3:0]
uint32_t response_expected : 1, // [31:31]
mu_ndp : 1, // [30:30]
clpc_enable : 1, // [29:29]
reserved_2b : 2, // [28:27]
stream_offset : 3, // [26:24]
nss : 3, // [23:21]
reserved_2a : 2, // [20:19]
tlv_source : 1, // [18:18]
pcu_ppdu_setup_start_reason : 3, // [17:15]
ru_position_start : 8, // [14:7]
ap_pkt_bw : 3, // [6:4]
triggered : 1, // [3:3]
ul_flag : 1, // [2:2]
ndp : 2; // [1:0]
uint32_t u_sig_puncture_pattern_encoding : 6, // [31:26]
reserved_3c : 1, // [25:25]
ru_size_updated_v2 : 4, // [24:21]
ltf_size : 2, // [20:19]
generate_phyrx_tx_start_timing : 1, // [18:18]
active_channel : 3, // [17:15]
he_ppdu_subtype : 2, // [14:13]
cp_setting : 2, // [12:11]
ant_sel : 1, // [10:10]
ant_sel_valid : 1, // [9:9]
rx_chain_mask_valid : 1, // [8:8]
rx_chain_mask : 8; // [7:0]
#endif
};
/* Description RESERVED_0A
<legal 0>
*/
#define MACTX_PHY_DESC_RESERVED_0A_OFFSET 0x0000000000000000
#define MACTX_PHY_DESC_RESERVED_0A_LSB 0
#define MACTX_PHY_DESC_RESERVED_0A_MSB 15
#define MACTX_PHY_DESC_RESERVED_0A_MASK 0x000000000000ffff
/* Description BF_TYPE
<enum 0 NO_BF> Transmit a non-beamformed packet. NOTE
that MAC might have send MACTX_BF_PARAMS... related TLVs
to the PHY for this upcoming transmission, but if this
field indicates NO_BF, MAC_TX has for some reason decided
at the last moment that actual beamform transmission shall
not happen anymore...
<enum 1 LEGACY_BF> Transmit a legacy beamformed packet.
This means beamforming starts at the L-STF. The possible
preamble formats are 11a, 11n mixed mode and 11ac. This
is used to support legacy implicit beamforming.
<enum 2 SU_BF> Transmit a single-user beamformed packet
starting at the HT-STF or VHT-STF.
<enum 3 MU_BF> Transmit a multi-user beamformed packet
starting at the VHT-STF. In case of an MU transmission,
where maybe not all users are being transmitted in a 'beamformed'
way, but at least one is, this e_num setting will be used
as well
<legal all>
*/
#define MACTX_PHY_DESC_BF_TYPE_OFFSET 0x0000000000000000
#define MACTX_PHY_DESC_BF_TYPE_LSB 16
#define MACTX_PHY_DESC_BF_TYPE_MSB 17
#define MACTX_PHY_DESC_BF_TYPE_MASK 0x0000000000030000
/* Description WAIT_SIFS
This bit is evaluated by the PHY TX to determine if this
transmission start on the air needs to be exactly SIFS
aligned compared to the end of the previous reception or
previous transmission.
This feature is typically required for Triggered UL response
transmissions, where SIFS accuracy is really required.
For RTT this is also usefull, but not absolutely needed.
This field is filled in by TXPCU.
<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 MACTX_PHY_DESC_WAIT_SIFS_OFFSET 0x0000000000000000
#define MACTX_PHY_DESC_WAIT_SIFS_LSB 18
#define MACTX_PHY_DESC_WAIT_SIFS_MSB 19
#define MACTX_PHY_DESC_WAIT_SIFS_MASK 0x00000000000c0000
/* Description DOT11B_PREAMBLE_TYPE
Valid for 802.11b packets only.
<enum 0 short_preamble>
<enum 1 long_preamble>
<legal all>
*/
#define MACTX_PHY_DESC_DOT11B_PREAMBLE_TYPE_OFFSET 0x0000000000000000
#define MACTX_PHY_DESC_DOT11B_PREAMBLE_TYPE_LSB 20
#define MACTX_PHY_DESC_DOT11B_PREAMBLE_TYPE_MSB 20
#define MACTX_PHY_DESC_DOT11B_PREAMBLE_TYPE_MASK 0x0000000000100000
/* Description PKT_TYPE
Packet type:
Note: in case of 11ax, see field he_ppdu_subtype for additional
info...
<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 MACTX_PHY_DESC_PKT_TYPE_OFFSET 0x0000000000000000
#define MACTX_PHY_DESC_PKT_TYPE_LSB 21
#define MACTX_PHY_DESC_PKT_TYPE_MSB 24
#define MACTX_PHY_DESC_PKT_TYPE_MASK 0x0000000001e00000
/* Description SU_OR_MU
Type of transmission:
For 11ax:
<enum 0 SU_transmission>
11ax:
This setting is used for the following preamble type of
transmissions:
11ax HE_SU PPDU
11ax HE_EXT_SU PPDU
11ax HE_TRIG PPDU
Note that the above implies all single user transmissions
11ac and other pkt_types:
Single user transmission
<enum 1 MU_transmission>
11ax:
This setting is used for the following preamble type of
transmissions:
11ax HE_MU
Note that this type of transmission implies multiple users
For 11ac:
Multi-user transmission
<enum 2 MU_SU_transmission>
11ax:
This setting is used for the following preamble type of
transmissions:
11ax HE_MU
Note that this type of transmission implies a SINGLE user,
but using HE_MU preamble type...
11ac and other pkt_types:
Reserved
<legal 0-2>
*/
#define MACTX_PHY_DESC_SU_OR_MU_OFFSET 0x0000000000000000
#define MACTX_PHY_DESC_SU_OR_MU_LSB 25
#define MACTX_PHY_DESC_SU_OR_MU_MSB 26
#define MACTX_PHY_DESC_SU_OR_MU_MASK 0x0000000006000000
/* Description MU_TYPE
Field only valid when
SU_or_MU == MU_transmission or
SU_or_MU == MU_SU_transmission
<enum 0 MU_MIMO_Transmission>
<enum 1 MU_OFDMA_Transmission> Note that within the RUs,
there might still be MU-MIMO...
<legal all>
*/
#define MACTX_PHY_DESC_MU_TYPE_OFFSET 0x0000000000000000
#define MACTX_PHY_DESC_MU_TYPE_LSB 27
#define MACTX_PHY_DESC_MU_TYPE_MSB 27
#define MACTX_PHY_DESC_MU_TYPE_MASK 0x0000000008000000
/* Description BANDWIDTH
Packet bandwidth:
The physical bandwidth that this device will be transmitting
in.
Note that for 11ax Trigger response transmissions (when
Field triggered == is_triggered), this bandwith is min(AP_pkt_bw,
STA_ch_bw)
<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 MACTX_PHY_DESC_BANDWIDTH_OFFSET 0x0000000000000000
#define MACTX_PHY_DESC_BANDWIDTH_LSB 28
#define MACTX_PHY_DESC_BANDWIDTH_MSB 30
#define MACTX_PHY_DESC_BANDWIDTH_MASK 0x0000000070000000
/* Description CHANNEL_CAPTURE
Indicates that the PHY should be armed to capture the channel
on the next received packet. This channel estimate is passed
to the MAC if the packet is successfully received.
<legal 0-1>
This field is not applicable for 11ah since implicit beamforming
is not supported
*/
#define MACTX_PHY_DESC_CHANNEL_CAPTURE_OFFSET 0x0000000000000000
#define MACTX_PHY_DESC_CHANNEL_CAPTURE_LSB 31
#define MACTX_PHY_DESC_CHANNEL_CAPTURE_MSB 31
#define MACTX_PHY_DESC_CHANNEL_CAPTURE_MASK 0x0000000080000000
/* Description MCS
In case of SU_or_MU == SU_transmission
Note that this includes trigger response transmission
The MCS to be used for the upcoming transmission. It must
match the 4-bit MCS value that is sent in the appropriate
signal field for the given packet type, except that EHT
BPSK with DCM and/or duplicate is encoded as '0.'
In case of .11ba (WUR), this field is filled according to
what is on the MAC side defined as "MCS_TYPE"
In case of SU_or_MU == MU_transmission
.11ac: highest MCS of all users
.11ax or .11be: highest 4-bit MCS field in all the HE_SIG_B
or EHT_SIG TLVs that MAC S/W informs to MAC H/W. Actual
highest 4-bit MCS to be sent to PHY might be lower after
MAC H/W computation.
For details, refer to the SIG field, related to this pkt_type.
(Note that this is slightly different then what is on the
MAC side defined as "MCS_TYPE". For this reason, the 'legal
values' here are NOT defined as MCS_TYPE)
<legal all>
*/
#define MACTX_PHY_DESC_MCS_OFFSET 0x0000000000000000
#define MACTX_PHY_DESC_MCS_LSB 32
#define MACTX_PHY_DESC_MCS_MSB 35
#define MACTX_PHY_DESC_MCS_MASK 0x0000000f00000000
/* Description GLOBAL_OFDMA_MIMO_ENABLE
When set, this transmission contains at least 1 user for
which MU-MIMO is enabled in its RU.
After per-BW/puncture pattern user disabling, in case of
pure OFDMA, PDG will clear this bit, but full BW MU-MIMO
is still possible with this bit set.
<legal all>
*/
#define MACTX_PHY_DESC_GLOBAL_OFDMA_MIMO_ENABLE_OFFSET 0x0000000000000000
#define MACTX_PHY_DESC_GLOBAL_OFDMA_MIMO_ENABLE_LSB 36
#define MACTX_PHY_DESC_GLOBAL_OFDMA_MIMO_ENABLE_MSB 36
#define MACTX_PHY_DESC_GLOBAL_OFDMA_MIMO_ENABLE_MASK 0x0000001000000000
/* Description RESERVED_1A
*/
#define MACTX_PHY_DESC_RESERVED_1A_OFFSET 0x0000000000000000
#define MACTX_PHY_DESC_RESERVED_1A_LSB 37
#define MACTX_PHY_DESC_RESERVED_1A_MSB 37
#define MACTX_PHY_DESC_RESERVED_1A_MASK 0x0000002000000000
/* Description STBC
When set, this transmission is based on stbc rates.
*/
#define MACTX_PHY_DESC_STBC_OFFSET 0x0000000000000000
#define MACTX_PHY_DESC_STBC_LSB 38
#define MACTX_PHY_DESC_STBC_MSB 38
#define MACTX_PHY_DESC_STBC_MASK 0x0000004000000000
/* Description DOT11AX_SU_EXTENDED
This field is only valid for pkt_type == 11ax OR pkt_type
== 11be
When set, the 11ax or 11be transmission is extended range
SU
*/
#define MACTX_PHY_DESC_DOT11AX_SU_EXTENDED_OFFSET 0x0000000000000000
#define MACTX_PHY_DESC_DOT11AX_SU_EXTENDED_LSB 39
#define MACTX_PHY_DESC_DOT11AX_SU_EXTENDED_MSB 39
#define MACTX_PHY_DESC_DOT11AX_SU_EXTENDED_MASK 0x0000008000000000
/* Description DOT11AX_TRIGGER_FRAME_EMBEDDED
When set, there is an 11ax trigger frame OR 11be trigger
frame embedded in this transmission. PHY shall latch the
transmit BW of this transmission and use it to select the
'MACTX_UPLINK_COMMON/USER...' TLVs parameters belonging
to this BW. Note that these 'MACTX_UPLINK_COMMON/USER...'
might already have been received by the PHY, or will come
in later.
<legal all>
*/
#define MACTX_PHY_DESC_DOT11AX_TRIGGER_FRAME_EMBEDDED_OFFSET 0x0000000000000000
#define MACTX_PHY_DESC_DOT11AX_TRIGGER_FRAME_EMBEDDED_LSB 40
#define MACTX_PHY_DESC_DOT11AX_TRIGGER_FRAME_EMBEDDED_MSB 40
#define MACTX_PHY_DESC_DOT11AX_TRIGGER_FRAME_EMBEDDED_MASK 0x0000010000000000
/* Description TX_PWR_SHARED
Transmit Power (signed value) in units of 0.25 dBm
<legal all>
*/
#define MACTX_PHY_DESC_TX_PWR_SHARED_OFFSET 0x0000000000000000
#define MACTX_PHY_DESC_TX_PWR_SHARED_LSB 41
#define MACTX_PHY_DESC_TX_PWR_SHARED_MSB 48
#define MACTX_PHY_DESC_TX_PWR_SHARED_MASK 0x0001fe0000000000
/* Description TX_PWR_UNSHARED
Transmit Power (signed value) in units of 0.25 dBm <legal
all>
*/
#define MACTX_PHY_DESC_TX_PWR_UNSHARED_OFFSET 0x0000000000000000
#define MACTX_PHY_DESC_TX_PWR_UNSHARED_LSB 49
#define MACTX_PHY_DESC_TX_PWR_UNSHARED_MSB 56
#define MACTX_PHY_DESC_TX_PWR_UNSHARED_MASK 0x01fe000000000000
/* Description MEASURE_POWER
This field enables the TPC to use power measurement for
current packet in CLPC updates.
<enum 0 measure_dis> TPC will not latch power measurement
result for current packet
<enum 1 measure_en> TPC will latch power measurement
result for current packet
<legal all>
*/
#define MACTX_PHY_DESC_MEASURE_POWER_OFFSET 0x0000000000000000
#define MACTX_PHY_DESC_MEASURE_POWER_LSB 57
#define MACTX_PHY_DESC_MEASURE_POWER_MSB 57
#define MACTX_PHY_DESC_MEASURE_POWER_MASK 0x0200000000000000
/* Description TPC_GLUT_SELF_CAL
Setting related to transmit power control calibration.
<legal all>
*/
#define MACTX_PHY_DESC_TPC_GLUT_SELF_CAL_OFFSET 0x0000000000000000
#define MACTX_PHY_DESC_TPC_GLUT_SELF_CAL_LSB 58
#define MACTX_PHY_DESC_TPC_GLUT_SELF_CAL_MSB 58
#define MACTX_PHY_DESC_TPC_GLUT_SELF_CAL_MASK 0x0400000000000000
/* Description BACK_TO_BACK_TRANSMISSION_EXPECTED
When set, the next transmission is expected to follow this
one in SIFS time (without any response reception in between).
For example used when transmitting beacons followed by the
broadcast or multicast frames
<legal all>
*/
#define MACTX_PHY_DESC_BACK_TO_BACK_TRANSMISSION_EXPECTED_OFFSET 0x0000000000000000
#define MACTX_PHY_DESC_BACK_TO_BACK_TRANSMISSION_EXPECTED_LSB 59
#define MACTX_PHY_DESC_BACK_TO_BACK_TRANSMISSION_EXPECTED_MSB 59
#define MACTX_PHY_DESC_BACK_TO_BACK_TRANSMISSION_EXPECTED_MASK 0x0800000000000000
/* Description HEAVY_CLIP_NSS
Number of active spatial streams in current packet. This
parameter is used by the heavy clip function in the transmitter.
In case of MU PPDU, this is total Nss of all users.
<enum 0 1_spatial_stream>Single spatial stream
<enum 1 2_spatial_streams>2 spatial streams
<enum 2 3_spatial_streams>3 spatial streams
<enum 3 4_spatial_streams>4 spatial streams
<enum 4 5_spatial_streams>5 spatial streams
<enum 5 6_spatial_streams>6 spatial streams
<enum 6 7_spatial_streams>7 spatial streams
<enum 7 8_spatial_streams>8 spatial streams
*/
#define MACTX_PHY_DESC_HEAVY_CLIP_NSS_OFFSET 0x0000000000000000
#define MACTX_PHY_DESC_HEAVY_CLIP_NSS_LSB 60
#define MACTX_PHY_DESC_HEAVY_CLIP_NSS_MSB 62
#define MACTX_PHY_DESC_HEAVY_CLIP_NSS_MASK 0x7000000000000000
/* Description TXBF_PER_PACKET_NO_CSD_NO_WALSH
This is a global switch that is applied to beamformed packets
If set, no_csd and no_walsh is applied to steering packet.
*/
#define MACTX_PHY_DESC_TXBF_PER_PACKET_NO_CSD_NO_WALSH_OFFSET 0x0000000000000000
#define MACTX_PHY_DESC_TXBF_PER_PACKET_NO_CSD_NO_WALSH_LSB 63
#define MACTX_PHY_DESC_TXBF_PER_PACKET_NO_CSD_NO_WALSH_MSB 63
#define MACTX_PHY_DESC_TXBF_PER_PACKET_NO_CSD_NO_WALSH_MASK 0x8000000000000000
/* Description NDP
When not "0", upcoming transmission is one of the indicated
NDP types.
<enum 0 no_ndp>No NDP transmission
<enum 1 beamforming_ndp>Beamforming NDP
<enum 2 he_ranging_ndp>11az NDP (HE Ranging NDP)
<enum 3 he_feedback_ndp>Short TB (HE Feedback NDP)
*/
#define MACTX_PHY_DESC_NDP_OFFSET 0x0000000000000008
#define MACTX_PHY_DESC_NDP_LSB 0
#define MACTX_PHY_DESC_NDP_MSB 1
#define MACTX_PHY_DESC_NDP_MASK 0x0000000000000003
/* Description UL_FLAG
This field is only valid for pkt_type == 11ax OR pkt_type
== 11be
Used for HE_SIGB
<enum 1 uplink>
<enum 0 downlink>
<legal all>
*/
#define MACTX_PHY_DESC_UL_FLAG_OFFSET 0x0000000000000008
#define MACTX_PHY_DESC_UL_FLAG_LSB 2
#define MACTX_PHY_DESC_UL_FLAG_MSB 2
#define MACTX_PHY_DESC_UL_FLAG_MASK 0x0000000000000004
/* Description TRIGGERED
This field is only valid for pkt_type == 11ax OR pkt_type
== 11be
Denotes whether it's a triggered uplink transmission
Must be set for HE-TB NDPs used in Secure Ranging NDPs (11az)
and Short-NDP (HE TB Feedback NDP).
<enum 0 non_trigerred>
<enum 1 is_triggered>
<legal all>
*/
#define MACTX_PHY_DESC_TRIGGERED_OFFSET 0x0000000000000008
#define MACTX_PHY_DESC_TRIGGERED_LSB 3
#define MACTX_PHY_DESC_TRIGGERED_MSB 3
#define MACTX_PHY_DESC_TRIGGERED_MASK 0x0000000000000008
/* Description AP_PKT_BW
Field only valid when triggered == is_triggered
This indicates the total bandwidth of the UL_TRIG packet
as indicated in the Trigger 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 MACTX_PHY_DESC_AP_PKT_BW_OFFSET 0x0000000000000008
#define MACTX_PHY_DESC_AP_PKT_BW_LSB 4
#define MACTX_PHY_DESC_AP_PKT_BW_MSB 6
#define MACTX_PHY_DESC_AP_PKT_BW_MASK 0x0000000000000070
/* Description RU_POSITION_START
Field only valid when triggered == is_triggered
This field indicates the start basic (26 tone) RU number
assigned to this user
RU Numbering is based only on the order in which the RUs
are allocated over the available BW, starting from 0 and
in increasing frequency order and not primary-secondary
order.
The RU number within 80 MHz is available from the RU allocation
information in the trigger. For 160 MHz transmissions,
the trigger RU allocation only mentions primary/secondary
80 MHz. PDG needs to convert this to lower/higher 80 MHz.
If in 'PCU_PPDU_SETUP_START'/'MACTX_PRE_PHY_DESC,' CCA_Subband_channel_bonding_mask
bit 0 is mapped to any of bits 4 - 7 of Freq_Subband_channel_bonding_mask,
then the primary 80 MHz is the higher 80 MHz and the secondary
80 MHz is the lower one.
Otherwise (if CCA_Subband_channel_bonding_mask bit 0 is
mapped to any of bits 0 - 3 of Freq_Subband_channel_bonding_mask,
then the primary 80 MHz is the lower 80 MHz and the secondary
80 MHz is the higher one.
Note: this type of encoding decouples the formatting of
the trigger from from how info between MAC-PHY is exchanged
<legal 0- 147>
*/
#define MACTX_PHY_DESC_RU_POSITION_START_OFFSET 0x0000000000000008
#define MACTX_PHY_DESC_RU_POSITION_START_LSB 7
#define MACTX_PHY_DESC_RU_POSITION_START_MSB 14
#define MACTX_PHY_DESC_RU_POSITION_START_MASK 0x0000000000007f80
/* Description PCU_PPDU_SETUP_START_REASON
PDG shall fill this with the value it fills in the setup_start_reason
in 'PCU_PPDU_SETUP_START.' It indicates what triggered
the PDG to start Tx setup.
Used for debugging purposes.
<enum 0 fes_protection_frame> RTS or CTS-to-self transmission
preceding the regular PPDU portion of the coming FES. The
transmit is initiated by PDG_TX_REQ TLV from TXPCU
<enum 1 fes_after_protection > Regular PPDU transmission
that follows the transmission of medium protection: Either
RTS - CTS exchanges or CTS to self. The transmit is initiated
by PDG_TX_REQ TLV from TXPCU
<enum 2 fes_only> Regular PPDU transmission without
preceding medium protection frame exchanges. The transmit
is initiated by PDG_TX_REQ TLV from TXPCU
<enum 3 response_frame> response frame transmission.
The transmit is initiated by PDG_RESPONSE TLV from TXPCU
<enum 4 trig_response_frame> 11ax triggered response
frame transmission. The transmit is initiated by PDG_TRIG_RESPONSE
TLV from TXPCU
<enum 5 dynamic_protection_fes_only> Regular PPDU transmission
without preceding medium protection frame exchanges, because
the dynamic medium protection constraints were not satisfied.
The transmit is initiated by PDG_TX_REQ TLV from TXPCU.
<legal 0-5>
*/
#define MACTX_PHY_DESC_PCU_PPDU_SETUP_START_REASON_OFFSET 0x0000000000000008
#define MACTX_PHY_DESC_PCU_PPDU_SETUP_START_REASON_LSB 15
#define MACTX_PHY_DESC_PCU_PPDU_SETUP_START_REASON_MSB 17
#define MACTX_PHY_DESC_PCU_PPDU_SETUP_START_REASON_MASK 0x0000000000038000
/* Description TLV_SOURCE
<enum 1 phy_desc_from_pdg> This MACTX_PHY_DESC TLV is generated
by PDG.
<enum 0 phy_desc_from_fw> PDG is in bypass mode and this
MACTX_PHY_DESC TLV is queued by firmware.
<legal all>
*/
#define MACTX_PHY_DESC_TLV_SOURCE_OFFSET 0x0000000000000008
#define MACTX_PHY_DESC_TLV_SOURCE_LSB 18
#define MACTX_PHY_DESC_TLV_SOURCE_MSB 18
#define MACTX_PHY_DESC_TLV_SOURCE_MASK 0x0000000000040000
/* Description RESERVED_2A
<legal 0>
*/
#define MACTX_PHY_DESC_RESERVED_2A_OFFSET 0x0000000000000008
#define MACTX_PHY_DESC_RESERVED_2A_LSB 19
#define MACTX_PHY_DESC_RESERVED_2A_MSB 20
#define MACTX_PHY_DESC_RESERVED_2A_MASK 0x0000000000180000
/* Description NSS
Field only valid when triggered == is_triggered
Number of Spatial Streams occupied by the User
<enum 0 1_spatial_stream>Single spatial stream
<enum 1 2_spatial_streams>2 spatial streams
<enum 2 3_spatial_streams>3 spatial streams
<enum 3 4_spatial_streams>4 spatial streams
<enum 4 5_spatial_streams>5 spatial streams
<enum 5 6_spatial_streams>6 spatial streams
<enum 6 7_spatial_streams>7 spatial streams
<enum 7 8_spatial_streams>8 spatial streams
*/
#define MACTX_PHY_DESC_NSS_OFFSET 0x0000000000000008
#define MACTX_PHY_DESC_NSS_LSB 21
#define MACTX_PHY_DESC_NSS_MSB 23
#define MACTX_PHY_DESC_NSS_MASK 0x0000000000e00000
/* Description STREAM_OFFSET
Field only valid when triggered == is_triggered
Specify Stream-offset of the user for HE_TB Ranging NDP
or Short-NDP
Stream Offset from which the User occupies the Streams
*/
#define MACTX_PHY_DESC_STREAM_OFFSET_OFFSET 0x0000000000000008
#define MACTX_PHY_DESC_STREAM_OFFSET_LSB 24
#define MACTX_PHY_DESC_STREAM_OFFSET_MSB 26
#define MACTX_PHY_DESC_STREAM_OFFSET_MASK 0x0000000007000000
/* Description RESERVED_2B
<legal 0>
*/
#define MACTX_PHY_DESC_RESERVED_2B_OFFSET 0x0000000000000008
#define MACTX_PHY_DESC_RESERVED_2B_LSB 27
#define MACTX_PHY_DESC_RESERVED_2B_MSB 28
#define MACTX_PHY_DESC_RESERVED_2B_MASK 0x0000000018000000
/* Description CLPC_ENABLE
This field enables closed-loop TPC operation by enabling
CLPC adjustment of DAC gain for the next packet.
<enum 0 clpc_off> TPC error update disabled
<enum 1 clpc_on> TPC error will be applied to DAC gain
setting for the next packet
<legal 0-1>
*/
#define MACTX_PHY_DESC_CLPC_ENABLE_OFFSET 0x0000000000000008
#define MACTX_PHY_DESC_CLPC_ENABLE_LSB 29
#define MACTX_PHY_DESC_CLPC_ENABLE_MSB 29
#define MACTX_PHY_DESC_CLPC_ENABLE_MASK 0x0000000020000000
/* Description MU_NDP
If set indicates that this packet is an NDP used for MU
channel estimation. This bit will be used by the TPC to
signal that the analog gain settings can be updated. The
analog gain settings will not change for subsequent MU
data packets.
*/
#define MACTX_PHY_DESC_MU_NDP_OFFSET 0x0000000000000008
#define MACTX_PHY_DESC_MU_NDP_LSB 30
#define MACTX_PHY_DESC_MU_NDP_MSB 30
#define MACTX_PHY_DESC_MU_NDP_MASK 0x0000000040000000
/* Description RESPONSE_EXPECTED
When set, a response frame in SIFS time is expected after
this transmission.
<legal all>
*/
#define MACTX_PHY_DESC_RESPONSE_EXPECTED_OFFSET 0x0000000000000008
#define MACTX_PHY_DESC_RESPONSE_EXPECTED_LSB 31
#define MACTX_PHY_DESC_RESPONSE_EXPECTED_MSB 31
#define MACTX_PHY_DESC_RESPONSE_EXPECTED_MASK 0x0000000080000000
/* Description RX_CHAIN_MASK
Chain mask to support up to 8 antennas.
<legal 1-255>
*/
#define MACTX_PHY_DESC_RX_CHAIN_MASK_OFFSET 0x0000000000000008
#define MACTX_PHY_DESC_RX_CHAIN_MASK_LSB 32
#define MACTX_PHY_DESC_RX_CHAIN_MASK_MSB 39
#define MACTX_PHY_DESC_RX_CHAIN_MASK_MASK 0x000000ff00000000
/* Description RX_CHAIN_MASK_VALID
Indicates rx_chain_mask field is valid.
<enum 0 RX_CHAIN_MASK_IS_NOT_VALID>
<enum 1 RX_CHAIN_MASK_IS_VALID>
<legal all>
*/
#define MACTX_PHY_DESC_RX_CHAIN_MASK_VALID_OFFSET 0x0000000000000008
#define MACTX_PHY_DESC_RX_CHAIN_MASK_VALID_LSB 40
#define MACTX_PHY_DESC_RX_CHAIN_MASK_VALID_MSB 40
#define MACTX_PHY_DESC_RX_CHAIN_MASK_VALID_MASK 0x0000010000000000
/* Description ANT_SEL_VALID
Field only valid when ant_sel_valid is set.
TX Antenna select valid
<enum 0 ANT_SEL_IS_NOT_VALID>
<enum 1 ANT_SEL_IS_VALID>
<legal all>
*/
#define MACTX_PHY_DESC_ANT_SEL_VALID_OFFSET 0x0000000000000008
#define MACTX_PHY_DESC_ANT_SEL_VALID_LSB 41
#define MACTX_PHY_DESC_ANT_SEL_VALID_MSB 41
#define MACTX_PHY_DESC_ANT_SEL_VALID_MASK 0x0000020000000000
/* Description ANT_SEL
Field only valid when ant_sel_valid is set.
Antenna select for TX antenna diversity.
<enum 0 ANTENNA_0>
<enum 1 ANTENNA_1>
<legal all>
*/
#define MACTX_PHY_DESC_ANT_SEL_OFFSET 0x0000000000000008
#define MACTX_PHY_DESC_ANT_SEL_LSB 42
#define MACTX_PHY_DESC_ANT_SEL_MSB 42
#define MACTX_PHY_DESC_ANT_SEL_MASK 0x0000040000000000
/* Description CP_SETTING
Field only valid when pkt type is HT, VHT or HE.
Specify the right CP for HE-Ranging NDPs (11az)/Short NDP
<enum 0 gi_0_8_us > Legacy normal GI
<enum 1 gi_0_4_us > Legacy short GI
<enum 2 gi_1_6_us > HE related GI
<enum 3 gi_3_2_us > HE related GI
<legal 0 - 3>
*/
#define MACTX_PHY_DESC_CP_SETTING_OFFSET 0x0000000000000008
#define MACTX_PHY_DESC_CP_SETTING_LSB 43
#define MACTX_PHY_DESC_CP_SETTING_MSB 44
#define MACTX_PHY_DESC_CP_SETTING_MASK 0x0000180000000000
/* Description HE_PPDU_SUBTYPE
The subtype of HE transmission:
Specify as HE-SU for HE-SU Ranging NDP in 11az ;
Specify as HE-TB for HE-TB Ranging NDP in 11az ;
Specify as HE-TB for Short -NDP
Re-use the same for EHT PPDU types also
<enum 0 he_subtype_SU>
<enum 1 he_subtype_TRIG>
<enum 2 he_subtype_MU>
<enum 3 he_subtype_EXT_SU>
<legal all>
*/
#define MACTX_PHY_DESC_HE_PPDU_SUBTYPE_OFFSET 0x0000000000000008
#define MACTX_PHY_DESC_HE_PPDU_SUBTYPE_LSB 45
#define MACTX_PHY_DESC_HE_PPDU_SUBTYPE_MSB 46
#define MACTX_PHY_DESC_HE_PPDU_SUBTYPE_MASK 0x0000600000000000
/* Description ACTIVE_CHANNEL
Field only valid when triggered == non_trigerred
In case of a triggered response transmission, this field
will always be set to 0
This field indicates the active frequency band when the
packet bandwidth is less than the channel bandwidth. For
non 11ax packets this is same as the primary channel
<legal all>
*/
#define MACTX_PHY_DESC_ACTIVE_CHANNEL_OFFSET 0x0000000000000008
#define MACTX_PHY_DESC_ACTIVE_CHANNEL_LSB 47
#define MACTX_PHY_DESC_ACTIVE_CHANNEL_MSB 49
#define MACTX_PHY_DESC_ACTIVE_CHANNEL_MASK 0x0003800000000000
/* Description GENERATE_PHYRX_TX_START_TIMING
When set, PHY shall generate the PHYRX_TX_START_TIMING TLV
at the earliest opportunity during the preamble transmission
<legal all>
*/
#define MACTX_PHY_DESC_GENERATE_PHYRX_TX_START_TIMING_OFFSET 0x0000000000000008
#define MACTX_PHY_DESC_GENERATE_PHYRX_TX_START_TIMING_LSB 50
#define MACTX_PHY_DESC_GENERATE_PHYRX_TX_START_TIMING_MSB 50
#define MACTX_PHY_DESC_GENERATE_PHYRX_TX_START_TIMING_MASK 0x0004000000000000
/* Description LTF_SIZE
Field only valid when pkt type is HE.
Ltf size
Specify right LTF-size for HE-Ranging NDPs (11az)/Short-NDP
<enum 0 ltf_1x >
<enum 1 ltf_2x >
<enum 2 ltf_4x >
<legal 0 - 2>
*/
#define MACTX_PHY_DESC_LTF_SIZE_OFFSET 0x0000000000000008
#define MACTX_PHY_DESC_LTF_SIZE_LSB 51
#define MACTX_PHY_DESC_LTF_SIZE_MSB 52
#define MACTX_PHY_DESC_LTF_SIZE_MASK 0x0018000000000000
/* Description RU_SIZE_UPDATED_V2
Field only valid for pkt_type == 11ax or 11be and
SU_or_MU == SU_transmission or
SU_or_MU == MU_SU_transmission
The RU size of the upcoming transmission.
PHY uses this info to apply different min/max BO if payload
bandwidth is less than 10MHz
In case of HE extended range transmission, e-num 2 (10MHz)
or e-num 7 (20MHz) are used.
In case of trig transmission or OFDMA single user or MU-MIMO
single user transmission, if the ru_size allocated to the
user is the fullBW (with respect to AP_bw) ru size then
the e-num 7 is used.
For all other cases, e-nums corresponding to the ru size
allocated to the user is used.
In case of EHT duplicate transmissions, this field indicates
the width of the actual content before duplication, e.g.
a 40 MHz PPDU duplicated to 160 MHz will have the bandwidth
fields indicating 160 MHz and this field set to e-num 4
(RU_484).
<enum 0 RU_26>
<enum 1 RU_52>
<enum 2 RU_106>
<enum 3 RU_242><enum 4 RU_484><enum 5 RU_996><enum 6 RU_1992>
<enum 7 RU_FULLBW> Set when the RU occupies the full packet
bandwidth
Note that for an MU-RTS trigger, the response will also
go out in legacy CTS rate... and thus e-num 7 will be used.
<enum 8 RU_FULLBW_240> Set when the RU occupies the full
packet bandwidth
<enum 9 RU_FULLBW_320> Set when the RU occupies the full
packet bandwidth
<enum 10 RU_MULTI_LARGE> HW will use per-user sub-band-mask
to infer the actual RU-size for Multi-large-RU/SU-Puncturing
<enum 11 RU_78> multi small RU
<enum 12 RU_132> multi small RU
NOTE: See the table following this TLV definition that explains
the relationship between this field and the RU size allocated
to users.
<legal all>
*/
#define MACTX_PHY_DESC_RU_SIZE_UPDATED_V2_OFFSET 0x0000000000000008
#define MACTX_PHY_DESC_RU_SIZE_UPDATED_V2_LSB 53
#define MACTX_PHY_DESC_RU_SIZE_UPDATED_V2_MSB 56
#define MACTX_PHY_DESC_RU_SIZE_UPDATED_V2_MASK 0x01e0000000000000
/* Description RESERVED_3C
<legal 0>
*/
#define MACTX_PHY_DESC_RESERVED_3C_OFFSET 0x0000000000000008
#define MACTX_PHY_DESC_RESERVED_3C_LSB 57
#define MACTX_PHY_DESC_RESERVED_3C_MSB 57
#define MACTX_PHY_DESC_RESERVED_3C_MASK 0x0200000000000000
/* Description U_SIG_PUNCTURE_PATTERN_ENCODING
Field only valid for pkt_type == 11be
The 6-bit value to be used in U-SIG and/or EHT-SIG Common
field for the puncture pattern
<legal 0-29>
*/
#define MACTX_PHY_DESC_U_SIG_PUNCTURE_PATTERN_ENCODING_OFFSET 0x0000000000000008
#define MACTX_PHY_DESC_U_SIG_PUNCTURE_PATTERN_ENCODING_LSB 58
#define MACTX_PHY_DESC_U_SIG_PUNCTURE_PATTERN_ENCODING_MSB 63
#define MACTX_PHY_DESC_U_SIG_PUNCTURE_PATTERN_ENCODING_MASK 0xfc00000000000000
#endif // MACTX_PHY_DESC