xref: /wlan-driver/fw-api/hw/qcn6432/rxpcu_early_rx_indication.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1 /*
2  * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
3  *
4  * Permission to use, copy, modify, and/or distribute this software for any
5  * purpose with or without fee is hereby granted, provided that the above
6  * copyright notice and this permission notice appear in all copies.
7  *
8  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15  */
16 
17 #ifndef _RXPCU_EARLY_RX_INDICATION_H_
18 #define _RXPCU_EARLY_RX_INDICATION_H_
19 #if !defined(__ASSEMBLER__)
20 #endif
21 
22 #define NUM_OF_DWORDS_RXPCU_EARLY_RX_INDICATION 2
23 
24 #define NUM_OF_QWORDS_RXPCU_EARLY_RX_INDICATION 1
25 
26 
27 struct rxpcu_early_rx_indication {
28 #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
29              uint32_t pkt_type                                                :  4, // [3:0]
30                       dot11ax_su_extended                                     :  1, // [4:4]
31                       rate_mcs                                                :  4, // [8:5]
32                       dot11ax_received_ext_ru_size                            :  4, // [12:9]
33                       reserved_0a                                             : 19; // [31:13]
34              uint32_t tlv64_padding                                           : 32; // [31:0]
35 #else
36              uint32_t reserved_0a                                             : 19, // [31:13]
37                       dot11ax_received_ext_ru_size                            :  4, // [12:9]
38                       rate_mcs                                                :  4, // [8:5]
39                       dot11ax_su_extended                                     :  1, // [4:4]
40                       pkt_type                                                :  4; // [3:0]
41              uint32_t tlv64_padding                                           : 32; // [31:0]
42 #endif
43 };
44 
45 
46 /* Description		PKT_TYPE
47 
48 			Packet type:
49 
50 			<enum 0 dot11a>802.11a PPDU type
51 			<enum 1 dot11b>802.11b PPDU type
52 			<enum 2 dot11n_mm>802.11n Mixed Mode PPDU type
53 			<enum 3 dot11ac>802.11ac PPDU type
54 			<enum 4 dot11ax>802.11ax PPDU type
55 			<enum 5 dot11ba>802.11ba (WUR) PPDU type
56 			<enum 6 dot11be>802.11be PPDU type
57 			<enum 7 dot11az>802.11az (ranging) PPDU type
58 			<enum 8 dot11n_gf>802.11n Green Field PPDU type (unsupported
59 			 & aborted)
60 */
61 
62 #define RXPCU_EARLY_RX_INDICATION_PKT_TYPE_OFFSET                                   0x0000000000000000
63 #define RXPCU_EARLY_RX_INDICATION_PKT_TYPE_LSB                                      0
64 #define RXPCU_EARLY_RX_INDICATION_PKT_TYPE_MSB                                      3
65 #define RXPCU_EARLY_RX_INDICATION_PKT_TYPE_MASK                                     0x000000000000000f
66 
67 
68 /* Description		DOT11AX_SU_EXTENDED
69 
70 			This field is only valid for pkt_type == 11ax OR pkt_type
71 			 == 11be
72 
73 			When set, the 11ax or 11be reception was an extended range
74 			 SU
75 */
76 
77 #define RXPCU_EARLY_RX_INDICATION_DOT11AX_SU_EXTENDED_OFFSET                        0x0000000000000000
78 #define RXPCU_EARLY_RX_INDICATION_DOT11AX_SU_EXTENDED_LSB                           4
79 #define RXPCU_EARLY_RX_INDICATION_DOT11AX_SU_EXTENDED_MSB                           4
80 #define RXPCU_EARLY_RX_INDICATION_DOT11AX_SU_EXTENDED_MASK                          0x0000000000000010
81 
82 
83 /* Description		RATE_MCS
84 
85 			For details, refer to  MCS_TYPE description
86 			Note: This is "rate" in case of 11a/11b
87 
88 			<legal all>
89 */
90 
91 #define RXPCU_EARLY_RX_INDICATION_RATE_MCS_OFFSET                                   0x0000000000000000
92 #define RXPCU_EARLY_RX_INDICATION_RATE_MCS_LSB                                      5
93 #define RXPCU_EARLY_RX_INDICATION_RATE_MCS_MSB                                      8
94 #define RXPCU_EARLY_RX_INDICATION_RATE_MCS_MASK                                     0x00000000000001e0
95 
96 
97 /* Description		DOT11AX_RECEIVED_EXT_RU_SIZE
98 
99 			Field only valid in case of SU_or_uplink_MU_reception =
100 			Reception_is_SU
101 
102 			This field is only valid for pkt_type == 11ax OR pkt_type
103 			 == 11be AND dot11ax_su_extended is set
104 			The number of (basic) RUs in this extended range reception
105 
106 
107 			RXPCU gets this from the received HE_SIG_A
108 
109 			<legal all>
110 */
111 
112 #define RXPCU_EARLY_RX_INDICATION_DOT11AX_RECEIVED_EXT_RU_SIZE_OFFSET               0x0000000000000000
113 #define RXPCU_EARLY_RX_INDICATION_DOT11AX_RECEIVED_EXT_RU_SIZE_LSB                  9
114 #define RXPCU_EARLY_RX_INDICATION_DOT11AX_RECEIVED_EXT_RU_SIZE_MSB                  12
115 #define RXPCU_EARLY_RX_INDICATION_DOT11AX_RECEIVED_EXT_RU_SIZE_MASK                 0x0000000000001e00
116 
117 
118 /* Description		RESERVED_0A
119 
120 			<legal 0>
121 */
122 
123 #define RXPCU_EARLY_RX_INDICATION_RESERVED_0A_OFFSET                                0x0000000000000000
124 #define RXPCU_EARLY_RX_INDICATION_RESERVED_0A_LSB                                   13
125 #define RXPCU_EARLY_RX_INDICATION_RESERVED_0A_MSB                                   31
126 #define RXPCU_EARLY_RX_INDICATION_RESERVED_0A_MASK                                  0x00000000ffffe000
127 
128 
129 /* Description		TLV64_PADDING
130 
131 			Automatic DWORD padding inserted while converting TLV32
132 			to TLV64 for 64 bit ARCH
133 			<legal 0>
134 */
135 
136 #define RXPCU_EARLY_RX_INDICATION_TLV64_PADDING_OFFSET                              0x0000000000000000
137 #define RXPCU_EARLY_RX_INDICATION_TLV64_PADDING_LSB                                 32
138 #define RXPCU_EARLY_RX_INDICATION_TLV64_PADDING_MSB                                 63
139 #define RXPCU_EARLY_RX_INDICATION_TLV64_PADDING_MASK                                0xffffffff00000000
140 
141 
142 
143 #endif   // RXPCU_EARLY_RX_INDICATION
144