1 2 /* 3 * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. 4 * 5 * Permission to use, copy, modify, and/or distribute this software for any 6 * purpose with or without fee is hereby granted, provided that the above 7 * copyright notice and this permission notice appear in all copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 */ 17 18 19 20 #ifndef _NO_ACK_REPORT_H_ 21 #define _NO_ACK_REPORT_H_ 22 #if !defined(__ASSEMBLER__) 23 #endif 24 25 #define NUM_OF_DWORDS_NO_ACK_REPORT 4 26 27 struct no_ack_report { 28 #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 29 uint32_t no_ack_transmit_reason : 4, 30 macrx_abort_reason : 4, 31 phyrx_abort_reason : 8, 32 frame_control : 16; 33 uint32_t rx_ppdu_duration : 24, 34 sr_ppdu_during_obss : 1, 35 selfgen_response_reason_to_sr_ppdu : 4, 36 reserved_1 : 3; 37 uint32_t pre_bt_broadcast_status_details : 12, 38 first_bt_broadcast_status_details : 12, 39 reserved_2 : 8; 40 uint32_t second_bt_broadcast_status_details : 12, 41 reserved_3 : 20; 42 #else 43 uint32_t frame_control : 16, 44 phyrx_abort_reason : 8, 45 macrx_abort_reason : 4, 46 no_ack_transmit_reason : 4; 47 uint32_t reserved_1 : 3, 48 selfgen_response_reason_to_sr_ppdu : 4, 49 sr_ppdu_during_obss : 1, 50 rx_ppdu_duration : 24; 51 uint32_t reserved_2 : 8, 52 first_bt_broadcast_status_details : 12, 53 pre_bt_broadcast_status_details : 12; 54 uint32_t reserved_3 : 20, 55 second_bt_broadcast_status_details : 12; 56 #endif 57 }; 58 59 #define NO_ACK_REPORT_NO_ACK_TRANSMIT_REASON_OFFSET 0x00000000 60 #define NO_ACK_REPORT_NO_ACK_TRANSMIT_REASON_LSB 0 61 #define NO_ACK_REPORT_NO_ACK_TRANSMIT_REASON_MSB 3 62 #define NO_ACK_REPORT_NO_ACK_TRANSMIT_REASON_MASK 0x0000000f 63 64 #define NO_ACK_REPORT_MACRX_ABORT_REASON_OFFSET 0x00000000 65 #define NO_ACK_REPORT_MACRX_ABORT_REASON_LSB 4 66 #define NO_ACK_REPORT_MACRX_ABORT_REASON_MSB 7 67 #define NO_ACK_REPORT_MACRX_ABORT_REASON_MASK 0x000000f0 68 69 #define NO_ACK_REPORT_PHYRX_ABORT_REASON_OFFSET 0x00000000 70 #define NO_ACK_REPORT_PHYRX_ABORT_REASON_LSB 8 71 #define NO_ACK_REPORT_PHYRX_ABORT_REASON_MSB 15 72 #define NO_ACK_REPORT_PHYRX_ABORT_REASON_MASK 0x0000ff00 73 74 #define NO_ACK_REPORT_FRAME_CONTROL_OFFSET 0x00000000 75 #define NO_ACK_REPORT_FRAME_CONTROL_LSB 16 76 #define NO_ACK_REPORT_FRAME_CONTROL_MSB 31 77 #define NO_ACK_REPORT_FRAME_CONTROL_MASK 0xffff0000 78 79 #define NO_ACK_REPORT_RX_PPDU_DURATION_OFFSET 0x00000004 80 #define NO_ACK_REPORT_RX_PPDU_DURATION_LSB 0 81 #define NO_ACK_REPORT_RX_PPDU_DURATION_MSB 23 82 #define NO_ACK_REPORT_RX_PPDU_DURATION_MASK 0x00ffffff 83 84 #define NO_ACK_REPORT_SR_PPDU_DURING_OBSS_OFFSET 0x00000004 85 #define NO_ACK_REPORT_SR_PPDU_DURING_OBSS_LSB 24 86 #define NO_ACK_REPORT_SR_PPDU_DURING_OBSS_MSB 24 87 #define NO_ACK_REPORT_SR_PPDU_DURING_OBSS_MASK 0x01000000 88 89 #define NO_ACK_REPORT_SELFGEN_RESPONSE_REASON_TO_SR_PPDU_OFFSET 0x00000004 90 #define NO_ACK_REPORT_SELFGEN_RESPONSE_REASON_TO_SR_PPDU_LSB 25 91 #define NO_ACK_REPORT_SELFGEN_RESPONSE_REASON_TO_SR_PPDU_MSB 28 92 #define NO_ACK_REPORT_SELFGEN_RESPONSE_REASON_TO_SR_PPDU_MASK 0x1e000000 93 94 #define NO_ACK_REPORT_RESERVED_1_OFFSET 0x00000004 95 #define NO_ACK_REPORT_RESERVED_1_LSB 29 96 #define NO_ACK_REPORT_RESERVED_1_MSB 31 97 #define NO_ACK_REPORT_RESERVED_1_MASK 0xe0000000 98 99 #define NO_ACK_REPORT_PRE_BT_BROADCAST_STATUS_DETAILS_OFFSET 0x00000008 100 #define NO_ACK_REPORT_PRE_BT_BROADCAST_STATUS_DETAILS_LSB 0 101 #define NO_ACK_REPORT_PRE_BT_BROADCAST_STATUS_DETAILS_MSB 11 102 #define NO_ACK_REPORT_PRE_BT_BROADCAST_STATUS_DETAILS_MASK 0x00000fff 103 104 #define NO_ACK_REPORT_FIRST_BT_BROADCAST_STATUS_DETAILS_OFFSET 0x00000008 105 #define NO_ACK_REPORT_FIRST_BT_BROADCAST_STATUS_DETAILS_LSB 12 106 #define NO_ACK_REPORT_FIRST_BT_BROADCAST_STATUS_DETAILS_MSB 23 107 #define NO_ACK_REPORT_FIRST_BT_BROADCAST_STATUS_DETAILS_MASK 0x00fff000 108 109 #define NO_ACK_REPORT_RESERVED_2_OFFSET 0x00000008 110 #define NO_ACK_REPORT_RESERVED_2_LSB 24 111 #define NO_ACK_REPORT_RESERVED_2_MSB 31 112 #define NO_ACK_REPORT_RESERVED_2_MASK 0xff000000 113 114 #define NO_ACK_REPORT_SECOND_BT_BROADCAST_STATUS_DETAILS_OFFSET 0x0000000c 115 #define NO_ACK_REPORT_SECOND_BT_BROADCAST_STATUS_DETAILS_LSB 0 116 #define NO_ACK_REPORT_SECOND_BT_BROADCAST_STATUS_DETAILS_MSB 11 117 #define NO_ACK_REPORT_SECOND_BT_BROADCAST_STATUS_DETAILS_MASK 0x00000fff 118 119 #define NO_ACK_REPORT_RESERVED_3_OFFSET 0x0000000c 120 #define NO_ACK_REPORT_RESERVED_3_LSB 12 121 #define NO_ACK_REPORT_RESERVED_3_MSB 31 122 #define NO_ACK_REPORT_RESERVED_3_MASK 0xfffff000 123 124 #endif 125