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