OSDN Git Service

Add rtl8821ce driver version 5.5.2
[android-x86/external-kernel-drivers.git] / rtl8821ce / hal / halmac / halmac_fw_offload_h2c_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_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_P2PPS 0XFF
38 #define CMD_ID_BT_COEX 0XFF
39 #define CMD_ID_NAN_CTRL 0XFF
40 #define CMD_ID_NAN_CHANNEL_PLAN_0 0XFF
41 #define CMD_ID_NAN_CHANNEL_PLAN_1 0XFF
42 #define CATEGORY_H2C_CMD_HEADER 0X00
43 #define CATEGORY_FW_OFFLOAD_H2C 0X01
44 #define CATEGORY_FW_ACCESS_TEST 0X01
45 #define CATEGORY_CH_SWITCH 0X01
46 #define CATEGORY_DUMP_PHYSICAL_EFUSE 0X01
47 #define CATEGORY_UPDATE_BEACON_PARSING_INFO 0X01
48 #define CATEGORY_CFG_PARAM 0X01
49 #define CATEGORY_UPDATE_DATAPACK 0X01
50 #define CATEGORY_RUN_DATAPACK 0X01
51 #define CATEGORY_DOWNLOAD_FLASH 0X01
52 #define CATEGORY_UPDATE_PKT 0X01
53 #define CATEGORY_GENERAL_INFO 0X01
54 #define CATEGORY_IQK 0X01
55 #define CATEGORY_PWR_TRK 0X01
56 #define CATEGORY_PSD 0X01
57 #define CATEGORY_PHYDM_INFO 0X01
58 #define CATEGORY_FW_SNDING 0X01
59 #define CATEGORY_FW_FWCTRL 0X01
60 #define CATEGORY_H2C_LOOPBACK 0X01
61 #define CATEGORY_FWCMD_LOOPBACK 0X01
62 #define CATEGORY_P2PPS 0X01
63 #define CATEGORY_BT_COEX 0X01
64 #define CATEGORY_NAN_CTRL 0X01
65 #define CATEGORY_NAN_CHANNEL_PLAN_0 0X01
66 #define CATEGORY_NAN_CHANNEL_PLAN_1 0X01
67 #define SUB_CMD_ID_FW_ACCESS_TEST 0X00
68 #define SUB_CMD_ID_CH_SWITCH 0X02
69 #define SUB_CMD_ID_DUMP_PHYSICAL_EFUSE 0X03
70 #define SUB_CMD_ID_UPDATE_BEACON_PARSING_INFO 0X05
71 #define SUB_CMD_ID_CFG_PARAM 0X08
72 #define SUB_CMD_ID_UPDATE_DATAPACK 0X09
73 #define SUB_CMD_ID_RUN_DATAPACK 0X0A
74 #define SUB_CMD_ID_DOWNLOAD_FLASH 0X0B
75 #define SUB_CMD_ID_UPDATE_PKT 0X0C
76 #define SUB_CMD_ID_GENERAL_INFO 0X0D
77 #define SUB_CMD_ID_IQK 0X0E
78 #define SUB_CMD_ID_PWR_TRK 0X0F
79 #define SUB_CMD_ID_PSD 0X10
80 #define SUB_CMD_ID_PHYDM_INFO 0X11
81 #define SUB_CMD_ID_FW_SNDING 0X12
82 #define SUB_CMD_ID_FW_FWCTRL 0X13
83 #define SUB_CMD_ID_H2C_LOOPBACK 0X14
84 #define SUB_CMD_ID_FWCMD_LOOPBACK 0X15
85 #define SUB_CMD_ID_P2PPS 0X24
86 #define SUB_CMD_ID_BT_COEX 0X60
87 #define SUB_CMD_ID_NAN_CTRL 0XB2
88 #define SUB_CMD_ID_NAN_CHANNEL_PLAN_0 0XB4
89 #define SUB_CMD_ID_NAN_CHANNEL_PLAN_1 0XB5
90 #define H2C_CMD_HEADER_GET_CATEGORY(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X00, 0, 7)
91 #define H2C_CMD_HEADER_SET_CATEGORY(h2c_pkt, value)                            \
92         SET_H2C_FIELD_CLR(h2c_pkt + 0X00, 0, 7, value)
93 #define H2C_CMD_HEADER_SET_CATEGORY_NO_CLR(h2c_pkt, value)                     \
94         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X00, 0, 7, value)
95 #define H2C_CMD_HEADER_GET_ACK(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X00, 7, 1)
96 #define H2C_CMD_HEADER_SET_ACK(h2c_pkt, value)                                 \
97         SET_H2C_FIELD_CLR(h2c_pkt + 0X00, 7, 1, value)
98 #define H2C_CMD_HEADER_SET_ACK_NO_CLR(h2c_pkt, value)                          \
99         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X00, 7, 1, value)
100 #define H2C_CMD_HEADER_GET_TOTAL_LEN(h2c_pkt)                                  \
101         GET_H2C_FIELD(h2c_pkt + 0X04, 0, 16)
102 #define H2C_CMD_HEADER_SET_TOTAL_LEN(h2c_pkt, value)                           \
103         SET_H2C_FIELD_CLR(h2c_pkt + 0X04, 0, 16, value)
104 #define H2C_CMD_HEADER_SET_TOTAL_LEN_NO_CLR(h2c_pkt, value)                    \
105         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X04, 0, 16, value)
106 #define H2C_CMD_HEADER_GET_SEQ_NUM(h2c_pkt)                                    \
107         GET_H2C_FIELD(h2c_pkt + 0X04, 16, 16)
108 #define H2C_CMD_HEADER_SET_SEQ_NUM(h2c_pkt, value)                             \
109         SET_H2C_FIELD_CLR(h2c_pkt + 0X04, 16, 16, value)
110 #define H2C_CMD_HEADER_SET_SEQ_NUM_NO_CLR(h2c_pkt, value)                      \
111         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X04, 16, 16, value)
112 #define FW_OFFLOAD_H2C_GET_CATEGORY(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X00, 0, 7)
113 #define FW_OFFLOAD_H2C_SET_CATEGORY(h2c_pkt, value)                            \
114         SET_H2C_FIELD_CLR(h2c_pkt + 0X00, 0, 7, value)
115 #define FW_OFFLOAD_H2C_SET_CATEGORY_NO_CLR(h2c_pkt, value)                     \
116         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X00, 0, 7, value)
117 #define FW_OFFLOAD_H2C_GET_ACK(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X00, 7, 1)
118 #define FW_OFFLOAD_H2C_SET_ACK(h2c_pkt, value)                                 \
119         SET_H2C_FIELD_CLR(h2c_pkt + 0X00, 7, 1, value)
120 #define FW_OFFLOAD_H2C_SET_ACK_NO_CLR(h2c_pkt, value)                          \
121         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X00, 7, 1, value)
122 #define FW_OFFLOAD_H2C_GET_CMD_ID(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X00, 8, 8)
123 #define FW_OFFLOAD_H2C_SET_CMD_ID(h2c_pkt, value)                              \
124         SET_H2C_FIELD_CLR(h2c_pkt + 0X00, 8, 8, value)
125 #define FW_OFFLOAD_H2C_SET_CMD_ID_NO_CLR(h2c_pkt, value)                       \
126         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X00, 8, 8, value)
127 #define FW_OFFLOAD_H2C_GET_SUB_CMD_ID(h2c_pkt)                                 \
128         GET_H2C_FIELD(h2c_pkt + 0X00, 16, 16)
129 #define FW_OFFLOAD_H2C_SET_SUB_CMD_ID(h2c_pkt, value)                          \
130         SET_H2C_FIELD_CLR(h2c_pkt + 0X00, 16, 16, value)
131 #define FW_OFFLOAD_H2C_SET_SUB_CMD_ID_NO_CLR(h2c_pkt, value)                   \
132         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X00, 16, 16, value)
133 #define FW_OFFLOAD_H2C_GET_TOTAL_LEN(h2c_pkt)                                  \
134         GET_H2C_FIELD(h2c_pkt + 0X04, 0, 16)
135 #define FW_OFFLOAD_H2C_SET_TOTAL_LEN(h2c_pkt, value)                           \
136         SET_H2C_FIELD_CLR(h2c_pkt + 0X04, 0, 16, value)
137 #define FW_OFFLOAD_H2C_SET_TOTAL_LEN_NO_CLR(h2c_pkt, value)                    \
138         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X04, 0, 16, value)
139 #define FW_OFFLOAD_H2C_GET_SEQ_NUM(h2c_pkt)                                    \
140         GET_H2C_FIELD(h2c_pkt + 0X04, 16, 16)
141 #define FW_OFFLOAD_H2C_SET_SEQ_NUM(h2c_pkt, value)                             \
142         SET_H2C_FIELD_CLR(h2c_pkt + 0X04, 16, 16, value)
143 #define FW_OFFLOAD_H2C_SET_SEQ_NUM_NO_CLR(h2c_pkt, value)                      \
144         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X04, 16, 16, value)
145 #define FW_ACCESS_TEST_GET_ACCESS_TXFF(h2c_pkt)                                \
146         GET_H2C_FIELD(h2c_pkt + 0X08, 0, 1)
147 #define FW_ACCESS_TEST_SET_ACCESS_TXFF(h2c_pkt, value)                         \
148         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 1, value)
149 #define FW_ACCESS_TEST_SET_ACCESS_TXFF_NO_CLR(h2c_pkt, value)                  \
150         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 1, value)
151 #define FW_ACCESS_TEST_GET_ACCESS_RXFF(h2c_pkt)                                \
152         GET_H2C_FIELD(h2c_pkt + 0X08, 1, 1)
153 #define FW_ACCESS_TEST_SET_ACCESS_RXFF(h2c_pkt, value)                         \
154         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 1, 1, value)
155 #define FW_ACCESS_TEST_SET_ACCESS_RXFF_NO_CLR(h2c_pkt, value)                  \
156         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 1, 1, value)
157 #define FW_ACCESS_TEST_GET_ACCESS_FWFF(h2c_pkt)                                \
158         GET_H2C_FIELD(h2c_pkt + 0X08, 2, 1)
159 #define FW_ACCESS_TEST_SET_ACCESS_FWFF(h2c_pkt, value)                         \
160         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 2, 1, value)
161 #define FW_ACCESS_TEST_SET_ACCESS_FWFF_NO_CLR(h2c_pkt, value)                  \
162         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 2, 1, value)
163 #define FW_ACCESS_TEST_GET_ACCESS_PHYFF(h2c_pkt)                               \
164         GET_H2C_FIELD(h2c_pkt + 0X08, 3, 1)
165 #define FW_ACCESS_TEST_SET_ACCESS_PHYFF(h2c_pkt, value)                        \
166         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 3, 1, value)
167 #define FW_ACCESS_TEST_SET_ACCESS_PHYFF_NO_CLR(h2c_pkt, value)                 \
168         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 3, 1, value)
169 #define FW_ACCESS_TEST_GET_ACCESS_RPT_BUF(h2c_pkt)                             \
170         GET_H2C_FIELD(h2c_pkt + 0X08, 4, 1)
171 #define FW_ACCESS_TEST_SET_ACCESS_RPT_BUF(h2c_pkt, value)                      \
172         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 4, 1, value)
173 #define FW_ACCESS_TEST_SET_ACCESS_RPT_BUF_NO_CLR(h2c_pkt, value)               \
174         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 4, 1, value)
175 #define FW_ACCESS_TEST_GET_ACCESS_CAM(h2c_pkt)                                 \
176         GET_H2C_FIELD(h2c_pkt + 0X08, 5, 1)
177 #define FW_ACCESS_TEST_SET_ACCESS_CAM(h2c_pkt, value)                          \
178         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 5, 1, value)
179 #define FW_ACCESS_TEST_SET_ACCESS_CAM_NO_CLR(h2c_pkt, value)                   \
180         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 5, 1, value)
181 #define FW_ACCESS_TEST_GET_ACCESS_WOW_CAM(h2c_pkt)                             \
182         GET_H2C_FIELD(h2c_pkt + 0X08, 6, 1)
183 #define FW_ACCESS_TEST_SET_ACCESS_WOW_CAM(h2c_pkt, value)                      \
184         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 6, 1, value)
185 #define FW_ACCESS_TEST_SET_ACCESS_WOW_CAM_NO_CLR(h2c_pkt, value)               \
186         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 6, 1, value)
187 #define FW_ACCESS_TEST_GET_ACCESS_RX_CAM(h2c_pkt)                              \
188         GET_H2C_FIELD(h2c_pkt + 0X08, 7, 1)
189 #define FW_ACCESS_TEST_SET_ACCESS_RX_CAM(h2c_pkt, value)                       \
190         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 7, 1, value)
191 #define FW_ACCESS_TEST_SET_ACCESS_RX_CAM_NO_CLR(h2c_pkt, value)                \
192         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 7, 1, value)
193 #define FW_ACCESS_TEST_GET_ACCESS_BA_CAM(h2c_pkt)                              \
194         GET_H2C_FIELD(h2c_pkt + 0X08, 8, 1)
195 #define FW_ACCESS_TEST_SET_ACCESS_BA_CAM(h2c_pkt, value)                       \
196         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 8, 1, value)
197 #define FW_ACCESS_TEST_SET_ACCESS_BA_CAM_NO_CLR(h2c_pkt, value)                \
198         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 8, 1, value)
199 #define FW_ACCESS_TEST_GET_ACCESS_MBSSID_CAM(h2c_pkt)                          \
200         GET_H2C_FIELD(h2c_pkt + 0X08, 9, 1)
201 #define FW_ACCESS_TEST_SET_ACCESS_MBSSID_CAM(h2c_pkt, value)                   \
202         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 9, 1, value)
203 #define FW_ACCESS_TEST_SET_ACCESS_MBSSID_CAM_NO_CLR(h2c_pkt, value)            \
204         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 9, 1, value)
205 #define FW_ACCESS_TEST_GET_ACCESS_PAGE0(h2c_pkt)                               \
206         GET_H2C_FIELD(h2c_pkt + 0X08, 16, 1)
207 #define FW_ACCESS_TEST_SET_ACCESS_PAGE0(h2c_pkt, value)                        \
208         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 16, 1, value)
209 #define FW_ACCESS_TEST_SET_ACCESS_PAGE0_NO_CLR(h2c_pkt, value)                 \
210         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 16, 1, value)
211 #define FW_ACCESS_TEST_GET_ACCESS_PAGE1(h2c_pkt)                               \
212         GET_H2C_FIELD(h2c_pkt + 0X08, 17, 1)
213 #define FW_ACCESS_TEST_SET_ACCESS_PAGE1(h2c_pkt, value)                        \
214         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 17, 1, value)
215 #define FW_ACCESS_TEST_SET_ACCESS_PAGE1_NO_CLR(h2c_pkt, value)                 \
216         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 17, 1, value)
217 #define FW_ACCESS_TEST_GET_ACCESS_PAGE2(h2c_pkt)                               \
218         GET_H2C_FIELD(h2c_pkt + 0X08, 18, 1)
219 #define FW_ACCESS_TEST_SET_ACCESS_PAGE2(h2c_pkt, value)                        \
220         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 18, 1, value)
221 #define FW_ACCESS_TEST_SET_ACCESS_PAGE2_NO_CLR(h2c_pkt, value)                 \
222         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 18, 1, value)
223 #define FW_ACCESS_TEST_GET_ACCESS_PAGE3(h2c_pkt)                               \
224         GET_H2C_FIELD(h2c_pkt + 0X08, 19, 1)
225 #define FW_ACCESS_TEST_SET_ACCESS_PAGE3(h2c_pkt, value)                        \
226         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 19, 1, value)
227 #define FW_ACCESS_TEST_SET_ACCESS_PAGE3_NO_CLR(h2c_pkt, value)                 \
228         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 19, 1, value)
229 #define FW_ACCESS_TEST_GET_ACCESS_PAGE4(h2c_pkt)                               \
230         GET_H2C_FIELD(h2c_pkt + 0X08, 20, 1)
231 #define FW_ACCESS_TEST_SET_ACCESS_PAGE4(h2c_pkt, value)                        \
232         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 20, 1, value)
233 #define FW_ACCESS_TEST_SET_ACCESS_PAGE4_NO_CLR(h2c_pkt, value)                 \
234         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 20, 1, value)
235 #define FW_ACCESS_TEST_GET_ACCESS_PAGE5(h2c_pkt)                               \
236         GET_H2C_FIELD(h2c_pkt + 0X08, 21, 1)
237 #define FW_ACCESS_TEST_SET_ACCESS_PAGE5(h2c_pkt, value)                        \
238         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 21, 1, value)
239 #define FW_ACCESS_TEST_SET_ACCESS_PAGE5_NO_CLR(h2c_pkt, value)                 \
240         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 21, 1, value)
241 #define FW_ACCESS_TEST_GET_ACCESS_PAGE6(h2c_pkt)                               \
242         GET_H2C_FIELD(h2c_pkt + 0X08, 22, 1)
243 #define FW_ACCESS_TEST_SET_ACCESS_PAGE6(h2c_pkt, value)                        \
244         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 22, 1, value)
245 #define FW_ACCESS_TEST_SET_ACCESS_PAGE6_NO_CLR(h2c_pkt, value)                 \
246         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 22, 1, value)
247 #define FW_ACCESS_TEST_GET_ACCESS_PAGE7(h2c_pkt)                               \
248         GET_H2C_FIELD(h2c_pkt + 0X08, 23, 1)
249 #define FW_ACCESS_TEST_SET_ACCESS_PAGE7(h2c_pkt, value)                        \
250         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 23, 1, value)
251 #define FW_ACCESS_TEST_SET_ACCESS_PAGE7_NO_CLR(h2c_pkt, value)                 \
252         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 23, 1, value)
253 #define CH_SWITCH_GET_START(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 0, 1)
254 #define CH_SWITCH_SET_START(h2c_pkt, value)                                    \
255         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 1, value)
256 #define CH_SWITCH_SET_START_NO_CLR(h2c_pkt, value)                             \
257         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 1, value)
258 #define CH_SWITCH_GET_DEST_CH_EN(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 1, 1)
259 #define CH_SWITCH_SET_DEST_CH_EN(h2c_pkt, value)                               \
260         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 1, 1, value)
261 #define CH_SWITCH_SET_DEST_CH_EN_NO_CLR(h2c_pkt, value)                        \
262         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 1, 1, value)
263 #define CH_SWITCH_GET_ABSOLUTE_TIME(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 2, 1)
264 #define CH_SWITCH_SET_ABSOLUTE_TIME(h2c_pkt, value)                            \
265         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 2, 1, value)
266 #define CH_SWITCH_SET_ABSOLUTE_TIME_NO_CLR(h2c_pkt, value)                     \
267         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 2, 1, value)
268 #define CH_SWITCH_GET_PERIODIC_OPT(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 3, 2)
269 #define CH_SWITCH_SET_PERIODIC_OPT(h2c_pkt, value)                             \
270         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 3, 2, value)
271 #define CH_SWITCH_SET_PERIODIC_OPT_NO_CLR(h2c_pkt, value)                      \
272         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 3, 2, value)
273 #define CH_SWITCH_GET_INFO_LOC(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 8, 8)
274 #define CH_SWITCH_SET_INFO_LOC(h2c_pkt, value)                                 \
275         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 8, 8, value)
276 #define CH_SWITCH_SET_INFO_LOC_NO_CLR(h2c_pkt, value)                          \
277         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 8, 8, value)
278 #define CH_SWITCH_GET_CH_NUM(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 16, 8)
279 #define CH_SWITCH_SET_CH_NUM(h2c_pkt, value)                                   \
280         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 16, 8, value)
281 #define CH_SWITCH_SET_CH_NUM_NO_CLR(h2c_pkt, value)                            \
282         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 16, 8, value)
283 #define CH_SWITCH_GET_PRI_CH_IDX(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 24, 4)
284 #define CH_SWITCH_SET_PRI_CH_IDX(h2c_pkt, value)                               \
285         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 24, 4, value)
286 #define CH_SWITCH_SET_PRI_CH_IDX_NO_CLR(h2c_pkt, value)                        \
287         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 24, 4, value)
288 #define CH_SWITCH_GET_DEST_BW(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 28, 4)
289 #define CH_SWITCH_SET_DEST_BW(h2c_pkt, value)                                  \
290         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 28, 4, value)
291 #define CH_SWITCH_SET_DEST_BW_NO_CLR(h2c_pkt, value)                           \
292         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 28, 4, value)
293 #define CH_SWITCH_GET_DEST_CH(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X0C, 0, 8)
294 #define CH_SWITCH_SET_DEST_CH(h2c_pkt, value)                                  \
295         SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 0, 8, value)
296 #define CH_SWITCH_SET_DEST_CH_NO_CLR(h2c_pkt, value)                           \
297         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 0, 8, value)
298 #define CH_SWITCH_GET_NORMAL_PERIOD(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X0C, 8, 6)
299 #define CH_SWITCH_SET_NORMAL_PERIOD(h2c_pkt, value)                            \
300         SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 8, 6, value)
301 #define CH_SWITCH_SET_NORMAL_PERIOD_NO_CLR(h2c_pkt, value)                     \
302         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 8, 6, value)
303 #define CH_SWITCH_GET_NORMAL_PERIOD_SEL(h2c_pkt)                               \
304         GET_H2C_FIELD(h2c_pkt + 0X0C, 14, 2)
305 #define CH_SWITCH_SET_NORMAL_PERIOD_SEL(h2c_pkt, value)                        \
306         SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 14, 2, value)
307 #define CH_SWITCH_SET_NORMAL_PERIOD_SEL_NO_CLR(h2c_pkt, value)                 \
308         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 14, 2, value)
309 #define CH_SWITCH_GET_SLOW_PERIOD(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X0C, 16, 6)
310 #define CH_SWITCH_SET_SLOW_PERIOD(h2c_pkt, value)                              \
311         SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 16, 6, value)
312 #define CH_SWITCH_SET_SLOW_PERIOD_NO_CLR(h2c_pkt, value)                       \
313         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 16, 6, value)
314 #define CH_SWITCH_GET_SLOW_PERIOD_SEL(h2c_pkt)                                 \
315         GET_H2C_FIELD(h2c_pkt + 0X0C, 22, 2)
316 #define CH_SWITCH_SET_SLOW_PERIOD_SEL(h2c_pkt, value)                          \
317         SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 22, 2, value)
318 #define CH_SWITCH_SET_SLOW_PERIOD_SEL_NO_CLR(h2c_pkt, value)                   \
319         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 22, 2, value)
320 #define CH_SWITCH_GET_NORMAL_CYCLE(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X0C, 24, 8)
321 #define CH_SWITCH_SET_NORMAL_CYCLE(h2c_pkt, value)                             \
322         SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 24, 8, value)
323 #define CH_SWITCH_SET_NORMAL_CYCLE_NO_CLR(h2c_pkt, value)                      \
324         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 24, 8, value)
325 #define CH_SWITCH_GET_TSF_HIGH(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X10, 0, 32)
326 #define CH_SWITCH_SET_TSF_HIGH(h2c_pkt, value)                                 \
327         SET_H2C_FIELD_CLR(h2c_pkt + 0X10, 0, 32, value)
328 #define CH_SWITCH_SET_TSF_HIGH_NO_CLR(h2c_pkt, value)                          \
329         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X10, 0, 32, value)
330 #define CH_SWITCH_GET_TSF_LOW(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X14, 0, 32)
331 #define CH_SWITCH_SET_TSF_LOW(h2c_pkt, value)                                  \
332         SET_H2C_FIELD_CLR(h2c_pkt + 0X14, 0, 32, value)
333 #define CH_SWITCH_SET_TSF_LOW_NO_CLR(h2c_pkt, value)                           \
334         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X14, 0, 32, value)
335 #define CH_SWITCH_GET_INFO_SIZE(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X18, 0, 16)
336 #define CH_SWITCH_SET_INFO_SIZE(h2c_pkt, value)                                \
337         SET_H2C_FIELD_CLR(h2c_pkt + 0X18, 0, 16, value)
338 #define CH_SWITCH_SET_INFO_SIZE_NO_CLR(h2c_pkt, value)                         \
339         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X18, 0, 16, value)
340 #define UPDATE_BEACON_PARSING_INFO_GET_FUNC_EN(h2c_pkt)                        \
341         GET_H2C_FIELD(h2c_pkt + 0X08, 0, 1)
342 #define UPDATE_BEACON_PARSING_INFO_SET_FUNC_EN(h2c_pkt, value)                 \
343         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 1, value)
344 #define UPDATE_BEACON_PARSING_INFO_SET_FUNC_EN_NO_CLR(h2c_pkt, value)          \
345         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 1, value)
346 #define UPDATE_BEACON_PARSING_INFO_GET_SIZE_TH(h2c_pkt)                        \
347         GET_H2C_FIELD(h2c_pkt + 0X08, 8, 4)
348 #define UPDATE_BEACON_PARSING_INFO_SET_SIZE_TH(h2c_pkt, value)                 \
349         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 8, 4, value)
350 #define UPDATE_BEACON_PARSING_INFO_SET_SIZE_TH_NO_CLR(h2c_pkt, value)          \
351         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 8, 4, value)
352 #define UPDATE_BEACON_PARSING_INFO_GET_TIMEOUT(h2c_pkt)                        \
353         GET_H2C_FIELD(h2c_pkt + 0X08, 12, 4)
354 #define UPDATE_BEACON_PARSING_INFO_SET_TIMEOUT(h2c_pkt, value)                 \
355         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 12, 4, value)
356 #define UPDATE_BEACON_PARSING_INFO_SET_TIMEOUT_NO_CLR(h2c_pkt, value)          \
357         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 12, 4, value)
358 #define UPDATE_BEACON_PARSING_INFO_GET_IE_ID_BMP_0(h2c_pkt)                    \
359         GET_H2C_FIELD(h2c_pkt + 0X0C, 0, 32)
360 #define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_0(h2c_pkt, value)             \
361         SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 0, 32, value)
362 #define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_0_NO_CLR(h2c_pkt, value)      \
363         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 0, 32, value)
364 #define UPDATE_BEACON_PARSING_INFO_GET_IE_ID_BMP_1(h2c_pkt)                    \
365         GET_H2C_FIELD(h2c_pkt + 0X10, 0, 32)
366 #define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_1(h2c_pkt, value)             \
367         SET_H2C_FIELD_CLR(h2c_pkt + 0X10, 0, 32, value)
368 #define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_1_NO_CLR(h2c_pkt, value)      \
369         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X10, 0, 32, value)
370 #define UPDATE_BEACON_PARSING_INFO_GET_IE_ID_BMP_2(h2c_pkt)                    \
371         GET_H2C_FIELD(h2c_pkt + 0X14, 0, 32)
372 #define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_2(h2c_pkt, value)             \
373         SET_H2C_FIELD_CLR(h2c_pkt + 0X14, 0, 32, value)
374 #define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_2_NO_CLR(h2c_pkt, value)      \
375         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X14, 0, 32, value)
376 #define UPDATE_BEACON_PARSING_INFO_GET_IE_ID_BMP_3(h2c_pkt)                    \
377         GET_H2C_FIELD(h2c_pkt + 0X18, 0, 32)
378 #define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_3(h2c_pkt, value)             \
379         SET_H2C_FIELD_CLR(h2c_pkt + 0X18, 0, 32, value)
380 #define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_3_NO_CLR(h2c_pkt, value)      \
381         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X18, 0, 32, value)
382 #define UPDATE_BEACON_PARSING_INFO_GET_IE_ID_BMP_4(h2c_pkt)                    \
383         GET_H2C_FIELD(h2c_pkt + 0X1C, 0, 32)
384 #define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_4(h2c_pkt, value)             \
385         SET_H2C_FIELD_CLR(h2c_pkt + 0X1C, 0, 32, value)
386 #define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_4_NO_CLR(h2c_pkt, value)      \
387         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X1C, 0, 32, value)
388 #define CFG_PARAM_GET_NUM(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 0, 16)
389 #define CFG_PARAM_SET_NUM(h2c_pkt, value)                                      \
390         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 16, value)
391 #define CFG_PARAM_SET_NUM_NO_CLR(h2c_pkt, value)                               \
392         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 16, value)
393 #define CFG_PARAM_GET_INIT_CASE(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 16, 1)
394 #define CFG_PARAM_SET_INIT_CASE(h2c_pkt, value)                                \
395         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 16, 1, value)
396 #define CFG_PARAM_SET_INIT_CASE_NO_CLR(h2c_pkt, value)                         \
397         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 16, 1, value)
398 #define CFG_PARAM_GET_LOC(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 24, 8)
399 #define CFG_PARAM_SET_LOC(h2c_pkt, value)                                      \
400         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 24, 8, value)
401 #define CFG_PARAM_SET_LOC_NO_CLR(h2c_pkt, value)                               \
402         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 24, 8, value)
403 #define UPDATE_DATAPACK_GET_SIZE(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 0, 16)
404 #define UPDATE_DATAPACK_SET_SIZE(h2c_pkt, value)                               \
405         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 16, value)
406 #define UPDATE_DATAPACK_SET_SIZE_NO_CLR(h2c_pkt, value)                        \
407         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 16, value)
408 #define UPDATE_DATAPACK_GET_DATAPACK_ID(h2c_pkt)                               \
409         GET_H2C_FIELD(h2c_pkt + 0X08, 16, 8)
410 #define UPDATE_DATAPACK_SET_DATAPACK_ID(h2c_pkt, value)                        \
411         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 16, 8, value)
412 #define UPDATE_DATAPACK_SET_DATAPACK_ID_NO_CLR(h2c_pkt, value)                 \
413         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 16, 8, value)
414 #define UPDATE_DATAPACK_GET_DATAPACK_LOC(h2c_pkt)                              \
415         GET_H2C_FIELD(h2c_pkt + 0X08, 24, 8)
416 #define UPDATE_DATAPACK_SET_DATAPACK_LOC(h2c_pkt, value)                       \
417         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 24, 8, value)
418 #define UPDATE_DATAPACK_SET_DATAPACK_LOC_NO_CLR(h2c_pkt, value)                \
419         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 24, 8, value)
420 #define UPDATE_DATAPACK_GET_DATAPACK_SEGMENT(h2c_pkt)                          \
421         GET_H2C_FIELD(h2c_pkt + 0X0C, 0, 8)
422 #define UPDATE_DATAPACK_SET_DATAPACK_SEGMENT(h2c_pkt, value)                   \
423         SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 0, 8, value)
424 #define UPDATE_DATAPACK_SET_DATAPACK_SEGMENT_NO_CLR(h2c_pkt, value)            \
425         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 0, 8, value)
426 #define UPDATE_DATAPACK_GET_END_SEGMENT(h2c_pkt)                               \
427         GET_H2C_FIELD(h2c_pkt + 0X0C, 8, 1)
428 #define UPDATE_DATAPACK_SET_END_SEGMENT(h2c_pkt, value)                        \
429         SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 8, 1, value)
430 #define UPDATE_DATAPACK_SET_END_SEGMENT_NO_CLR(h2c_pkt, value)                 \
431         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 8, 1, value)
432 #define RUN_DATAPACK_GET_DATAPACK_ID(h2c_pkt)                                  \
433         GET_H2C_FIELD(h2c_pkt + 0X08, 0, 8)
434 #define RUN_DATAPACK_SET_DATAPACK_ID(h2c_pkt, value)                           \
435         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 8, value)
436 #define RUN_DATAPACK_SET_DATAPACK_ID_NO_CLR(h2c_pkt, value)                    \
437         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 8, value)
438 #define DOWNLOAD_FLASH_GET_SPI_CMD(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 0, 8)
439 #define DOWNLOAD_FLASH_SET_SPI_CMD(h2c_pkt, value)                             \
440         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 8, value)
441 #define DOWNLOAD_FLASH_SET_SPI_CMD_NO_CLR(h2c_pkt, value)                      \
442         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 8, value)
443 #define DOWNLOAD_FLASH_GET_LOCATION(h2c_pkt)                                   \
444         GET_H2C_FIELD(h2c_pkt + 0X08, 8, 16)
445 #define DOWNLOAD_FLASH_SET_LOCATION(h2c_pkt, value)                            \
446         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 8, 16, value)
447 #define DOWNLOAD_FLASH_SET_LOCATION_NO_CLR(h2c_pkt, value)                     \
448         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 8, 16, value)
449 #define DOWNLOAD_FLASH_GET_SIZE(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X0C, 0, 32)
450 #define DOWNLOAD_FLASH_SET_SIZE(h2c_pkt, value)                                \
451         SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 0, 32, value)
452 #define DOWNLOAD_FLASH_SET_SIZE_NO_CLR(h2c_pkt, value)                         \
453         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 0, 32, value)
454 #define DOWNLOAD_FLASH_GET_START_ADDR(h2c_pkt)                                 \
455         GET_H2C_FIELD(h2c_pkt + 0X10, 0, 32)
456 #define DOWNLOAD_FLASH_SET_START_ADDR(h2c_pkt, value)                          \
457         SET_H2C_FIELD_CLR(h2c_pkt + 0X10, 0, 32, value)
458 #define DOWNLOAD_FLASH_SET_START_ADDR_NO_CLR(h2c_pkt, value)                   \
459         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X10, 0, 32, value)
460 #define UPDATE_PKT_GET_SIZE(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 0, 16)
461 #define UPDATE_PKT_SET_SIZE(h2c_pkt, value)                                    \
462         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 16, value)
463 #define UPDATE_PKT_SET_SIZE_NO_CLR(h2c_pkt, value)                             \
464         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 16, value)
465 #define UPDATE_PKT_GET_ID(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 16, 8)
466 #define UPDATE_PKT_SET_ID(h2c_pkt, value)                                      \
467         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 16, 8, value)
468 #define UPDATE_PKT_SET_ID_NO_CLR(h2c_pkt, value)                               \
469         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 16, 8, value)
470 #define UPDATE_PKT_GET_LOC(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 24, 8)
471 #define UPDATE_PKT_SET_LOC(h2c_pkt, value)                                     \
472         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 24, 8, value)
473 #define UPDATE_PKT_SET_LOC_NO_CLR(h2c_pkt, value)                              \
474         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 24, 8, value)
475 #define GENERAL_INFO_GET_FW_TX_BOUNDARY(h2c_pkt)                               \
476         GET_H2C_FIELD(h2c_pkt + 0X08, 16, 8)
477 #define GENERAL_INFO_SET_FW_TX_BOUNDARY(h2c_pkt, value)                        \
478         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 16, 8, value)
479 #define GENERAL_INFO_SET_FW_TX_BOUNDARY_NO_CLR(h2c_pkt, value)                 \
480         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 16, 8, value)
481 #define IQK_GET_CLEAR(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 0, 1)
482 #define IQK_SET_CLEAR(h2c_pkt, value)                                          \
483         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 1, value)
484 #define IQK_SET_CLEAR_NO_CLR(h2c_pkt, value)                                   \
485         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 1, value)
486 #define IQK_GET_SEGMENT_IQK(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 1, 1)
487 #define IQK_SET_SEGMENT_IQK(h2c_pkt, value)                                    \
488         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 1, 1, value)
489 #define IQK_SET_SEGMENT_IQK_NO_CLR(h2c_pkt, value)                             \
490         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 1, 1, value)
491 #define PWR_TRK_GET_ENABLE_A(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 0, 1)
492 #define PWR_TRK_SET_ENABLE_A(h2c_pkt, value)                                   \
493         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 1, value)
494 #define PWR_TRK_SET_ENABLE_A_NO_CLR(h2c_pkt, value)                            \
495         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 1, value)
496 #define PWR_TRK_GET_ENABLE_B(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 1, 1)
497 #define PWR_TRK_SET_ENABLE_B(h2c_pkt, value)                                   \
498         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 1, 1, value)
499 #define PWR_TRK_SET_ENABLE_B_NO_CLR(h2c_pkt, value)                            \
500         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 1, 1, value)
501 #define PWR_TRK_GET_ENABLE_C(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 2, 1)
502 #define PWR_TRK_SET_ENABLE_C(h2c_pkt, value)                                   \
503         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 2, 1, value)
504 #define PWR_TRK_SET_ENABLE_C_NO_CLR(h2c_pkt, value)                            \
505         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 2, 1, value)
506 #define PWR_TRK_GET_ENABLE_D(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 3, 1)
507 #define PWR_TRK_SET_ENABLE_D(h2c_pkt, value)                                   \
508         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 3, 1, value)
509 #define PWR_TRK_SET_ENABLE_D_NO_CLR(h2c_pkt, value)                            \
510         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 3, 1, value)
511 #define PWR_TRK_GET_TYPE(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 4, 3)
512 #define PWR_TRK_SET_TYPE(h2c_pkt, value)                                       \
513         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 4, 3, value)
514 #define PWR_TRK_SET_TYPE_NO_CLR(h2c_pkt, value)                                \
515         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 4, 3, value)
516 #define PWR_TRK_GET_BBSWING_INDEX(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 8, 8)
517 #define PWR_TRK_SET_BBSWING_INDEX(h2c_pkt, value)                              \
518         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 8, 8, value)
519 #define PWR_TRK_SET_BBSWING_INDEX_NO_CLR(h2c_pkt, value)                       \
520         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 8, 8, value)
521 #define PWR_TRK_GET_TX_PWR_INDEX_A(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X0C, 0, 8)
522 #define PWR_TRK_SET_TX_PWR_INDEX_A(h2c_pkt, value)                             \
523         SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 0, 8, value)
524 #define PWR_TRK_SET_TX_PWR_INDEX_A_NO_CLR(h2c_pkt, value)                      \
525         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 0, 8, value)
526 #define PWR_TRK_GET_OFFSET_VALUE_A(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X0C, 8, 8)
527 #define PWR_TRK_SET_OFFSET_VALUE_A(h2c_pkt, value)                             \
528         SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 8, 8, value)
529 #define PWR_TRK_SET_OFFSET_VALUE_A_NO_CLR(h2c_pkt, value)                      \
530         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 8, 8, value)
531 #define PWR_TRK_GET_TSSI_VALUE_A(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X0C, 16, 8)
532 #define PWR_TRK_SET_TSSI_VALUE_A(h2c_pkt, value)                               \
533         SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 16, 8, value)
534 #define PWR_TRK_SET_TSSI_VALUE_A_NO_CLR(h2c_pkt, value)                        \
535         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 16, 8, value)
536 #define PWR_TRK_GET_TX_PWR_INDEX_B(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X10, 0, 8)
537 #define PWR_TRK_SET_TX_PWR_INDEX_B(h2c_pkt, value)                             \
538         SET_H2C_FIELD_CLR(h2c_pkt + 0X10, 0, 8, value)
539 #define PWR_TRK_SET_TX_PWR_INDEX_B_NO_CLR(h2c_pkt, value)                      \
540         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X10, 0, 8, value)
541 #define PWR_TRK_GET_OFFSET_VALUE_B(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X10, 8, 8)
542 #define PWR_TRK_SET_OFFSET_VALUE_B(h2c_pkt, value)                             \
543         SET_H2C_FIELD_CLR(h2c_pkt + 0X10, 8, 8, value)
544 #define PWR_TRK_SET_OFFSET_VALUE_B_NO_CLR(h2c_pkt, value)                      \
545         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X10, 8, 8, value)
546 #define PWR_TRK_GET_TSSI_VALUE_B(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X10, 16, 8)
547 #define PWR_TRK_SET_TSSI_VALUE_B(h2c_pkt, value)                               \
548         SET_H2C_FIELD_CLR(h2c_pkt + 0X10, 16, 8, value)
549 #define PWR_TRK_SET_TSSI_VALUE_B_NO_CLR(h2c_pkt, value)                        \
550         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X10, 16, 8, value)
551 #define PWR_TRK_GET_TX_PWR_INDEX_C(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X14, 0, 8)
552 #define PWR_TRK_SET_TX_PWR_INDEX_C(h2c_pkt, value)                             \
553         SET_H2C_FIELD_CLR(h2c_pkt + 0X14, 0, 8, value)
554 #define PWR_TRK_SET_TX_PWR_INDEX_C_NO_CLR(h2c_pkt, value)                      \
555         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X14, 0, 8, value)
556 #define PWR_TRK_GET_OFFSET_VALUE_C(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X14, 8, 8)
557 #define PWR_TRK_SET_OFFSET_VALUE_C(h2c_pkt, value)                             \
558         SET_H2C_FIELD_CLR(h2c_pkt + 0X14, 8, 8, value)
559 #define PWR_TRK_SET_OFFSET_VALUE_C_NO_CLR(h2c_pkt, value)                      \
560         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X14, 8, 8, value)
561 #define PWR_TRK_GET_TSSI_VALUE_C(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X14, 16, 8)
562 #define PWR_TRK_SET_TSSI_VALUE_C(h2c_pkt, value)                               \
563         SET_H2C_FIELD_CLR(h2c_pkt + 0X14, 16, 8, value)
564 #define PWR_TRK_SET_TSSI_VALUE_C_NO_CLR(h2c_pkt, value)                        \
565         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X14, 16, 8, value)
566 #define PWR_TRK_GET_TX_PWR_INDEX_D(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X18, 0, 8)
567 #define PWR_TRK_SET_TX_PWR_INDEX_D(h2c_pkt, value)                             \
568         SET_H2C_FIELD_CLR(h2c_pkt + 0X18, 0, 8, value)
569 #define PWR_TRK_SET_TX_PWR_INDEX_D_NO_CLR(h2c_pkt, value)                      \
570         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X18, 0, 8, value)
571 #define PWR_TRK_GET_OFFSET_VALUE_D(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X18, 8, 8)
572 #define PWR_TRK_SET_OFFSET_VALUE_D(h2c_pkt, value)                             \
573         SET_H2C_FIELD_CLR(h2c_pkt + 0X18, 8, 8, value)
574 #define PWR_TRK_SET_OFFSET_VALUE_D_NO_CLR(h2c_pkt, value)                      \
575         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X18, 8, 8, value)
576 #define PWR_TRK_GET_TSSI_VALUE_D(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X18, 16, 8)
577 #define PWR_TRK_SET_TSSI_VALUE_D(h2c_pkt, value)                               \
578         SET_H2C_FIELD_CLR(h2c_pkt + 0X18, 16, 8, value)
579 #define PWR_TRK_SET_TSSI_VALUE_D_NO_CLR(h2c_pkt, value)                        \
580         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X18, 16, 8, value)
581 #define PSD_GET_START_PSD(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 0, 16)
582 #define PSD_SET_START_PSD(h2c_pkt, value)                                      \
583         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 16, value)
584 #define PSD_SET_START_PSD_NO_CLR(h2c_pkt, value)                               \
585         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 16, value)
586 #define PSD_GET_END_PSD(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 16, 16)
587 #define PSD_SET_END_PSD(h2c_pkt, value)                                        \
588         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 16, 16, value)
589 #define PSD_SET_END_PSD_NO_CLR(h2c_pkt, value)                                 \
590         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 16, 16, value)
591 #define PHYDM_INFO_GET_REF_TYPE(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 0, 8)
592 #define PHYDM_INFO_SET_REF_TYPE(h2c_pkt, value)                                \
593         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 8, value)
594 #define PHYDM_INFO_SET_REF_TYPE_NO_CLR(h2c_pkt, value)                         \
595         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 8, value)
596 #define PHYDM_INFO_GET_RF_TYPE(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 8, 8)
597 #define PHYDM_INFO_SET_RF_TYPE(h2c_pkt, value)                                 \
598         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 8, 8, value)
599 #define PHYDM_INFO_SET_RF_TYPE_NO_CLR(h2c_pkt, value)                          \
600         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 8, 8, value)
601 #define PHYDM_INFO_GET_CUT_VER(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 16, 8)
602 #define PHYDM_INFO_SET_CUT_VER(h2c_pkt, value)                                 \
603         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 16, 8, value)
604 #define PHYDM_INFO_SET_CUT_VER_NO_CLR(h2c_pkt, value)                          \
605         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 16, 8, value)
606 #define PHYDM_INFO_GET_RX_ANT_STATUS(h2c_pkt)                                  \
607         GET_H2C_FIELD(h2c_pkt + 0X08, 24, 4)
608 #define PHYDM_INFO_SET_RX_ANT_STATUS(h2c_pkt, value)                           \
609         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 24, 4, value)
610 #define PHYDM_INFO_SET_RX_ANT_STATUS_NO_CLR(h2c_pkt, value)                    \
611         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 24, 4, value)
612 #define PHYDM_INFO_GET_TX_ANT_STATUS(h2c_pkt)                                  \
613         GET_H2C_FIELD(h2c_pkt + 0X08, 28, 4)
614 #define PHYDM_INFO_SET_TX_ANT_STATUS(h2c_pkt, value)                           \
615         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 28, 4, value)
616 #define PHYDM_INFO_SET_TX_ANT_STATUS_NO_CLR(h2c_pkt, value)                    \
617         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 28, 4, value)
618 #define FW_SNDING_GET_SU0(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 0, 1)
619 #define FW_SNDING_SET_SU0(h2c_pkt, value)                                      \
620         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 1, value)
621 #define FW_SNDING_SET_SU0_NO_CLR(h2c_pkt, value)                               \
622         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 1, value)
623 #define FW_SNDING_GET_SU1(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 1, 1)
624 #define FW_SNDING_SET_SU1(h2c_pkt, value)                                      \
625         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 1, 1, value)
626 #define FW_SNDING_SET_SU1_NO_CLR(h2c_pkt, value)                               \
627         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 1, 1, value)
628 #define FW_SNDING_GET_MU(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 2, 1)
629 #define FW_SNDING_SET_MU(h2c_pkt, value)                                       \
630         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 2, 1, value)
631 #define FW_SNDING_SET_MU_NO_CLR(h2c_pkt, value)                                \
632         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 2, 1, value)
633 #define FW_SNDING_GET_PERIOD(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 8, 8)
634 #define FW_SNDING_SET_PERIOD(h2c_pkt, value)                                   \
635         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 8, 8, value)
636 #define FW_SNDING_SET_PERIOD_NO_CLR(h2c_pkt, value)                            \
637         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 8, 8, value)
638 #define FW_SNDING_GET_NDPA0_HEAD_PG(h2c_pkt)                                   \
639         GET_H2C_FIELD(h2c_pkt + 0X08, 16, 8)
640 #define FW_SNDING_SET_NDPA0_HEAD_PG(h2c_pkt, value)                            \
641         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 16, 8, value)
642 #define FW_SNDING_SET_NDPA0_HEAD_PG_NO_CLR(h2c_pkt, value)                     \
643         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 16, 8, value)
644 #define FW_SNDING_GET_NDPA1_HEAD_PG(h2c_pkt)                                   \
645         GET_H2C_FIELD(h2c_pkt + 0X08, 24, 8)
646 #define FW_SNDING_SET_NDPA1_HEAD_PG(h2c_pkt, value)                            \
647         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 24, 8, value)
648 #define FW_SNDING_SET_NDPA1_HEAD_PG_NO_CLR(h2c_pkt, value)                     \
649         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 24, 8, value)
650 #define FW_SNDING_GET_MU_NDPA_HEAD_PG(h2c_pkt)                                 \
651         GET_H2C_FIELD(h2c_pkt + 0XC, 0, 8)
652 #define FW_SNDING_SET_MU_NDPA_HEAD_PG(h2c_pkt, value)                          \
653         SET_H2C_FIELD_CLR(h2c_pkt + 0XC, 0, 8, value)
654 #define FW_SNDING_SET_MU_NDPA_HEAD_PG_NO_CLR(h2c_pkt, value)                   \
655         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0XC, 0, 8, value)
656 #define FW_SNDING_GET_RPT0_HEAD_PG(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0XC, 8, 8)
657 #define FW_SNDING_SET_RPT0_HEAD_PG(h2c_pkt, value)                             \
658         SET_H2C_FIELD_CLR(h2c_pkt + 0XC, 8, 8, value)
659 #define FW_SNDING_SET_RPT0_HEAD_PG_NO_CLR(h2c_pkt, value)                      \
660         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0XC, 8, 8, value)
661 #define FW_SNDING_GET_RPT1_HEAD_PG(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0XC, 16, 8)
662 #define FW_SNDING_SET_RPT1_HEAD_PG(h2c_pkt, value)                             \
663         SET_H2C_FIELD_CLR(h2c_pkt + 0XC, 16, 8, value)
664 #define FW_SNDING_SET_RPT1_HEAD_PG_NO_CLR(h2c_pkt, value)                      \
665         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0XC, 16, 8, value)
666 #define FW_SNDING_GET_RPT2_HEAD_PG(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0XC, 24, 8)
667 #define FW_SNDING_SET_RPT2_HEAD_PG(h2c_pkt, value)                             \
668         SET_H2C_FIELD_CLR(h2c_pkt + 0XC, 24, 8, value)
669 #define FW_SNDING_SET_RPT2_HEAD_PG_NO_CLR(h2c_pkt, value)                      \
670         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0XC, 24, 8, value)
671 #define FW_FWCTRL_GET_SEQ_NUM(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 0, 8)
672 #define FW_FWCTRL_SET_SEQ_NUM(h2c_pkt, value)                                  \
673         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 8, value)
674 #define FW_FWCTRL_SET_SEQ_NUM_NO_CLR(h2c_pkt, value)                           \
675         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 8, value)
676 #define FW_FWCTRL_GET_MORE_CONTENT(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 8, 1)
677 #define FW_FWCTRL_SET_MORE_CONTENT(h2c_pkt, value)                             \
678         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 8, 1, value)
679 #define FW_FWCTRL_SET_MORE_CONTENT_NO_CLR(h2c_pkt, value)                      \
680         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 8, 1, value)
681 #define FW_FWCTRL_GET_CONTENT_IDX(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 9, 7)
682 #define FW_FWCTRL_SET_CONTENT_IDX(h2c_pkt, value)                              \
683         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 9, 7, value)
684 #define FW_FWCTRL_SET_CONTENT_IDX_NO_CLR(h2c_pkt, value)                       \
685         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 9, 7, value)
686 #define FW_FWCTRL_GET_CLASS_ID(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 16, 8)
687 #define FW_FWCTRL_SET_CLASS_ID(h2c_pkt, value)                                 \
688         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 16, 8, value)
689 #define FW_FWCTRL_SET_CLASS_ID_NO_CLR(h2c_pkt, value)                          \
690         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 16, 8, value)
691 #define FW_FWCTRL_GET_LENGTH(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 24, 8)
692 #define FW_FWCTRL_SET_LENGTH(h2c_pkt, value)                                   \
693         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 24, 8, value)
694 #define FW_FWCTRL_SET_LENGTH_NO_CLR(h2c_pkt, value)                            \
695         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 24, 8, value)
696 #define FW_FWCTRL_GET_CONTENT(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X0C, 0, 32)
697 #define FW_FWCTRL_SET_CONTENT(h2c_pkt, value)                                  \
698         SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 0, 32, value)
699 #define FW_FWCTRL_SET_CONTENT_NO_CLR(h2c_pkt, value)                           \
700         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 0, 32, value)
701 #define P2PPS_GET_OFFLOAD_EN(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 0, 1)
702 #define P2PPS_SET_OFFLOAD_EN(h2c_pkt, value)                                   \
703         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 1, value)
704 #define P2PPS_SET_OFFLOAD_EN_NO_CLR(h2c_pkt, value)                            \
705         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 1, value)
706 #define P2PPS_GET_ROLE(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 1, 1)
707 #define P2PPS_SET_ROLE(h2c_pkt, value)                                         \
708         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 1, 1, value)
709 #define P2PPS_SET_ROLE_NO_CLR(h2c_pkt, value)                                  \
710         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 1, 1, value)
711 #define P2PPS_GET_CTWINDOW_EN(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 2, 1)
712 #define P2PPS_SET_CTWINDOW_EN(h2c_pkt, value)                                  \
713         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 2, 1, value)
714 #define P2PPS_SET_CTWINDOW_EN_NO_CLR(h2c_pkt, value)                           \
715         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 2, 1, value)
716 #define P2PPS_GET_NOA_EN(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 3, 1)
717 #define P2PPS_SET_NOA_EN(h2c_pkt, value)                                       \
718         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 3, 1, value)
719 #define P2PPS_SET_NOA_EN_NO_CLR(h2c_pkt, value)                                \
720         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 3, 1, value)
721 #define P2PPS_GET_NOA_SEL(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 4, 1)
722 #define P2PPS_SET_NOA_SEL(h2c_pkt, value)                                      \
723         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 4, 1, value)
724 #define P2PPS_SET_NOA_SEL_NO_CLR(h2c_pkt, value)                               \
725         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 4, 1, value)
726 #define P2PPS_GET_ALLSTASLEEP(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 5, 1)
727 #define P2PPS_SET_ALLSTASLEEP(h2c_pkt, value)                                  \
728         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 5, 1, value)
729 #define P2PPS_SET_ALLSTASLEEP_NO_CLR(h2c_pkt, value)                           \
730         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 5, 1, value)
731 #define P2PPS_GET_DISCOVERY(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 6, 1)
732 #define P2PPS_SET_DISCOVERY(h2c_pkt, value)                                    \
733         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 6, 1, value)
734 #define P2PPS_SET_DISCOVERY_NO_CLR(h2c_pkt, value)                             \
735         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 6, 1, value)
736 #define P2PPS_GET_DISABLE_CLOSERF(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 7, 1)
737 #define P2PPS_SET_DISABLE_CLOSERF(h2c_pkt, value)                              \
738         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 7, 1, value)
739 #define P2PPS_SET_DISABLE_CLOSERF_NO_CLR(h2c_pkt, value)                       \
740         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 7, 1, value)
741 #define P2PPS_GET_P2P_PORT_ID(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 8, 8)
742 #define P2PPS_SET_P2P_PORT_ID(h2c_pkt, value)                                  \
743         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 8, 8, value)
744 #define P2PPS_SET_P2P_PORT_ID_NO_CLR(h2c_pkt, value)                           \
745         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 8, 8, value)
746 #define P2PPS_GET_P2P_GROUP(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 16, 8)
747 #define P2PPS_SET_P2P_GROUP(h2c_pkt, value)                                    \
748         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 16, 8, value)
749 #define P2PPS_SET_P2P_GROUP_NO_CLR(h2c_pkt, value)                             \
750         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 16, 8, value)
751 #define P2PPS_GET_P2P_MACID(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 24, 8)
752 #define P2PPS_SET_P2P_MACID(h2c_pkt, value)                                    \
753         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 24, 8, value)
754 #define P2PPS_SET_P2P_MACID_NO_CLR(h2c_pkt, value)                             \
755         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 24, 8, value)
756 #define P2PPS_GET_CTWINDOW_LENGTH(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X0C, 0, 8)
757 #define P2PPS_SET_CTWINDOW_LENGTH(h2c_pkt, value)                              \
758         SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 0, 8, value)
759 #define P2PPS_SET_CTWINDOW_LENGTH_NO_CLR(h2c_pkt, value)                       \
760         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 0, 8, value)
761 #define P2PPS_GET_NOA_DURATION_PARA(h2c_pkt)                                   \
762         GET_H2C_FIELD(h2c_pkt + 0X10, 0, 32)
763 #define P2PPS_SET_NOA_DURATION_PARA(h2c_pkt, value)                            \
764         SET_H2C_FIELD_CLR(h2c_pkt + 0X10, 0, 32, value)
765 #define P2PPS_SET_NOA_DURATION_PARA_NO_CLR(h2c_pkt, value)                     \
766         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X10, 0, 32, value)
767 #define P2PPS_GET_NOA_INTERVAL_PARA(h2c_pkt)                                   \
768         GET_H2C_FIELD(h2c_pkt + 0X14, 0, 32)
769 #define P2PPS_SET_NOA_INTERVAL_PARA(h2c_pkt, value)                            \
770         SET_H2C_FIELD_CLR(h2c_pkt + 0X14, 0, 32, value)
771 #define P2PPS_SET_NOA_INTERVAL_PARA_NO_CLR(h2c_pkt, value)                     \
772         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X14, 0, 32, value)
773 #define P2PPS_GET_NOA_START_TIME_PARA(h2c_pkt)                                 \
774         GET_H2C_FIELD(h2c_pkt + 0X18, 0, 32)
775 #define P2PPS_SET_NOA_START_TIME_PARA(h2c_pkt, value)                          \
776         SET_H2C_FIELD_CLR(h2c_pkt + 0X18, 0, 32, value)
777 #define P2PPS_SET_NOA_START_TIME_PARA_NO_CLR(h2c_pkt, value)                   \
778         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X18, 0, 32, value)
779 #define P2PPS_GET_NOA_COUNT_PARA(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X1C, 0, 32)
780 #define P2PPS_SET_NOA_COUNT_PARA(h2c_pkt, value)                               \
781         SET_H2C_FIELD_CLR(h2c_pkt + 0X1C, 0, 32, value)
782 #define P2PPS_SET_NOA_COUNT_PARA_NO_CLR(h2c_pkt, value)                        \
783         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X1C, 0, 32, value)
784 #define BT_COEX_GET_DATA_START(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 0, 8)
785 #define BT_COEX_SET_DATA_START(h2c_pkt, value)                                 \
786         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 8, value)
787 #define BT_COEX_SET_DATA_START_NO_CLR(h2c_pkt, value)                          \
788         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 8, value)
789 #define NAN_CTRL_GET_NAN_EN(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 0, 2)
790 #define NAN_CTRL_SET_NAN_EN(h2c_pkt, value)                                    \
791         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 2, value)
792 #define NAN_CTRL_SET_NAN_EN_NO_CLR(h2c_pkt, value)                             \
793         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 2, value)
794 #define NAN_CTRL_GET_WARMUP_TIMER_FLAG(h2c_pkt)                                \
795         GET_H2C_FIELD(h2c_pkt + 0X08, 2, 1)
796 #define NAN_CTRL_SET_WARMUP_TIMER_FLAG(h2c_pkt, value)                         \
797         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 2, 1, value)
798 #define NAN_CTRL_SET_WARMUP_TIMER_FLAG_NO_CLR(h2c_pkt, value)                  \
799         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 2, 1, value)
800 #define NAN_CTRL_GET_SUPPORT_BAND(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 8, 2)
801 #define NAN_CTRL_SET_SUPPORT_BAND(h2c_pkt, value)                              \
802         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 8, 2, value)
803 #define NAN_CTRL_SET_SUPPORT_BAND_NO_CLR(h2c_pkt, value)                       \
804         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 8, 2, value)
805 #define NAN_CTRL_GET_DISABLE_2G_DISC_BCN(h2c_pkt)                              \
806         GET_H2C_FIELD(h2c_pkt + 0X08, 10, 1)
807 #define NAN_CTRL_SET_DISABLE_2G_DISC_BCN(h2c_pkt, value)                       \
808         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 10, 1, value)
809 #define NAN_CTRL_SET_DISABLE_2G_DISC_BCN_NO_CLR(h2c_pkt, value)                \
810         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 10, 1, value)
811 #define NAN_CTRL_GET_DISABLE_5G_DISC_BCN(h2c_pkt)                              \
812         GET_H2C_FIELD(h2c_pkt + 0X08, 11, 1)
813 #define NAN_CTRL_SET_DISABLE_5G_DISC_BCN(h2c_pkt, value)                       \
814         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 11, 1, value)
815 #define NAN_CTRL_SET_DISABLE_5G_DISC_BCN_NO_CLR(h2c_pkt, value)                \
816         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 11, 1, value)
817 #define NAN_CTRL_GET_BCN_RSVD_PAGE_OFFSET(h2c_pkt)                             \
818         GET_H2C_FIELD(h2c_pkt + 0X08, 16, 8)
819 #define NAN_CTRL_SET_BCN_RSVD_PAGE_OFFSET(h2c_pkt, value)                      \
820         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 16, 8, value)
821 #define NAN_CTRL_SET_BCN_RSVD_PAGE_OFFSET_NO_CLR(h2c_pkt, value)               \
822         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 16, 8, value)
823 #define NAN_CTRL_GET_CHANNEL_2G(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X08, 24, 8)
824 #define NAN_CTRL_SET_CHANNEL_2G(h2c_pkt, value)                                \
825         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 24, 8, value)
826 #define NAN_CTRL_SET_CHANNEL_2G_NO_CLR(h2c_pkt, value)                         \
827         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 24, 8, value)
828 #define NAN_CTRL_GET_CHANNEL_5G(h2c_pkt) GET_H2C_FIELD(h2c_pkt + 0X0C, 0, 8)
829 #define NAN_CTRL_SET_CHANNEL_5G(h2c_pkt, value)                                \
830         SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 0, 8, value)
831 #define NAN_CTRL_SET_CHANNEL_5G_NO_CLR(h2c_pkt, value)                         \
832         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 0, 8, value)
833 #define NAN_CTRL_GET_MASTERPREFERENCE_VALUE(h2c_pkt)                           \
834         GET_H2C_FIELD(h2c_pkt + 0X0C, 8, 8)
835 #define NAN_CTRL_SET_MASTERPREFERENCE_VALUE(h2c_pkt, value)                    \
836         SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 8, 8, value)
837 #define NAN_CTRL_SET_MASTERPREFERENCE_VALUE_NO_CLR(h2c_pkt, value)             \
838         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 8, 8, value)
839 #define NAN_CTRL_GET_RANDOMFACTOR_VALUE(h2c_pkt)                               \
840         GET_H2C_FIELD(h2c_pkt + 0X0C, 16, 8)
841 #define NAN_CTRL_SET_RANDOMFACTOR_VALUE(h2c_pkt, value)                        \
842         SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 16, 8, value)
843 #define NAN_CTRL_SET_RANDOMFACTOR_VALUE_NO_CLR(h2c_pkt, value)                 \
844         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 16, 8, value)
845 #define NAN_CHANNEL_PLAN_0_GET_CHANNEL_NUMBER_0(h2c_pkt)                       \
846         GET_H2C_FIELD(h2c_pkt + 0X08, 0, 8)
847 #define NAN_CHANNEL_PLAN_0_SET_CHANNEL_NUMBER_0(h2c_pkt, value)                \
848         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 8, value)
849 #define NAN_CHANNEL_PLAN_0_SET_CHANNEL_NUMBER_0_NO_CLR(h2c_pkt, value)         \
850         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 8, value)
851 #define NAN_CHANNEL_PLAN_0_GET_UNPAUSE_MACID_0(h2c_pkt)                        \
852         GET_H2C_FIELD(h2c_pkt + 0X08, 8, 8)
853 #define NAN_CHANNEL_PLAN_0_SET_UNPAUSE_MACID_0(h2c_pkt, value)                 \
854         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 8, 8, value)
855 #define NAN_CHANNEL_PLAN_0_SET_UNPAUSE_MACID_0_NO_CLR(h2c_pkt, value)          \
856         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 8, 8, value)
857 #define NAN_CHANNEL_PLAN_0_GET_START_TIME_SLOT_0(h2c_pkt)                      \
858         GET_H2C_FIELD(h2c_pkt + 0X0C, 0, 16)
859 #define NAN_CHANNEL_PLAN_0_SET_START_TIME_SLOT_0(h2c_pkt, value)               \
860         SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 0, 16, value)
861 #define NAN_CHANNEL_PLAN_0_SET_START_TIME_SLOT_0_NO_CLR(h2c_pkt, value)        \
862         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 0, 16, value)
863 #define NAN_CHANNEL_PLAN_0_GET_DURATION_0(h2c_pkt)                             \
864         GET_H2C_FIELD(h2c_pkt + 0X0C, 16, 16)
865 #define NAN_CHANNEL_PLAN_0_SET_DURATION_0(h2c_pkt, value)                      \
866         SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 16, 16, value)
867 #define NAN_CHANNEL_PLAN_0_SET_DURATION_0_NO_CLR(h2c_pkt, value)               \
868         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 16, 16, value)
869 #define NAN_CHANNEL_PLAN_0_GET_CHANNEL_NUMBER_1(h2c_pkt)                       \
870         GET_H2C_FIELD(h2c_pkt + 0X10, 0, 8)
871 #define NAN_CHANNEL_PLAN_0_SET_CHANNEL_NUMBER_1(h2c_pkt, value)                \
872         SET_H2C_FIELD_CLR(h2c_pkt + 0X10, 0, 8, value)
873 #define NAN_CHANNEL_PLAN_0_SET_CHANNEL_NUMBER_1_NO_CLR(h2c_pkt, value)         \
874         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X10, 0, 8, value)
875 #define NAN_CHANNEL_PLAN_0_GET_UNPAUSE_MACID_1(h2c_pkt)                        \
876         GET_H2C_FIELD(h2c_pkt + 0X10, 8, 8)
877 #define NAN_CHANNEL_PLAN_0_SET_UNPAUSE_MACID_1(h2c_pkt, value)                 \
878         SET_H2C_FIELD_CLR(h2c_pkt + 0X10, 8, 8, value)
879 #define NAN_CHANNEL_PLAN_0_SET_UNPAUSE_MACID_1_NO_CLR(h2c_pkt, value)          \
880         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X10, 8, 8, value)
881 #define NAN_CHANNEL_PLAN_0_GET_START_TIME_SLOT_1(h2c_pkt)                      \
882         GET_H2C_FIELD(h2c_pkt + 0X14, 0, 16)
883 #define NAN_CHANNEL_PLAN_0_SET_START_TIME_SLOT_1(h2c_pkt, value)               \
884         SET_H2C_FIELD_CLR(h2c_pkt + 0X14, 0, 16, value)
885 #define NAN_CHANNEL_PLAN_0_SET_START_TIME_SLOT_1_NO_CLR(h2c_pkt, value)        \
886         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X14, 0, 16, value)
887 #define NAN_CHANNEL_PLAN_0_GET_DURATION_1(h2c_pkt)                             \
888         GET_H2C_FIELD(h2c_pkt + 0X14, 16, 16)
889 #define NAN_CHANNEL_PLAN_0_SET_DURATION_1(h2c_pkt, value)                      \
890         SET_H2C_FIELD_CLR(h2c_pkt + 0X14, 16, 16, value)
891 #define NAN_CHANNEL_PLAN_0_SET_DURATION_1_NO_CLR(h2c_pkt, value)               \
892         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X14, 16, 16, value)
893 #define NAN_CHANNEL_PLAN_0_GET_CHANNEL_NUMBER_2(h2c_pkt)                       \
894         GET_H2C_FIELD(h2c_pkt + 0X18, 0, 8)
895 #define NAN_CHANNEL_PLAN_0_SET_CHANNEL_NUMBER_2(h2c_pkt, value)                \
896         SET_H2C_FIELD_CLR(h2c_pkt + 0X18, 0, 8, value)
897 #define NAN_CHANNEL_PLAN_0_SET_CHANNEL_NUMBER_2_NO_CLR(h2c_pkt, value)         \
898         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X18, 0, 8, value)
899 #define NAN_CHANNEL_PLAN_0_GET_UNPAUSE_MACID_2(h2c_pkt)                        \
900         GET_H2C_FIELD(h2c_pkt + 0X18, 8, 8)
901 #define NAN_CHANNEL_PLAN_0_SET_UNPAUSE_MACID_2(h2c_pkt, value)                 \
902         SET_H2C_FIELD_CLR(h2c_pkt + 0X18, 8, 8, value)
903 #define NAN_CHANNEL_PLAN_0_SET_UNPAUSE_MACID_2_NO_CLR(h2c_pkt, value)          \
904         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X18, 8, 8, value)
905 #define NAN_CHANNEL_PLAN_0_GET_START_TIME_SLOT_2(h2c_pkt)                      \
906         GET_H2C_FIELD(h2c_pkt + 0X1C, 0, 16)
907 #define NAN_CHANNEL_PLAN_0_SET_START_TIME_SLOT_2(h2c_pkt, value)               \
908         SET_H2C_FIELD_CLR(h2c_pkt + 0X1C, 0, 16, value)
909 #define NAN_CHANNEL_PLAN_0_SET_START_TIME_SLOT_2_NO_CLR(h2c_pkt, value)        \
910         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X1C, 0, 16, value)
911 #define NAN_CHANNEL_PLAN_0_GET_DURATION_2(h2c_pkt)                             \
912         GET_H2C_FIELD(h2c_pkt + 0X1C, 16, 16)
913 #define NAN_CHANNEL_PLAN_0_SET_DURATION_2(h2c_pkt, value)                      \
914         SET_H2C_FIELD_CLR(h2c_pkt + 0X1C, 16, 16, value)
915 #define NAN_CHANNEL_PLAN_0_SET_DURATION_2_NO_CLR(h2c_pkt, value)               \
916         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X1C, 16, 16, value)
917 #define NAN_CHANNEL_PLAN_1_GET_CHANNEL_NUMBER_3(h2c_pkt)                       \
918         GET_H2C_FIELD(h2c_pkt + 0X08, 0, 8)
919 #define NAN_CHANNEL_PLAN_1_SET_CHANNEL_NUMBER_3(h2c_pkt, value)                \
920         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 0, 8, value)
921 #define NAN_CHANNEL_PLAN_1_SET_CHANNEL_NUMBER_3_NO_CLR(h2c_pkt, value)         \
922         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 0, 8, value)
923 #define NAN_CHANNEL_PLAN_1_GET_UNPAUSE_MACID_3(h2c_pkt)                        \
924         GET_H2C_FIELD(h2c_pkt + 0X08, 8, 8)
925 #define NAN_CHANNEL_PLAN_1_SET_UNPAUSE_MACID_3(h2c_pkt, value)                 \
926         SET_H2C_FIELD_CLR(h2c_pkt + 0X08, 8, 8, value)
927 #define NAN_CHANNEL_PLAN_1_SET_UNPAUSE_MACID_3_NO_CLR(h2c_pkt, value)          \
928         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X08, 8, 8, value)
929 #define NAN_CHANNEL_PLAN_1_GET_START_TIME_SLOT_3(h2c_pkt)                      \
930         GET_H2C_FIELD(h2c_pkt + 0X0C, 0, 16)
931 #define NAN_CHANNEL_PLAN_1_SET_START_TIME_SLOT_3(h2c_pkt, value)               \
932         SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 0, 16, value)
933 #define NAN_CHANNEL_PLAN_1_SET_START_TIME_SLOT_3_NO_CLR(h2c_pkt, value)        \
934         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 0, 16, value)
935 #define NAN_CHANNEL_PLAN_1_GET_DURATION_3(h2c_pkt)                             \
936         GET_H2C_FIELD(h2c_pkt + 0X0C, 16, 16)
937 #define NAN_CHANNEL_PLAN_1_SET_DURATION_3(h2c_pkt, value)                      \
938         SET_H2C_FIELD_CLR(h2c_pkt + 0X0C, 16, 16, value)
939 #define NAN_CHANNEL_PLAN_1_SET_DURATION_3_NO_CLR(h2c_pkt, value)               \
940         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X0C, 16, 16, value)
941 #define NAN_CHANNEL_PLAN_1_GET_CHANNEL_NUMBER_4(h2c_pkt)                       \
942         GET_H2C_FIELD(h2c_pkt + 0X10, 0, 8)
943 #define NAN_CHANNEL_PLAN_1_SET_CHANNEL_NUMBER_4(h2c_pkt, value)                \
944         SET_H2C_FIELD_CLR(h2c_pkt + 0X10, 0, 8, value)
945 #define NAN_CHANNEL_PLAN_1_SET_CHANNEL_NUMBER_4_NO_CLR(h2c_pkt, value)         \
946         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X10, 0, 8, value)
947 #define NAN_CHANNEL_PLAN_1_GET_UNPAUSE_MACID_4(h2c_pkt)                        \
948         GET_H2C_FIELD(h2c_pkt + 0X10, 8, 8)
949 #define NAN_CHANNEL_PLAN_1_SET_UNPAUSE_MACID_4(h2c_pkt, value)                 \
950         SET_H2C_FIELD_CLR(h2c_pkt + 0X10, 8, 8, value)
951 #define NAN_CHANNEL_PLAN_1_SET_UNPAUSE_MACID_4_NO_CLR(h2c_pkt, value)          \
952         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X10, 8, 8, value)
953 #define NAN_CHANNEL_PLAN_1_GET_START_TIME_SLOT_4(h2c_pkt)                      \
954         GET_H2C_FIELD(h2c_pkt + 0X14, 0, 16)
955 #define NAN_CHANNEL_PLAN_1_SET_START_TIME_SLOT_4(h2c_pkt, value)               \
956         SET_H2C_FIELD_CLR(h2c_pkt + 0X14, 0, 16, value)
957 #define NAN_CHANNEL_PLAN_1_SET_START_TIME_SLOT_4_NO_CLR(h2c_pkt, value)        \
958         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X14, 0, 16, value)
959 #define NAN_CHANNEL_PLAN_1_GET_DURATION_4(h2c_pkt)                             \
960         GET_H2C_FIELD(h2c_pkt + 0X14, 16, 16)
961 #define NAN_CHANNEL_PLAN_1_SET_DURATION_4(h2c_pkt, value)                      \
962         SET_H2C_FIELD_CLR(h2c_pkt + 0X14, 16, 16, value)
963 #define NAN_CHANNEL_PLAN_1_SET_DURATION_4_NO_CLR(h2c_pkt, value)               \
964         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X14, 16, 16, value)
965 #define NAN_CHANNEL_PLAN_1_GET_CHANNEL_NUMBER_5(h2c_pkt)                       \
966         GET_H2C_FIELD(h2c_pkt + 0X18, 0, 8)
967 #define NAN_CHANNEL_PLAN_1_SET_CHANNEL_NUMBER_5(h2c_pkt, value)                \
968         SET_H2C_FIELD_CLR(h2c_pkt + 0X18, 0, 8, value)
969 #define NAN_CHANNEL_PLAN_1_SET_CHANNEL_NUMBER_5_NO_CLR(h2c_pkt, value)         \
970         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X18, 0, 8, value)
971 #define NAN_CHANNEL_PLAN_1_GET_UNPAUSE_MACID_5(h2c_pkt)                        \
972         GET_H2C_FIELD(h2c_pkt + 0X18, 8, 8)
973 #define NAN_CHANNEL_PLAN_1_SET_UNPAUSE_MACID_5(h2c_pkt, value)                 \
974         SET_H2C_FIELD_CLR(h2c_pkt + 0X18, 8, 8, value)
975 #define NAN_CHANNEL_PLAN_1_SET_UNPAUSE_MACID_5_NO_CLR(h2c_pkt, value)          \
976         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X18, 8, 8, value)
977 #define NAN_CHANNEL_PLAN_1_GET_START_TIME_SLOT_5(h2c_pkt)                      \
978         GET_H2C_FIELD(h2c_pkt + 0X1C, 0, 16)
979 #define NAN_CHANNEL_PLAN_1_SET_START_TIME_SLOT_5(h2c_pkt, value)               \
980         SET_H2C_FIELD_CLR(h2c_pkt + 0X1C, 0, 16, value)
981 #define NAN_CHANNEL_PLAN_1_SET_START_TIME_SLOT_5_NO_CLR(h2c_pkt, value)        \
982         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X1C, 0, 16, value)
983 #define NAN_CHANNEL_PLAN_1_GET_DURATION_5(h2c_pkt)                             \
984         GET_H2C_FIELD(h2c_pkt + 0X1C, 16, 16)
985 #define NAN_CHANNEL_PLAN_1_SET_DURATION_5(h2c_pkt, value)                      \
986         SET_H2C_FIELD_CLR(h2c_pkt + 0X1C, 16, 16, value)
987 #define NAN_CHANNEL_PLAN_1_SET_DURATION_5_NO_CLR(h2c_pkt, value)               \
988         SET_H2C_FIELD_NO_CLR(h2c_pkt + 0X1C, 16, 16, value)
989 #endif