1 /*
2  * Copyright (c) 2024 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 #ifndef _HT_SIG_INFO_H_
19 #define _HT_SIG_INFO_H_
20 
21 #define NUM_OF_DWORDS_HT_SIG_INFO 2
22 
23 struct ht_sig_info {
24 #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
25              uint32_t mcs                                                     :  7,
26                       cbw                                                     :  1,
27                       length                                                  : 16,
28                       reserved_0                                              :  8;
29              uint32_t smoothing                                               :  1,
30                       not_sounding                                            :  1,
31                       ht_reserved                                             :  1,
32                       aggregation                                             :  1,
33                       stbc                                                    :  2,
34                       fec_coding                                              :  1,
35                       short_gi                                                :  1,
36                       num_ext_sp_str                                          :  2,
37                       crc                                                     :  8,
38                       signal_tail                                             :  6,
39                       reserved_1                                              :  7,
40                       rx_integrity_check_passed                               :  1;
41 #else
42              uint32_t reserved_0                                              :  8,
43                       length                                                  : 16,
44                       cbw                                                     :  1,
45                       mcs                                                     :  7;
46              uint32_t rx_integrity_check_passed                               :  1,
47                       reserved_1                                              :  7,
48                       signal_tail                                             :  6,
49                       crc                                                     :  8,
50                       num_ext_sp_str                                          :  2,
51                       short_gi                                                :  1,
52                       fec_coding                                              :  1,
53                       stbc                                                    :  2,
54                       aggregation                                             :  1,
55                       ht_reserved                                             :  1,
56                       not_sounding                                            :  1,
57                       smoothing                                               :  1;
58 #endif
59 };
60 
61 #define HT_SIG_INFO_MCS_OFFSET                                                      0x00000000
62 #define HT_SIG_INFO_MCS_LSB                                                         0
63 #define HT_SIG_INFO_MCS_MSB                                                         6
64 #define HT_SIG_INFO_MCS_MASK                                                        0x0000007f
65 
66 #define HT_SIG_INFO_CBW_OFFSET                                                      0x00000000
67 #define HT_SIG_INFO_CBW_LSB                                                         7
68 #define HT_SIG_INFO_CBW_MSB                                                         7
69 #define HT_SIG_INFO_CBW_MASK                                                        0x00000080
70 
71 #define HT_SIG_INFO_LENGTH_OFFSET                                                   0x00000000
72 #define HT_SIG_INFO_LENGTH_LSB                                                      8
73 #define HT_SIG_INFO_LENGTH_MSB                                                      23
74 #define HT_SIG_INFO_LENGTH_MASK                                                     0x00ffff00
75 
76 #define HT_SIG_INFO_RESERVED_0_OFFSET                                               0x00000000
77 #define HT_SIG_INFO_RESERVED_0_LSB                                                  24
78 #define HT_SIG_INFO_RESERVED_0_MSB                                                  31
79 #define HT_SIG_INFO_RESERVED_0_MASK                                                 0xff000000
80 
81 #define HT_SIG_INFO_SMOOTHING_OFFSET                                                0x00000004
82 #define HT_SIG_INFO_SMOOTHING_LSB                                                   0
83 #define HT_SIG_INFO_SMOOTHING_MSB                                                   0
84 #define HT_SIG_INFO_SMOOTHING_MASK                                                  0x00000001
85 
86 #define HT_SIG_INFO_NOT_SOUNDING_OFFSET                                             0x00000004
87 #define HT_SIG_INFO_NOT_SOUNDING_LSB                                                1
88 #define HT_SIG_INFO_NOT_SOUNDING_MSB                                                1
89 #define HT_SIG_INFO_NOT_SOUNDING_MASK                                               0x00000002
90 
91 #define HT_SIG_INFO_HT_RESERVED_OFFSET                                              0x00000004
92 #define HT_SIG_INFO_HT_RESERVED_LSB                                                 2
93 #define HT_SIG_INFO_HT_RESERVED_MSB                                                 2
94 #define HT_SIG_INFO_HT_RESERVED_MASK                                                0x00000004
95 
96 #define HT_SIG_INFO_AGGREGATION_OFFSET                                              0x00000004
97 #define HT_SIG_INFO_AGGREGATION_LSB                                                 3
98 #define HT_SIG_INFO_AGGREGATION_MSB                                                 3
99 #define HT_SIG_INFO_AGGREGATION_MASK                                                0x00000008
100 
101 #define HT_SIG_INFO_STBC_OFFSET                                                     0x00000004
102 #define HT_SIG_INFO_STBC_LSB                                                        4
103 #define HT_SIG_INFO_STBC_MSB                                                        5
104 #define HT_SIG_INFO_STBC_MASK                                                       0x00000030
105 
106 #define HT_SIG_INFO_FEC_CODING_OFFSET                                               0x00000004
107 #define HT_SIG_INFO_FEC_CODING_LSB                                                  6
108 #define HT_SIG_INFO_FEC_CODING_MSB                                                  6
109 #define HT_SIG_INFO_FEC_CODING_MASK                                                 0x00000040
110 
111 #define HT_SIG_INFO_SHORT_GI_OFFSET                                                 0x00000004
112 #define HT_SIG_INFO_SHORT_GI_LSB                                                    7
113 #define HT_SIG_INFO_SHORT_GI_MSB                                                    7
114 #define HT_SIG_INFO_SHORT_GI_MASK                                                   0x00000080
115 
116 #define HT_SIG_INFO_NUM_EXT_SP_STR_OFFSET                                           0x00000004
117 #define HT_SIG_INFO_NUM_EXT_SP_STR_LSB                                              8
118 #define HT_SIG_INFO_NUM_EXT_SP_STR_MSB                                              9
119 #define HT_SIG_INFO_NUM_EXT_SP_STR_MASK                                             0x00000300
120 
121 #define HT_SIG_INFO_CRC_OFFSET                                                      0x00000004
122 #define HT_SIG_INFO_CRC_LSB                                                         10
123 #define HT_SIG_INFO_CRC_MSB                                                         17
124 #define HT_SIG_INFO_CRC_MASK                                                        0x0003fc00
125 
126 #define HT_SIG_INFO_SIGNAL_TAIL_OFFSET                                              0x00000004
127 #define HT_SIG_INFO_SIGNAL_TAIL_LSB                                                 18
128 #define HT_SIG_INFO_SIGNAL_TAIL_MSB                                                 23
129 #define HT_SIG_INFO_SIGNAL_TAIL_MASK                                                0x00fc0000
130 
131 #define HT_SIG_INFO_RESERVED_1_OFFSET                                               0x00000004
132 #define HT_SIG_INFO_RESERVED_1_LSB                                                  24
133 #define HT_SIG_INFO_RESERVED_1_MSB                                                  30
134 #define HT_SIG_INFO_RESERVED_1_MASK                                                 0x7f000000
135 
136 #define HT_SIG_INFO_RX_INTEGRITY_CHECK_PASSED_OFFSET                                0x00000004
137 #define HT_SIG_INFO_RX_INTEGRITY_CHECK_PASSED_LSB                                   31
138 #define HT_SIG_INFO_RX_INTEGRITY_CHECK_PASSED_MSB                                   31
139 #define HT_SIG_INFO_RX_INTEGRITY_CHECK_PASSED_MASK                                  0x80000000
140 
141 #endif
142