• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /******************************************************************************
2  *
3  * Copyright(c) 2016 - 2019 Realtek Corporation. All rights reserved.
4  *
5  * This program is free software; you can redistribute it and/or modify it
6  * under the terms of version 2 of the GNU General Public License as
7  * published by the Free Software Foundation.
8  *
9  * This program is distributed in the hope that it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12  * more details.
13  *
14  ******************************************************************************/
15 
16 #ifndef _HAL_ORIGINALC2HFORMAT_H2C_C2H_AP_H_
17 #define _HAL_ORIGINALC2HFORMAT_H2C_C2H_AP_H_
18 #define CMD_ID_C2H 0X00
19 #define CMD_ID_DBG 0X00
20 #define CMD_ID_C2H_LB 0X01
21 #define CMD_ID_C2H_SND_TXBF 0X02
22 #define CMD_ID_C2H_CCX_RPT 0X03
23 #define CMD_ID_C2H_AP_REQ_TXRPT 0X04
24 #define CMD_ID_C2H_INITIAL_RATE_COLLECTION 0X05
25 #define CMD_ID_C2H_RA_RPT 0X0C
26 #define CMD_ID_C2H_SPECIAL_STATISTICS 0X0D
27 #define CMD_ID_C2H_RA_PARA_RPT 0X0E
28 #define CMD_ID_C2H_CUR_CHANNEL 0X10
29 #define CMD_ID_C2H_GPIO_WAKEUP 0X14
30 #define CMD_ID_C2H_DROPID_RPT 0X2D
31 #define CMD_ID_C2H_LPS_STATUS_RPT 0X32
32 #define C2H_GET_CMD_ID(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 0, 8)
33 #define C2H_SET_CMD_ID(c2h_pkt, value)                                         \
34 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 0, 8, value)
35 #define C2H_SET_CMD_ID_NO_CLR(c2h_pkt, value)                                  \
36 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 0, 8, value)
37 #define C2H_GET_SEQ(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 8, 8)
38 #define C2H_SET_SEQ(c2h_pkt, value)                                            \
39 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 8, 8, value)
40 #define C2H_SET_SEQ_NO_CLR(c2h_pkt, value)                                     \
41 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 8, 8, value)
42 #define DBG_GET_CMD_ID(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 0, 8)
43 #define DBG_SET_CMD_ID(c2h_pkt, value)                                         \
44 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 0, 8, value)
45 #define DBG_SET_CMD_ID_NO_CLR(c2h_pkt, value)                                  \
46 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 0, 8, value)
47 #define DBG_GET_SEQ(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 8, 8)
48 #define DBG_SET_SEQ(c2h_pkt, value)                                            \
49 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 8, 8, value)
50 #define DBG_SET_SEQ_NO_CLR(c2h_pkt, value)                                     \
51 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 8, 8, value)
52 #define DBG_GET_DBG_STR1(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 16, 8)
53 #define DBG_SET_DBG_STR1(c2h_pkt, value)                                       \
54 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 16, 8, value)
55 #define DBG_SET_DBG_STR1_NO_CLR(c2h_pkt, value)                                \
56 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 16, 8, value)
57 #define DBG_GET_DBG_STR2(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 24, 8)
58 #define DBG_SET_DBG_STR2(c2h_pkt, value)                                       \
59 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 24, 8, value)
60 #define DBG_SET_DBG_STR2_NO_CLR(c2h_pkt, value)                                \
61 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 24, 8, value)
62 #define DBG_GET_DBG_STR3(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X04, 0, 8)
63 #define DBG_SET_DBG_STR3(c2h_pkt, value)                                       \
64 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 0, 8, value)
65 #define DBG_SET_DBG_STR3_NO_CLR(c2h_pkt, value)                                \
66 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 0, 8, value)
67 #define DBG_GET_DBG_STR4(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X04, 8, 8)
68 #define DBG_SET_DBG_STR4(c2h_pkt, value)                                       \
69 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 8, 8, value)
70 #define DBG_SET_DBG_STR4_NO_CLR(c2h_pkt, value)                                \
71 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 8, 8, value)
72 #define DBG_GET_DBG_STR5(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X04, 16, 8)
73 #define DBG_SET_DBG_STR5(c2h_pkt, value)                                       \
74 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 16, 8, value)
75 #define DBG_SET_DBG_STR5_NO_CLR(c2h_pkt, value)                                \
76 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 16, 8, value)
77 #define DBG_GET_DBG_STR6(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X04, 24, 8)
78 #define DBG_SET_DBG_STR6(c2h_pkt, value)                                       \
79 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 24, 8, value)
80 #define DBG_SET_DBG_STR6_NO_CLR(c2h_pkt, value)                                \
81 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 24, 8, value)
82 #define DBG_GET_DBG_STR7(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X08, 0, 8)
83 #define DBG_SET_DBG_STR7(c2h_pkt, value)                                       \
84 	SET_C2H_FIELD_CLR(c2h_pkt + 0X08, 0, 8, value)
85 #define DBG_SET_DBG_STR7_NO_CLR(c2h_pkt, value)                                \
86 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X08, 0, 8, value)
87 #define DBG_GET_DBG_STR8(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X08, 8, 8)
88 #define DBG_SET_DBG_STR8(c2h_pkt, value)                                       \
89 	SET_C2H_FIELD_CLR(c2h_pkt + 0X08, 8, 8, value)
90 #define DBG_SET_DBG_STR8_NO_CLR(c2h_pkt, value)                                \
91 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X08, 8, 8, value)
92 #define DBG_GET_DBG_STR9(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X08, 16, 8)
93 #define DBG_SET_DBG_STR9(c2h_pkt, value)                                       \
94 	SET_C2H_FIELD_CLR(c2h_pkt + 0X08, 16, 8, value)
95 #define DBG_SET_DBG_STR9_NO_CLR(c2h_pkt, value)                                \
96 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X08, 16, 8, value)
97 #define DBG_GET_DBG_STR10(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X08, 24, 8)
98 #define DBG_SET_DBG_STR10(c2h_pkt, value)                                      \
99 	SET_C2H_FIELD_CLR(c2h_pkt + 0X08, 24, 8, value)
100 #define DBG_SET_DBG_STR10_NO_CLR(c2h_pkt, value)                               \
101 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X08, 24, 8, value)
102 #define DBG_GET_DBG_STR11(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X0C, 0, 8)
103 #define DBG_SET_DBG_STR11(c2h_pkt, value)                                      \
104 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 0, 8, value)
105 #define DBG_SET_DBG_STR11_NO_CLR(c2h_pkt, value)                               \
106 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 0, 8, value)
107 #define DBG_GET_DBG_STR12(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X0C, 8, 8)
108 #define DBG_SET_DBG_STR12(c2h_pkt, value)                                      \
109 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 8, 8, value)
110 #define DBG_SET_DBG_STR12_NO_CLR(c2h_pkt, value)                               \
111 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 8, 8, value)
112 #define DBG_GET_LEN(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X0C, 16, 8)
113 #define DBG_SET_LEN(c2h_pkt, value)                                            \
114 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 16, 8, value)
115 #define DBG_SET_LEN_NO_CLR(c2h_pkt, value)                                     \
116 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 16, 8, value)
117 #define DBG_GET_TRIGGER(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X0C, 24, 8)
118 #define DBG_SET_TRIGGER(c2h_pkt, value)                                        \
119 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 24, 8, value)
120 #define DBG_SET_TRIGGER_NO_CLR(c2h_pkt, value)                                 \
121 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 24, 8, value)
122 #define C2H_LB_GET_CMD_ID(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 0, 8)
123 #define C2H_LB_SET_CMD_ID(c2h_pkt, value)                                      \
124 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 0, 8, value)
125 #define C2H_LB_SET_CMD_ID_NO_CLR(c2h_pkt, value)                               \
126 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 0, 8, value)
127 #define C2H_LB_GET_SEQ(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 8, 8)
128 #define C2H_LB_SET_SEQ(c2h_pkt, value)                                         \
129 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 8, 8, value)
130 #define C2H_LB_SET_SEQ_NO_CLR(c2h_pkt, value)                                  \
131 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 8, 8, value)
132 #define C2H_LB_GET_PAYLOAD1(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 16, 16)
133 #define C2H_LB_SET_PAYLOAD1(c2h_pkt, value)                                    \
134 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 16, 16, value)
135 #define C2H_LB_SET_PAYLOAD1_NO_CLR(c2h_pkt, value)                             \
136 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 16, 16, value)
137 #define C2H_LB_GET_PAYLOAD2(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X04, 0, 32)
138 #define C2H_LB_SET_PAYLOAD2(c2h_pkt, value)                                    \
139 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 0, 32, value)
140 #define C2H_LB_SET_PAYLOAD2_NO_CLR(c2h_pkt, value)                             \
141 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 0, 32, value)
142 #define C2H_LB_GET_LEN(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X0C, 16, 8)
143 #define C2H_LB_SET_LEN(c2h_pkt, value)                                         \
144 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 16, 8, value)
145 #define C2H_LB_SET_LEN_NO_CLR(c2h_pkt, value)                                  \
146 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 16, 8, value)
147 #define C2H_LB_GET_TRIGGER(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X0C, 24, 8)
148 #define C2H_LB_SET_TRIGGER(c2h_pkt, value)                                     \
149 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 24, 8, value)
150 #define C2H_LB_SET_TRIGGER_NO_CLR(c2h_pkt, value)                              \
151 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 24, 8, value)
152 #define C2H_SND_TXBF_GET_CMD_ID(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 0, 8)
153 #define C2H_SND_TXBF_SET_CMD_ID(c2h_pkt, value)                                \
154 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 0, 8, value)
155 #define C2H_SND_TXBF_SET_CMD_ID_NO_CLR(c2h_pkt, value)                         \
156 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 0, 8, value)
157 #define C2H_SND_TXBF_GET_SEQ(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 8, 8)
158 #define C2H_SND_TXBF_SET_SEQ(c2h_pkt, value)                                   \
159 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 8, 8, value)
160 #define C2H_SND_TXBF_SET_SEQ_NO_CLR(c2h_pkt, value)                            \
161 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 8, 8, value)
162 #define C2H_SND_TXBF_GET_SND_RESULT(c2h_pkt)                                   \
163 	GET_C2H_FIELD(c2h_pkt + 0X00, 16, 1)
164 #define C2H_SND_TXBF_SET_SND_RESULT(c2h_pkt, value)                            \
165 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 16, 1, value)
166 #define C2H_SND_TXBF_SET_SND_RESULT_NO_CLR(c2h_pkt, value)                     \
167 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 16, 1, value)
168 #define C2H_SND_TXBF_GET_LEN(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X0C, 16, 8)
169 #define C2H_SND_TXBF_SET_LEN(c2h_pkt, value)                                   \
170 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 16, 8, value)
171 #define C2H_SND_TXBF_SET_LEN_NO_CLR(c2h_pkt, value)                            \
172 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 16, 8, value)
173 #define C2H_SND_TXBF_GET_TRIGGER(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X0C, 24, 8)
174 #define C2H_SND_TXBF_SET_TRIGGER(c2h_pkt, value)                               \
175 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 24, 8, value)
176 #define C2H_SND_TXBF_SET_TRIGGER_NO_CLR(c2h_pkt, value)                        \
177 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 24, 8, value)
178 #define C2H_CCX_RPT_GET_CMD_ID(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 0, 8)
179 #define C2H_CCX_RPT_SET_CMD_ID(c2h_pkt, value)                                 \
180 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 0, 8, value)
181 #define C2H_CCX_RPT_SET_CMD_ID_NO_CLR(c2h_pkt, value)                          \
182 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 0, 8, value)
183 #define C2H_CCX_RPT_GET_SEQ(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 8, 8)
184 #define C2H_CCX_RPT_SET_SEQ(c2h_pkt, value)                                    \
185 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 8, 8, value)
186 #define C2H_CCX_RPT_SET_SEQ_NO_CLR(c2h_pkt, value)                             \
187 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 8, 8, value)
188 #define C2H_CCX_RPT_GET_QSEL(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 16, 5)
189 #define C2H_CCX_RPT_SET_QSEL(c2h_pkt, value)                                   \
190 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 16, 5, value)
191 #define C2H_CCX_RPT_SET_QSEL_NO_CLR(c2h_pkt, value)                            \
192 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 16, 5, value)
193 #define C2H_CCX_RPT_GET_BMC(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 21, 1)
194 #define C2H_CCX_RPT_SET_BMC(c2h_pkt, value)                                    \
195 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 21, 1, value)
196 #define C2H_CCX_RPT_SET_BMC_NO_CLR(c2h_pkt, value)                             \
197 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 21, 1, value)
198 #define C2H_CCX_RPT_GET_LIFE_TIME_OVER(c2h_pkt)                                \
199 	GET_C2H_FIELD(c2h_pkt + 0X00, 22, 1)
200 #define C2H_CCX_RPT_SET_LIFE_TIME_OVER(c2h_pkt, value)                         \
201 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 22, 1, value)
202 #define C2H_CCX_RPT_SET_LIFE_TIME_OVER_NO_CLR(c2h_pkt, value)                  \
203 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 22, 1, value)
204 #define C2H_CCX_RPT_GET_RETRY_OVER(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 23, 1)
205 #define C2H_CCX_RPT_SET_RETRY_OVER(c2h_pkt, value)                             \
206 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 23, 1, value)
207 #define C2H_CCX_RPT_SET_RETRY_OVER_NO_CLR(c2h_pkt, value)                      \
208 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 23, 1, value)
209 #define C2H_CCX_RPT_GET_MACID(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 24, 8)
210 #define C2H_CCX_RPT_SET_MACID(c2h_pkt, value)                                  \
211 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 24, 8, value)
212 #define C2H_CCX_RPT_SET_MACID_NO_CLR(c2h_pkt, value)                           \
213 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 24, 8, value)
214 #define C2H_CCX_RPT_GET_DATA_RETRY_CNT(c2h_pkt)                                \
215 	GET_C2H_FIELD(c2h_pkt + 0X04, 0, 6)
216 #define C2H_CCX_RPT_SET_DATA_RETRY_CNT(c2h_pkt, value)                         \
217 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 0, 6, value)
218 #define C2H_CCX_RPT_SET_DATA_RETRY_CNT_NO_CLR(c2h_pkt, value)                  \
219 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 0, 6, value)
220 #define C2H_CCX_RPT_GET_QUEUE7_0(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X04, 8, 8)
221 #define C2H_CCX_RPT_SET_QUEUE7_0(c2h_pkt, value)                               \
222 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 8, 8, value)
223 #define C2H_CCX_RPT_SET_QUEUE7_0_NO_CLR(c2h_pkt, value)                        \
224 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 8, 8, value)
225 #define C2H_CCX_RPT_GET_QUEUE15_8(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X04, 16, 8)
226 #define C2H_CCX_RPT_SET_QUEUE15_8(c2h_pkt, value)                              \
227 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 16, 8, value)
228 #define C2H_CCX_RPT_SET_QUEUE15_8_NO_CLR(c2h_pkt, value)                       \
229 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 16, 8, value)
230 #define C2H_CCX_RPT_GET_FINAL_DATA_RATE(c2h_pkt)                               \
231 	GET_C2H_FIELD(c2h_pkt + 0X04, 24, 8)
232 #define C2H_CCX_RPT_SET_FINAL_DATA_RATE(c2h_pkt, value)                        \
233 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 24, 8, value)
234 #define C2H_CCX_RPT_SET_FINAL_DATA_RATE_NO_CLR(c2h_pkt, value)                 \
235 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 24, 8, value)
236 #define C2H_CCX_RPT_GET_SW_DEFINE_0(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X08, 0, 8)
237 #define C2H_CCX_RPT_SET_SW_DEFINE_0(c2h_pkt, value)                            \
238 	SET_C2H_FIELD_CLR(c2h_pkt + 0X08, 0, 8, value)
239 #define C2H_CCX_RPT_SET_SW_DEFINE_0_NO_CLR(c2h_pkt, value)                     \
240 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X08, 0, 8, value)
241 #define C2H_CCX_RPT_GET_SW_DEFINE_1(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X08, 8, 4)
242 #define C2H_CCX_RPT_SET_SW_DEFINE_1(c2h_pkt, value)                            \
243 	SET_C2H_FIELD_CLR(c2h_pkt + 0X08, 8, 4, value)
244 #define C2H_CCX_RPT_SET_SW_DEFINE_1_NO_CLR(c2h_pkt, value)                     \
245 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X08, 8, 4, value)
246 #define C2H_CCX_RPT_GET_LEN(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X0C, 16, 8)
247 #define C2H_CCX_RPT_SET_LEN(c2h_pkt, value)                                    \
248 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 16, 8, value)
249 #define C2H_CCX_RPT_SET_LEN_NO_CLR(c2h_pkt, value)                             \
250 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 16, 8, value)
251 #define C2H_CCX_RPT_GET_TRIGGER(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X0C, 24, 8)
252 #define C2H_CCX_RPT_SET_TRIGGER(c2h_pkt, value)                                \
253 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 24, 8, value)
254 #define C2H_CCX_RPT_SET_TRIGGER_NO_CLR(c2h_pkt, value)                         \
255 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 24, 8, value)
256 #define C2H_AP_REQ_TXRPT_GET_CMD_ID(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 0, 8)
257 #define C2H_AP_REQ_TXRPT_SET_CMD_ID(c2h_pkt, value)                            \
258 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 0, 8, value)
259 #define C2H_AP_REQ_TXRPT_SET_CMD_ID_NO_CLR(c2h_pkt, value)                     \
260 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 0, 8, value)
261 #define C2H_AP_REQ_TXRPT_GET_SEQ(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 8, 8)
262 #define C2H_AP_REQ_TXRPT_SET_SEQ(c2h_pkt, value)                               \
263 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 8, 8, value)
264 #define C2H_AP_REQ_TXRPT_SET_SEQ_NO_CLR(c2h_pkt, value)                        \
265 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 8, 8, value)
266 #define C2H_AP_REQ_TXRPT_GET_STA1_MACID(c2h_pkt)                               \
267 	GET_C2H_FIELD(c2h_pkt + 0X00, 16, 8)
268 #define C2H_AP_REQ_TXRPT_SET_STA1_MACID(c2h_pkt, value)                        \
269 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 16, 8, value)
270 #define C2H_AP_REQ_TXRPT_SET_STA1_MACID_NO_CLR(c2h_pkt, value)                 \
271 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 16, 8, value)
272 #define C2H_AP_REQ_TXRPT_GET_TX_OK1_0(c2h_pkt)                                 \
273 	GET_C2H_FIELD(c2h_pkt + 0X00, 24, 8)
274 #define C2H_AP_REQ_TXRPT_SET_TX_OK1_0(c2h_pkt, value)                          \
275 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 24, 8, value)
276 #define C2H_AP_REQ_TXRPT_SET_TX_OK1_0_NO_CLR(c2h_pkt, value)                   \
277 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 24, 8, value)
278 #define C2H_AP_REQ_TXRPT_GET_TX_OK1_1(c2h_pkt)                                 \
279 	GET_C2H_FIELD(c2h_pkt + 0X04, 0, 8)
280 #define C2H_AP_REQ_TXRPT_SET_TX_OK1_1(c2h_pkt, value)                          \
281 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 0, 8, value)
282 #define C2H_AP_REQ_TXRPT_SET_TX_OK1_1_NO_CLR(c2h_pkt, value)                   \
283 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 0, 8, value)
284 #define C2H_AP_REQ_TXRPT_GET_TX_FAIL1_0(c2h_pkt)                               \
285 	GET_C2H_FIELD(c2h_pkt + 0X04, 8, 8)
286 #define C2H_AP_REQ_TXRPT_SET_TX_FAIL1_0(c2h_pkt, value)                        \
287 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 8, 8, value)
288 #define C2H_AP_REQ_TXRPT_SET_TX_FAIL1_0_NO_CLR(c2h_pkt, value)                 \
289 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 8, 8, value)
290 #define C2H_AP_REQ_TXRPT_GET_TX_FAIL1_1(c2h_pkt)                               \
291 	GET_C2H_FIELD(c2h_pkt + 0X04, 16, 8)
292 #define C2H_AP_REQ_TXRPT_SET_TX_FAIL1_1(c2h_pkt, value)                        \
293 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 16, 8, value)
294 #define C2H_AP_REQ_TXRPT_SET_TX_FAIL1_1_NO_CLR(c2h_pkt, value)                 \
295 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 16, 8, value)
296 #define C2H_AP_REQ_TXRPT_GET_INITIAL_RATE1(c2h_pkt)                            \
297 	GET_C2H_FIELD(c2h_pkt + 0X04, 24, 8)
298 #define C2H_AP_REQ_TXRPT_SET_INITIAL_RATE1(c2h_pkt, value)                     \
299 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 24, 8, value)
300 #define C2H_AP_REQ_TXRPT_SET_INITIAL_RATE1_NO_CLR(c2h_pkt, value)              \
301 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 24, 8, value)
302 #define C2H_AP_REQ_TXRPT_GET_STA2_MACID(c2h_pkt)                               \
303 	GET_C2H_FIELD(c2h_pkt + 0X08, 0, 8)
304 #define C2H_AP_REQ_TXRPT_SET_STA2_MACID(c2h_pkt, value)                        \
305 	SET_C2H_FIELD_CLR(c2h_pkt + 0X08, 0, 8, value)
306 #define C2H_AP_REQ_TXRPT_SET_STA2_MACID_NO_CLR(c2h_pkt, value)                 \
307 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X08, 0, 8, value)
308 #define C2H_AP_REQ_TXRPT_GET_TX_OK2_0(c2h_pkt)                                 \
309 	GET_C2H_FIELD(c2h_pkt + 0X08, 8, 8)
310 #define C2H_AP_REQ_TXRPT_SET_TX_OK2_0(c2h_pkt, value)                          \
311 	SET_C2H_FIELD_CLR(c2h_pkt + 0X08, 8, 8, value)
312 #define C2H_AP_REQ_TXRPT_SET_TX_OK2_0_NO_CLR(c2h_pkt, value)                   \
313 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X08, 8, 8, value)
314 #define C2H_AP_REQ_TXRPT_GET_TX_OK2_1(c2h_pkt)                                 \
315 	GET_C2H_FIELD(c2h_pkt + 0X08, 16, 8)
316 #define C2H_AP_REQ_TXRPT_SET_TX_OK2_1(c2h_pkt, value)                          \
317 	SET_C2H_FIELD_CLR(c2h_pkt + 0X08, 16, 8, value)
318 #define C2H_AP_REQ_TXRPT_SET_TX_OK2_1_NO_CLR(c2h_pkt, value)                   \
319 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X08, 16, 8, value)
320 #define C2H_AP_REQ_TXRPT_GET_TX_FAIL2_0(c2h_pkt)                               \
321 	GET_C2H_FIELD(c2h_pkt + 0X08, 24, 8)
322 #define C2H_AP_REQ_TXRPT_SET_TX_FAIL2_0(c2h_pkt, value)                        \
323 	SET_C2H_FIELD_CLR(c2h_pkt + 0X08, 24, 8, value)
324 #define C2H_AP_REQ_TXRPT_SET_TX_FAIL2_0_NO_CLR(c2h_pkt, value)                 \
325 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X08, 24, 8, value)
326 #define C2H_AP_REQ_TXRPT_GET_TX_FAIL2_1(c2h_pkt)                               \
327 	GET_C2H_FIELD(c2h_pkt + 0X0C, 0, 8)
328 #define C2H_AP_REQ_TXRPT_SET_TX_FAIL2_1(c2h_pkt, value)                        \
329 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 0, 8, value)
330 #define C2H_AP_REQ_TXRPT_SET_TX_FAIL2_1_NO_CLR(c2h_pkt, value)                 \
331 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 0, 8, value)
332 #define C2H_AP_REQ_TXRPT_GET_INITIAL_RATE2(c2h_pkt)                            \
333 	GET_C2H_FIELD(c2h_pkt + 0X0C, 8, 8)
334 #define C2H_AP_REQ_TXRPT_SET_INITIAL_RATE2(c2h_pkt, value)                     \
335 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 8, 8, value)
336 #define C2H_AP_REQ_TXRPT_SET_INITIAL_RATE2_NO_CLR(c2h_pkt, value)              \
337 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 8, 8, value)
338 #define C2H_AP_REQ_TXRPT_GET_LEN(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X0C, 16, 8)
339 #define C2H_AP_REQ_TXRPT_SET_LEN(c2h_pkt, value)                               \
340 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 16, 8, value)
341 #define C2H_AP_REQ_TXRPT_SET_LEN_NO_CLR(c2h_pkt, value)                        \
342 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 16, 8, value)
343 #define C2H_AP_REQ_TXRPT_GET_TRIGGER(c2h_pkt)                                  \
344 	GET_C2H_FIELD(c2h_pkt + 0X0C, 24, 8)
345 #define C2H_AP_REQ_TXRPT_SET_TRIGGER(c2h_pkt, value)                           \
346 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 24, 8, value)
347 #define C2H_AP_REQ_TXRPT_SET_TRIGGER_NO_CLR(c2h_pkt, value)                    \
348 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 24, 8, value)
349 #define C2H_INITIAL_RATE_COLLECTION_GET_CMD_ID(c2h_pkt)                        \
350 	GET_C2H_FIELD(c2h_pkt + 0X00, 0, 8)
351 #define C2H_INITIAL_RATE_COLLECTION_SET_CMD_ID(c2h_pkt, value)                 \
352 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 0, 8, value)
353 #define C2H_INITIAL_RATE_COLLECTION_SET_CMD_ID_NO_CLR(c2h_pkt, value)          \
354 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 0, 8, value)
355 #define C2H_INITIAL_RATE_COLLECTION_GET_SEQ(c2h_pkt)                           \
356 	GET_C2H_FIELD(c2h_pkt + 0X00, 8, 8)
357 #define C2H_INITIAL_RATE_COLLECTION_SET_SEQ(c2h_pkt, value)                    \
358 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 8, 8, value)
359 #define C2H_INITIAL_RATE_COLLECTION_SET_SEQ_NO_CLR(c2h_pkt, value)             \
360 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 8, 8, value)
361 #define C2H_INITIAL_RATE_COLLECTION_GET_TRYING_BITMAP(c2h_pkt)                 \
362 	GET_C2H_FIELD(c2h_pkt + 0X00, 16, 7)
363 #define C2H_INITIAL_RATE_COLLECTION_SET_TRYING_BITMAP(c2h_pkt, value)          \
364 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 16, 7, value)
365 #define C2H_INITIAL_RATE_COLLECTION_SET_TRYING_BITMAP_NO_CLR(c2h_pkt, value)   \
366 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 16, 7, value)
367 #define C2H_INITIAL_RATE_COLLECTION_GET_INITIAL_RATE1(c2h_pkt)                 \
368 	GET_C2H_FIELD(c2h_pkt + 0X00, 24, 8)
369 #define C2H_INITIAL_RATE_COLLECTION_SET_INITIAL_RATE1(c2h_pkt, value)          \
370 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 24, 8, value)
371 #define C2H_INITIAL_RATE_COLLECTION_SET_INITIAL_RATE1_NO_CLR(c2h_pkt, value)   \
372 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 24, 8, value)
373 #define C2H_INITIAL_RATE_COLLECTION_GET_INITIAL_RATE2(c2h_pkt)                 \
374 	GET_C2H_FIELD(c2h_pkt + 0X04, 0, 8)
375 #define C2H_INITIAL_RATE_COLLECTION_SET_INITIAL_RATE2(c2h_pkt, value)          \
376 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 0, 8, value)
377 #define C2H_INITIAL_RATE_COLLECTION_SET_INITIAL_RATE2_NO_CLR(c2h_pkt, value)   \
378 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 0, 8, value)
379 #define C2H_INITIAL_RATE_COLLECTION_GET_INITIAL_RATE3(c2h_pkt)                 \
380 	GET_C2H_FIELD(c2h_pkt + 0X04, 8, 8)
381 #define C2H_INITIAL_RATE_COLLECTION_SET_INITIAL_RATE3(c2h_pkt, value)          \
382 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 8, 8, value)
383 #define C2H_INITIAL_RATE_COLLECTION_SET_INITIAL_RATE3_NO_CLR(c2h_pkt, value)   \
384 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 8, 8, value)
385 #define C2H_INITIAL_RATE_COLLECTION_GET_INITIAL_RATE4(c2h_pkt)                 \
386 	GET_C2H_FIELD(c2h_pkt + 0X04, 16, 8)
387 #define C2H_INITIAL_RATE_COLLECTION_SET_INITIAL_RATE4(c2h_pkt, value)          \
388 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 16, 8, value)
389 #define C2H_INITIAL_RATE_COLLECTION_SET_INITIAL_RATE4_NO_CLR(c2h_pkt, value)   \
390 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 16, 8, value)
391 #define C2H_INITIAL_RATE_COLLECTION_GET_INITIAL_RATE5(c2h_pkt)                 \
392 	GET_C2H_FIELD(c2h_pkt + 0X04, 24, 8)
393 #define C2H_INITIAL_RATE_COLLECTION_SET_INITIAL_RATE5(c2h_pkt, value)          \
394 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 24, 8, value)
395 #define C2H_INITIAL_RATE_COLLECTION_SET_INITIAL_RATE5_NO_CLR(c2h_pkt, value)   \
396 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 24, 8, value)
397 #define C2H_INITIAL_RATE_COLLECTION_GET_INITIAL_RATE6(c2h_pkt)                 \
398 	GET_C2H_FIELD(c2h_pkt + 0X08, 0, 8)
399 #define C2H_INITIAL_RATE_COLLECTION_SET_INITIAL_RATE6(c2h_pkt, value)          \
400 	SET_C2H_FIELD_CLR(c2h_pkt + 0X08, 0, 8, value)
401 #define C2H_INITIAL_RATE_COLLECTION_SET_INITIAL_RATE6_NO_CLR(c2h_pkt, value)   \
402 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X08, 0, 8, value)
403 #define C2H_INITIAL_RATE_COLLECTION_GET_INITIAL_RATE7(c2h_pkt)                 \
404 	GET_C2H_FIELD(c2h_pkt + 0X08, 8, 8)
405 #define C2H_INITIAL_RATE_COLLECTION_SET_INITIAL_RATE7(c2h_pkt, value)          \
406 	SET_C2H_FIELD_CLR(c2h_pkt + 0X08, 8, 8, value)
407 #define C2H_INITIAL_RATE_COLLECTION_SET_INITIAL_RATE7_NO_CLR(c2h_pkt, value)   \
408 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X08, 8, 8, value)
409 #define C2H_INITIAL_RATE_COLLECTION_GET_LEN(c2h_pkt)                           \
410 	GET_C2H_FIELD(c2h_pkt + 0X0C, 16, 8)
411 #define C2H_INITIAL_RATE_COLLECTION_SET_LEN(c2h_pkt, value)                    \
412 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 16, 8, value)
413 #define C2H_INITIAL_RATE_COLLECTION_SET_LEN_NO_CLR(c2h_pkt, value)             \
414 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 16, 8, value)
415 #define C2H_INITIAL_RATE_COLLECTION_GET_TRIGGER(c2h_pkt)                       \
416 	GET_C2H_FIELD(c2h_pkt + 0X0C, 24, 8)
417 #define C2H_INITIAL_RATE_COLLECTION_SET_TRIGGER(c2h_pkt, value)                \
418 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 24, 8, value)
419 #define C2H_INITIAL_RATE_COLLECTION_SET_TRIGGER_NO_CLR(c2h_pkt, value)         \
420 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 24, 8, value)
421 #define C2H_RA_RPT_GET_CMD_ID(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 0, 8)
422 #define C2H_RA_RPT_SET_CMD_ID(c2h_pkt, value)                                  \
423 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 0, 8, value)
424 #define C2H_RA_RPT_SET_CMD_ID_NO_CLR(c2h_pkt, value)                           \
425 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 0, 8, value)
426 #define C2H_RA_RPT_GET_SEQ(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 8, 8)
427 #define C2H_RA_RPT_SET_SEQ(c2h_pkt, value)                                     \
428 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 8, 8, value)
429 #define C2H_RA_RPT_SET_SEQ_NO_CLR(c2h_pkt, value)                              \
430 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 8, 8, value)
431 #define C2H_RA_RPT_GET_RATE(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 16, 8)
432 #define C2H_RA_RPT_SET_RATE(c2h_pkt, value)                                    \
433 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 16, 8, value)
434 #define C2H_RA_RPT_SET_RATE_NO_CLR(c2h_pkt, value)                             \
435 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 16, 8, value)
436 #define C2H_RA_RPT_GET_MACID(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 24, 8)
437 #define C2H_RA_RPT_SET_MACID(c2h_pkt, value)                                   \
438 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 24, 8, value)
439 #define C2H_RA_RPT_SET_MACID_NO_CLR(c2h_pkt, value)                            \
440 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 24, 8, value)
441 #define C2H_RA_RPT_GET_USE_LDPC(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X04, 0, 1)
442 #define C2H_RA_RPT_SET_USE_LDPC(c2h_pkt, value)                                \
443 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 0, 1, value)
444 #define C2H_RA_RPT_SET_USE_LDPC_NO_CLR(c2h_pkt, value)                         \
445 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 0, 1, value)
446 #define C2H_RA_RPT_GET_USE_TXBF(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X04, 1, 1)
447 #define C2H_RA_RPT_SET_USE_TXBF(c2h_pkt, value)                                \
448 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 1, 1, value)
449 #define C2H_RA_RPT_SET_USE_TXBF_NO_CLR(c2h_pkt, value)                         \
450 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 1, 1, value)
451 #define C2H_RA_RPT_GET_COLLISION_STATE(c2h_pkt)                                \
452 	GET_C2H_FIELD(c2h_pkt + 0X04, 8, 8)
453 #define C2H_RA_RPT_SET_COLLISION_STATE(c2h_pkt, value)                         \
454 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 8, 8, value)
455 #define C2H_RA_RPT_SET_COLLISION_STATE_NO_CLR(c2h_pkt, value)                  \
456 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 8, 8, value)
457 #define C2H_RA_RPT_GET_LEN(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X0C, 16, 8)
458 #define C2H_RA_RPT_SET_LEN(c2h_pkt, value)                                     \
459 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 16, 8, value)
460 #define C2H_RA_RPT_SET_LEN_NO_CLR(c2h_pkt, value)                              \
461 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 16, 8, value)
462 #define C2H_RA_RPT_GET_TRIGGER(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X0C, 24, 8)
463 #define C2H_RA_RPT_SET_TRIGGER(c2h_pkt, value)                                 \
464 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 24, 8, value)
465 #define C2H_RA_RPT_SET_TRIGGER_NO_CLR(c2h_pkt, value)                          \
466 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 24, 8, value)
467 #define C2H_SPECIAL_STATISTICS_GET_CMD_ID(c2h_pkt)                             \
468 	GET_C2H_FIELD(c2h_pkt + 0X00, 0, 8)
469 #define C2H_SPECIAL_STATISTICS_SET_CMD_ID(c2h_pkt, value)                      \
470 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 0, 8, value)
471 #define C2H_SPECIAL_STATISTICS_SET_CMD_ID_NO_CLR(c2h_pkt, value)               \
472 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 0, 8, value)
473 #define C2H_SPECIAL_STATISTICS_GET_SEQ(c2h_pkt)                                \
474 	GET_C2H_FIELD(c2h_pkt + 0X00, 8, 8)
475 #define C2H_SPECIAL_STATISTICS_SET_SEQ(c2h_pkt, value)                         \
476 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 8, 8, value)
477 #define C2H_SPECIAL_STATISTICS_SET_SEQ_NO_CLR(c2h_pkt, value)                  \
478 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 8, 8, value)
479 #define C2H_SPECIAL_STATISTICS_GET_STATISTICS_IDX(c2h_pkt)                     \
480 	GET_C2H_FIELD(c2h_pkt + 0X00, 16, 8)
481 #define C2H_SPECIAL_STATISTICS_SET_STATISTICS_IDX(c2h_pkt, value)              \
482 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 16, 8, value)
483 #define C2H_SPECIAL_STATISTICS_SET_STATISTICS_IDX_NO_CLR(c2h_pkt, value)       \
484 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 16, 8, value)
485 #define C2H_SPECIAL_STATISTICS_GET_DATA0(c2h_pkt)                              \
486 	GET_C2H_FIELD(c2h_pkt + 0X00, 24, 8)
487 #define C2H_SPECIAL_STATISTICS_SET_DATA0(c2h_pkt, value)                       \
488 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 24, 8, value)
489 #define C2H_SPECIAL_STATISTICS_SET_DATA0_NO_CLR(c2h_pkt, value)                \
490 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 24, 8, value)
491 #define C2H_SPECIAL_STATISTICS_GET_DATA1(c2h_pkt)                              \
492 	GET_C2H_FIELD(c2h_pkt + 0X04, 0, 8)
493 #define C2H_SPECIAL_STATISTICS_SET_DATA1(c2h_pkt, value)                       \
494 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 0, 8, value)
495 #define C2H_SPECIAL_STATISTICS_SET_DATA1_NO_CLR(c2h_pkt, value)                \
496 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 0, 8, value)
497 #define C2H_SPECIAL_STATISTICS_GET_DATA2(c2h_pkt)                              \
498 	GET_C2H_FIELD(c2h_pkt + 0X04, 8, 8)
499 #define C2H_SPECIAL_STATISTICS_SET_DATA2(c2h_pkt, value)                       \
500 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 8, 8, value)
501 #define C2H_SPECIAL_STATISTICS_SET_DATA2_NO_CLR(c2h_pkt, value)                \
502 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 8, 8, value)
503 #define C2H_SPECIAL_STATISTICS_GET_DATA3(c2h_pkt)                              \
504 	GET_C2H_FIELD(c2h_pkt + 0X04, 16, 8)
505 #define C2H_SPECIAL_STATISTICS_SET_DATA3(c2h_pkt, value)                       \
506 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 16, 8, value)
507 #define C2H_SPECIAL_STATISTICS_SET_DATA3_NO_CLR(c2h_pkt, value)                \
508 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 16, 8, value)
509 #define C2H_SPECIAL_STATISTICS_GET_DATA4(c2h_pkt)                              \
510 	GET_C2H_FIELD(c2h_pkt + 0X04, 24, 8)
511 #define C2H_SPECIAL_STATISTICS_SET_DATA4(c2h_pkt, value)                       \
512 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 24, 8, value)
513 #define C2H_SPECIAL_STATISTICS_SET_DATA4_NO_CLR(c2h_pkt, value)                \
514 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 24, 8, value)
515 #define C2H_SPECIAL_STATISTICS_GET_DATA5(c2h_pkt)                              \
516 	GET_C2H_FIELD(c2h_pkt + 0X08, 0, 8)
517 #define C2H_SPECIAL_STATISTICS_SET_DATA5(c2h_pkt, value)                       \
518 	SET_C2H_FIELD_CLR(c2h_pkt + 0X08, 0, 8, value)
519 #define C2H_SPECIAL_STATISTICS_SET_DATA5_NO_CLR(c2h_pkt, value)                \
520 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X08, 0, 8, value)
521 #define C2H_SPECIAL_STATISTICS_GET_DATA6(c2h_pkt)                              \
522 	GET_C2H_FIELD(c2h_pkt + 0X08, 8, 8)
523 #define C2H_SPECIAL_STATISTICS_SET_DATA6(c2h_pkt, value)                       \
524 	SET_C2H_FIELD_CLR(c2h_pkt + 0X08, 8, 8, value)
525 #define C2H_SPECIAL_STATISTICS_SET_DATA6_NO_CLR(c2h_pkt, value)                \
526 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X08, 8, 8, value)
527 #define C2H_SPECIAL_STATISTICS_GET_DATA7(c2h_pkt)                              \
528 	GET_C2H_FIELD(c2h_pkt + 0X08, 16, 8)
529 #define C2H_SPECIAL_STATISTICS_SET_DATA7(c2h_pkt, value)                       \
530 	SET_C2H_FIELD_CLR(c2h_pkt + 0X08, 16, 8, value)
531 #define C2H_SPECIAL_STATISTICS_SET_DATA7_NO_CLR(c2h_pkt, value)                \
532 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X08, 16, 8, value)
533 #define C2H_SPECIAL_STATISTICS_GET_LEN(c2h_pkt)                                \
534 	GET_C2H_FIELD(c2h_pkt + 0X0C, 16, 8)
535 #define C2H_SPECIAL_STATISTICS_SET_LEN(c2h_pkt, value)                         \
536 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 16, 8, value)
537 #define C2H_SPECIAL_STATISTICS_SET_LEN_NO_CLR(c2h_pkt, value)                  \
538 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 16, 8, value)
539 #define C2H_SPECIAL_STATISTICS_GET_TRIGGER(c2h_pkt)                            \
540 	GET_C2H_FIELD(c2h_pkt + 0X0C, 24, 8)
541 #define C2H_SPECIAL_STATISTICS_SET_TRIGGER(c2h_pkt, value)                     \
542 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 24, 8, value)
543 #define C2H_SPECIAL_STATISTICS_SET_TRIGGER_NO_CLR(c2h_pkt, value)              \
544 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 24, 8, value)
545 #define C2H_RA_PARA_RPT_GET_CMD_ID(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 0, 8)
546 #define C2H_RA_PARA_RPT_SET_CMD_ID(c2h_pkt, value)                             \
547 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 0, 8, value)
548 #define C2H_RA_PARA_RPT_SET_CMD_ID_NO_CLR(c2h_pkt, value)                      \
549 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 0, 8, value)
550 #define C2H_RA_PARA_RPT_GET_SEQ(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 8, 8)
551 #define C2H_RA_PARA_RPT_SET_SEQ(c2h_pkt, value)                                \
552 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 8, 8, value)
553 #define C2H_RA_PARA_RPT_SET_SEQ_NO_CLR(c2h_pkt, value)                         \
554 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 8, 8, value)
555 #define C2H_RA_PARA_RPT_GET_LEN(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X0C, 16, 8)
556 #define C2H_RA_PARA_RPT_SET_LEN(c2h_pkt, value)                                \
557 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 16, 8, value)
558 #define C2H_RA_PARA_RPT_SET_LEN_NO_CLR(c2h_pkt, value)                         \
559 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 16, 8, value)
560 #define C2H_RA_PARA_RPT_GET_TRIGGER(c2h_pkt)                                   \
561 	GET_C2H_FIELD(c2h_pkt + 0X0C, 24, 8)
562 #define C2H_RA_PARA_RPT_SET_TRIGGER(c2h_pkt, value)                            \
563 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 24, 8, value)
564 #define C2H_RA_PARA_RPT_SET_TRIGGER_NO_CLR(c2h_pkt, value)                     \
565 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 24, 8, value)
566 #define C2H_CUR_CHANNEL_GET_CMD_ID(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 0, 8)
567 #define C2H_CUR_CHANNEL_SET_CMD_ID(c2h_pkt, value)                             \
568 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 0, 8, value)
569 #define C2H_CUR_CHANNEL_SET_CMD_ID_NO_CLR(c2h_pkt, value)                      \
570 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 0, 8, value)
571 #define C2H_CUR_CHANNEL_GET_SEQ(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 8, 8)
572 #define C2H_CUR_CHANNEL_SET_SEQ(c2h_pkt, value)                                \
573 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 8, 8, value)
574 #define C2H_CUR_CHANNEL_SET_SEQ_NO_CLR(c2h_pkt, value)                         \
575 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 8, 8, value)
576 #define C2H_CUR_CHANNEL_GET_CHANNEL_NUM(c2h_pkt)                               \
577 	GET_C2H_FIELD(c2h_pkt + 0X00, 16, 8)
578 #define C2H_CUR_CHANNEL_SET_CHANNEL_NUM(c2h_pkt, value)                        \
579 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 16, 8, value)
580 #define C2H_CUR_CHANNEL_SET_CHANNEL_NUM_NO_CLR(c2h_pkt, value)                 \
581 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 16, 8, value)
582 #define C2H_CUR_CHANNEL_GET_LEN(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X0C, 16, 8)
583 #define C2H_CUR_CHANNEL_SET_LEN(c2h_pkt, value)                                \
584 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 16, 8, value)
585 #define C2H_CUR_CHANNEL_SET_LEN_NO_CLR(c2h_pkt, value)                         \
586 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 16, 8, value)
587 #define C2H_CUR_CHANNEL_GET_TRIGGER(c2h_pkt)                                   \
588 	GET_C2H_FIELD(c2h_pkt + 0X0C, 24, 8)
589 #define C2H_CUR_CHANNEL_SET_TRIGGER(c2h_pkt, value)                            \
590 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 24, 8, value)
591 #define C2H_CUR_CHANNEL_SET_TRIGGER_NO_CLR(c2h_pkt, value)                     \
592 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 24, 8, value)
593 #define C2H_GPIO_WAKEUP_GET_CMD_ID(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 0, 8)
594 #define C2H_GPIO_WAKEUP_SET_CMD_ID(c2h_pkt, value)                             \
595 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 0, 8, value)
596 #define C2H_GPIO_WAKEUP_SET_CMD_ID_NO_CLR(c2h_pkt, value)                      \
597 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 0, 8, value)
598 #define C2H_GPIO_WAKEUP_GET_SEQ(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 8, 8)
599 #define C2H_GPIO_WAKEUP_SET_SEQ(c2h_pkt, value)                                \
600 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 8, 8, value)
601 #define C2H_GPIO_WAKEUP_SET_SEQ_NO_CLR(c2h_pkt, value)                         \
602 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 8, 8, value)
603 #define C2H_GPIO_WAKEUP_GET_LEN(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X0C, 16, 8)
604 #define C2H_GPIO_WAKEUP_SET_LEN(c2h_pkt, value)                                \
605 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 16, 8, value)
606 #define C2H_GPIO_WAKEUP_SET_LEN_NO_CLR(c2h_pkt, value)                         \
607 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 16, 8, value)
608 #define C2H_GPIO_WAKEUP_GET_TRIGGER(c2h_pkt)                                   \
609 	GET_C2H_FIELD(c2h_pkt + 0X0C, 24, 8)
610 #define C2H_GPIO_WAKEUP_SET_TRIGGER(c2h_pkt, value)                            \
611 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 24, 8, value)
612 #define C2H_GPIO_WAKEUP_SET_TRIGGER_NO_CLR(c2h_pkt, value)                     \
613 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 24, 8, value)
614 #define C2H_DROPID_RPT_GET_CMD_ID(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 0, 8)
615 #define C2H_DROPID_RPT_SET_CMD_ID(c2h_pkt, value)                              \
616 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 0, 8, value)
617 #define C2H_DROPID_RPT_SET_CMD_ID_NO_CLR(c2h_pkt, value)                       \
618 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 0, 8, value)
619 #define C2H_DROPID_RPT_GET_SEQ(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 8, 8)
620 #define C2H_DROPID_RPT_SET_SEQ(c2h_pkt, value)                                 \
621 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 8, 8, value)
622 #define C2H_DROPID_RPT_SET_SEQ_NO_CLR(c2h_pkt, value)                          \
623 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 8, 8, value)
624 #define C2H_DROPID_RPT_GET_DROPIDBIT(c2h_pkt)                                  \
625 	GET_C2H_FIELD(c2h_pkt + 0X00, 16, 4)
626 #define C2H_DROPID_RPT_SET_DROPIDBIT(c2h_pkt, value)                           \
627 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 16, 4, value)
628 #define C2H_DROPID_RPT_SET_DROPIDBIT_NO_CLR(c2h_pkt, value)                    \
629 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 16, 4, value)
630 #define C2H_DROPID_RPT_GET_CURDROPID(c2h_pkt)                                  \
631 	GET_C2H_FIELD(c2h_pkt + 0X00, 20, 2)
632 #define C2H_DROPID_RPT_SET_CURDROPID(c2h_pkt, value)                           \
633 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 20, 2, value)
634 #define C2H_DROPID_RPT_SET_CURDROPID_NO_CLR(c2h_pkt, value)                    \
635 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 20, 2, value)
636 #define C2H_DROPID_RPT_GET_MACID(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X04, 0, 8)
637 #define C2H_DROPID_RPT_SET_MACID(c2h_pkt, value)                               \
638 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 0, 8, value)
639 #define C2H_DROPID_RPT_SET_MACID_NO_CLR(c2h_pkt, value)                        \
640 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 0, 8, value)
641 #define C2H_DROPID_RPT_GET_LEN(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X0C, 16, 8)
642 #define C2H_DROPID_RPT_SET_LEN(c2h_pkt, value)                                 \
643 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 16, 8, value)
644 #define C2H_DROPID_RPT_SET_LEN_NO_CLR(c2h_pkt, value)                          \
645 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 16, 8, value)
646 #define C2H_DROPID_RPT_GET_TRIGGER(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X0C, 24, 8)
647 #define C2H_DROPID_RPT_SET_TRIGGER(c2h_pkt, value)                             \
648 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 24, 8, value)
649 #define C2H_DROPID_RPT_SET_TRIGGER_NO_CLR(c2h_pkt, value)                      \
650 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 24, 8, value)
651 #define C2H_LPS_STATUS_RPT_GET_CMD_ID(c2h_pkt)                                 \
652 	GET_C2H_FIELD(c2h_pkt + 0X00, 0, 8)
653 #define C2H_LPS_STATUS_RPT_SET_CMD_ID(c2h_pkt, value)                          \
654 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 0, 8, value)
655 #define C2H_LPS_STATUS_RPT_SET_CMD_ID_NO_CLR(c2h_pkt, value)                   \
656 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 0, 8, value)
657 #define C2H_LPS_STATUS_RPT_GET_SEQ(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 8, 8)
658 #define C2H_LPS_STATUS_RPT_SET_SEQ(c2h_pkt, value)                             \
659 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 8, 8, value)
660 #define C2H_LPS_STATUS_RPT_SET_SEQ_NO_CLR(c2h_pkt, value)                      \
661 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 8, 8, value)
662 #define C2H_LPS_STATUS_RPT_GET_ACTION(c2h_pkt)                                 \
663 	GET_C2H_FIELD(c2h_pkt + 0X00, 16, 8)
664 #define C2H_LPS_STATUS_RPT_SET_ACTION(c2h_pkt, value)                          \
665 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 16, 8, value)
666 #define C2H_LPS_STATUS_RPT_SET_ACTION_NO_CLR(c2h_pkt, value)                   \
667 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 16, 8, value)
668 #define C2H_LPS_STATUS_RPT_GET_STATUSCODE(c2h_pkt)                             \
669 	GET_C2H_FIELD(c2h_pkt + 0X00, 24, 8)
670 #define C2H_LPS_STATUS_RPT_SET_STATUSCODE(c2h_pkt, value)                      \
671 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 24, 8, value)
672 #define C2H_LPS_STATUS_RPT_SET_STATUSCODE_NO_CLR(c2h_pkt, value)               \
673 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 24, 8, value)
674 #define C2H_LPS_STATUS_RPT_GET_LEN(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X0C, 16, 8)
675 #define C2H_LPS_STATUS_RPT_SET_LEN(c2h_pkt, value)                             \
676 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 16, 8, value)
677 #define C2H_LPS_STATUS_RPT_SET_LEN_NO_CLR(c2h_pkt, value)                      \
678 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 16, 8, value)
679 #define C2H_LPS_STATUS_RPT_GET_TRIGGER(c2h_pkt)                                \
680 	GET_C2H_FIELD(c2h_pkt + 0X0C, 24, 8)
681 #define C2H_LPS_STATUS_RPT_SET_TRIGGER(c2h_pkt, value)                         \
682 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 24, 8, value)
683 #define C2H_LPS_STATUS_RPT_SET_TRIGGER_NO_CLR(c2h_pkt, value)                  \
684 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 24, 8, value)
685 #endif
686