• 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_FWOFFLOADH2CFORMAT_H2C_C2H_AP_H_
17 #define _HAL_FWOFFLOADH2CFORMAT_H2C_C2H_AP_H_
18 #define CMD_ID_FW_OFFLOAD_H2C 0XFF
19 #define CMD_ID_FW_ACCESS_TEST 0XFF
20 #define CMD_ID_CH_SWITCH 0XFF
21 #define CMD_ID_DUMP_PHYSICAL_EFUSE 0XFF
22 #define CMD_ID_UPDATE_BEACON_PARSING_INFO 0XFF
23 #define CMD_ID_CFG_PARAM 0XFF
24 #define CMD_ID_UPDATE_DATAPACK 0XFF
25 #define CMD_ID_RUN_DATAPACK 0XFF
26 #define CMD_ID_DOWNLOAD_FLASH 0XFF
27 #define CMD_ID_UPDATE_PKT 0XFF
28 #define CMD_ID_GENERAL_INFO 0XFF
29 #define CMD_ID_IQK 0XFF
30 #define CMD_ID_PWR_TRK 0XFF
31 #define CMD_ID_PSD 0XFF
32 #define CMD_ID_PHYDM_INFO 0XFF
33 #define CMD_ID_FW_SNDING 0XFF
34 #define CMD_ID_FW_FWCTRL 0XFF
35 #define CMD_ID_H2C_LOOPBACK 0XFF
36 #define CMD_ID_FWCMD_LOOPBACK 0XFF
37 #define CMD_ID_SEND_SCAN_PKT 0XFF
38 #define CMD_ID_BCN_OFFLOAD 0XFF
39 #define CMD_ID_DROP_SCAN_PKT 0XFF
40 #define CMD_ID_P2PPS 0XFF
41 #define CMD_ID_BT_COEX 0XFF
42 #define CMD_ID_ACT_SCHEDULE_REQ 0XFF
43 #define CMD_ID_NAN_CTRL 0XFF
44 #define CMD_ID_NAN_CHANNEL_PLAN_0 0XFF
45 #define CMD_ID_NAN_CHANNEL_PLAN_1 0XFF
46 #define CMD_ID_NAN_FUNC_CTRL 0XFF
47 #define CMD_ID_DPK 0XFF
48 #define CATEGORY_H2C_CMD_HEADER 0X00
49 #define CATEGORY_FW_OFFLOAD_H2C 0X01
50 #define CATEGORY_FW_ACCESS_TEST 0X01
51 #define CATEGORY_CH_SWITCH 0X01
52 #define CATEGORY_DUMP_PHYSICAL_EFUSE 0X01
53 #define CATEGORY_UPDATE_BEACON_PARSING_INFO 0X01
54 #define CATEGORY_CFG_PARAM 0X01
55 #define CATEGORY_UPDATE_DATAPACK 0X01
56 #define CATEGORY_RUN_DATAPACK 0X01
57 #define CATEGORY_DOWNLOAD_FLASH 0X01
58 #define CATEGORY_UPDATE_PKT 0X01
59 #define CATEGORY_GENERAL_INFO 0X01
60 #define CATEGORY_IQK 0X01
61 #define CATEGORY_PWR_TRK 0X01
62 #define CATEGORY_PSD 0X01
63 #define CATEGORY_PHYDM_INFO 0X01
64 #define CATEGORY_FW_SNDING 0X01
65 #define CATEGORY_FW_FWCTRL 0X01
66 #define CATEGORY_H2C_LOOPBACK 0X01
67 #define CATEGORY_FWCMD_LOOPBACK 0X01
68 #define CATEGORY_SEND_SCAN_PKT 0X01
69 #define CATEGORY_BCN_OFFLOAD 0X01
70 #define CATEGORY_DROP_SCAN_PKT 0X01
71 #define CATEGORY_P2PPS 0X01
72 #define CATEGORY_BT_COEX 0X01
73 #define CATEGORY_ACT_SCHEDULE_REQ 0X01
74 #define CATEGORY_NAN_CTRL 0X01
75 #define CATEGORY_NAN_CHANNEL_PLAN_0 0X01
76 #define CATEGORY_NAN_CHANNEL_PLAN_1 0X01
77 #define CATEGORY_NAN_FUNC_CTRL 0X01
78 #define CATEGORY_DPK 0X01
79 #define SUB_CMD_ID_FW_ACCESS_TEST 0X00
80 #define SUB_CMD_ID_CH_SWITCH 0X02
81 #define SUB_CMD_ID_DUMP_PHYSICAL_EFUSE 0X03
82 #define SUB_CMD_ID_UPDATE_BEACON_PARSING_INFO 0X05
83 #define SUB_CMD_ID_CFG_PARAM 0X08
84 #define SUB_CMD_ID_UPDATE_DATAPACK 0X09
85 #define SUB_CMD_ID_RUN_DATAPACK 0X0A
86 #define SUB_CMD_ID_DOWNLOAD_FLASH 0X0B
87 #define SUB_CMD_ID_UPDATE_PKT 0X0C
88 #define SUB_CMD_ID_GENERAL_INFO 0X0D
89 #define SUB_CMD_ID_IQK 0X0E
90 #define SUB_CMD_ID_PWR_TRK 0X0F
91 #define SUB_CMD_ID_PSD 0X10
92 #define SUB_CMD_ID_PHYDM_INFO 0X11
93 #define SUB_CMD_ID_FW_SNDING 0X12
94 #define SUB_CMD_ID_FW_FWCTRL 0X13
95 #define SUB_CMD_ID_H2C_LOOPBACK 0X14
96 #define SUB_CMD_ID_FWCMD_LOOPBACK 0X15
97 #define SUB_CMD_ID_SEND_SCAN_PKT 0X16
98 #define SUB_CMD_ID_BCN_OFFLOAD 0X17
99 #define SUB_CMD_ID_DROP_SCAN_PKT 0X18
100 #define SUB_CMD_ID_P2PPS 0X24
101 #define SUB_CMD_ID_BT_COEX 0X60
102 #define SUB_CMD_ID_ACT_SCHEDULE_REQ 0X70
103 #define SUB_CMD_ID_NAN_CTRL 0XB2
104 #define SUB_CMD_ID_NAN_CHANNEL_PLAN_0 0XB4
105 #define SUB_CMD_ID_NAN_CHANNEL_PLAN_1 0XB5
106 #define SUB_CMD_ID_NAN_FUNC_CTRL 0XB6
107 #define SUB_CMD_ID_DPK 0XB7
108 #define H2C_CMD_HEADER_GET_CATEGORY(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X00, 0, 7)
109 #define H2C_CMD_HEADER_SET_CATEGORY(h2c_pkt, value)                            \
110 	SET_H2C_FIELD_CLR(h2c_pkt + 0X00, 0, 7, value)
111 #define H2C_CMD_HEADER_SET_CATEGORY_NO_CLR(h2c_pkt, value)                     \
112 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X00, 0, 7, value)
113 #define H2C_CMD_HEADER_GET_ACK(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X00, 7, 1)
114 #define H2C_CMD_HEADER_SET_ACK(h2c_pkt, value)                                 \
115 	SET_H2C_FIELD_CLR(h2c_pkt + 0X00, 7, 1, value)
116 #define H2C_CMD_HEADER_SET_ACK_NO_CLR(h2c_pkt, value)                          \
117 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X00, 7, 1, value)
118 #define H2C_CMD_HEADER_GET_TOTAL_LEN(h2c_pkt)                                  \
119 	GET_H2C_FIELD(h2c_pkt + 0X04, 0, 16)
120 #define H2C_CMD_HEADER_SET_TOTAL_LEN(h2c_pkt, value)                           \
121 	SET_H2C_FIELD_CLR(h2c_pkt + 0X04, 0, 16, value)
122 #define H2C_CMD_HEADER_SET_TOTAL_LEN_NO_CLR(h2c_pkt, value)                    \
123 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X04, 0, 16, value)
124 #define H2C_CMD_HEADER_GET_SEQ_NUM(h2c_pkt)                                    \
125 	GET_H2C_FIELD(h2c_pkt + 0X04, 16, 16)
126 #define H2C_CMD_HEADER_SET_SEQ_NUM(h2c_pkt, value)                             \
127 	SET_H2C_FIELD_CLR(h2c_pkt + 0X04, 16, 16, value)
128 #define H2C_CMD_HEADER_SET_SEQ_NUM_NO_CLR(h2c_pkt, value)                      \
129 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X04, 16, 16, value)
130 #define FW_OFFLOAD_H2C_GET_CATEGORY(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X00, 0, 7)
131 #define FW_OFFLOAD_H2C_SET_CATEGORY(h2c_pkt, value)                            \
132 	SET_H2C_FIELD_CLR(h2c_pkt + 0X00, 0, 7, value)
133 #define FW_OFFLOAD_H2C_SET_CATEGORY_NO_CLR(h2c_pkt, value)                     \
134 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X00, 0, 7, value)
135 #define FW_OFFLOAD_H2C_GET_ACK(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X00, 7, 1)
136 #define FW_OFFLOAD_H2C_SET_ACK(h2c_pkt, value)                                 \
137 	SET_H2C_FIELD_CLR(h2c_pkt + 0X00, 7, 1, value)
138 #define FW_OFFLOAD_H2C_SET_ACK_NO_CLR(h2c_pkt, value)                          \
139 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X00, 7, 1, value)
140 #define FW_OFFLOAD_H2C_GET_CMD_ID(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X00, 8, 8)
141 #define FW_OFFLOAD_H2C_SET_CMD_ID(h2c_pkt, value)                              \
142 	SET_H2C_FIELD_CLR(h2c_pkt + 0X00, 8, 8, value)
143 #define FW_OFFLOAD_H2C_SET_CMD_ID_NO_CLR(h2c_pkt, value)                       \
144 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X00, 8, 8, value)
145 #define FW_OFFLOAD_H2C_GET_SUB_CMD_ID(h2c_pkt)                                 \
146 	GET_H2C_FIELD(h2c_pkt + 0X00, 16, 16)
147 #define FW_OFFLOAD_H2C_SET_SUB_CMD_ID(h2c_pkt, value)                          \
148 	SET_H2C_FIELD_CLR(h2c_pkt + 0X00, 16, 16, value)
149 #define FW_OFFLOAD_H2C_SET_SUB_CMD_ID_NO_CLR(h2c_pkt, value)                   \
150 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X00, 16, 16, value)
151 #define FW_OFFLOAD_H2C_GET_TOTAL_LEN(h2c_pkt)                                  \
152 	GET_H2C_FIELD(h2c_pkt + 0X04, 0, 16)
153 #define FW_OFFLOAD_H2C_SET_TOTAL_LEN(h2c_pkt, value)                           \
154 	SET_H2C_FIELD_CLR(h2c_pkt + 0X04, 0, 16, value)
155 #define FW_OFFLOAD_H2C_SET_TOTAL_LEN_NO_CLR(h2c_pkt, value)                    \
156 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X04, 0, 16, value)
157 #define FW_OFFLOAD_H2C_GET_SEQ_NUM(h2c_pkt)                                    \
158 	GET_H2C_FIELD(h2c_pkt + 0X04, 16, 16)
159 #define FW_OFFLOAD_H2C_SET_SEQ_NUM(h2c_pkt, value)                             \
160 	SET_H2C_FIELD_CLR(h2c_pkt + 0X04, 16, 16, value)
161 #define FW_OFFLOAD_H2C_SET_SEQ_NUM_NO_CLR(h2c_pkt, value)                      \
162 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X04, 16, 16, value)
163 #define FW_ACCESS_TEST_GET_ACCESS_TXFF(h2c_pkt)                                \
164 	GET_H2C_FIELD(h2c_pkt + 0X08, 0, 1)
165 #define FW_ACCESS_TEST_SET_ACCESS_TXFF(h2c_pkt, value)                         \
166 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 1, value)
167 #define FW_ACCESS_TEST_SET_ACCESS_TXFF_NO_CLR(h2c_pkt, value)                  \
168 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 1, value)
169 #define FW_ACCESS_TEST_GET_ACCESS_RXFF(h2c_pkt)                                \
170 	GET_H2C_FIELD(h2c_pkt + 0X08, 1, 1)
171 #define FW_ACCESS_TEST_SET_ACCESS_RXFF(h2c_pkt, value)                         \
172 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 1, 1, value)
173 #define FW_ACCESS_TEST_SET_ACCESS_RXFF_NO_CLR(h2c_pkt, value)                  \
174 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 1, 1, value)
175 #define FW_ACCESS_TEST_GET_ACCESS_FWFF(h2c_pkt)                                \
176 	GET_H2C_FIELD(h2c_pkt + 0X08, 2, 1)
177 #define FW_ACCESS_TEST_SET_ACCESS_FWFF(h2c_pkt, value)                         \
178 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 2, 1, value)
179 #define FW_ACCESS_TEST_SET_ACCESS_FWFF_NO_CLR(h2c_pkt, value)                  \
180 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 2, 1, value)
181 #define FW_ACCESS_TEST_GET_ACCESS_PHYFF(h2c_pkt)                               \
182 	GET_H2C_FIELD(h2c_pkt + 0X08, 3, 1)
183 #define FW_ACCESS_TEST_SET_ACCESS_PHYFF(h2c_pkt, value)                        \
184 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 3, 1, value)
185 #define FW_ACCESS_TEST_SET_ACCESS_PHYFF_NO_CLR(h2c_pkt, value)                 \
186 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 3, 1, value)
187 #define FW_ACCESS_TEST_GET_ACCESS_RPT_BUF(h2c_pkt)                             \
188 	GET_H2C_FIELD(h2c_pkt + 0X08, 4, 1)
189 #define FW_ACCESS_TEST_SET_ACCESS_RPT_BUF(h2c_pkt, value)                      \
190 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 4, 1, value)
191 #define FW_ACCESS_TEST_SET_ACCESS_RPT_BUF_NO_CLR(h2c_pkt, value)               \
192 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 4, 1, value)
193 #define FW_ACCESS_TEST_GET_ACCESS_CAM(h2c_pkt)                                 \
194 	GET_H2C_FIELD(h2c_pkt + 0X08, 5, 1)
195 #define FW_ACCESS_TEST_SET_ACCESS_CAM(h2c_pkt, value)                          \
196 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 5, 1, value)
197 #define FW_ACCESS_TEST_SET_ACCESS_CAM_NO_CLR(h2c_pkt, value)                   \
198 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 5, 1, value)
199 #define FW_ACCESS_TEST_GET_ACCESS_WOW_CAM(h2c_pkt)                             \
200 	GET_H2C_FIELD(h2c_pkt + 0X08, 6, 1)
201 #define FW_ACCESS_TEST_SET_ACCESS_WOW_CAM(h2c_pkt, value)                      \
202 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 6, 1, value)
203 #define FW_ACCESS_TEST_SET_ACCESS_WOW_CAM_NO_CLR(h2c_pkt, value)               \
204 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 6, 1, value)
205 #define FW_ACCESS_TEST_GET_ACCESS_RX_CAM(h2c_pkt)                              \
206 	GET_H2C_FIELD(h2c_pkt + 0X08, 7, 1)
207 #define FW_ACCESS_TEST_SET_ACCESS_RX_CAM(h2c_pkt, value)                       \
208 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 7, 1, value)
209 #define FW_ACCESS_TEST_SET_ACCESS_RX_CAM_NO_CLR(h2c_pkt, value)                \
210 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 7, 1, value)
211 #define FW_ACCESS_TEST_GET_ACCESS_BA_CAM(h2c_pkt)                              \
212 	GET_H2C_FIELD(h2c_pkt + 0X08, 8, 1)
213 #define FW_ACCESS_TEST_SET_ACCESS_BA_CAM(h2c_pkt, value)                       \
214 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 8, 1, value)
215 #define FW_ACCESS_TEST_SET_ACCESS_BA_CAM_NO_CLR(h2c_pkt, value)                \
216 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 8, 1, value)
217 #define FW_ACCESS_TEST_GET_ACCESS_MBSSID_CAM(h2c_pkt)                          \
218 	GET_H2C_FIELD(h2c_pkt + 0X08, 9, 1)
219 #define FW_ACCESS_TEST_SET_ACCESS_MBSSID_CAM(h2c_pkt, value)                   \
220 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 9, 1, value)
221 #define FW_ACCESS_TEST_SET_ACCESS_MBSSID_CAM_NO_CLR(h2c_pkt, value)            \
222 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 9, 1, value)
223 #define FW_ACCESS_TEST_GET_ACCESS_PAGE0(h2c_pkt)                               \
224 	GET_H2C_FIELD(h2c_pkt + 0X08, 16, 1)
225 #define FW_ACCESS_TEST_SET_ACCESS_PAGE0(h2c_pkt, value)                        \
226 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 16, 1, value)
227 #define FW_ACCESS_TEST_SET_ACCESS_PAGE0_NO_CLR(h2c_pkt, value)                 \
228 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 16, 1, value)
229 #define FW_ACCESS_TEST_GET_ACCESS_PAGE1(h2c_pkt)                               \
230 	GET_H2C_FIELD(h2c_pkt + 0X08, 17, 1)
231 #define FW_ACCESS_TEST_SET_ACCESS_PAGE1(h2c_pkt, value)                        \
232 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 17, 1, value)
233 #define FW_ACCESS_TEST_SET_ACCESS_PAGE1_NO_CLR(h2c_pkt, value)                 \
234 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 17, 1, value)
235 #define FW_ACCESS_TEST_GET_ACCESS_PAGE2(h2c_pkt)                               \
236 	GET_H2C_FIELD(h2c_pkt + 0X08, 18, 1)
237 #define FW_ACCESS_TEST_SET_ACCESS_PAGE2(h2c_pkt, value)                        \
238 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 18, 1, value)
239 #define FW_ACCESS_TEST_SET_ACCESS_PAGE2_NO_CLR(h2c_pkt, value)                 \
240 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 18, 1, value)
241 #define FW_ACCESS_TEST_GET_ACCESS_PAGE3(h2c_pkt)                               \
242 	GET_H2C_FIELD(h2c_pkt + 0X08, 19, 1)
243 #define FW_ACCESS_TEST_SET_ACCESS_PAGE3(h2c_pkt, value)                        \
244 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 19, 1, value)
245 #define FW_ACCESS_TEST_SET_ACCESS_PAGE3_NO_CLR(h2c_pkt, value)                 \
246 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 19, 1, value)
247 #define FW_ACCESS_TEST_GET_ACCESS_PAGE4(h2c_pkt)                               \
248 	GET_H2C_FIELD(h2c_pkt + 0X08, 20, 1)
249 #define FW_ACCESS_TEST_SET_ACCESS_PAGE4(h2c_pkt, value)                        \
250 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 20, 1, value)
251 #define FW_ACCESS_TEST_SET_ACCESS_PAGE4_NO_CLR(h2c_pkt, value)                 \
252 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 20, 1, value)
253 #define FW_ACCESS_TEST_GET_ACCESS_PAGE5(h2c_pkt)                               \
254 	GET_H2C_FIELD(h2c_pkt + 0X08, 21, 1)
255 #define FW_ACCESS_TEST_SET_ACCESS_PAGE5(h2c_pkt, value)                        \
256 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 21, 1, value)
257 #define FW_ACCESS_TEST_SET_ACCESS_PAGE5_NO_CLR(h2c_pkt, value)                 \
258 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 21, 1, value)
259 #define FW_ACCESS_TEST_GET_ACCESS_PAGE6(h2c_pkt)                               \
260 	GET_H2C_FIELD(h2c_pkt + 0X08, 22, 1)
261 #define FW_ACCESS_TEST_SET_ACCESS_PAGE6(h2c_pkt, value)                        \
262 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 22, 1, value)
263 #define FW_ACCESS_TEST_SET_ACCESS_PAGE6_NO_CLR(h2c_pkt, value)                 \
264 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 22, 1, value)
265 #define FW_ACCESS_TEST_GET_ACCESS_PAGE7(h2c_pkt)                               \
266 	GET_H2C_FIELD(h2c_pkt + 0X08, 23, 1)
267 #define FW_ACCESS_TEST_SET_ACCESS_PAGE7(h2c_pkt, value)                        \
268 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 23, 1, value)
269 #define FW_ACCESS_TEST_SET_ACCESS_PAGE7_NO_CLR(h2c_pkt, value)                 \
270 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 23, 1, value)
271 #define CH_SWITCH_GET_START(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 0, 1)
272 #define CH_SWITCH_SET_START(h2c_pkt, value)                                    \
273 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 1, value)
274 #define CH_SWITCH_SET_START_NO_CLR(h2c_pkt, value)                             \
275 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 1, value)
276 #define CH_SWITCH_GET_DEST_CH_EN(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 1, 1)
277 #define CH_SWITCH_SET_DEST_CH_EN(h2c_pkt, value)                               \
278 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 1, 1, value)
279 #define CH_SWITCH_SET_DEST_CH_EN_NO_CLR(h2c_pkt, value)                        \
280 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 1, 1, value)
281 #define CH_SWITCH_GET_ABSOLUTE_TIME(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 2, 1)
282 #define CH_SWITCH_SET_ABSOLUTE_TIME(h2c_pkt, value)                            \
283 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 2, 1, value)
284 #define CH_SWITCH_SET_ABSOLUTE_TIME_NO_CLR(h2c_pkt, value)                     \
285 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 2, 1, value)
286 #define CH_SWITCH_GET_PERIODIC_OPT(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 3, 2)
287 #define CH_SWITCH_SET_PERIODIC_OPT(h2c_pkt, value)                             \
288 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 3, 2, value)
289 #define CH_SWITCH_SET_PERIODIC_OPT_NO_CLR(h2c_pkt, value)                      \
290 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 3, 2, value)
291 #define CH_SWITCH_GET_SCAN_MODE(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 5, 1)
292 #define CH_SWITCH_SET_SCAN_MODE(h2c_pkt, value)                                \
293 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 5, 1, value)
294 #define CH_SWITCH_SET_SCAN_MODE_NO_CLR(h2c_pkt, value)                         \
295 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 5, 1, value)
296 #define CH_SWITCH_GET_INFO_LOC(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 8, 8)
297 #define CH_SWITCH_SET_INFO_LOC(h2c_pkt, value)                                 \
298 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 8, 8, value)
299 #define CH_SWITCH_SET_INFO_LOC_NO_CLR(h2c_pkt, value)                          \
300 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 8, 8, value)
301 #define CH_SWITCH_GET_CH_NUM(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 16, 8)
302 #define CH_SWITCH_SET_CH_NUM(h2c_pkt, value)                                   \
303 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 16, 8, value)
304 #define CH_SWITCH_SET_CH_NUM_NO_CLR(h2c_pkt, value)                            \
305 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 16, 8, value)
306 #define CH_SWITCH_GET_PRI_CH_IDX(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 24, 4)
307 #define CH_SWITCH_SET_PRI_CH_IDX(h2c_pkt, value)                               \
308 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 24, 4, value)
309 #define CH_SWITCH_SET_PRI_CH_IDX_NO_CLR(h2c_pkt, value)                        \
310 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 24, 4, value)
311 #define CH_SWITCH_GET_DEST_BW(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 28, 4)
312 #define CH_SWITCH_SET_DEST_BW(h2c_pkt, value)                                  \
313 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 28, 4, value)
314 #define CH_SWITCH_SET_DEST_BW_NO_CLR(h2c_pkt, value)                           \
315 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 28, 4, value)
316 #define CH_SWITCH_GET_DEST_CH(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X0C, 0, 8)
317 #define CH_SWITCH_SET_DEST_CH(h2c_pkt, value)                                  \
318 	SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 0, 8, value)
319 #define CH_SWITCH_SET_DEST_CH_NO_CLR(h2c_pkt, value)                           \
320 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 0, 8, value)
321 #define CH_SWITCH_GET_NORMAL_PERIOD(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X0C, 8, 6)
322 #define CH_SWITCH_SET_NORMAL_PERIOD(h2c_pkt, value)                            \
323 	SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 8, 6, value)
324 #define CH_SWITCH_SET_NORMAL_PERIOD_NO_CLR(h2c_pkt, value)                     \
325 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 8, 6, value)
326 #define CH_SWITCH_GET_NORMAL_PERIOD_SEL(h2c_pkt)                               \
327 	GET_H2C_FIELD(h2c_pkt + 0X0C, 14, 2)
328 #define CH_SWITCH_SET_NORMAL_PERIOD_SEL(h2c_pkt, value)                        \
329 	SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 14, 2, value)
330 #define CH_SWITCH_SET_NORMAL_PERIOD_SEL_NO_CLR(h2c_pkt, value)                 \
331 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 14, 2, value)
332 #define CH_SWITCH_GET_SLOW_PERIOD(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X0C, 16, 6)
333 #define CH_SWITCH_SET_SLOW_PERIOD(h2c_pkt, value)                              \
334 	SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 16, 6, value)
335 #define CH_SWITCH_SET_SLOW_PERIOD_NO_CLR(h2c_pkt, value)                       \
336 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 16, 6, value)
337 #define CH_SWITCH_GET_SLOW_PERIOD_SEL(h2c_pkt)                                 \
338 	GET_H2C_FIELD(h2c_pkt + 0X0C, 22, 2)
339 #define CH_SWITCH_SET_SLOW_PERIOD_SEL(h2c_pkt, value)                          \
340 	SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 22, 2, value)
341 #define CH_SWITCH_SET_SLOW_PERIOD_SEL_NO_CLR(h2c_pkt, value)                   \
342 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 22, 2, value)
343 #define CH_SWITCH_GET_NORMAL_CYCLE(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X0C, 24, 8)
344 #define CH_SWITCH_SET_NORMAL_CYCLE(h2c_pkt, value)                             \
345 	SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 24, 8, value)
346 #define CH_SWITCH_SET_NORMAL_CYCLE_NO_CLR(h2c_pkt, value)                      \
347 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 24, 8, value)
348 #define CH_SWITCH_GET_TSF_HIGH(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X10, 0, 32)
349 #define CH_SWITCH_SET_TSF_HIGH(h2c_pkt, value)                                 \
350 	SET_H2C_FIELD_CLR(h2c_pkt + 0X10, 0, 32, value)
351 #define CH_SWITCH_SET_TSF_HIGH_NO_CLR(h2c_pkt, value)                          \
352 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X10, 0, 32, value)
353 #define CH_SWITCH_GET_TSF_LOW(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X14, 0, 32)
354 #define CH_SWITCH_SET_TSF_LOW(h2c_pkt, value)                                  \
355 	SET_H2C_FIELD_CLR(h2c_pkt + 0X14, 0, 32, value)
356 #define CH_SWITCH_SET_TSF_LOW_NO_CLR(h2c_pkt, value)                           \
357 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X14, 0, 32, value)
358 #define CH_SWITCH_GET_INFO_SIZE(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X18, 0, 16)
359 #define CH_SWITCH_SET_INFO_SIZE(h2c_pkt, value)                                \
360 	SET_H2C_FIELD_CLR(h2c_pkt + 0X18, 0, 16, value)
361 #define CH_SWITCH_SET_INFO_SIZE_NO_CLR(h2c_pkt, value)                         \
362 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X18, 0, 16, value)
363 #define UPDATE_BEACON_PARSING_INFO_GET_FUNC_EN(h2c_pkt)                        \
364 	GET_H2C_FIELD(h2c_pkt + 0X08, 0, 1)
365 #define UPDATE_BEACON_PARSING_INFO_SET_FUNC_EN(h2c_pkt, value)                 \
366 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 1, value)
367 #define UPDATE_BEACON_PARSING_INFO_SET_FUNC_EN_NO_CLR(h2c_pkt, value)          \
368 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 1, value)
369 #define UPDATE_BEACON_PARSING_INFO_GET_SIZE_TH(h2c_pkt)                        \
370 	GET_H2C_FIELD(h2c_pkt + 0X08, 8, 4)
371 #define UPDATE_BEACON_PARSING_INFO_SET_SIZE_TH(h2c_pkt, value)                 \
372 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 8, 4, value)
373 #define UPDATE_BEACON_PARSING_INFO_SET_SIZE_TH_NO_CLR(h2c_pkt, value)          \
374 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 8, 4, value)
375 #define UPDATE_BEACON_PARSING_INFO_GET_TIMEOUT(h2c_pkt)                        \
376 	GET_H2C_FIELD(h2c_pkt + 0X08, 12, 4)
377 #define UPDATE_BEACON_PARSING_INFO_SET_TIMEOUT(h2c_pkt, value)                 \
378 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 12, 4, value)
379 #define UPDATE_BEACON_PARSING_INFO_SET_TIMEOUT_NO_CLR(h2c_pkt, value)          \
380 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 12, 4, value)
381 #define UPDATE_BEACON_PARSING_INFO_GET_IE_ID_BMP_0(h2c_pkt)                    \
382 	GET_H2C_FIELD(h2c_pkt + 0X0C, 0, 32)
383 #define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_0(h2c_pkt, value)             \
384 	SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 0, 32, value)
385 #define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_0_NO_CLR(h2c_pkt, value)      \
386 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 0, 32, value)
387 #define UPDATE_BEACON_PARSING_INFO_GET_IE_ID_BMP_1(h2c_pkt)                    \
388 	GET_H2C_FIELD(h2c_pkt + 0X10, 0, 32)
389 #define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_1(h2c_pkt, value)             \
390 	SET_H2C_FIELD_CLR(h2c_pkt + 0X10, 0, 32, value)
391 #define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_1_NO_CLR(h2c_pkt, value)      \
392 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X10, 0, 32, value)
393 #define UPDATE_BEACON_PARSING_INFO_GET_IE_ID_BMP_2(h2c_pkt)                    \
394 	GET_H2C_FIELD(h2c_pkt + 0X14, 0, 32)
395 #define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_2(h2c_pkt, value)             \
396 	SET_H2C_FIELD_CLR(h2c_pkt + 0X14, 0, 32, value)
397 #define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_2_NO_CLR(h2c_pkt, value)      \
398 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X14, 0, 32, value)
399 #define UPDATE_BEACON_PARSING_INFO_GET_IE_ID_BMP_3(h2c_pkt)                    \
400 	GET_H2C_FIELD(h2c_pkt + 0X18, 0, 32)
401 #define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_3(h2c_pkt, value)             \
402 	SET_H2C_FIELD_CLR(h2c_pkt + 0X18, 0, 32, value)
403 #define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_3_NO_CLR(h2c_pkt, value)      \
404 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X18, 0, 32, value)
405 #define UPDATE_BEACON_PARSING_INFO_GET_IE_ID_BMP_4(h2c_pkt)                    \
406 	GET_H2C_FIELD(h2c_pkt + 0X1C, 0, 32)
407 #define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_4(h2c_pkt, value)             \
408 	SET_H2C_FIELD_CLR(h2c_pkt + 0X1C, 0, 32, value)
409 #define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_4_NO_CLR(h2c_pkt, value)      \
410 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X1C, 0, 32, value)
411 #define CFG_PARAM_GET_NUM(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 0, 16)
412 #define CFG_PARAM_SET_NUM(h2c_pkt, value)                                      \
413 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 16, value)
414 #define CFG_PARAM_SET_NUM_NO_CLR(h2c_pkt, value)                               \
415 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 16, value)
416 #define CFG_PARAM_GET_INIT_CASE(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 16, 1)
417 #define CFG_PARAM_SET_INIT_CASE(h2c_pkt, value)                                \
418 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 16, 1, value)
419 #define CFG_PARAM_SET_INIT_CASE_NO_CLR(h2c_pkt, value)                         \
420 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 16, 1, value)
421 #define CFG_PARAM_GET_LOC(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 24, 8)
422 #define CFG_PARAM_SET_LOC(h2c_pkt, value)                                      \
423 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 24, 8, value)
424 #define CFG_PARAM_SET_LOC_NO_CLR(h2c_pkt, value)                               \
425 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 24, 8, value)
426 #define UPDATE_DATAPACK_GET_SIZE(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 0, 16)
427 #define UPDATE_DATAPACK_SET_SIZE(h2c_pkt, value)                               \
428 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 16, value)
429 #define UPDATE_DATAPACK_SET_SIZE_NO_CLR(h2c_pkt, value)                        \
430 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 16, value)
431 #define UPDATE_DATAPACK_GET_DATAPACK_ID(h2c_pkt)                               \
432 	GET_H2C_FIELD(h2c_pkt + 0X08, 16, 8)
433 #define UPDATE_DATAPACK_SET_DATAPACK_ID(h2c_pkt, value)                        \
434 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 16, 8, value)
435 #define UPDATE_DATAPACK_SET_DATAPACK_ID_NO_CLR(h2c_pkt, value)                 \
436 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 16, 8, value)
437 #define UPDATE_DATAPACK_GET_DATAPACK_LOC(h2c_pkt)                              \
438 	GET_H2C_FIELD(h2c_pkt + 0X08, 24, 8)
439 #define UPDATE_DATAPACK_SET_DATAPACK_LOC(h2c_pkt, value)                       \
440 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 24, 8, value)
441 #define UPDATE_DATAPACK_SET_DATAPACK_LOC_NO_CLR(h2c_pkt, value)                \
442 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 24, 8, value)
443 #define UPDATE_DATAPACK_GET_DATAPACK_SEGMENT(h2c_pkt)                          \
444 	GET_H2C_FIELD(h2c_pkt + 0X0C, 0, 8)
445 #define UPDATE_DATAPACK_SET_DATAPACK_SEGMENT(h2c_pkt, value)                   \
446 	SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 0, 8, value)
447 #define UPDATE_DATAPACK_SET_DATAPACK_SEGMENT_NO_CLR(h2c_pkt, value)            \
448 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 0, 8, value)
449 #define UPDATE_DATAPACK_GET_END_SEGMENT(h2c_pkt)                               \
450 	GET_H2C_FIELD(h2c_pkt + 0X0C, 8, 1)
451 #define UPDATE_DATAPACK_SET_END_SEGMENT(h2c_pkt, value)                        \
452 	SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 8, 1, value)
453 #define UPDATE_DATAPACK_SET_END_SEGMENT_NO_CLR(h2c_pkt, value)                 \
454 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 8, 1, value)
455 #define RUN_DATAPACK_GET_DATAPACK_ID(h2c_pkt)                                  \
456 	GET_H2C_FIELD(h2c_pkt + 0X08, 0, 8)
457 #define RUN_DATAPACK_SET_DATAPACK_ID(h2c_pkt, value)                           \
458 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 8, value)
459 #define RUN_DATAPACK_SET_DATAPACK_ID_NO_CLR(h2c_pkt, value)                    \
460 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 8, value)
461 #define DOWNLOAD_FLASH_GET_SPI_CMD(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 0, 8)
462 #define DOWNLOAD_FLASH_SET_SPI_CMD(h2c_pkt, value)                             \
463 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 8, value)
464 #define DOWNLOAD_FLASH_SET_SPI_CMD_NO_CLR(h2c_pkt, value)                      \
465 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 8, value)
466 #define DOWNLOAD_FLASH_GET_LOCATION(h2c_pkt)                                   \
467 	GET_H2C_FIELD(h2c_pkt + 0X08, 8, 16)
468 #define DOWNLOAD_FLASH_SET_LOCATION(h2c_pkt, value)                            \
469 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 8, 16, value)
470 #define DOWNLOAD_FLASH_SET_LOCATION_NO_CLR(h2c_pkt, value)                     \
471 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 8, 16, value)
472 #define DOWNLOAD_FLASH_GET_SIZE(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X0C, 0, 32)
473 #define DOWNLOAD_FLASH_SET_SIZE(h2c_pkt, value)                                \
474 	SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 0, 32, value)
475 #define DOWNLOAD_FLASH_SET_SIZE_NO_CLR(h2c_pkt, value)                         \
476 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 0, 32, value)
477 #define DOWNLOAD_FLASH_GET_START_ADDR(h2c_pkt)                                 \
478 	GET_H2C_FIELD(h2c_pkt + 0X10, 0, 32)
479 #define DOWNLOAD_FLASH_SET_START_ADDR(h2c_pkt, value)                          \
480 	SET_H2C_FIELD_CLR(h2c_pkt + 0X10, 0, 32, value)
481 #define DOWNLOAD_FLASH_SET_START_ADDR_NO_CLR(h2c_pkt, value)                   \
482 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X10, 0, 32, value)
483 #define UPDATE_PKT_GET_SIZE(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 0, 16)
484 #define UPDATE_PKT_SET_SIZE(h2c_pkt, value)                                    \
485 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 16, value)
486 #define UPDATE_PKT_SET_SIZE_NO_CLR(h2c_pkt, value)                             \
487 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 16, value)
488 #define UPDATE_PKT_GET_ID(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 16, 8)
489 #define UPDATE_PKT_SET_ID(h2c_pkt, value)                                      \
490 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 16, 8, value)
491 #define UPDATE_PKT_SET_ID_NO_CLR(h2c_pkt, value)                               \
492 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 16, 8, value)
493 #define UPDATE_PKT_GET_LOC(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 24, 8)
494 #define UPDATE_PKT_SET_LOC(h2c_pkt, value)                                     \
495 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 24, 8, value)
496 #define UPDATE_PKT_SET_LOC_NO_CLR(h2c_pkt, value)                              \
497 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 24, 8, value)
498 #define GENERAL_INFO_GET_FW_TX_BOUNDARY(h2c_pkt)                               \
499 	GET_H2C_FIELD(h2c_pkt + 0X08, 16, 8)
500 #define GENERAL_INFO_SET_FW_TX_BOUNDARY(h2c_pkt, value)                        \
501 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 16, 8, value)
502 #define GENERAL_INFO_SET_FW_TX_BOUNDARY_NO_CLR(h2c_pkt, value)                 \
503 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 16, 8, value)
504 #define IQK_GET_CLEAR(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 0, 1)
505 #define IQK_SET_CLEAR(h2c_pkt, value)                                          \
506 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 1, value)
507 #define IQK_SET_CLEAR_NO_CLR(h2c_pkt, value)                                   \
508 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 1, value)
509 #define IQK_GET_SEGMENT_IQK(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 1, 1)
510 #define IQK_SET_SEGMENT_IQK(h2c_pkt, value)                                    \
511 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 1, 1, value)
512 #define IQK_SET_SEGMENT_IQK_NO_CLR(h2c_pkt, value)                             \
513 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 1, 1, value)
514 #define PWR_TRK_GET_ENABLE_A(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 0, 1)
515 #define PWR_TRK_SET_ENABLE_A(h2c_pkt, value)                                   \
516 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 1, value)
517 #define PWR_TRK_SET_ENABLE_A_NO_CLR(h2c_pkt, value)                            \
518 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 1, value)
519 #define PWR_TRK_GET_ENABLE_B(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 1, 1)
520 #define PWR_TRK_SET_ENABLE_B(h2c_pkt, value)                                   \
521 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 1, 1, value)
522 #define PWR_TRK_SET_ENABLE_B_NO_CLR(h2c_pkt, value)                            \
523 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 1, 1, value)
524 #define PWR_TRK_GET_ENABLE_C(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 2, 1)
525 #define PWR_TRK_SET_ENABLE_C(h2c_pkt, value)                                   \
526 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 2, 1, value)
527 #define PWR_TRK_SET_ENABLE_C_NO_CLR(h2c_pkt, value)                            \
528 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 2, 1, value)
529 #define PWR_TRK_GET_ENABLE_D(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 3, 1)
530 #define PWR_TRK_SET_ENABLE_D(h2c_pkt, value)                                   \
531 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 3, 1, value)
532 #define PWR_TRK_SET_ENABLE_D_NO_CLR(h2c_pkt, value)                            \
533 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 3, 1, value)
534 #define PWR_TRK_GET_TYPE(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 4, 3)
535 #define PWR_TRK_SET_TYPE(h2c_pkt, value)                                       \
536 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 4, 3, value)
537 #define PWR_TRK_SET_TYPE_NO_CLR(h2c_pkt, value)                                \
538 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 4, 3, value)
539 #define PWR_TRK_GET_BBSWING_INDEX(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 8, 8)
540 #define PWR_TRK_SET_BBSWING_INDEX(h2c_pkt, value)                              \
541 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 8, 8, value)
542 #define PWR_TRK_SET_BBSWING_INDEX_NO_CLR(h2c_pkt, value)                       \
543 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 8, 8, value)
544 #define PWR_TRK_GET_TX_PWR_INDEX_A(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X0C, 0, 8)
545 #define PWR_TRK_SET_TX_PWR_INDEX_A(h2c_pkt, value)                             \
546 	SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 0, 8, value)
547 #define PWR_TRK_SET_TX_PWR_INDEX_A_NO_CLR(h2c_pkt, value)                      \
548 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 0, 8, value)
549 #define PWR_TRK_GET_OFFSET_VALUE_A(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X0C, 8, 8)
550 #define PWR_TRK_SET_OFFSET_VALUE_A(h2c_pkt, value)                             \
551 	SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 8, 8, value)
552 #define PWR_TRK_SET_OFFSET_VALUE_A_NO_CLR(h2c_pkt, value)                      \
553 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 8, 8, value)
554 #define PWR_TRK_GET_TSSI_VALUE_A(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X0C, 16, 8)
555 #define PWR_TRK_SET_TSSI_VALUE_A(h2c_pkt, value)                               \
556 	SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 16, 8, value)
557 #define PWR_TRK_SET_TSSI_VALUE_A_NO_CLR(h2c_pkt, value)                        \
558 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 16, 8, value)
559 #define PWR_TRK_GET_TX_PWR_INDEX_B(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X10, 0, 8)
560 #define PWR_TRK_SET_TX_PWR_INDEX_B(h2c_pkt, value)                             \
561 	SET_H2C_FIELD_CLR(h2c_pkt + 0X10, 0, 8, value)
562 #define PWR_TRK_SET_TX_PWR_INDEX_B_NO_CLR(h2c_pkt, value)                      \
563 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X10, 0, 8, value)
564 #define PWR_TRK_GET_OFFSET_VALUE_B(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X10, 8, 8)
565 #define PWR_TRK_SET_OFFSET_VALUE_B(h2c_pkt, value)                             \
566 	SET_H2C_FIELD_CLR(h2c_pkt + 0X10, 8, 8, value)
567 #define PWR_TRK_SET_OFFSET_VALUE_B_NO_CLR(h2c_pkt, value)                      \
568 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X10, 8, 8, value)
569 #define PWR_TRK_GET_TSSI_VALUE_B(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X10, 16, 8)
570 #define PWR_TRK_SET_TSSI_VALUE_B(h2c_pkt, value)                               \
571 	SET_H2C_FIELD_CLR(h2c_pkt + 0X10, 16, 8, value)
572 #define PWR_TRK_SET_TSSI_VALUE_B_NO_CLR(h2c_pkt, value)                        \
573 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X10, 16, 8, value)
574 #define PWR_TRK_GET_TX_PWR_INDEX_C(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X14, 0, 8)
575 #define PWR_TRK_SET_TX_PWR_INDEX_C(h2c_pkt, value)                             \
576 	SET_H2C_FIELD_CLR(h2c_pkt + 0X14, 0, 8, value)
577 #define PWR_TRK_SET_TX_PWR_INDEX_C_NO_CLR(h2c_pkt, value)                      \
578 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X14, 0, 8, value)
579 #define PWR_TRK_GET_OFFSET_VALUE_C(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X14, 8, 8)
580 #define PWR_TRK_SET_OFFSET_VALUE_C(h2c_pkt, value)                             \
581 	SET_H2C_FIELD_CLR(h2c_pkt + 0X14, 8, 8, value)
582 #define PWR_TRK_SET_OFFSET_VALUE_C_NO_CLR(h2c_pkt, value)                      \
583 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X14, 8, 8, value)
584 #define PWR_TRK_GET_TSSI_VALUE_C(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X14, 16, 8)
585 #define PWR_TRK_SET_TSSI_VALUE_C(h2c_pkt, value)                               \
586 	SET_H2C_FIELD_CLR(h2c_pkt + 0X14, 16, 8, value)
587 #define PWR_TRK_SET_TSSI_VALUE_C_NO_CLR(h2c_pkt, value)                        \
588 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X14, 16, 8, value)
589 #define PWR_TRK_GET_TX_PWR_INDEX_D(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X18, 0, 8)
590 #define PWR_TRK_SET_TX_PWR_INDEX_D(h2c_pkt, value)                             \
591 	SET_H2C_FIELD_CLR(h2c_pkt + 0X18, 0, 8, value)
592 #define PWR_TRK_SET_TX_PWR_INDEX_D_NO_CLR(h2c_pkt, value)                      \
593 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X18, 0, 8, value)
594 #define PWR_TRK_GET_OFFSET_VALUE_D(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X18, 8, 8)
595 #define PWR_TRK_SET_OFFSET_VALUE_D(h2c_pkt, value)                             \
596 	SET_H2C_FIELD_CLR(h2c_pkt + 0X18, 8, 8, value)
597 #define PWR_TRK_SET_OFFSET_VALUE_D_NO_CLR(h2c_pkt, value)                      \
598 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X18, 8, 8, value)
599 #define PWR_TRK_GET_TSSI_VALUE_D(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X18, 16, 8)
600 #define PWR_TRK_SET_TSSI_VALUE_D(h2c_pkt, value)                               \
601 	SET_H2C_FIELD_CLR(h2c_pkt + 0X18, 16, 8, value)
602 #define PWR_TRK_SET_TSSI_VALUE_D_NO_CLR(h2c_pkt, value)                        \
603 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X18, 16, 8, value)
604 #define PSD_GET_START_PSD(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 0, 16)
605 #define PSD_SET_START_PSD(h2c_pkt, value)                                      \
606 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 16, value)
607 #define PSD_SET_START_PSD_NO_CLR(h2c_pkt, value)                               \
608 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 16, value)
609 #define PSD_GET_END_PSD(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 16, 16)
610 #define PSD_SET_END_PSD(h2c_pkt, value)                                        \
611 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 16, 16, value)
612 #define PSD_SET_END_PSD_NO_CLR(h2c_pkt, value)                                 \
613 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 16, 16, value)
614 #define PHYDM_INFO_GET_REF_TYPE(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 0, 8)
615 #define PHYDM_INFO_SET_REF_TYPE(h2c_pkt, value)                                \
616 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 8, value)
617 #define PHYDM_INFO_SET_REF_TYPE_NO_CLR(h2c_pkt, value)                         \
618 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 8, value)
619 #define PHYDM_INFO_GET_RF_TYPE(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 8, 8)
620 #define PHYDM_INFO_SET_RF_TYPE(h2c_pkt, value)                                 \
621 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 8, 8, value)
622 #define PHYDM_INFO_SET_RF_TYPE_NO_CLR(h2c_pkt, value)                          \
623 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 8, 8, value)
624 #define PHYDM_INFO_GET_CUT_VER(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 16, 8)
625 #define PHYDM_INFO_SET_CUT_VER(h2c_pkt, value)                                 \
626 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 16, 8, value)
627 #define PHYDM_INFO_SET_CUT_VER_NO_CLR(h2c_pkt, value)                          \
628 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 16, 8, value)
629 #define PHYDM_INFO_GET_RX_ANT_STATUS(h2c_pkt)                                  \
630 	GET_H2C_FIELD(h2c_pkt + 0X08, 24, 4)
631 #define PHYDM_INFO_SET_RX_ANT_STATUS(h2c_pkt, value)                           \
632 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 24, 4, value)
633 #define PHYDM_INFO_SET_RX_ANT_STATUS_NO_CLR(h2c_pkt, value)                    \
634 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 24, 4, value)
635 #define PHYDM_INFO_GET_TX_ANT_STATUS(h2c_pkt)                                  \
636 	GET_H2C_FIELD(h2c_pkt + 0X08, 28, 4)
637 #define PHYDM_INFO_SET_TX_ANT_STATUS(h2c_pkt, value)                           \
638 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 28, 4, value)
639 #define PHYDM_INFO_SET_TX_ANT_STATUS_NO_CLR(h2c_pkt, value)                    \
640 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 28, 4, value)
641 #define PHYDM_INFO_GET_EXT_PA(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0XC, 0, 8)
642 #define PHYDM_INFO_SET_EXT_PA(h2c_pkt, value)                                  \
643 	SET_H2C_FIELD_CLR(h2c_pkt + 0XC, 0, 8, value)
644 #define PHYDM_INFO_SET_EXT_PA_NO_CLR(h2c_pkt, value)                           \
645 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0XC, 0, 8, value)
646 #define PHYDM_INFO_GET_PACKAGE_TYPE(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0XC, 8, 8)
647 #define PHYDM_INFO_SET_PACKAGE_TYPE(h2c_pkt, value)                            \
648 	SET_H2C_FIELD_CLR(h2c_pkt + 0XC, 8, 8, value)
649 #define PHYDM_INFO_SET_PACKAGE_TYPE_NO_CLR(h2c_pkt, value)                     \
650 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0XC, 8, 8, value)
651 #define PHYDM_INFO_GET_MP_MODE(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0XC, 16, 1)
652 #define PHYDM_INFO_SET_MP_MODE(h2c_pkt, value)                                 \
653 	SET_H2C_FIELD_CLR(h2c_pkt + 0XC, 16, 1, value)
654 #define PHYDM_INFO_SET_MP_MODE_NO_CLR(h2c_pkt, value)                          \
655 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0XC, 16, 1, value)
656 #define FW_SNDING_GET_SU0(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 0, 1)
657 #define FW_SNDING_SET_SU0(h2c_pkt, value)                                      \
658 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 1, value)
659 #define FW_SNDING_SET_SU0_NO_CLR(h2c_pkt, value)                               \
660 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 1, value)
661 #define FW_SNDING_GET_SU1(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 1, 1)
662 #define FW_SNDING_SET_SU1(h2c_pkt, value)                                      \
663 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 1, 1, value)
664 #define FW_SNDING_SET_SU1_NO_CLR(h2c_pkt, value)                               \
665 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 1, 1, value)
666 #define FW_SNDING_GET_MU(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 2, 1)
667 #define FW_SNDING_SET_MU(h2c_pkt, value)                                       \
668 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 2, 1, value)
669 #define FW_SNDING_SET_MU_NO_CLR(h2c_pkt, value)                                \
670 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 2, 1, value)
671 #define FW_SNDING_GET_PERIOD(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 8, 8)
672 #define FW_SNDING_SET_PERIOD(h2c_pkt, value)                                   \
673 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 8, 8, value)
674 #define FW_SNDING_SET_PERIOD_NO_CLR(h2c_pkt, value)                            \
675 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 8, 8, value)
676 #define FW_SNDING_GET_NDPA0_HEAD_PG(h2c_pkt)                                   \
677 	GET_H2C_FIELD(h2c_pkt + 0X08, 16, 8)
678 #define FW_SNDING_SET_NDPA0_HEAD_PG(h2c_pkt, value)                            \
679 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 16, 8, value)
680 #define FW_SNDING_SET_NDPA0_HEAD_PG_NO_CLR(h2c_pkt, value)                     \
681 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 16, 8, value)
682 #define FW_SNDING_GET_NDPA1_HEAD_PG(h2c_pkt)                                   \
683 	GET_H2C_FIELD(h2c_pkt + 0X08, 24, 8)
684 #define FW_SNDING_SET_NDPA1_HEAD_PG(h2c_pkt, value)                            \
685 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 24, 8, value)
686 #define FW_SNDING_SET_NDPA1_HEAD_PG_NO_CLR(h2c_pkt, value)                     \
687 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 24, 8, value)
688 #define FW_SNDING_GET_MU_NDPA_HEAD_PG(h2c_pkt)                                 \
689 	GET_H2C_FIELD(h2c_pkt + 0XC, 0, 8)
690 #define FW_SNDING_SET_MU_NDPA_HEAD_PG(h2c_pkt, value)                          \
691 	SET_H2C_FIELD_CLR(h2c_pkt + 0XC, 0, 8, value)
692 #define FW_SNDING_SET_MU_NDPA_HEAD_PG_NO_CLR(h2c_pkt, value)                   \
693 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0XC, 0, 8, value)
694 #define FW_SNDING_GET_RPT0_HEAD_PG(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0XC, 8, 8)
695 #define FW_SNDING_SET_RPT0_HEAD_PG(h2c_pkt, value)                             \
696 	SET_H2C_FIELD_CLR(h2c_pkt + 0XC, 8, 8, value)
697 #define FW_SNDING_SET_RPT0_HEAD_PG_NO_CLR(h2c_pkt, value)                      \
698 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0XC, 8, 8, value)
699 #define FW_SNDING_GET_RPT1_HEAD_PG(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0XC, 16, 8)
700 #define FW_SNDING_SET_RPT1_HEAD_PG(h2c_pkt, value)                             \
701 	SET_H2C_FIELD_CLR(h2c_pkt + 0XC, 16, 8, value)
702 #define FW_SNDING_SET_RPT1_HEAD_PG_NO_CLR(h2c_pkt, value)                      \
703 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0XC, 16, 8, value)
704 #define FW_SNDING_GET_RPT2_HEAD_PG(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0XC, 24, 8)
705 #define FW_SNDING_SET_RPT2_HEAD_PG(h2c_pkt, value)                             \
706 	SET_H2C_FIELD_CLR(h2c_pkt + 0XC, 24, 8, value)
707 #define FW_SNDING_SET_RPT2_HEAD_PG_NO_CLR(h2c_pkt, value)                      \
708 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0XC, 24, 8, value)
709 #define FW_FWCTRL_GET_SEQ_NUM(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 0, 8)
710 #define FW_FWCTRL_SET_SEQ_NUM(h2c_pkt, value)                                  \
711 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 8, value)
712 #define FW_FWCTRL_SET_SEQ_NUM_NO_CLR(h2c_pkt, value)                           \
713 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 8, value)
714 #define FW_FWCTRL_GET_MORE_CONTENT(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 8, 1)
715 #define FW_FWCTRL_SET_MORE_CONTENT(h2c_pkt, value)                             \
716 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 8, 1, value)
717 #define FW_FWCTRL_SET_MORE_CONTENT_NO_CLR(h2c_pkt, value)                      \
718 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 8, 1, value)
719 #define FW_FWCTRL_GET_CONTENT_IDX(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 9, 7)
720 #define FW_FWCTRL_SET_CONTENT_IDX(h2c_pkt, value)                              \
721 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 9, 7, value)
722 #define FW_FWCTRL_SET_CONTENT_IDX_NO_CLR(h2c_pkt, value)                       \
723 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 9, 7, value)
724 #define FW_FWCTRL_GET_CLASS_ID(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 16, 8)
725 #define FW_FWCTRL_SET_CLASS_ID(h2c_pkt, value)                                 \
726 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 16, 8, value)
727 #define FW_FWCTRL_SET_CLASS_ID_NO_CLR(h2c_pkt, value)                          \
728 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 16, 8, value)
729 #define FW_FWCTRL_GET_LENGTH(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 24, 8)
730 #define FW_FWCTRL_SET_LENGTH(h2c_pkt, value)                                   \
731 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 24, 8, value)
732 #define FW_FWCTRL_SET_LENGTH_NO_CLR(h2c_pkt, value)                            \
733 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 24, 8, value)
734 #define FW_FWCTRL_GET_CONTENT(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X0C, 0, 32)
735 #define FW_FWCTRL_SET_CONTENT(h2c_pkt, value)                                  \
736 	SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 0, 32, value)
737 #define FW_FWCTRL_SET_CONTENT_NO_CLR(h2c_pkt, value)                           \
738 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 0, 32, value)
739 #define SEND_SCAN_PKT_GET_SIZE(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 0, 16)
740 #define SEND_SCAN_PKT_SET_SIZE(h2c_pkt, value)                                 \
741 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 16, value)
742 #define SEND_SCAN_PKT_SET_SIZE_NO_CLR(h2c_pkt, value)                          \
743 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 16, value)
744 #define SEND_SCAN_PKT_GET_INDEX(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 16, 8)
745 #define SEND_SCAN_PKT_SET_INDEX(h2c_pkt, value)                                \
746 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 16, 8, value)
747 #define SEND_SCAN_PKT_SET_INDEX_NO_CLR(h2c_pkt, value)                         \
748 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 16, 8, value)
749 #define SEND_SCAN_PKT_GET_LOC(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 24, 8)
750 #define SEND_SCAN_PKT_SET_LOC(h2c_pkt, value)                                  \
751 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 24, 8, value)
752 #define SEND_SCAN_PKT_SET_LOC_NO_CLR(h2c_pkt, value)                           \
753 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 24, 8, value)
754 #define BCN_OFFLOAD_GET_REQUEST_VERSION(h2c_pkt)                               \
755 	GET_H2C_FIELD(h2c_pkt + 0X08, 0, 1)
756 #define BCN_OFFLOAD_SET_REQUEST_VERSION(h2c_pkt, value)                        \
757 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 1, value)
758 #define BCN_OFFLOAD_SET_REQUEST_VERSION_NO_CLR(h2c_pkt, value)                 \
759 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 1, value)
760 #define BCN_OFFLOAD_GET_ENABLE(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 1, 1)
761 #define BCN_OFFLOAD_SET_ENABLE(h2c_pkt, value)                                 \
762 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 1, 1, value)
763 #define BCN_OFFLOAD_SET_ENABLE_NO_CLR(h2c_pkt, value)                          \
764 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 1, 1, value)
765 #define BCN_OFFLOAD_GET_MORE_RULE(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 2, 1)
766 #define BCN_OFFLOAD_SET_MORE_RULE(h2c_pkt, value)                              \
767 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 2, 1, value)
768 #define BCN_OFFLOAD_SET_MORE_RULE_NO_CLR(h2c_pkt, value)                       \
769 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 2, 1, value)
770 #define BCN_OFFLOAD_GET_C2H_PERIODIC_REPORT(h2c_pkt)                           \
771 	GET_H2C_FIELD(h2c_pkt + 0X08, 3, 1)
772 #define BCN_OFFLOAD_SET_C2H_PERIODIC_REPORT(h2c_pkt, value)                    \
773 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 3, 1, value)
774 #define BCN_OFFLOAD_SET_C2H_PERIODIC_REPORT_NO_CLR(h2c_pkt, value)             \
775 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 3, 1, value)
776 #define BCN_OFFLOAD_GET_REPORT_PERIOD(h2c_pkt)                                 \
777 	GET_H2C_FIELD(h2c_pkt + 0X08, 8, 8)
778 #define BCN_OFFLOAD_SET_REPORT_PERIOD(h2c_pkt, value)                          \
779 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 8, 8, value)
780 #define BCN_OFFLOAD_SET_REPORT_PERIOD_NO_CLR(h2c_pkt, value)                   \
781 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 8, 8, value)
782 #define BCN_OFFLOAD_GET_RULE_LENGTH(h2c_pkt)                                   \
783 	GET_H2C_FIELD(h2c_pkt + 0X08, 16, 8)
784 #define BCN_OFFLOAD_SET_RULE_LENGTH(h2c_pkt, value)                            \
785 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 16, 8, value)
786 #define BCN_OFFLOAD_SET_RULE_LENGTH_NO_CLR(h2c_pkt, value)                     \
787 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 16, 8, value)
788 #define BCN_OFFLOAD_GET_RULE_CONTENT(h2c_pkt)                                  \
789 	GET_H2C_FIELD(h2c_pkt + 0X0C, 0, 8)
790 #define BCN_OFFLOAD_SET_RULE_CONTENT(h2c_pkt, value)                           \
791 	SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 0, 8, value)
792 #define BCN_OFFLOAD_SET_RULE_CONTENT_NO_CLR(h2c_pkt, value)                    \
793 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 0, 8, value)
794 #define DROP_SCAN_PKT_GET_DROP_ALL(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 0, 1)
795 #define DROP_SCAN_PKT_SET_DROP_ALL(h2c_pkt, value)                             \
796 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 1, value)
797 #define DROP_SCAN_PKT_SET_DROP_ALL_NO_CLR(h2c_pkt, value)                      \
798 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 1, value)
799 #define DROP_SCAN_PKT_GET_DROP_SINGLE(h2c_pkt)                                 \
800 	GET_H2C_FIELD(h2c_pkt + 0X08, 1, 1)
801 #define DROP_SCAN_PKT_SET_DROP_SINGLE(h2c_pkt, value)                          \
802 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 1, 1, value)
803 #define DROP_SCAN_PKT_SET_DROP_SINGLE_NO_CLR(h2c_pkt, value)                   \
804 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 1, 1, value)
805 #define DROP_SCAN_PKT_GET_DROP_IDX(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 8, 8)
806 #define DROP_SCAN_PKT_SET_DROP_IDX(h2c_pkt, value)                             \
807 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 8, 8, value)
808 #define DROP_SCAN_PKT_SET_DROP_IDX_NO_CLR(h2c_pkt, value)                      \
809 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 8, 8, value)
810 #define P2PPS_GET_OFFLOAD_EN(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 0, 1)
811 #define P2PPS_SET_OFFLOAD_EN(h2c_pkt, value)                                   \
812 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 1, value)
813 #define P2PPS_SET_OFFLOAD_EN_NO_CLR(h2c_pkt, value)                            \
814 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 1, value)
815 #define P2PPS_GET_ROLE(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 1, 1)
816 #define P2PPS_SET_ROLE(h2c_pkt, value)                                         \
817 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 1, 1, value)
818 #define P2PPS_SET_ROLE_NO_CLR(h2c_pkt, value)                                  \
819 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 1, 1, value)
820 #define P2PPS_GET_CTWINDOW_EN(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 2, 1)
821 #define P2PPS_SET_CTWINDOW_EN(h2c_pkt, value)                                  \
822 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 2, 1, value)
823 #define P2PPS_SET_CTWINDOW_EN_NO_CLR(h2c_pkt, value)                           \
824 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 2, 1, value)
825 #define P2PPS_GET_NOA_EN(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 3, 1)
826 #define P2PPS_SET_NOA_EN(h2c_pkt, value)                                       \
827 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 3, 1, value)
828 #define P2PPS_SET_NOA_EN_NO_CLR(h2c_pkt, value)                                \
829 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 3, 1, value)
830 #define P2PPS_GET_NOA_SEL(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 4, 1)
831 #define P2PPS_SET_NOA_SEL(h2c_pkt, value)                                      \
832 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 4, 1, value)
833 #define P2PPS_SET_NOA_SEL_NO_CLR(h2c_pkt, value)                               \
834 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 4, 1, value)
835 #define P2PPS_GET_ALLSTASLEEP(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 5, 1)
836 #define P2PPS_SET_ALLSTASLEEP(h2c_pkt, value)                                  \
837 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 5, 1, value)
838 #define P2PPS_SET_ALLSTASLEEP_NO_CLR(h2c_pkt, value)                           \
839 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 5, 1, value)
840 #define P2PPS_GET_DISCOVERY(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 6, 1)
841 #define P2PPS_SET_DISCOVERY(h2c_pkt, value)                                    \
842 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 6, 1, value)
843 #define P2PPS_SET_DISCOVERY_NO_CLR(h2c_pkt, value)                             \
844 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 6, 1, value)
845 #define P2PPS_GET_DISABLE_CLOSERF(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 7, 1)
846 #define P2PPS_SET_DISABLE_CLOSERF(h2c_pkt, value)                              \
847 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 7, 1, value)
848 #define P2PPS_SET_DISABLE_CLOSERF_NO_CLR(h2c_pkt, value)                       \
849 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 7, 1, value)
850 #define P2PPS_GET_P2P_PORT_ID(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 8, 8)
851 #define P2PPS_SET_P2P_PORT_ID(h2c_pkt, value)                                  \
852 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 8, 8, value)
853 #define P2PPS_SET_P2P_PORT_ID_NO_CLR(h2c_pkt, value)                           \
854 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 8, 8, value)
855 #define P2PPS_GET_P2P_GROUP(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 16, 8)
856 #define P2PPS_SET_P2P_GROUP(h2c_pkt, value)                                    \
857 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 16, 8, value)
858 #define P2PPS_SET_P2P_GROUP_NO_CLR(h2c_pkt, value)                             \
859 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 16, 8, value)
860 #define P2PPS_GET_P2P_MACID(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 24, 8)
861 #define P2PPS_SET_P2P_MACID(h2c_pkt, value)                                    \
862 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 24, 8, value)
863 #define P2PPS_SET_P2P_MACID_NO_CLR(h2c_pkt, value)                             \
864 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 24, 8, value)
865 #define P2PPS_GET_CTWINDOW_LENGTH(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X0C, 0, 8)
866 #define P2PPS_SET_CTWINDOW_LENGTH(h2c_pkt, value)                              \
867 	SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 0, 8, value)
868 #define P2PPS_SET_CTWINDOW_LENGTH_NO_CLR(h2c_pkt, value)                       \
869 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 0, 8, value)
870 #define P2PPS_GET_NOA_DURATION_PARA(h2c_pkt)                                   \
871 	GET_H2C_FIELD(h2c_pkt + 0X10, 0, 32)
872 #define P2PPS_SET_NOA_DURATION_PARA(h2c_pkt, value)                            \
873 	SET_H2C_FIELD_CLR(h2c_pkt + 0X10, 0, 32, value)
874 #define P2PPS_SET_NOA_DURATION_PARA_NO_CLR(h2c_pkt, value)                     \
875 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X10, 0, 32, value)
876 #define P2PPS_GET_NOA_INTERVAL_PARA(h2c_pkt)                                   \
877 	GET_H2C_FIELD(h2c_pkt + 0X14, 0, 32)
878 #define P2PPS_SET_NOA_INTERVAL_PARA(h2c_pkt, value)                            \
879 	SET_H2C_FIELD_CLR(h2c_pkt + 0X14, 0, 32, value)
880 #define P2PPS_SET_NOA_INTERVAL_PARA_NO_CLR(h2c_pkt, value)                     \
881 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X14, 0, 32, value)
882 #define P2PPS_GET_NOA_START_TIME_PARA(h2c_pkt)                                 \
883 	GET_H2C_FIELD(h2c_pkt + 0X18, 0, 32)
884 #define P2PPS_SET_NOA_START_TIME_PARA(h2c_pkt, value)                          \
885 	SET_H2C_FIELD_CLR(h2c_pkt + 0X18, 0, 32, value)
886 #define P2PPS_SET_NOA_START_TIME_PARA_NO_CLR(h2c_pkt, value)                   \
887 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X18, 0, 32, value)
888 #define P2PPS_GET_NOA_COUNT_PARA(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X1C, 0, 32)
889 #define P2PPS_SET_NOA_COUNT_PARA(h2c_pkt, value)                               \
890 	SET_H2C_FIELD_CLR(h2c_pkt + 0X1C, 0, 32, value)
891 #define P2PPS_SET_NOA_COUNT_PARA_NO_CLR(h2c_pkt, value)                        \
892 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X1C, 0, 32, value)
893 #define BT_COEX_GET_DATA_START(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 0, 8)
894 #define BT_COEX_SET_DATA_START(h2c_pkt, value)                                 \
895 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 8, value)
896 #define BT_COEX_SET_DATA_START_NO_CLR(h2c_pkt, value)                          \
897 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 8, value)
898 #define ACT_SCHEDULE_REQ_GET_MODULE_ID(h2c_pkt)                                \
899 	GET_H2C_FIELD(h2c_pkt + 0X08, 0, 8)
900 #define ACT_SCHEDULE_REQ_SET_MODULE_ID(h2c_pkt, value)                         \
901 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 8, value)
902 #define ACT_SCHEDULE_REQ_SET_MODULE_ID_NO_CLR(h2c_pkt, value)                  \
903 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 8, value)
904 #define ACT_SCHEDULE_REQ_GET_PRIORITY(h2c_pkt)                                 \
905 	GET_H2C_FIELD(h2c_pkt + 0X08, 8, 8)
906 #define ACT_SCHEDULE_REQ_SET_PRIORITY(h2c_pkt, value)                          \
907 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 8, 8, value)
908 #define ACT_SCHEDULE_REQ_SET_PRIORITY_NO_CLR(h2c_pkt, value)                   \
909 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 8, 8, value)
910 #define ACT_SCHEDULE_REQ_GET_RSVD1(h2c_pkt)                                    \
911 	GET_H2C_FIELD(h2c_pkt + 0X08, 16, 16)
912 #define ACT_SCHEDULE_REQ_SET_RSVD1(h2c_pkt, value)                             \
913 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 16, 16, value)
914 #define ACT_SCHEDULE_REQ_SET_RSVD1_NO_CLR(h2c_pkt, value)                      \
915 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 16, 16, value)
916 #define ACT_SCHEDULE_REQ_GET_START_TIME(h2c_pkt)                               \
917 	GET_H2C_FIELD(h2c_pkt + 0XC, 0, 32)
918 #define ACT_SCHEDULE_REQ_SET_START_TIME(h2c_pkt, value)                        \
919 	SET_H2C_FIELD_CLR(h2c_pkt + 0XC, 0, 32, value)
920 #define ACT_SCHEDULE_REQ_SET_START_TIME_NO_CLR(h2c_pkt, value)                 \
921 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0XC, 0, 32, value)
922 #define ACT_SCHEDULE_REQ_GET_DURATION(h2c_pkt)                                 \
923 	GET_H2C_FIELD(h2c_pkt + 0X10, 0, 32)
924 #define ACT_SCHEDULE_REQ_SET_DURATION(h2c_pkt, value)                          \
925 	SET_H2C_FIELD_CLR(h2c_pkt + 0X10, 0, 32, value)
926 #define ACT_SCHEDULE_REQ_SET_DURATION_NO_CLR(h2c_pkt, value)                   \
927 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X10, 0, 32, value)
928 #define ACT_SCHEDULE_REQ_GET_PERIOD(h2c_pkt)                                   \
929 	GET_H2C_FIELD(h2c_pkt + 0X14, 0, 32)
930 #define ACT_SCHEDULE_REQ_SET_PERIOD(h2c_pkt, value)                            \
931 	SET_H2C_FIELD_CLR(h2c_pkt + 0X14, 0, 32, value)
932 #define ACT_SCHEDULE_REQ_SET_PERIOD_NO_CLR(h2c_pkt, value)                     \
933 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X14, 0, 32, value)
934 #define ACT_SCHEDULE_REQ_GET_TSF_IDX(h2c_pkt)                                  \
935 	GET_H2C_FIELD(h2c_pkt + 0X18, 0, 8)
936 #define ACT_SCHEDULE_REQ_SET_TSF_IDX(h2c_pkt, value)                           \
937 	SET_H2C_FIELD_CLR(h2c_pkt + 0X18, 0, 8, value)
938 #define ACT_SCHEDULE_REQ_SET_TSF_IDX_NO_CLR(h2c_pkt, value)                    \
939 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X18, 0, 8, value)
940 #define ACT_SCHEDULE_REQ_GET_CHANNEL(h2c_pkt)                                  \
941 	GET_H2C_FIELD(h2c_pkt + 0X18, 8, 8)
942 #define ACT_SCHEDULE_REQ_SET_CHANNEL(h2c_pkt, value)                           \
943 	SET_H2C_FIELD_CLR(h2c_pkt + 0X18, 8, 8, value)
944 #define ACT_SCHEDULE_REQ_SET_CHANNEL_NO_CLR(h2c_pkt, value)                    \
945 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X18, 8, 8, value)
946 #define ACT_SCHEDULE_REQ_GET_BW(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X18, 16, 8)
947 #define ACT_SCHEDULE_REQ_SET_BW(h2c_pkt, value)                                \
948 	SET_H2C_FIELD_CLR(h2c_pkt + 0X18, 16, 8, value)
949 #define ACT_SCHEDULE_REQ_SET_BW_NO_CLR(h2c_pkt, value)                         \
950 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X18, 16, 8, value)
951 #define ACT_SCHEDULE_REQ_GET_PRIMART_CH_IDX(h2c_pkt)                           \
952 	GET_H2C_FIELD(h2c_pkt + 0X18, 24, 9)
953 #define ACT_SCHEDULE_REQ_SET_PRIMART_CH_IDX(h2c_pkt, value)                    \
954 	SET_H2C_FIELD_CLR(h2c_pkt + 0X18, 24, 9, value)
955 #define ACT_SCHEDULE_REQ_SET_PRIMART_CH_IDX_NO_CLR(h2c_pkt, value)             \
956 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X18, 24, 9, value)
957 #define NAN_CTRL_GET_NAN_EN(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 0, 2)
958 #define NAN_CTRL_SET_NAN_EN(h2c_pkt, value)                                    \
959 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 2, value)
960 #define NAN_CTRL_SET_NAN_EN_NO_CLR(h2c_pkt, value)                             \
961 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 2, value)
962 #define NAN_CTRL_GET_WARMUP_TIMER_FLAG(h2c_pkt)                                \
963 	GET_H2C_FIELD(h2c_pkt + 0X08, 2, 1)
964 #define NAN_CTRL_SET_WARMUP_TIMER_FLAG(h2c_pkt, value)                         \
965 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 2, 1, value)
966 #define NAN_CTRL_SET_WARMUP_TIMER_FLAG_NO_CLR(h2c_pkt, value)                  \
967 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 2, 1, value)
968 #define NAN_CTRL_GET_SUPPORT_BAND(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 8, 2)
969 #define NAN_CTRL_SET_SUPPORT_BAND(h2c_pkt, value)                              \
970 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 8, 2, value)
971 #define NAN_CTRL_SET_SUPPORT_BAND_NO_CLR(h2c_pkt, value)                       \
972 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 8, 2, value)
973 #define NAN_CTRL_GET_DISABLE_2G_DISC_BCN(h2c_pkt)                              \
974 	GET_H2C_FIELD(h2c_pkt + 0X08, 10, 1)
975 #define NAN_CTRL_SET_DISABLE_2G_DISC_BCN(h2c_pkt, value)                       \
976 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 10, 1, value)
977 #define NAN_CTRL_SET_DISABLE_2G_DISC_BCN_NO_CLR(h2c_pkt, value)                \
978 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 10, 1, value)
979 #define NAN_CTRL_GET_DISABLE_5G_DISC_BCN(h2c_pkt)                              \
980 	GET_H2C_FIELD(h2c_pkt + 0X08, 11, 1)
981 #define NAN_CTRL_SET_DISABLE_5G_DISC_BCN(h2c_pkt, value)                       \
982 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 11, 1, value)
983 #define NAN_CTRL_SET_DISABLE_5G_DISC_BCN_NO_CLR(h2c_pkt, value)                \
984 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 11, 1, value)
985 #define NAN_CTRL_GET_BCN_RSVD_PAGE_OFFSET(h2c_pkt)                             \
986 	GET_H2C_FIELD(h2c_pkt + 0X08, 16, 8)
987 #define NAN_CTRL_SET_BCN_RSVD_PAGE_OFFSET(h2c_pkt, value)                      \
988 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 16, 8, value)
989 #define NAN_CTRL_SET_BCN_RSVD_PAGE_OFFSET_NO_CLR(h2c_pkt, value)               \
990 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 16, 8, value)
991 #define NAN_CTRL_GET_CHANNEL_2G(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 24, 8)
992 #define NAN_CTRL_SET_CHANNEL_2G(h2c_pkt, value)                                \
993 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 24, 8, value)
994 #define NAN_CTRL_SET_CHANNEL_2G_NO_CLR(h2c_pkt, value)                         \
995 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 24, 8, value)
996 #define NAN_CTRL_GET_CHANNEL_5G(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X0C, 0, 8)
997 #define NAN_CTRL_SET_CHANNEL_5G(h2c_pkt, value)                                \
998 	SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 0, 8, value)
999 #define NAN_CTRL_SET_CHANNEL_5G_NO_CLR(h2c_pkt, value)                         \
1000 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 0, 8, value)
1001 #define NAN_CTRL_GET_MASTERPREFERENCE_VALUE(h2c_pkt)                           \
1002 	GET_H2C_FIELD(h2c_pkt + 0X0C, 8, 8)
1003 #define NAN_CTRL_SET_MASTERPREFERENCE_VALUE(h2c_pkt, value)                    \
1004 	SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 8, 8, value)
1005 #define NAN_CTRL_SET_MASTERPREFERENCE_VALUE_NO_CLR(h2c_pkt, value)             \
1006 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 8, 8, value)
1007 #define NAN_CTRL_GET_RANDOMFACTOR_VALUE(h2c_pkt)                               \
1008 	GET_H2C_FIELD(h2c_pkt + 0X0C, 16, 8)
1009 #define NAN_CTRL_SET_RANDOMFACTOR_VALUE(h2c_pkt, value)                        \
1010 	SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 16, 8, value)
1011 #define NAN_CTRL_SET_RANDOMFACTOR_VALUE_NO_CLR(h2c_pkt, value)                 \
1012 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 16, 8, value)
1013 #define NAN_CHANNEL_PLAN_0_GET_CHANNEL_NUMBER_0(h2c_pkt)                       \
1014 	GET_H2C_FIELD(h2c_pkt + 0X08, 0, 8)
1015 #define NAN_CHANNEL_PLAN_0_SET_CHANNEL_NUMBER_0(h2c_pkt, value)                \
1016 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 8, value)
1017 #define NAN_CHANNEL_PLAN_0_SET_CHANNEL_NUMBER_0_NO_CLR(h2c_pkt, value)         \
1018 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 8, value)
1019 #define NAN_CHANNEL_PLAN_0_GET_UNPAUSE_MACID_0(h2c_pkt)                        \
1020 	GET_H2C_FIELD(h2c_pkt + 0X08, 8, 8)
1021 #define NAN_CHANNEL_PLAN_0_SET_UNPAUSE_MACID_0(h2c_pkt, value)                 \
1022 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 8, 8, value)
1023 #define NAN_CHANNEL_PLAN_0_SET_UNPAUSE_MACID_0_NO_CLR(h2c_pkt, value)          \
1024 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 8, 8, value)
1025 #define NAN_CHANNEL_PLAN_0_GET_START_TIME_SLOT_0(h2c_pkt)                      \
1026 	GET_H2C_FIELD(h2c_pkt + 0X0C, 0, 16)
1027 #define NAN_CHANNEL_PLAN_0_SET_START_TIME_SLOT_0(h2c_pkt, value)               \
1028 	SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 0, 16, value)
1029 #define NAN_CHANNEL_PLAN_0_SET_START_TIME_SLOT_0_NO_CLR(h2c_pkt, value)        \
1030 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 0, 16, value)
1031 #define NAN_CHANNEL_PLAN_0_GET_DURATION_0(h2c_pkt)                             \
1032 	GET_H2C_FIELD(h2c_pkt + 0X0C, 16, 16)
1033 #define NAN_CHANNEL_PLAN_0_SET_DURATION_0(h2c_pkt, value)                      \
1034 	SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 16, 16, value)
1035 #define NAN_CHANNEL_PLAN_0_SET_DURATION_0_NO_CLR(h2c_pkt, value)               \
1036 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 16, 16, value)
1037 #define NAN_CHANNEL_PLAN_0_GET_CHANNEL_NUMBER_1(h2c_pkt)                       \
1038 	GET_H2C_FIELD(h2c_pkt + 0X10, 0, 8)
1039 #define NAN_CHANNEL_PLAN_0_SET_CHANNEL_NUMBER_1(h2c_pkt, value)                \
1040 	SET_H2C_FIELD_CLR(h2c_pkt + 0X10, 0, 8, value)
1041 #define NAN_CHANNEL_PLAN_0_SET_CHANNEL_NUMBER_1_NO_CLR(h2c_pkt, value)         \
1042 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X10, 0, 8, value)
1043 #define NAN_CHANNEL_PLAN_0_GET_UNPAUSE_MACID_1(h2c_pkt)                        \
1044 	GET_H2C_FIELD(h2c_pkt + 0X10, 8, 8)
1045 #define NAN_CHANNEL_PLAN_0_SET_UNPAUSE_MACID_1(h2c_pkt, value)                 \
1046 	SET_H2C_FIELD_CLR(h2c_pkt + 0X10, 8, 8, value)
1047 #define NAN_CHANNEL_PLAN_0_SET_UNPAUSE_MACID_1_NO_CLR(h2c_pkt, value)          \
1048 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X10, 8, 8, value)
1049 #define NAN_CHANNEL_PLAN_0_GET_START_TIME_SLOT_1(h2c_pkt)                      \
1050 	GET_H2C_FIELD(h2c_pkt + 0X14, 0, 16)
1051 #define NAN_CHANNEL_PLAN_0_SET_START_TIME_SLOT_1(h2c_pkt, value)               \
1052 	SET_H2C_FIELD_CLR(h2c_pkt + 0X14, 0, 16, value)
1053 #define NAN_CHANNEL_PLAN_0_SET_START_TIME_SLOT_1_NO_CLR(h2c_pkt, value)        \
1054 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X14, 0, 16, value)
1055 #define NAN_CHANNEL_PLAN_0_GET_DURATION_1(h2c_pkt)                             \
1056 	GET_H2C_FIELD(h2c_pkt + 0X14, 16, 16)
1057 #define NAN_CHANNEL_PLAN_0_SET_DURATION_1(h2c_pkt, value)                      \
1058 	SET_H2C_FIELD_CLR(h2c_pkt + 0X14, 16, 16, value)
1059 #define NAN_CHANNEL_PLAN_0_SET_DURATION_1_NO_CLR(h2c_pkt, value)               \
1060 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X14, 16, 16, value)
1061 #define NAN_CHANNEL_PLAN_0_GET_CHANNEL_NUMBER_2(h2c_pkt)                       \
1062 	GET_H2C_FIELD(h2c_pkt + 0X18, 0, 8)
1063 #define NAN_CHANNEL_PLAN_0_SET_CHANNEL_NUMBER_2(h2c_pkt, value)                \
1064 	SET_H2C_FIELD_CLR(h2c_pkt + 0X18, 0, 8, value)
1065 #define NAN_CHANNEL_PLAN_0_SET_CHANNEL_NUMBER_2_NO_CLR(h2c_pkt, value)         \
1066 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X18, 0, 8, value)
1067 #define NAN_CHANNEL_PLAN_0_GET_UNPAUSE_MACID_2(h2c_pkt)                        \
1068 	GET_H2C_FIELD(h2c_pkt + 0X18, 8, 8)
1069 #define NAN_CHANNEL_PLAN_0_SET_UNPAUSE_MACID_2(h2c_pkt, value)                 \
1070 	SET_H2C_FIELD_CLR(h2c_pkt + 0X18, 8, 8, value)
1071 #define NAN_CHANNEL_PLAN_0_SET_UNPAUSE_MACID_2_NO_CLR(h2c_pkt, value)          \
1072 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X18, 8, 8, value)
1073 #define NAN_CHANNEL_PLAN_0_GET_START_TIME_SLOT_2(h2c_pkt)                      \
1074 	GET_H2C_FIELD(h2c_pkt + 0X1C, 0, 16)
1075 #define NAN_CHANNEL_PLAN_0_SET_START_TIME_SLOT_2(h2c_pkt, value)               \
1076 	SET_H2C_FIELD_CLR(h2c_pkt + 0X1C, 0, 16, value)
1077 #define NAN_CHANNEL_PLAN_0_SET_START_TIME_SLOT_2_NO_CLR(h2c_pkt, value)        \
1078 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X1C, 0, 16, value)
1079 #define NAN_CHANNEL_PLAN_0_GET_DURATION_2(h2c_pkt)                             \
1080 	GET_H2C_FIELD(h2c_pkt + 0X1C, 16, 16)
1081 #define NAN_CHANNEL_PLAN_0_SET_DURATION_2(h2c_pkt, value)                      \
1082 	SET_H2C_FIELD_CLR(h2c_pkt + 0X1C, 16, 16, value)
1083 #define NAN_CHANNEL_PLAN_0_SET_DURATION_2_NO_CLR(h2c_pkt, value)               \
1084 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X1C, 16, 16, value)
1085 #define NAN_CHANNEL_PLAN_1_GET_CHANNEL_NUMBER_3(h2c_pkt)                       \
1086 	GET_H2C_FIELD(h2c_pkt + 0X08, 0, 8)
1087 #define NAN_CHANNEL_PLAN_1_SET_CHANNEL_NUMBER_3(h2c_pkt, value)                \
1088 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 8, value)
1089 #define NAN_CHANNEL_PLAN_1_SET_CHANNEL_NUMBER_3_NO_CLR(h2c_pkt, value)         \
1090 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 8, value)
1091 #define NAN_CHANNEL_PLAN_1_GET_UNPAUSE_MACID_3(h2c_pkt)                        \
1092 	GET_H2C_FIELD(h2c_pkt + 0X08, 8, 8)
1093 #define NAN_CHANNEL_PLAN_1_SET_UNPAUSE_MACID_3(h2c_pkt, value)                 \
1094 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 8, 8, value)
1095 #define NAN_CHANNEL_PLAN_1_SET_UNPAUSE_MACID_3_NO_CLR(h2c_pkt, value)          \
1096 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 8, 8, value)
1097 #define NAN_CHANNEL_PLAN_1_GET_START_TIME_SLOT_3(h2c_pkt)                      \
1098 	GET_H2C_FIELD(h2c_pkt + 0X0C, 0, 16)
1099 #define NAN_CHANNEL_PLAN_1_SET_START_TIME_SLOT_3(h2c_pkt, value)               \
1100 	SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 0, 16, value)
1101 #define NAN_CHANNEL_PLAN_1_SET_START_TIME_SLOT_3_NO_CLR(h2c_pkt, value)        \
1102 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 0, 16, value)
1103 #define NAN_CHANNEL_PLAN_1_GET_DURATION_3(h2c_pkt)                             \
1104 	GET_H2C_FIELD(h2c_pkt + 0X0C, 16, 16)
1105 #define NAN_CHANNEL_PLAN_1_SET_DURATION_3(h2c_pkt, value)                      \
1106 	SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 16, 16, value)
1107 #define NAN_CHANNEL_PLAN_1_SET_DURATION_3_NO_CLR(h2c_pkt, value)               \
1108 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 16, 16, value)
1109 #define NAN_CHANNEL_PLAN_1_GET_CHANNEL_NUMBER_4(h2c_pkt)                       \
1110 	GET_H2C_FIELD(h2c_pkt + 0X10, 0, 8)
1111 #define NAN_CHANNEL_PLAN_1_SET_CHANNEL_NUMBER_4(h2c_pkt, value)                \
1112 	SET_H2C_FIELD_CLR(h2c_pkt + 0X10, 0, 8, value)
1113 #define NAN_CHANNEL_PLAN_1_SET_CHANNEL_NUMBER_4_NO_CLR(h2c_pkt, value)         \
1114 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X10, 0, 8, value)
1115 #define NAN_CHANNEL_PLAN_1_GET_UNPAUSE_MACID_4(h2c_pkt)                        \
1116 	GET_H2C_FIELD(h2c_pkt + 0X10, 8, 8)
1117 #define NAN_CHANNEL_PLAN_1_SET_UNPAUSE_MACID_4(h2c_pkt, value)                 \
1118 	SET_H2C_FIELD_CLR(h2c_pkt + 0X10, 8, 8, value)
1119 #define NAN_CHANNEL_PLAN_1_SET_UNPAUSE_MACID_4_NO_CLR(h2c_pkt, value)          \
1120 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X10, 8, 8, value)
1121 #define NAN_CHANNEL_PLAN_1_GET_START_TIME_SLOT_4(h2c_pkt)                      \
1122 	GET_H2C_FIELD(h2c_pkt + 0X14, 0, 16)
1123 #define NAN_CHANNEL_PLAN_1_SET_START_TIME_SLOT_4(h2c_pkt, value)               \
1124 	SET_H2C_FIELD_CLR(h2c_pkt + 0X14, 0, 16, value)
1125 #define NAN_CHANNEL_PLAN_1_SET_START_TIME_SLOT_4_NO_CLR(h2c_pkt, value)        \
1126 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X14, 0, 16, value)
1127 #define NAN_CHANNEL_PLAN_1_GET_DURATION_4(h2c_pkt)                             \
1128 	GET_H2C_FIELD(h2c_pkt + 0X14, 16, 16)
1129 #define NAN_CHANNEL_PLAN_1_SET_DURATION_4(h2c_pkt, value)                      \
1130 	SET_H2C_FIELD_CLR(h2c_pkt + 0X14, 16, 16, value)
1131 #define NAN_CHANNEL_PLAN_1_SET_DURATION_4_NO_CLR(h2c_pkt, value)               \
1132 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X14, 16, 16, value)
1133 #define NAN_CHANNEL_PLAN_1_GET_CHANNEL_NUMBER_5(h2c_pkt)                       \
1134 	GET_H2C_FIELD(h2c_pkt + 0X18, 0, 8)
1135 #define NAN_CHANNEL_PLAN_1_SET_CHANNEL_NUMBER_5(h2c_pkt, value)                \
1136 	SET_H2C_FIELD_CLR(h2c_pkt + 0X18, 0, 8, value)
1137 #define NAN_CHANNEL_PLAN_1_SET_CHANNEL_NUMBER_5_NO_CLR(h2c_pkt, value)         \
1138 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X18, 0, 8, value)
1139 #define NAN_CHANNEL_PLAN_1_GET_UNPAUSE_MACID_5(h2c_pkt)                        \
1140 	GET_H2C_FIELD(h2c_pkt + 0X18, 8, 8)
1141 #define NAN_CHANNEL_PLAN_1_SET_UNPAUSE_MACID_5(h2c_pkt, value)                 \
1142 	SET_H2C_FIELD_CLR(h2c_pkt + 0X18, 8, 8, value)
1143 #define NAN_CHANNEL_PLAN_1_SET_UNPAUSE_MACID_5_NO_CLR(h2c_pkt, value)          \
1144 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X18, 8, 8, value)
1145 #define NAN_CHANNEL_PLAN_1_GET_START_TIME_SLOT_5(h2c_pkt)                      \
1146 	GET_H2C_FIELD(h2c_pkt + 0X1C, 0, 16)
1147 #define NAN_CHANNEL_PLAN_1_SET_START_TIME_SLOT_5(h2c_pkt, value)               \
1148 	SET_H2C_FIELD_CLR(h2c_pkt + 0X1C, 0, 16, value)
1149 #define NAN_CHANNEL_PLAN_1_SET_START_TIME_SLOT_5_NO_CLR(h2c_pkt, value)        \
1150 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X1C, 0, 16, value)
1151 #define NAN_CHANNEL_PLAN_1_GET_DURATION_5(h2c_pkt)                             \
1152 	GET_H2C_FIELD(h2c_pkt + 0X1C, 16, 16)
1153 #define NAN_CHANNEL_PLAN_1_SET_DURATION_5(h2c_pkt, value)                      \
1154 	SET_H2C_FIELD_CLR(h2c_pkt + 0X1C, 16, 16, value)
1155 #define NAN_CHANNEL_PLAN_1_SET_DURATION_5_NO_CLR(h2c_pkt, value)               \
1156 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X1C, 16, 16, value)
1157 #define NAN_FUNC_CTRL_GET_PORT_IDX(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 0, 8)
1158 #define NAN_FUNC_CTRL_SET_PORT_IDX(h2c_pkt, value)                             \
1159 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 8, value)
1160 #define NAN_FUNC_CTRL_SET_PORT_IDX_NO_CLR(h2c_pkt, value)                      \
1161 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 8, value)
1162 #define NAN_FUNC_CTRL_GET_MAC_ID(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 8, 8)
1163 #define NAN_FUNC_CTRL_SET_MAC_ID(h2c_pkt, value)                               \
1164 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 8, 8, value)
1165 #define NAN_FUNC_CTRL_SET_MAC_ID_NO_CLR(h2c_pkt, value)                        \
1166 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 8, 8, value)
1167 #define NAN_FUNC_CTRL_GET_MASTER_PREF(h2c_pkt)                                 \
1168 	GET_H2C_FIELD(h2c_pkt + 0X08, 16, 8)
1169 #define NAN_FUNC_CTRL_SET_MASTER_PREF(h2c_pkt, value)                          \
1170 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 16, 8, value)
1171 #define NAN_FUNC_CTRL_SET_MASTER_PREF_NO_CLR(h2c_pkt, value)                   \
1172 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 16, 8, value)
1173 #define NAN_FUNC_CTRL_GET_RANDOM_FACTOR(h2c_pkt)                               \
1174 	GET_H2C_FIELD(h2c_pkt + 0X08, 24, 8)
1175 #define NAN_FUNC_CTRL_SET_RANDOM_FACTOR(h2c_pkt, value)                        \
1176 	SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 24, 8, value)
1177 #define NAN_FUNC_CTRL_SET_RANDOM_FACTOR_NO_CLR(h2c_pkt, value)                 \
1178 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 24, 8, value)
1179 #define NAN_FUNC_CTRL_GET_OP_CH_24G(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X0C, 0, 8)
1180 #define NAN_FUNC_CTRL_SET_OP_CH_24G(h2c_pkt, value)                            \
1181 	SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 0, 8, value)
1182 #define NAN_FUNC_CTRL_SET_OP_CH_24G_NO_CLR(h2c_pkt, value)                     \
1183 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 0, 8, value)
1184 #define NAN_FUNC_CTRL_GET_OP_CH_5G(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X0C, 8, 8)
1185 #define NAN_FUNC_CTRL_SET_OP_CH_5G(h2c_pkt, value)                             \
1186 	SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 8, 8, value)
1187 #define NAN_FUNC_CTRL_SET_OP_CH_5G_NO_CLR(h2c_pkt, value)                      \
1188 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 8, 8, value)
1189 #define NAN_FUNC_CTRL_GET_OPTIONS(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X0C, 16, 16)
1190 #define NAN_FUNC_CTRL_SET_OPTIONS(h2c_pkt, value)                              \
1191 	SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 16, 16, value)
1192 #define NAN_FUNC_CTRL_SET_OPTIONS_NO_CLR(h2c_pkt, value)                       \
1193 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 16, 16, value)
1194 #define NAN_FUNC_CTRL_GET_SYNC_BCN_RSVD_OFFSET(h2c_pkt)                        \
1195 	GET_H2C_FIELD(h2c_pkt + 0X10, 0, 8)
1196 #define NAN_FUNC_CTRL_SET_SYNC_BCN_RSVD_OFFSET(h2c_pkt, value)                 \
1197 	SET_H2C_FIELD_CLR(h2c_pkt + 0X10, 0, 8, value)
1198 #define NAN_FUNC_CTRL_SET_SYNC_BCN_RSVD_OFFSET_NO_CLR(h2c_pkt, value)          \
1199 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X10, 0, 8, value)
1200 #define NAN_FUNC_CTRL_GET_DISC_BCN_RSVD_OFFSET(h2c_pkt)                        \
1201 	GET_H2C_FIELD(h2c_pkt + 0X10, 8, 8)
1202 #define NAN_FUNC_CTRL_SET_DISC_BCN_RSVD_OFFSET(h2c_pkt, value)                 \
1203 	SET_H2C_FIELD_CLR(h2c_pkt + 0X10, 8, 8, value)
1204 #define NAN_FUNC_CTRL_SET_DISC_BCN_RSVD_OFFSET_NO_CLR(h2c_pkt, value)          \
1205 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X10, 8, 8, value)
1206 #define NAN_FUNC_CTRL_GET_DW_SCHDL_PRIORITY(h2c_pkt)                           \
1207 	GET_H2C_FIELD(h2c_pkt + 0X10, 16, 8)
1208 #define NAN_FUNC_CTRL_SET_DW_SCHDL_PRIORITY(h2c_pkt, value)                    \
1209 	SET_H2C_FIELD_CLR(h2c_pkt + 0X10, 16, 8, value)
1210 #define NAN_FUNC_CTRL_SET_DW_SCHDL_PRIORITY_NO_CLR(h2c_pkt, value)             \
1211 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X10, 16, 8, value)
1212 #define NAN_FUNC_CTRL_GET_TIME_INDICATE_PERIOD(h2c_pkt)                        \
1213 	GET_H2C_FIELD(h2c_pkt + 0X10, 24, 8)
1214 #define NAN_FUNC_CTRL_SET_TIME_INDICATE_PERIOD(h2c_pkt, value)                 \
1215 	SET_H2C_FIELD_CLR(h2c_pkt + 0X10, 24, 8, value)
1216 #define NAN_FUNC_CTRL_SET_TIME_INDICATE_PERIOD_NO_CLR(h2c_pkt, value)          \
1217 	SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X10, 24, 8, value)
1218 #endif
1219