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 _PHYRX_ABORT_REQUEST_INFO_H_ 18 #define _PHYRX_ABORT_REQUEST_INFO_H_ 19 #if !defined(__ASSEMBLER__) 20 #endif 21 22 23 // ################ START SUMMARY ################# 24 // 25 // Dword Fields 26 // 0 phyrx_abort_reason[7:0], phy_enters_nap_state[8], phy_enters_defer_state[9], reserved_0[15:10], receive_duration[31:16] 27 // 28 // ################ END SUMMARY ################# 29 30 #define NUM_OF_DWORDS_PHYRX_ABORT_REQUEST_INFO 1 31 32 struct phyrx_abort_request_info { 33 uint32_t phyrx_abort_reason : 8, //[7:0] 34 phy_enters_nap_state : 1, //[8] 35 phy_enters_defer_state : 1, //[9] 36 reserved_0 : 6, //[15:10] 37 receive_duration : 16; //[31:16] 38 }; 39 40 /* 41 42 phyrx_abort_reason 43 44 <enum 0 phyrx_err_phy_off> Reception aborted due to 45 receiving a PHY_OFF TLV 46 47 <enum 1 phyrx_err_synth_off> 48 49 <enum 2 phyrx_err_ofdma_timing> 50 51 <enum 3 phyrx_err_ofdma_signal_parity> 52 53 <enum 4 phyrx_err_ofdma_rate_illegal> 54 55 <enum 5 phyrx_err_ofdma_length_illegal> 56 57 <enum 6 phyrx_err_ofdma_restart> 58 59 <enum 7 phyrx_err_ofdma_service> 60 61 <enum 8 phyrx_err_ppdu_ofdma_power_drop> 62 63 64 65 <enum 9 phyrx_err_cck_blokker> 66 67 <enum 10 phyrx_err_cck_timing> 68 69 <enum 11 phyrx_err_cck_header_crc> 70 71 <enum 12 phyrx_err_cck_rate_illegal> 72 73 <enum 13 phyrx_err_cck_length_illegal> 74 75 <enum 14 phyrx_err_cck_restart> 76 77 <enum 15 phyrx_err_cck_service> 78 79 <enum 16 phyrx_err_cck_power_drop> 80 81 82 83 <enum 17 phyrx_err_ht_crc_err> 84 85 <enum 18 phyrx_err_ht_length_illegal> 86 87 <enum 19 phyrx_err_ht_rate_illegal> 88 89 <enum 20 phyrx_err_ht_zlf> 90 91 <enum 21 phyrx_err_false_radar_ext> 92 93 94 95 <enum 22 phyrx_err_green_field> 96 97 98 99 <enum 23 phyrx_err_bw_gt_dyn_bw> 100 101 <enum 24 phyrx_err_leg_ht_mismatch> 102 103 <enum 25 phyrx_err_vht_crc_error> 104 105 <enum 26 phyrx_err_vht_siga_unsupported> 106 107 <enum 27 phyrx_err_vht_lsig_len_invalid> 108 109 <enum 28 phyrx_err_vht_ndp_or_zlf> 110 111 <enum 29 phyrx_err_vht_nsym_lt_zero> 112 113 <enum 30 phyrx_err_vht_rx_extra_symbol_mismatch> 114 115 <enum 31 phyrx_err_vht_rx_skip_group_id0> 116 117 <enum 32 phyrx_err_vht_rx_skip_group_id1to62> 118 119 <enum 33 phyrx_err_vht_rx_skip_group_id63> 120 121 <enum 34 phyrx_err_ofdm_ldpc_decoder_disabled> 122 123 <enum 35 phyrx_err_defer_nap> 124 125 <enum 36 phyrx_err_fdomain_timeout> 126 127 <enum 37 phyrx_err_lsig_rel_check> 128 129 <enum 38 phyrx_err_bt_collision> 130 131 <enum 39 phyrx_err_unsupported_mu_feedback> 132 133 <enum 40 phyrx_err_ppdu_tx_interrupt_rx> 134 135 <enum 41 phyrx_err_unsupported_cbf> 136 137 138 139 <enum 42 phyrx_err_other> Should not really be used. If 140 needed, ask for documentation update 141 142 143 144 <enum 43 phyrx_err_he_siga_unsupported > <enum 44 145 phyrx_err_he_crc_error > <enum 45 146 phyrx_err_he_sigb_unsupported > <enum 46 147 phyrx_err_he_mu_mode_unsupported > <enum 47 148 phyrx_err_he_ndp_or_zlf > <enum 48 phyrx_err_he_nsym_lt_zero 149 > <enum 49 phyrx_err_he_ru_params_unsupported > <enum 50 150 phyrx_err_he_num_users_unsupported ><enum 51 151 phyrx_err_he_sounding_params_unsupported > 152 153 154 155 <enum 52 phyrx_err_MU_UL_no_power_detected> 156 157 <enum 53 phyrx_err_MU_UL_not_for_me> 158 159 160 161 <legal 0 - 53> 162 163 phy_enters_nap_state 164 165 When set, PHY enters PHY NAP state after sending this 166 abort 167 168 169 170 Note that nap and defer state are mutually exclusive. 171 172 173 174 Field put pro-actively in place....usage still to be 175 agreed upon. 176 177 <legal all> 178 179 phy_enters_defer_state 180 181 When set, PHY enters PHY defer state after sending this 182 abort 183 184 185 186 Note that nap and defer state are mutually exclusive. 187 188 189 190 Field put pro-actively in place....usage still to be 191 agreed upon. 192 193 <legal all> 194 195 reserved_0 196 197 <legal 0> 198 199 receive_duration 200 201 The remaining receive duration of this PPDU in the 202 medium (in us). When PHY does not know this duration when 203 this TLV is generated, the field will be set to 0. 204 205 The timing reference point is the reception by the MAC 206 of this TLV. The value shall be accurate to within 2us. 207 208 209 210 In case Phy_enters_nap_state and/or 211 Phy_enters_defer_state is set, there is a possibility that 212 MAC PMM can also decide to go into a low(er) power state. 213 214 <legal all> 215 */ 216 217 218 /* Description PHYRX_ABORT_REQUEST_INFO_0_PHYRX_ABORT_REASON 219 220 <enum 0 phyrx_err_phy_off> Reception aborted due to 221 receiving a PHY_OFF TLV 222 223 <enum 1 phyrx_err_synth_off> 224 225 <enum 2 phyrx_err_ofdma_timing> 226 227 <enum 3 phyrx_err_ofdma_signal_parity> 228 229 <enum 4 phyrx_err_ofdma_rate_illegal> 230 231 <enum 5 phyrx_err_ofdma_length_illegal> 232 233 <enum 6 phyrx_err_ofdma_restart> 234 235 <enum 7 phyrx_err_ofdma_service> 236 237 <enum 8 phyrx_err_ppdu_ofdma_power_drop> 238 239 240 241 <enum 9 phyrx_err_cck_blokker> 242 243 <enum 10 phyrx_err_cck_timing> 244 245 <enum 11 phyrx_err_cck_header_crc> 246 247 <enum 12 phyrx_err_cck_rate_illegal> 248 249 <enum 13 phyrx_err_cck_length_illegal> 250 251 <enum 14 phyrx_err_cck_restart> 252 253 <enum 15 phyrx_err_cck_service> 254 255 <enum 16 phyrx_err_cck_power_drop> 256 257 258 259 <enum 17 phyrx_err_ht_crc_err> 260 261 <enum 18 phyrx_err_ht_length_illegal> 262 263 <enum 19 phyrx_err_ht_rate_illegal> 264 265 <enum 20 phyrx_err_ht_zlf> 266 267 <enum 21 phyrx_err_false_radar_ext> 268 269 270 271 <enum 22 phyrx_err_green_field> 272 273 274 275 <enum 23 phyrx_err_bw_gt_dyn_bw> 276 277 <enum 24 phyrx_err_leg_ht_mismatch> 278 279 <enum 25 phyrx_err_vht_crc_error> 280 281 <enum 26 phyrx_err_vht_siga_unsupported> 282 283 <enum 27 phyrx_err_vht_lsig_len_invalid> 284 285 <enum 28 phyrx_err_vht_ndp_or_zlf> 286 287 <enum 29 phyrx_err_vht_nsym_lt_zero> 288 289 <enum 30 phyrx_err_vht_rx_extra_symbol_mismatch> 290 291 <enum 31 phyrx_err_vht_rx_skip_group_id0> 292 293 <enum 32 phyrx_err_vht_rx_skip_group_id1to62> 294 295 <enum 33 phyrx_err_vht_rx_skip_group_id63> 296 297 <enum 34 phyrx_err_ofdm_ldpc_decoder_disabled> 298 299 <enum 35 phyrx_err_defer_nap> 300 301 <enum 36 phyrx_err_fdomain_timeout> 302 303 <enum 37 phyrx_err_lsig_rel_check> 304 305 <enum 38 phyrx_err_bt_collision> 306 307 <enum 39 phyrx_err_unsupported_mu_feedback> 308 309 <enum 40 phyrx_err_ppdu_tx_interrupt_rx> 310 311 <enum 41 phyrx_err_unsupported_cbf> 312 313 314 315 <enum 42 phyrx_err_other> Should not really be used. If 316 needed, ask for documentation update 317 318 319 320 <enum 43 phyrx_err_he_siga_unsupported > <enum 44 321 phyrx_err_he_crc_error > <enum 45 322 phyrx_err_he_sigb_unsupported > <enum 46 323 phyrx_err_he_mu_mode_unsupported > <enum 47 324 phyrx_err_he_ndp_or_zlf > <enum 48 phyrx_err_he_nsym_lt_zero 325 > <enum 49 phyrx_err_he_ru_params_unsupported > <enum 50 326 phyrx_err_he_num_users_unsupported ><enum 51 327 phyrx_err_he_sounding_params_unsupported > 328 329 330 331 <enum 52 phyrx_err_MU_UL_no_power_detected> 332 333 <enum 53 phyrx_err_MU_UL_not_for_me> 334 335 336 337 <legal 0 - 53> 338 */ 339 #define PHYRX_ABORT_REQUEST_INFO_0_PHYRX_ABORT_REASON_OFFSET 0x00000000 340 #define PHYRX_ABORT_REQUEST_INFO_0_PHYRX_ABORT_REASON_LSB 0 341 #define PHYRX_ABORT_REQUEST_INFO_0_PHYRX_ABORT_REASON_MASK 0x000000ff 342 343 /* Description PHYRX_ABORT_REQUEST_INFO_0_PHY_ENTERS_NAP_STATE 344 345 When set, PHY enters PHY NAP state after sending this 346 abort 347 348 349 350 Note that nap and defer state are mutually exclusive. 351 352 353 354 Field put pro-actively in place....usage still to be 355 agreed upon. 356 357 <legal all> 358 */ 359 #define PHYRX_ABORT_REQUEST_INFO_0_PHY_ENTERS_NAP_STATE_OFFSET 0x00000000 360 #define PHYRX_ABORT_REQUEST_INFO_0_PHY_ENTERS_NAP_STATE_LSB 8 361 #define PHYRX_ABORT_REQUEST_INFO_0_PHY_ENTERS_NAP_STATE_MASK 0x00000100 362 363 /* Description PHYRX_ABORT_REQUEST_INFO_0_PHY_ENTERS_DEFER_STATE 364 365 When set, PHY enters PHY defer state after sending this 366 abort 367 368 369 370 Note that nap and defer state are mutually exclusive. 371 372 373 374 Field put pro-actively in place....usage still to be 375 agreed upon. 376 377 <legal all> 378 */ 379 #define PHYRX_ABORT_REQUEST_INFO_0_PHY_ENTERS_DEFER_STATE_OFFSET 0x00000000 380 #define PHYRX_ABORT_REQUEST_INFO_0_PHY_ENTERS_DEFER_STATE_LSB 9 381 #define PHYRX_ABORT_REQUEST_INFO_0_PHY_ENTERS_DEFER_STATE_MASK 0x00000200 382 383 /* Description PHYRX_ABORT_REQUEST_INFO_0_RESERVED_0 384 385 <legal 0> 386 */ 387 #define PHYRX_ABORT_REQUEST_INFO_0_RESERVED_0_OFFSET 0x00000000 388 #define PHYRX_ABORT_REQUEST_INFO_0_RESERVED_0_LSB 10 389 #define PHYRX_ABORT_REQUEST_INFO_0_RESERVED_0_MASK 0x0000fc00 390 391 /* Description PHYRX_ABORT_REQUEST_INFO_0_RECEIVE_DURATION 392 393 The remaining receive duration of this PPDU in the 394 medium (in us). When PHY does not know this duration when 395 this TLV is generated, the field will be set to 0. 396 397 The timing reference point is the reception by the MAC 398 of this TLV. The value shall be accurate to within 2us. 399 400 401 402 In case Phy_enters_nap_state and/or 403 Phy_enters_defer_state is set, there is a possibility that 404 MAC PMM can also decide to go into a low(er) power state. 405 406 <legal all> 407 */ 408 #define PHYRX_ABORT_REQUEST_INFO_0_RECEIVE_DURATION_OFFSET 0x00000000 409 #define PHYRX_ABORT_REQUEST_INFO_0_RECEIVE_DURATION_LSB 16 410 #define PHYRX_ABORT_REQUEST_INFO_0_RECEIVE_DURATION_MASK 0xffff0000 411 412 413 #endif // _PHYRX_ABORT_REQUEST_INFO_H_ 414