1 /*
2  * Copyright (c) 2020, The Linux Foundation. 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 _RX_RXPCU_CLASSIFICATION_OVERVIEW_H_
18 #define _RX_RXPCU_CLASSIFICATION_OVERVIEW_H_
19 #if !defined(__ASSEMBLER__)
20 #endif
21 
22 
23 // ################ START SUMMARY #################
24 //
25 //	Dword	Fields
26 //	0	filter_pass_mpdus[0], filter_pass_mpdus_fcs_ok[1], monitor_direct_mpdus[2], monitor_direct_mpdus_fcs_ok[3], monitor_other_mpdus[4], monitor_other_mpdus_fcs_ok[5], phyrx_abort_received[6], reserved_0[15:7], phy_ppdu_id[31:16]
27 //
28 // ################ END SUMMARY #################
29 
30 #define NUM_OF_DWORDS_RX_RXPCU_CLASSIFICATION_OVERVIEW 1
31 
32 struct rx_rxpcu_classification_overview {
33              uint32_t filter_pass_mpdus               :  1, //[0]
34                       filter_pass_mpdus_fcs_ok        :  1, //[1]
35                       monitor_direct_mpdus            :  1, //[2]
36                       monitor_direct_mpdus_fcs_ok     :  1, //[3]
37                       monitor_other_mpdus             :  1, //[4]
38                       monitor_other_mpdus_fcs_ok      :  1, //[5]
39                       phyrx_abort_received            :  1, //[6]
40                       reserved_0                      :  9, //[15:7]
41                       phy_ppdu_id                     : 16; //[31:16]
42 };
43 
44 /*
45 
46 filter_pass_mpdus
47 
48 			When set, at least one Filter Pass MPDU has been
49 			received. FCS might or might not have been passing.
50 
51 
52 
53 			For MU UL, in  TLVs RX_PPDU_END and
54 			RX_PPDU_END_STATUS_DONE, this field is the OR of all the
55 			users.
56 
57 			<legal all>
58 
59 filter_pass_mpdus_fcs_ok
60 
61 			When set, at least one Filter Pass MPDU has been
62 			received that has a correct FCS.
63 
64 
65 
66 			For MU UL, in  TLVs RX_PPDU_END and
67 			RX_PPDU_END_STATUS_DONE, this field is the OR of all the
68 			users.
69 
70 
71 
72 			<legal all>
73 
74 monitor_direct_mpdus
75 
76 			When set, at least one Monitor Direct MPDU has been
77 			received. FCS might or might not have been passing
78 
79 
80 
81 			For MU UL, in  TLVs RX_PPDU_END and
82 			RX_PPDU_END_STATUS_DONE, this field is the OR of all the
83 			users.
84 
85 			<legal all>
86 
87 monitor_direct_mpdus_fcs_ok
88 
89 			When set, at least one Monitor Direct MPDU has been
90 			received that has a correct FCS.
91 
92 
93 
94 			For MU UL, in  TLVs RX_PPDU_END and
95 			RX_PPDU_END_STATUS_DONE, this field is the OR of all the
96 			users.
97 
98 
99 
100 			<legal all>
101 
102 monitor_other_mpdus
103 
104 			When set, at least one Monitor Direct MPDU has been
105 			received. FCS might or might not have been passing.
106 
107 
108 
109 			For MU UL, in  TLVs RX_PPDU_END and
110 			RX_PPDU_END_STATUS_DONE, this field is the OR of all the
111 			users.
112 
113 			<legal all>
114 
115 monitor_other_mpdus_fcs_ok
116 
117 			When set, at least one Monitor Direct MPDU has been
118 			received that has a correct FCS.
119 
120 
121 
122 			For MU UL, in  TLVs RX_PPDU_END and
123 			RX_PPDU_END_STATUS_DONE, this field is the OR of all the
124 			users.
125 
126 			<legal all>
127 
128 phyrx_abort_received
129 
130 			When set, PPDU reception was aborted by the PHY
131 
132 			<legal all>
133 
134 reserved_0
135 
136 			<legal 0>
137 
138 phy_ppdu_id
139 
140 			A ppdu counter value that PHY increments for every PPDU
141 			received. The counter value wraps around
142 
143 			<legal all>
144 */
145 
146 
147 /* Description		RX_RXPCU_CLASSIFICATION_OVERVIEW_0_FILTER_PASS_MPDUS
148 
149 			When set, at least one Filter Pass MPDU has been
150 			received. FCS might or might not have been passing.
151 
152 
153 
154 			For MU UL, in  TLVs RX_PPDU_END and
155 			RX_PPDU_END_STATUS_DONE, this field is the OR of all the
156 			users.
157 
158 			<legal all>
159 */
160 #define RX_RXPCU_CLASSIFICATION_OVERVIEW_0_FILTER_PASS_MPDUS_OFFSET  0x00000000
161 #define RX_RXPCU_CLASSIFICATION_OVERVIEW_0_FILTER_PASS_MPDUS_LSB     0
162 #define RX_RXPCU_CLASSIFICATION_OVERVIEW_0_FILTER_PASS_MPDUS_MASK    0x00000001
163 
164 /* Description		RX_RXPCU_CLASSIFICATION_OVERVIEW_0_FILTER_PASS_MPDUS_FCS_OK
165 
166 			When set, at least one Filter Pass MPDU has been
167 			received that has a correct FCS.
168 
169 
170 
171 			For MU UL, in  TLVs RX_PPDU_END and
172 			RX_PPDU_END_STATUS_DONE, this field is the OR of all the
173 			users.
174 
175 
176 
177 			<legal all>
178 */
179 #define RX_RXPCU_CLASSIFICATION_OVERVIEW_0_FILTER_PASS_MPDUS_FCS_OK_OFFSET 0x00000000
180 #define RX_RXPCU_CLASSIFICATION_OVERVIEW_0_FILTER_PASS_MPDUS_FCS_OK_LSB 1
181 #define RX_RXPCU_CLASSIFICATION_OVERVIEW_0_FILTER_PASS_MPDUS_FCS_OK_MASK 0x00000002
182 
183 /* Description		RX_RXPCU_CLASSIFICATION_OVERVIEW_0_MONITOR_DIRECT_MPDUS
184 
185 			When set, at least one Monitor Direct MPDU has been
186 			received. FCS might or might not have been passing
187 
188 
189 
190 			For MU UL, in  TLVs RX_PPDU_END and
191 			RX_PPDU_END_STATUS_DONE, this field is the OR of all the
192 			users.
193 
194 			<legal all>
195 */
196 #define RX_RXPCU_CLASSIFICATION_OVERVIEW_0_MONITOR_DIRECT_MPDUS_OFFSET 0x00000000
197 #define RX_RXPCU_CLASSIFICATION_OVERVIEW_0_MONITOR_DIRECT_MPDUS_LSB  2
198 #define RX_RXPCU_CLASSIFICATION_OVERVIEW_0_MONITOR_DIRECT_MPDUS_MASK 0x00000004
199 
200 /* Description		RX_RXPCU_CLASSIFICATION_OVERVIEW_0_MONITOR_DIRECT_MPDUS_FCS_OK
201 
202 			When set, at least one Monitor Direct MPDU has been
203 			received that has a correct FCS.
204 
205 
206 
207 			For MU UL, in  TLVs RX_PPDU_END and
208 			RX_PPDU_END_STATUS_DONE, this field is the OR of all the
209 			users.
210 
211 
212 
213 			<legal all>
214 */
215 #define RX_RXPCU_CLASSIFICATION_OVERVIEW_0_MONITOR_DIRECT_MPDUS_FCS_OK_OFFSET 0x00000000
216 #define RX_RXPCU_CLASSIFICATION_OVERVIEW_0_MONITOR_DIRECT_MPDUS_FCS_OK_LSB 3
217 #define RX_RXPCU_CLASSIFICATION_OVERVIEW_0_MONITOR_DIRECT_MPDUS_FCS_OK_MASK 0x00000008
218 
219 /* Description		RX_RXPCU_CLASSIFICATION_OVERVIEW_0_MONITOR_OTHER_MPDUS
220 
221 			When set, at least one Monitor Direct MPDU has been
222 			received. FCS might or might not have been passing.
223 
224 
225 
226 			For MU UL, in  TLVs RX_PPDU_END and
227 			RX_PPDU_END_STATUS_DONE, this field is the OR of all the
228 			users.
229 
230 			<legal all>
231 */
232 #define RX_RXPCU_CLASSIFICATION_OVERVIEW_0_MONITOR_OTHER_MPDUS_OFFSET 0x00000000
233 #define RX_RXPCU_CLASSIFICATION_OVERVIEW_0_MONITOR_OTHER_MPDUS_LSB   4
234 #define RX_RXPCU_CLASSIFICATION_OVERVIEW_0_MONITOR_OTHER_MPDUS_MASK  0x00000010
235 
236 /* Description		RX_RXPCU_CLASSIFICATION_OVERVIEW_0_MONITOR_OTHER_MPDUS_FCS_OK
237 
238 			When set, at least one Monitor Direct MPDU has been
239 			received that has a correct FCS.
240 
241 
242 
243 			For MU UL, in  TLVs RX_PPDU_END and
244 			RX_PPDU_END_STATUS_DONE, this field is the OR of all the
245 			users.
246 
247 			<legal all>
248 */
249 #define RX_RXPCU_CLASSIFICATION_OVERVIEW_0_MONITOR_OTHER_MPDUS_FCS_OK_OFFSET 0x00000000
250 #define RX_RXPCU_CLASSIFICATION_OVERVIEW_0_MONITOR_OTHER_MPDUS_FCS_OK_LSB 5
251 #define RX_RXPCU_CLASSIFICATION_OVERVIEW_0_MONITOR_OTHER_MPDUS_FCS_OK_MASK 0x00000020
252 
253 /* Description		RX_RXPCU_CLASSIFICATION_OVERVIEW_0_PHYRX_ABORT_RECEIVED
254 
255 			When set, PPDU reception was aborted by the PHY
256 
257 			<legal all>
258 */
259 #define RX_RXPCU_CLASSIFICATION_OVERVIEW_0_PHYRX_ABORT_RECEIVED_OFFSET 0x00000000
260 #define RX_RXPCU_CLASSIFICATION_OVERVIEW_0_PHYRX_ABORT_RECEIVED_LSB  6
261 #define RX_RXPCU_CLASSIFICATION_OVERVIEW_0_PHYRX_ABORT_RECEIVED_MASK 0x00000040
262 
263 /* Description		RX_RXPCU_CLASSIFICATION_OVERVIEW_0_RESERVED_0
264 
265 			<legal 0>
266 */
267 #define RX_RXPCU_CLASSIFICATION_OVERVIEW_0_RESERVED_0_OFFSET         0x00000000
268 #define RX_RXPCU_CLASSIFICATION_OVERVIEW_0_RESERVED_0_LSB            7
269 #define RX_RXPCU_CLASSIFICATION_OVERVIEW_0_RESERVED_0_MASK           0x0000ff80
270 
271 /* Description		RX_RXPCU_CLASSIFICATION_OVERVIEW_0_PHY_PPDU_ID
272 
273 			A ppdu counter value that PHY increments for every PPDU
274 			received. The counter value wraps around
275 
276 			<legal all>
277 */
278 #define RX_RXPCU_CLASSIFICATION_OVERVIEW_0_PHY_PPDU_ID_OFFSET        0x00000000
279 #define RX_RXPCU_CLASSIFICATION_OVERVIEW_0_PHY_PPDU_ID_LSB           16
280 #define RX_RXPCU_CLASSIFICATION_OVERVIEW_0_PHY_PPDU_ID_MASK          0xffff0000
281 
282 
283 #endif // _RX_RXPCU_CLASSIFICATION_OVERVIEW_H_
284