xref: /wlan-driver/fw-api/hw/qca5332/rxpcu_early_rx_indication.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1 
2 /* Copyright (c) 2022, 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 
18 
19 
20 
21 
22 
23 
24 
25 
26 #ifndef _RXPCU_EARLY_RX_INDICATION_H_
27 #define _RXPCU_EARLY_RX_INDICATION_H_
28 #if !defined(__ASSEMBLER__)
29 #endif
30 
31 #define NUM_OF_DWORDS_RXPCU_EARLY_RX_INDICATION 2
32 
33 #define NUM_OF_QWORDS_RXPCU_EARLY_RX_INDICATION 1
34 
35 
36 struct rxpcu_early_rx_indication {
37 #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
38              uint32_t pkt_type                                                :  4, // [3:0]
39                       dot11ax_su_extended                                     :  1, // [4:4]
40                       rate_mcs                                                :  4, // [8:5]
41                       dot11ax_received_ext_ru_size                            :  4, // [12:9]
42                       reserved_0a                                             : 19; // [31:13]
43              uint32_t tlv64_padding                                           : 32; // [31:0]
44 #else
45              uint32_t reserved_0a                                             : 19, // [31:13]
46                       dot11ax_received_ext_ru_size                            :  4, // [12:9]
47                       rate_mcs                                                :  4, // [8:5]
48                       dot11ax_su_extended                                     :  1, // [4:4]
49                       pkt_type                                                :  4; // [3:0]
50              uint32_t tlv64_padding                                           : 32; // [31:0]
51 #endif
52 };
53 
54 
55 /* Description		PKT_TYPE
56 
57 			Packet type:
58 
59 			<enum 0 dot11a>802.11a PPDU type
60 			<enum 1 dot11b>802.11b PPDU type
61 			<enum 2 dot11n_mm>802.11n Mixed Mode PPDU type
62 			<enum 3 dot11ac>802.11ac PPDU type
63 			<enum 4 dot11ax>802.11ax PPDU type
64 			<enum 5 dot11ba>802.11ba (WUR) PPDU type
65 			<enum 6 dot11be>802.11be PPDU type
66 			<enum 7 dot11az>802.11az (ranging) PPDU type
67 			<enum 8 dot11n_gf>802.11n Green Field PPDU type (unsupported
68 			 & aborted)
69 */
70 
71 #define RXPCU_EARLY_RX_INDICATION_PKT_TYPE_OFFSET                                   0x0000000000000000
72 #define RXPCU_EARLY_RX_INDICATION_PKT_TYPE_LSB                                      0
73 #define RXPCU_EARLY_RX_INDICATION_PKT_TYPE_MSB                                      3
74 #define RXPCU_EARLY_RX_INDICATION_PKT_TYPE_MASK                                     0x000000000000000f
75 
76 
77 /* Description		DOT11AX_SU_EXTENDED
78 
79 			This field is only valid for pkt_type == 11ax OR pkt_type
80 			 == 11be
81 
82 			When set, the 11ax or 11be reception was an extended range
83 			 SU
84 */
85 
86 #define RXPCU_EARLY_RX_INDICATION_DOT11AX_SU_EXTENDED_OFFSET                        0x0000000000000000
87 #define RXPCU_EARLY_RX_INDICATION_DOT11AX_SU_EXTENDED_LSB                           4
88 #define RXPCU_EARLY_RX_INDICATION_DOT11AX_SU_EXTENDED_MSB                           4
89 #define RXPCU_EARLY_RX_INDICATION_DOT11AX_SU_EXTENDED_MASK                          0x0000000000000010
90 
91 
92 /* Description		RATE_MCS
93 
94 			For details, refer to  MCS_TYPE description
95 			Note: This is "rate" in case of 11a/11b
96 
97 			<legal all>
98 */
99 
100 #define RXPCU_EARLY_RX_INDICATION_RATE_MCS_OFFSET                                   0x0000000000000000
101 #define RXPCU_EARLY_RX_INDICATION_RATE_MCS_LSB                                      5
102 #define RXPCU_EARLY_RX_INDICATION_RATE_MCS_MSB                                      8
103 #define RXPCU_EARLY_RX_INDICATION_RATE_MCS_MASK                                     0x00000000000001e0
104 
105 
106 /* Description		DOT11AX_RECEIVED_EXT_RU_SIZE
107 
108 			Field only valid in case of SU_or_uplink_MU_reception =
109 			Reception_is_SU
110 
111 			This field is only valid for pkt_type == 11ax OR pkt_type
112 			 == 11be AND dot11ax_su_extended is set
113 			The number of (basic) RUs in this extended range reception
114 
115 
116 			RXPCU gets this from the received HE_SIG_A
117 
118 			<legal all>
119 */
120 
121 #define RXPCU_EARLY_RX_INDICATION_DOT11AX_RECEIVED_EXT_RU_SIZE_OFFSET               0x0000000000000000
122 #define RXPCU_EARLY_RX_INDICATION_DOT11AX_RECEIVED_EXT_RU_SIZE_LSB                  9
123 #define RXPCU_EARLY_RX_INDICATION_DOT11AX_RECEIVED_EXT_RU_SIZE_MSB                  12
124 #define RXPCU_EARLY_RX_INDICATION_DOT11AX_RECEIVED_EXT_RU_SIZE_MASK                 0x0000000000001e00
125 
126 
127 /* Description		RESERVED_0A
128 
129 			<legal 0>
130 */
131 
132 #define RXPCU_EARLY_RX_INDICATION_RESERVED_0A_OFFSET                                0x0000000000000000
133 #define RXPCU_EARLY_RX_INDICATION_RESERVED_0A_LSB                                   13
134 #define RXPCU_EARLY_RX_INDICATION_RESERVED_0A_MSB                                   31
135 #define RXPCU_EARLY_RX_INDICATION_RESERVED_0A_MASK                                  0x00000000ffffe000
136 
137 
138 /* Description		TLV64_PADDING
139 
140 			Automatic DWORD padding inserted while converting TLV32
141 			to TLV64 for 64 bit ARCH
142 			<legal 0>
143 */
144 
145 #define RXPCU_EARLY_RX_INDICATION_TLV64_PADDING_OFFSET                              0x0000000000000000
146 #define RXPCU_EARLY_RX_INDICATION_TLV64_PADDING_LSB                                 32
147 #define RXPCU_EARLY_RX_INDICATION_TLV64_PADDING_MSB                                 63
148 #define RXPCU_EARLY_RX_INDICATION_TLV64_PADDING_MASK                                0xffffffff00000000
149 
150 
151 
152 #endif   // RXPCU_EARLY_RX_INDICATION
153