OSDN Git Service

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