• 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_NIC_H_
17 #define _HAL_FWOFFLOADH2CFORMAT_H2C_C2H_NIC_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)                                   \
109 	LE_BITS_TO_4BYTE(h2c_pkt + 0X00, 0, 7)
110 #define H2C_CMD_HEADER_SET_CATEGORY(h2c_pkt, value)                            \
111 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X00, 0, 7, value)
112 #define H2C_CMD_HEADER_GET_ACK(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X00, 7, 1)
113 #define H2C_CMD_HEADER_SET_ACK(h2c_pkt, value)                                 \
114 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X00, 7, 1, value)
115 #define H2C_CMD_HEADER_GET_TOTAL_LEN(h2c_pkt)                                  \
116 	LE_BITS_TO_4BYTE(h2c_pkt + 0X04, 0, 16)
117 #define H2C_CMD_HEADER_SET_TOTAL_LEN(h2c_pkt, value)                           \
118 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X04, 0, 16, value)
119 #define H2C_CMD_HEADER_GET_SEQ_NUM(h2c_pkt)                                    \
120 	LE_BITS_TO_4BYTE(h2c_pkt + 0X04, 16, 16)
121 #define H2C_CMD_HEADER_SET_SEQ_NUM(h2c_pkt, value)                             \
122 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X04, 16, 16, value)
123 #define FW_OFFLOAD_H2C_GET_CATEGORY(h2c_pkt)                                   \
124 	LE_BITS_TO_4BYTE(h2c_pkt + 0X00, 0, 7)
125 #define FW_OFFLOAD_H2C_SET_CATEGORY(h2c_pkt, value)                            \
126 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X00, 0, 7, value)
127 #define FW_OFFLOAD_H2C_GET_ACK(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X00, 7, 1)
128 #define FW_OFFLOAD_H2C_SET_ACK(h2c_pkt, value)                                 \
129 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X00, 7, 1, value)
130 #define FW_OFFLOAD_H2C_GET_CMD_ID(h2c_pkt)                                     \
131 	LE_BITS_TO_4BYTE(h2c_pkt + 0X00, 8, 8)
132 #define FW_OFFLOAD_H2C_SET_CMD_ID(h2c_pkt, value)                              \
133 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X00, 8, 8, value)
134 #define FW_OFFLOAD_H2C_GET_SUB_CMD_ID(h2c_pkt)                                 \
135 	LE_BITS_TO_4BYTE(h2c_pkt + 0X00, 16, 16)
136 #define FW_OFFLOAD_H2C_SET_SUB_CMD_ID(h2c_pkt, value)                          \
137 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X00, 16, 16, value)
138 #define FW_OFFLOAD_H2C_GET_TOTAL_LEN(h2c_pkt)                                  \
139 	LE_BITS_TO_4BYTE(h2c_pkt + 0X04, 0, 16)
140 #define FW_OFFLOAD_H2C_SET_TOTAL_LEN(h2c_pkt, value)                           \
141 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X04, 0, 16, value)
142 #define FW_OFFLOAD_H2C_GET_SEQ_NUM(h2c_pkt)                                    \
143 	LE_BITS_TO_4BYTE(h2c_pkt + 0X04, 16, 16)
144 #define FW_OFFLOAD_H2C_SET_SEQ_NUM(h2c_pkt, value)                             \
145 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X04, 16, 16, value)
146 #define FW_ACCESS_TEST_GET_ACCESS_TXFF(h2c_pkt)                                \
147 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 1)
148 #define FW_ACCESS_TEST_SET_ACCESS_TXFF(h2c_pkt, value)                         \
149 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 1, value)
150 #define FW_ACCESS_TEST_GET_ACCESS_RXFF(h2c_pkt)                                \
151 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 1, 1)
152 #define FW_ACCESS_TEST_SET_ACCESS_RXFF(h2c_pkt, value)                         \
153 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 1, 1, value)
154 #define FW_ACCESS_TEST_GET_ACCESS_FWFF(h2c_pkt)                                \
155 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 2, 1)
156 #define FW_ACCESS_TEST_SET_ACCESS_FWFF(h2c_pkt, value)                         \
157 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 2, 1, value)
158 #define FW_ACCESS_TEST_GET_ACCESS_PHYFF(h2c_pkt)                               \
159 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 3, 1)
160 #define FW_ACCESS_TEST_SET_ACCESS_PHYFF(h2c_pkt, value)                        \
161 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 3, 1, value)
162 #define FW_ACCESS_TEST_GET_ACCESS_RPT_BUF(h2c_pkt)                             \
163 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 4, 1)
164 #define FW_ACCESS_TEST_SET_ACCESS_RPT_BUF(h2c_pkt, value)                      \
165 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 4, 1, value)
166 #define FW_ACCESS_TEST_GET_ACCESS_CAM(h2c_pkt)                                 \
167 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 5, 1)
168 #define FW_ACCESS_TEST_SET_ACCESS_CAM(h2c_pkt, value)                          \
169 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 5, 1, value)
170 #define FW_ACCESS_TEST_GET_ACCESS_WOW_CAM(h2c_pkt)                             \
171 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 6, 1)
172 #define FW_ACCESS_TEST_SET_ACCESS_WOW_CAM(h2c_pkt, value)                      \
173 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 6, 1, value)
174 #define FW_ACCESS_TEST_GET_ACCESS_RX_CAM(h2c_pkt)                              \
175 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 7, 1)
176 #define FW_ACCESS_TEST_SET_ACCESS_RX_CAM(h2c_pkt, value)                       \
177 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 7, 1, value)
178 #define FW_ACCESS_TEST_GET_ACCESS_BA_CAM(h2c_pkt)                              \
179 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 8, 1)
180 #define FW_ACCESS_TEST_SET_ACCESS_BA_CAM(h2c_pkt, value)                       \
181 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 8, 1, value)
182 #define FW_ACCESS_TEST_GET_ACCESS_MBSSID_CAM(h2c_pkt)                          \
183 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 9, 1)
184 #define FW_ACCESS_TEST_SET_ACCESS_MBSSID_CAM(h2c_pkt, value)                   \
185 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 9, 1, value)
186 #define FW_ACCESS_TEST_GET_ACCESS_PAGE0(h2c_pkt)                               \
187 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 16, 1)
188 #define FW_ACCESS_TEST_SET_ACCESS_PAGE0(h2c_pkt, value)                        \
189 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 16, 1, value)
190 #define FW_ACCESS_TEST_GET_ACCESS_PAGE1(h2c_pkt)                               \
191 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 17, 1)
192 #define FW_ACCESS_TEST_SET_ACCESS_PAGE1(h2c_pkt, value)                        \
193 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 17, 1, value)
194 #define FW_ACCESS_TEST_GET_ACCESS_PAGE2(h2c_pkt)                               \
195 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 18, 1)
196 #define FW_ACCESS_TEST_SET_ACCESS_PAGE2(h2c_pkt, value)                        \
197 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 18, 1, value)
198 #define FW_ACCESS_TEST_GET_ACCESS_PAGE3(h2c_pkt)                               \
199 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 19, 1)
200 #define FW_ACCESS_TEST_SET_ACCESS_PAGE3(h2c_pkt, value)                        \
201 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 19, 1, value)
202 #define FW_ACCESS_TEST_GET_ACCESS_PAGE4(h2c_pkt)                               \
203 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 20, 1)
204 #define FW_ACCESS_TEST_SET_ACCESS_PAGE4(h2c_pkt, value)                        \
205 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 20, 1, value)
206 #define FW_ACCESS_TEST_GET_ACCESS_PAGE5(h2c_pkt)                               \
207 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 21, 1)
208 #define FW_ACCESS_TEST_SET_ACCESS_PAGE5(h2c_pkt, value)                        \
209 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 21, 1, value)
210 #define FW_ACCESS_TEST_GET_ACCESS_PAGE6(h2c_pkt)                               \
211 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 22, 1)
212 #define FW_ACCESS_TEST_SET_ACCESS_PAGE6(h2c_pkt, value)                        \
213 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 22, 1, value)
214 #define FW_ACCESS_TEST_GET_ACCESS_PAGE7(h2c_pkt)                               \
215 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 23, 1)
216 #define FW_ACCESS_TEST_SET_ACCESS_PAGE7(h2c_pkt, value)                        \
217 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 23, 1, value)
218 #define CH_SWITCH_GET_START(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 1)
219 #define CH_SWITCH_SET_START(h2c_pkt, value)                                    \
220 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 1, value)
221 #define CH_SWITCH_GET_DEST_CH_EN(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 1, 1)
222 #define CH_SWITCH_SET_DEST_CH_EN(h2c_pkt, value)                               \
223 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 1, 1, value)
224 #define CH_SWITCH_GET_ABSOLUTE_TIME(h2c_pkt)                                   \
225 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 2, 1)
226 #define CH_SWITCH_SET_ABSOLUTE_TIME(h2c_pkt, value)                            \
227 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 2, 1, value)
228 #define CH_SWITCH_GET_PERIODIC_OPT(h2c_pkt)                                    \
229 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 3, 2)
230 #define CH_SWITCH_SET_PERIODIC_OPT(h2c_pkt, value)                             \
231 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 3, 2, value)
232 #define CH_SWITCH_GET_SCAN_MODE(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 5, 1)
233 #define CH_SWITCH_SET_SCAN_MODE(h2c_pkt, value)                                \
234 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 5, 1, value)
235 #define CH_SWITCH_GET_INFO_LOC(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 8, 8)
236 #define CH_SWITCH_SET_INFO_LOC(h2c_pkt, value)                                 \
237 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 8, 8, value)
238 #define CH_SWITCH_GET_CH_NUM(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 16, 8)
239 #define CH_SWITCH_SET_CH_NUM(h2c_pkt, value)                                   \
240 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 16, 8, value)
241 #define CH_SWITCH_GET_PRI_CH_IDX(h2c_pkt)                                      \
242 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 24, 4)
243 #define CH_SWITCH_SET_PRI_CH_IDX(h2c_pkt, value)                               \
244 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 24, 4, value)
245 #define CH_SWITCH_GET_DEST_BW(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 28, 4)
246 #define CH_SWITCH_SET_DEST_BW(h2c_pkt, value)                                  \
247 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 28, 4, value)
248 #define CH_SWITCH_GET_DEST_CH(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 0, 8)
249 #define CH_SWITCH_SET_DEST_CH(h2c_pkt, value)                                  \
250 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 0, 8, value)
251 #define CH_SWITCH_GET_NORMAL_PERIOD(h2c_pkt)                                   \
252 	LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 8, 6)
253 #define CH_SWITCH_SET_NORMAL_PERIOD(h2c_pkt, value)                            \
254 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 8, 6, value)
255 #define CH_SWITCH_GET_NORMAL_PERIOD_SEL(h2c_pkt)                               \
256 	LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 14, 2)
257 #define CH_SWITCH_SET_NORMAL_PERIOD_SEL(h2c_pkt, value)                        \
258 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 14, 2, value)
259 #define CH_SWITCH_GET_SLOW_PERIOD(h2c_pkt)                                     \
260 	LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 16, 6)
261 #define CH_SWITCH_SET_SLOW_PERIOD(h2c_pkt, value)                              \
262 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 16, 6, value)
263 #define CH_SWITCH_GET_SLOW_PERIOD_SEL(h2c_pkt)                                 \
264 	LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 22, 2)
265 #define CH_SWITCH_SET_SLOW_PERIOD_SEL(h2c_pkt, value)                          \
266 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 22, 2, value)
267 #define CH_SWITCH_GET_NORMAL_CYCLE(h2c_pkt)                                    \
268 	LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 24, 8)
269 #define CH_SWITCH_SET_NORMAL_CYCLE(h2c_pkt, value)                             \
270 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 24, 8, value)
271 #define CH_SWITCH_GET_TSF_HIGH(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X10, 0, 32)
272 #define CH_SWITCH_SET_TSF_HIGH(h2c_pkt, value)                                 \
273 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X10, 0, 32, value)
274 #define CH_SWITCH_GET_TSF_LOW(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X14, 0, 32)
275 #define CH_SWITCH_SET_TSF_LOW(h2c_pkt, value)                                  \
276 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X14, 0, 32, value)
277 #define CH_SWITCH_GET_INFO_SIZE(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X18, 0, 16)
278 #define CH_SWITCH_SET_INFO_SIZE(h2c_pkt, value)                                \
279 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X18, 0, 16, value)
280 #define UPDATE_BEACON_PARSING_INFO_GET_FUNC_EN(h2c_pkt)                        \
281 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 1)
282 #define UPDATE_BEACON_PARSING_INFO_SET_FUNC_EN(h2c_pkt, value)                 \
283 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 1, value)
284 #define UPDATE_BEACON_PARSING_INFO_GET_SIZE_TH(h2c_pkt)                        \
285 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 8, 4)
286 #define UPDATE_BEACON_PARSING_INFO_SET_SIZE_TH(h2c_pkt, value)                 \
287 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 8, 4, value)
288 #define UPDATE_BEACON_PARSING_INFO_GET_TIMEOUT(h2c_pkt)                        \
289 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 12, 4)
290 #define UPDATE_BEACON_PARSING_INFO_SET_TIMEOUT(h2c_pkt, value)                 \
291 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 12, 4, value)
292 #define UPDATE_BEACON_PARSING_INFO_GET_IE_ID_BMP_0(h2c_pkt)                    \
293 	LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 0, 32)
294 #define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_0(h2c_pkt, value)             \
295 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 0, 32, value)
296 #define UPDATE_BEACON_PARSING_INFO_GET_IE_ID_BMP_1(h2c_pkt)                    \
297 	LE_BITS_TO_4BYTE(h2c_pkt + 0X10, 0, 32)
298 #define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_1(h2c_pkt, value)             \
299 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X10, 0, 32, value)
300 #define UPDATE_BEACON_PARSING_INFO_GET_IE_ID_BMP_2(h2c_pkt)                    \
301 	LE_BITS_TO_4BYTE(h2c_pkt + 0X14, 0, 32)
302 #define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_2(h2c_pkt, value)             \
303 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X14, 0, 32, value)
304 #define UPDATE_BEACON_PARSING_INFO_GET_IE_ID_BMP_3(h2c_pkt)                    \
305 	LE_BITS_TO_4BYTE(h2c_pkt + 0X18, 0, 32)
306 #define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_3(h2c_pkt, value)             \
307 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X18, 0, 32, value)
308 #define UPDATE_BEACON_PARSING_INFO_GET_IE_ID_BMP_4(h2c_pkt)                    \
309 	LE_BITS_TO_4BYTE(h2c_pkt + 0X1C, 0, 32)
310 #define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_4(h2c_pkt, value)             \
311 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X1C, 0, 32, value)
312 #define CFG_PARAM_GET_NUM(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 16)
313 #define CFG_PARAM_SET_NUM(h2c_pkt, value)                                      \
314 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 16, value)
315 #define CFG_PARAM_GET_INIT_CASE(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 16, 1)
316 #define CFG_PARAM_SET_INIT_CASE(h2c_pkt, value)                                \
317 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 16, 1, value)
318 #define CFG_PARAM_GET_LOC(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 24, 8)
319 #define CFG_PARAM_SET_LOC(h2c_pkt, value)                                      \
320 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 24, 8, value)
321 #define UPDATE_DATAPACK_GET_SIZE(h2c_pkt)                                      \
322 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 16)
323 #define UPDATE_DATAPACK_SET_SIZE(h2c_pkt, value)                               \
324 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 16, value)
325 #define UPDATE_DATAPACK_GET_DATAPACK_ID(h2c_pkt)                               \
326 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 16, 8)
327 #define UPDATE_DATAPACK_SET_DATAPACK_ID(h2c_pkt, value)                        \
328 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 16, 8, value)
329 #define UPDATE_DATAPACK_GET_DATAPACK_LOC(h2c_pkt)                              \
330 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 24, 8)
331 #define UPDATE_DATAPACK_SET_DATAPACK_LOC(h2c_pkt, value)                       \
332 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 24, 8, value)
333 #define UPDATE_DATAPACK_GET_DATAPACK_SEGMENT(h2c_pkt)                          \
334 	LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 0, 8)
335 #define UPDATE_DATAPACK_SET_DATAPACK_SEGMENT(h2c_pkt, value)                   \
336 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 0, 8, value)
337 #define UPDATE_DATAPACK_GET_END_SEGMENT(h2c_pkt)                               \
338 	LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 8, 1)
339 #define UPDATE_DATAPACK_SET_END_SEGMENT(h2c_pkt, value)                        \
340 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 8, 1, value)
341 #define RUN_DATAPACK_GET_DATAPACK_ID(h2c_pkt)                                  \
342 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 8)
343 #define RUN_DATAPACK_SET_DATAPACK_ID(h2c_pkt, value)                           \
344 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 8, value)
345 #define DOWNLOAD_FLASH_GET_SPI_CMD(h2c_pkt)                                    \
346 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 8)
347 #define DOWNLOAD_FLASH_SET_SPI_CMD(h2c_pkt, value)                             \
348 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 8, value)
349 #define DOWNLOAD_FLASH_GET_LOCATION(h2c_pkt)                                   \
350 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 8, 16)
351 #define DOWNLOAD_FLASH_SET_LOCATION(h2c_pkt, value)                            \
352 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 8, 16, value)
353 #define DOWNLOAD_FLASH_GET_SIZE(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 0, 32)
354 #define DOWNLOAD_FLASH_SET_SIZE(h2c_pkt, value)                                \
355 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 0, 32, value)
356 #define DOWNLOAD_FLASH_GET_START_ADDR(h2c_pkt)                                 \
357 	LE_BITS_TO_4BYTE(h2c_pkt + 0X10, 0, 32)
358 #define DOWNLOAD_FLASH_SET_START_ADDR(h2c_pkt, value)                          \
359 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X10, 0, 32, value)
360 #define UPDATE_PKT_GET_SIZE(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 16)
361 #define UPDATE_PKT_SET_SIZE(h2c_pkt, value)                                    \
362 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 16, value)
363 #define UPDATE_PKT_GET_ID(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 16, 8)
364 #define UPDATE_PKT_SET_ID(h2c_pkt, value)                                      \
365 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 16, 8, value)
366 #define UPDATE_PKT_GET_LOC(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 24, 8)
367 #define UPDATE_PKT_SET_LOC(h2c_pkt, value)                                     \
368 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 24, 8, value)
369 #define GENERAL_INFO_GET_FW_TX_BOUNDARY(h2c_pkt)                               \
370 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 16, 8)
371 #define GENERAL_INFO_SET_FW_TX_BOUNDARY(h2c_pkt, value)                        \
372 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 16, 8, value)
373 #define IQK_GET_CLEAR(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 1)
374 #define IQK_SET_CLEAR(h2c_pkt, value)                                          \
375 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 1, value)
376 #define IQK_GET_SEGMENT_IQK(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 1, 1)
377 #define IQK_SET_SEGMENT_IQK(h2c_pkt, value)                                    \
378 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 1, 1, value)
379 #define PWR_TRK_GET_ENABLE_A(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 1)
380 #define PWR_TRK_SET_ENABLE_A(h2c_pkt, value)                                   \
381 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 1, value)
382 #define PWR_TRK_GET_ENABLE_B(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 1, 1)
383 #define PWR_TRK_SET_ENABLE_B(h2c_pkt, value)                                   \
384 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 1, 1, value)
385 #define PWR_TRK_GET_ENABLE_C(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 2, 1)
386 #define PWR_TRK_SET_ENABLE_C(h2c_pkt, value)                                   \
387 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 2, 1, value)
388 #define PWR_TRK_GET_ENABLE_D(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 3, 1)
389 #define PWR_TRK_SET_ENABLE_D(h2c_pkt, value)                                   \
390 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 3, 1, value)
391 #define PWR_TRK_GET_TYPE(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 4, 3)
392 #define PWR_TRK_SET_TYPE(h2c_pkt, value)                                       \
393 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 4, 3, value)
394 #define PWR_TRK_GET_BBSWING_INDEX(h2c_pkt)                                     \
395 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 8, 8)
396 #define PWR_TRK_SET_BBSWING_INDEX(h2c_pkt, value)                              \
397 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 8, 8, value)
398 #define PWR_TRK_GET_TX_PWR_INDEX_A(h2c_pkt)                                    \
399 	LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 0, 8)
400 #define PWR_TRK_SET_TX_PWR_INDEX_A(h2c_pkt, value)                             \
401 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 0, 8, value)
402 #define PWR_TRK_GET_OFFSET_VALUE_A(h2c_pkt)                                    \
403 	LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 8, 8)
404 #define PWR_TRK_SET_OFFSET_VALUE_A(h2c_pkt, value)                             \
405 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 8, 8, value)
406 #define PWR_TRK_GET_TSSI_VALUE_A(h2c_pkt)                                      \
407 	LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 16, 8)
408 #define PWR_TRK_SET_TSSI_VALUE_A(h2c_pkt, value)                               \
409 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 16, 8, value)
410 #define PWR_TRK_GET_TX_PWR_INDEX_B(h2c_pkt)                                    \
411 	LE_BITS_TO_4BYTE(h2c_pkt + 0X10, 0, 8)
412 #define PWR_TRK_SET_TX_PWR_INDEX_B(h2c_pkt, value)                             \
413 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X10, 0, 8, value)
414 #define PWR_TRK_GET_OFFSET_VALUE_B(h2c_pkt)                                    \
415 	LE_BITS_TO_4BYTE(h2c_pkt + 0X10, 8, 8)
416 #define PWR_TRK_SET_OFFSET_VALUE_B(h2c_pkt, value)                             \
417 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X10, 8, 8, value)
418 #define PWR_TRK_GET_TSSI_VALUE_B(h2c_pkt)                                      \
419 	LE_BITS_TO_4BYTE(h2c_pkt + 0X10, 16, 8)
420 #define PWR_TRK_SET_TSSI_VALUE_B(h2c_pkt, value)                               \
421 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X10, 16, 8, value)
422 #define PWR_TRK_GET_TX_PWR_INDEX_C(h2c_pkt)                                    \
423 	LE_BITS_TO_4BYTE(h2c_pkt + 0X14, 0, 8)
424 #define PWR_TRK_SET_TX_PWR_INDEX_C(h2c_pkt, value)                             \
425 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X14, 0, 8, value)
426 #define PWR_TRK_GET_OFFSET_VALUE_C(h2c_pkt)                                    \
427 	LE_BITS_TO_4BYTE(h2c_pkt + 0X14, 8, 8)
428 #define PWR_TRK_SET_OFFSET_VALUE_C(h2c_pkt, value)                             \
429 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X14, 8, 8, value)
430 #define PWR_TRK_GET_TSSI_VALUE_C(h2c_pkt)                                      \
431 	LE_BITS_TO_4BYTE(h2c_pkt + 0X14, 16, 8)
432 #define PWR_TRK_SET_TSSI_VALUE_C(h2c_pkt, value)                               \
433 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X14, 16, 8, value)
434 #define PWR_TRK_GET_TX_PWR_INDEX_D(h2c_pkt)                                    \
435 	LE_BITS_TO_4BYTE(h2c_pkt + 0X18, 0, 8)
436 #define PWR_TRK_SET_TX_PWR_INDEX_D(h2c_pkt, value)                             \
437 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X18, 0, 8, value)
438 #define PWR_TRK_GET_OFFSET_VALUE_D(h2c_pkt)                                    \
439 	LE_BITS_TO_4BYTE(h2c_pkt + 0X18, 8, 8)
440 #define PWR_TRK_SET_OFFSET_VALUE_D(h2c_pkt, value)                             \
441 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X18, 8, 8, value)
442 #define PWR_TRK_GET_TSSI_VALUE_D(h2c_pkt)                                      \
443 	LE_BITS_TO_4BYTE(h2c_pkt + 0X18, 16, 8)
444 #define PWR_TRK_SET_TSSI_VALUE_D(h2c_pkt, value)                               \
445 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X18, 16, 8, value)
446 #define PSD_GET_START_PSD(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 16)
447 #define PSD_SET_START_PSD(h2c_pkt, value)                                      \
448 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 16, value)
449 #define PSD_GET_END_PSD(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 16, 16)
450 #define PSD_SET_END_PSD(h2c_pkt, value)                                        \
451 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 16, 16, value)
452 #define PHYDM_INFO_GET_REF_TYPE(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 8)
453 #define PHYDM_INFO_SET_REF_TYPE(h2c_pkt, value)                                \
454 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 8, value)
455 #define PHYDM_INFO_GET_RF_TYPE(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 8, 8)
456 #define PHYDM_INFO_SET_RF_TYPE(h2c_pkt, value)                                 \
457 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 8, 8, value)
458 #define PHYDM_INFO_GET_CUT_VER(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 16, 8)
459 #define PHYDM_INFO_SET_CUT_VER(h2c_pkt, value)                                 \
460 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 16, 8, value)
461 #define PHYDM_INFO_GET_RX_ANT_STATUS(h2c_pkt)                                  \
462 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 24, 4)
463 #define PHYDM_INFO_SET_RX_ANT_STATUS(h2c_pkt, value)                           \
464 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 24, 4, value)
465 #define PHYDM_INFO_GET_TX_ANT_STATUS(h2c_pkt)                                  \
466 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 28, 4)
467 #define PHYDM_INFO_SET_TX_ANT_STATUS(h2c_pkt, value)                           \
468 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 28, 4, value)
469 #define PHYDM_INFO_GET_EXT_PA(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0XC, 0, 8)
470 #define PHYDM_INFO_SET_EXT_PA(h2c_pkt, value)                                  \
471 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0XC, 0, 8, value)
472 #define PHYDM_INFO_GET_PACKAGE_TYPE(h2c_pkt)                                   \
473 	LE_BITS_TO_4BYTE(h2c_pkt + 0XC, 8, 8)
474 #define PHYDM_INFO_SET_PACKAGE_TYPE(h2c_pkt, value)                            \
475 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0XC, 8, 8, value)
476 #define PHYDM_INFO_GET_MP_MODE(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0XC, 16, 1)
477 #define PHYDM_INFO_SET_MP_MODE(h2c_pkt, value)                                 \
478 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0XC, 16, 1, value)
479 #define FW_SNDING_GET_SU0(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 1)
480 #define FW_SNDING_SET_SU0(h2c_pkt, value)                                      \
481 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 1, value)
482 #define FW_SNDING_GET_SU1(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 1, 1)
483 #define FW_SNDING_SET_SU1(h2c_pkt, value)                                      \
484 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 1, 1, value)
485 #define FW_SNDING_GET_MU(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 2, 1)
486 #define FW_SNDING_SET_MU(h2c_pkt, value)                                       \
487 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 2, 1, value)
488 #define FW_SNDING_GET_PERIOD(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 8, 8)
489 #define FW_SNDING_SET_PERIOD(h2c_pkt, value)                                   \
490 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 8, 8, value)
491 #define FW_SNDING_GET_NDPA0_HEAD_PG(h2c_pkt)                                   \
492 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 16, 8)
493 #define FW_SNDING_SET_NDPA0_HEAD_PG(h2c_pkt, value)                            \
494 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 16, 8, value)
495 #define FW_SNDING_GET_NDPA1_HEAD_PG(h2c_pkt)                                   \
496 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 24, 8)
497 #define FW_SNDING_SET_NDPA1_HEAD_PG(h2c_pkt, value)                            \
498 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 24, 8, value)
499 #define FW_SNDING_GET_MU_NDPA_HEAD_PG(h2c_pkt)                                 \
500 	LE_BITS_TO_4BYTE(h2c_pkt + 0XC, 0, 8)
501 #define FW_SNDING_SET_MU_NDPA_HEAD_PG(h2c_pkt, value)                          \
502 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0XC, 0, 8, value)
503 #define FW_SNDING_GET_RPT0_HEAD_PG(h2c_pkt)                                    \
504 	LE_BITS_TO_4BYTE(h2c_pkt + 0XC, 8, 8)
505 #define FW_SNDING_SET_RPT0_HEAD_PG(h2c_pkt, value)                             \
506 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0XC, 8, 8, value)
507 #define FW_SNDING_GET_RPT1_HEAD_PG(h2c_pkt)                                    \
508 	LE_BITS_TO_4BYTE(h2c_pkt + 0XC, 16, 8)
509 #define FW_SNDING_SET_RPT1_HEAD_PG(h2c_pkt, value)                             \
510 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0XC, 16, 8, value)
511 #define FW_SNDING_GET_RPT2_HEAD_PG(h2c_pkt)                                    \
512 	LE_BITS_TO_4BYTE(h2c_pkt + 0XC, 24, 8)
513 #define FW_SNDING_SET_RPT2_HEAD_PG(h2c_pkt, value)                             \
514 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0XC, 24, 8, value)
515 #define FW_FWCTRL_GET_SEQ_NUM(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 8)
516 #define FW_FWCTRL_SET_SEQ_NUM(h2c_pkt, value)                                  \
517 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 8, value)
518 #define FW_FWCTRL_GET_MORE_CONTENT(h2c_pkt)                                    \
519 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 8, 1)
520 #define FW_FWCTRL_SET_MORE_CONTENT(h2c_pkt, value)                             \
521 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 8, 1, value)
522 #define FW_FWCTRL_GET_CONTENT_IDX(h2c_pkt)                                     \
523 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 9, 7)
524 #define FW_FWCTRL_SET_CONTENT_IDX(h2c_pkt, value)                              \
525 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 9, 7, value)
526 #define FW_FWCTRL_GET_CLASS_ID(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 16, 8)
527 #define FW_FWCTRL_SET_CLASS_ID(h2c_pkt, value)                                 \
528 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 16, 8, value)
529 #define FW_FWCTRL_GET_LENGTH(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 24, 8)
530 #define FW_FWCTRL_SET_LENGTH(h2c_pkt, value)                                   \
531 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 24, 8, value)
532 #define FW_FWCTRL_GET_CONTENT(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 0, 32)
533 #define FW_FWCTRL_SET_CONTENT(h2c_pkt, value)                                  \
534 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 0, 32, value)
535 #define SEND_SCAN_PKT_GET_SIZE(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 16)
536 #define SEND_SCAN_PKT_SET_SIZE(h2c_pkt, value)                                 \
537 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 16, value)
538 #define SEND_SCAN_PKT_GET_INDEX(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 16, 8)
539 #define SEND_SCAN_PKT_SET_INDEX(h2c_pkt, value)                                \
540 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 16, 8, value)
541 #define SEND_SCAN_PKT_GET_LOC(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 24, 8)
542 #define SEND_SCAN_PKT_SET_LOC(h2c_pkt, value)                                  \
543 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 24, 8, value)
544 #define BCN_OFFLOAD_GET_REQUEST_VERSION(h2c_pkt)                               \
545 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 1)
546 #define BCN_OFFLOAD_SET_REQUEST_VERSION(h2c_pkt, value)                        \
547 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 1, value)
548 #define BCN_OFFLOAD_GET_ENABLE(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 1, 1)
549 #define BCN_OFFLOAD_SET_ENABLE(h2c_pkt, value)                                 \
550 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 1, 1, value)
551 #define BCN_OFFLOAD_GET_MORE_RULE(h2c_pkt)                                     \
552 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 2, 1)
553 #define BCN_OFFLOAD_SET_MORE_RULE(h2c_pkt, value)                              \
554 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 2, 1, value)
555 #define BCN_OFFLOAD_GET_C2H_PERIODIC_REPORT(h2c_pkt)                           \
556 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 3, 1)
557 #define BCN_OFFLOAD_SET_C2H_PERIODIC_REPORT(h2c_pkt, value)                    \
558 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 3, 1, value)
559 #define BCN_OFFLOAD_GET_REPORT_PERIOD(h2c_pkt)                                 \
560 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 8, 8)
561 #define BCN_OFFLOAD_SET_REPORT_PERIOD(h2c_pkt, value)                          \
562 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 8, 8, value)
563 #define BCN_OFFLOAD_GET_RULE_LENGTH(h2c_pkt)                                   \
564 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 16, 8)
565 #define BCN_OFFLOAD_SET_RULE_LENGTH(h2c_pkt, value)                            \
566 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 16, 8, value)
567 #define BCN_OFFLOAD_GET_RULE_CONTENT(h2c_pkt)                                  \
568 	LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 0, 8)
569 #define BCN_OFFLOAD_SET_RULE_CONTENT(h2c_pkt, value)                           \
570 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 0, 8, value)
571 #define DROP_SCAN_PKT_GET_DROP_ALL(h2c_pkt)                                    \
572 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 1)
573 #define DROP_SCAN_PKT_SET_DROP_ALL(h2c_pkt, value)                             \
574 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 1, value)
575 #define DROP_SCAN_PKT_GET_DROP_SINGLE(h2c_pkt)                                 \
576 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 1, 1)
577 #define DROP_SCAN_PKT_SET_DROP_SINGLE(h2c_pkt, value)                          \
578 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 1, 1, value)
579 #define DROP_SCAN_PKT_GET_DROP_IDX(h2c_pkt)                                    \
580 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 8, 8)
581 #define DROP_SCAN_PKT_SET_DROP_IDX(h2c_pkt, value)                             \
582 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 8, 8, value)
583 #define P2PPS_GET_OFFLOAD_EN(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 1)
584 #define P2PPS_SET_OFFLOAD_EN(h2c_pkt, value)                                   \
585 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 1, value)
586 #define P2PPS_GET_ROLE(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 1, 1)
587 #define P2PPS_SET_ROLE(h2c_pkt, value)                                         \
588 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 1, 1, value)
589 #define P2PPS_GET_CTWINDOW_EN(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 2, 1)
590 #define P2PPS_SET_CTWINDOW_EN(h2c_pkt, value)                                  \
591 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 2, 1, value)
592 #define P2PPS_GET_NOA_EN(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 3, 1)
593 #define P2PPS_SET_NOA_EN(h2c_pkt, value)                                       \
594 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 3, 1, value)
595 #define P2PPS_GET_NOA_SEL(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 4, 1)
596 #define P2PPS_SET_NOA_SEL(h2c_pkt, value)                                      \
597 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 4, 1, value)
598 #define P2PPS_GET_ALLSTASLEEP(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 5, 1)
599 #define P2PPS_SET_ALLSTASLEEP(h2c_pkt, value)                                  \
600 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 5, 1, value)
601 #define P2PPS_GET_DISCOVERY(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 6, 1)
602 #define P2PPS_SET_DISCOVERY(h2c_pkt, value)                                    \
603 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 6, 1, value)
604 #define P2PPS_GET_DISABLE_CLOSERF(h2c_pkt)                                     \
605 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 7, 1)
606 #define P2PPS_SET_DISABLE_CLOSERF(h2c_pkt, value)                              \
607 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 7, 1, value)
608 #define P2PPS_GET_P2P_PORT_ID(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 8, 8)
609 #define P2PPS_SET_P2P_PORT_ID(h2c_pkt, value)                                  \
610 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 8, 8, value)
611 #define P2PPS_GET_P2P_GROUP(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 16, 8)
612 #define P2PPS_SET_P2P_GROUP(h2c_pkt, value)                                    \
613 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 16, 8, value)
614 #define P2PPS_GET_P2P_MACID(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 24, 8)
615 #define P2PPS_SET_P2P_MACID(h2c_pkt, value)                                    \
616 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 24, 8, value)
617 #define P2PPS_GET_CTWINDOW_LENGTH(h2c_pkt)                                     \
618 	LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 0, 8)
619 #define P2PPS_SET_CTWINDOW_LENGTH(h2c_pkt, value)                              \
620 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 0, 8, value)
621 #define P2PPS_GET_NOA_DURATION_PARA(h2c_pkt)                                   \
622 	LE_BITS_TO_4BYTE(h2c_pkt + 0X10, 0, 32)
623 #define P2PPS_SET_NOA_DURATION_PARA(h2c_pkt, value)                            \
624 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X10, 0, 32, value)
625 #define P2PPS_GET_NOA_INTERVAL_PARA(h2c_pkt)                                   \
626 	LE_BITS_TO_4BYTE(h2c_pkt + 0X14, 0, 32)
627 #define P2PPS_SET_NOA_INTERVAL_PARA(h2c_pkt, value)                            \
628 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X14, 0, 32, value)
629 #define P2PPS_GET_NOA_START_TIME_PARA(h2c_pkt)                                 \
630 	LE_BITS_TO_4BYTE(h2c_pkt + 0X18, 0, 32)
631 #define P2PPS_SET_NOA_START_TIME_PARA(h2c_pkt, value)                          \
632 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X18, 0, 32, value)
633 #define P2PPS_GET_NOA_COUNT_PARA(h2c_pkt)                                      \
634 	LE_BITS_TO_4BYTE(h2c_pkt + 0X1C, 0, 32)
635 #define P2PPS_SET_NOA_COUNT_PARA(h2c_pkt, value)                               \
636 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X1C, 0, 32, value)
637 #define BT_COEX_GET_DATA_START(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 8)
638 #define BT_COEX_SET_DATA_START(h2c_pkt, value)                                 \
639 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 8, value)
640 #define ACT_SCHEDULE_REQ_GET_MODULE_ID(h2c_pkt)                                \
641 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 8)
642 #define ACT_SCHEDULE_REQ_SET_MODULE_ID(h2c_pkt, value)                         \
643 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 8, value)
644 #define ACT_SCHEDULE_REQ_GET_PRIORITY(h2c_pkt)                                 \
645 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 8, 8)
646 #define ACT_SCHEDULE_REQ_SET_PRIORITY(h2c_pkt, value)                          \
647 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 8, 8, value)
648 #define ACT_SCHEDULE_REQ_GET_RSVD1(h2c_pkt)                                    \
649 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 16, 16)
650 #define ACT_SCHEDULE_REQ_SET_RSVD1(h2c_pkt, value)                             \
651 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 16, 16, value)
652 #define ACT_SCHEDULE_REQ_GET_START_TIME(h2c_pkt)                               \
653 	LE_BITS_TO_4BYTE(h2c_pkt + 0XC, 0, 32)
654 #define ACT_SCHEDULE_REQ_SET_START_TIME(h2c_pkt, value)                        \
655 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0XC, 0, 32, value)
656 #define ACT_SCHEDULE_REQ_GET_DURATION(h2c_pkt)                                 \
657 	LE_BITS_TO_4BYTE(h2c_pkt + 0X10, 0, 32)
658 #define ACT_SCHEDULE_REQ_SET_DURATION(h2c_pkt, value)                          \
659 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X10, 0, 32, value)
660 #define ACT_SCHEDULE_REQ_GET_PERIOD(h2c_pkt)                                   \
661 	LE_BITS_TO_4BYTE(h2c_pkt + 0X14, 0, 32)
662 #define ACT_SCHEDULE_REQ_SET_PERIOD(h2c_pkt, value)                            \
663 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X14, 0, 32, value)
664 #define ACT_SCHEDULE_REQ_GET_TSF_IDX(h2c_pkt)                                  \
665 	LE_BITS_TO_4BYTE(h2c_pkt + 0X18, 0, 8)
666 #define ACT_SCHEDULE_REQ_SET_TSF_IDX(h2c_pkt, value)                           \
667 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X18, 0, 8, value)
668 #define ACT_SCHEDULE_REQ_GET_CHANNEL(h2c_pkt)                                  \
669 	LE_BITS_TO_4BYTE(h2c_pkt + 0X18, 8, 8)
670 #define ACT_SCHEDULE_REQ_SET_CHANNEL(h2c_pkt, value)                           \
671 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X18, 8, 8, value)
672 #define ACT_SCHEDULE_REQ_GET_BW(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X18, 16, 8)
673 #define ACT_SCHEDULE_REQ_SET_BW(h2c_pkt, value)                                \
674 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X18, 16, 8, value)
675 #define ACT_SCHEDULE_REQ_GET_PRIMART_CH_IDX(h2c_pkt)                           \
676 	LE_BITS_TO_4BYTE(h2c_pkt + 0X18, 24, 9)
677 #define ACT_SCHEDULE_REQ_SET_PRIMART_CH_IDX(h2c_pkt, value)                    \
678 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X18, 24, 9, value)
679 #define NAN_CTRL_GET_NAN_EN(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 2)
680 #define NAN_CTRL_SET_NAN_EN(h2c_pkt, value)                                    \
681 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 2, value)
682 #define NAN_CTRL_GET_WARMUP_TIMER_FLAG(h2c_pkt)                                \
683 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 2, 1)
684 #define NAN_CTRL_SET_WARMUP_TIMER_FLAG(h2c_pkt, value)                         \
685 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 2, 1, value)
686 #define NAN_CTRL_GET_SUPPORT_BAND(h2c_pkt)                                     \
687 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 8, 2)
688 #define NAN_CTRL_SET_SUPPORT_BAND(h2c_pkt, value)                              \
689 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 8, 2, value)
690 #define NAN_CTRL_GET_DISABLE_2G_DISC_BCN(h2c_pkt)                              \
691 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 10, 1)
692 #define NAN_CTRL_SET_DISABLE_2G_DISC_BCN(h2c_pkt, value)                       \
693 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 10, 1, value)
694 #define NAN_CTRL_GET_DISABLE_5G_DISC_BCN(h2c_pkt)                              \
695 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 11, 1)
696 #define NAN_CTRL_SET_DISABLE_5G_DISC_BCN(h2c_pkt, value)                       \
697 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 11, 1, value)
698 #define NAN_CTRL_GET_BCN_RSVD_PAGE_OFFSET(h2c_pkt)                             \
699 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 16, 8)
700 #define NAN_CTRL_SET_BCN_RSVD_PAGE_OFFSET(h2c_pkt, value)                      \
701 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 16, 8, value)
702 #define NAN_CTRL_GET_CHANNEL_2G(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 24, 8)
703 #define NAN_CTRL_SET_CHANNEL_2G(h2c_pkt, value)                                \
704 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 24, 8, value)
705 #define NAN_CTRL_GET_CHANNEL_5G(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 0, 8)
706 #define NAN_CTRL_SET_CHANNEL_5G(h2c_pkt, value)                                \
707 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 0, 8, value)
708 #define NAN_CTRL_GET_MASTERPREFERENCE_VALUE(h2c_pkt)                           \
709 	LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 8, 8)
710 #define NAN_CTRL_SET_MASTERPREFERENCE_VALUE(h2c_pkt, value)                    \
711 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 8, 8, value)
712 #define NAN_CTRL_GET_RANDOMFACTOR_VALUE(h2c_pkt)                               \
713 	LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 16, 8)
714 #define NAN_CTRL_SET_RANDOMFACTOR_VALUE(h2c_pkt, value)                        \
715 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 16, 8, value)
716 #define NAN_CHANNEL_PLAN_0_GET_CHANNEL_NUMBER_0(h2c_pkt)                       \
717 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 8)
718 #define NAN_CHANNEL_PLAN_0_SET_CHANNEL_NUMBER_0(h2c_pkt, value)                \
719 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 8, value)
720 #define NAN_CHANNEL_PLAN_0_GET_UNPAUSE_MACID_0(h2c_pkt)                        \
721 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 8, 8)
722 #define NAN_CHANNEL_PLAN_0_SET_UNPAUSE_MACID_0(h2c_pkt, value)                 \
723 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 8, 8, value)
724 #define NAN_CHANNEL_PLAN_0_GET_START_TIME_SLOT_0(h2c_pkt)                      \
725 	LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 0, 16)
726 #define NAN_CHANNEL_PLAN_0_SET_START_TIME_SLOT_0(h2c_pkt, value)               \
727 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 0, 16, value)
728 #define NAN_CHANNEL_PLAN_0_GET_DURATION_0(h2c_pkt)                             \
729 	LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 16, 16)
730 #define NAN_CHANNEL_PLAN_0_SET_DURATION_0(h2c_pkt, value)                      \
731 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 16, 16, value)
732 #define NAN_CHANNEL_PLAN_0_GET_CHANNEL_NUMBER_1(h2c_pkt)                       \
733 	LE_BITS_TO_4BYTE(h2c_pkt + 0X10, 0, 8)
734 #define NAN_CHANNEL_PLAN_0_SET_CHANNEL_NUMBER_1(h2c_pkt, value)                \
735 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X10, 0, 8, value)
736 #define NAN_CHANNEL_PLAN_0_GET_UNPAUSE_MACID_1(h2c_pkt)                        \
737 	LE_BITS_TO_4BYTE(h2c_pkt + 0X10, 8, 8)
738 #define NAN_CHANNEL_PLAN_0_SET_UNPAUSE_MACID_1(h2c_pkt, value)                 \
739 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X10, 8, 8, value)
740 #define NAN_CHANNEL_PLAN_0_GET_START_TIME_SLOT_1(h2c_pkt)                      \
741 	LE_BITS_TO_4BYTE(h2c_pkt + 0X14, 0, 16)
742 #define NAN_CHANNEL_PLAN_0_SET_START_TIME_SLOT_1(h2c_pkt, value)               \
743 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X14, 0, 16, value)
744 #define NAN_CHANNEL_PLAN_0_GET_DURATION_1(h2c_pkt)                             \
745 	LE_BITS_TO_4BYTE(h2c_pkt + 0X14, 16, 16)
746 #define NAN_CHANNEL_PLAN_0_SET_DURATION_1(h2c_pkt, value)                      \
747 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X14, 16, 16, value)
748 #define NAN_CHANNEL_PLAN_0_GET_CHANNEL_NUMBER_2(h2c_pkt)                       \
749 	LE_BITS_TO_4BYTE(h2c_pkt + 0X18, 0, 8)
750 #define NAN_CHANNEL_PLAN_0_SET_CHANNEL_NUMBER_2(h2c_pkt, value)                \
751 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X18, 0, 8, value)
752 #define NAN_CHANNEL_PLAN_0_GET_UNPAUSE_MACID_2(h2c_pkt)                        \
753 	LE_BITS_TO_4BYTE(h2c_pkt + 0X18, 8, 8)
754 #define NAN_CHANNEL_PLAN_0_SET_UNPAUSE_MACID_2(h2c_pkt, value)                 \
755 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X18, 8, 8, value)
756 #define NAN_CHANNEL_PLAN_0_GET_START_TIME_SLOT_2(h2c_pkt)                      \
757 	LE_BITS_TO_4BYTE(h2c_pkt + 0X1C, 0, 16)
758 #define NAN_CHANNEL_PLAN_0_SET_START_TIME_SLOT_2(h2c_pkt, value)               \
759 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X1C, 0, 16, value)
760 #define NAN_CHANNEL_PLAN_0_GET_DURATION_2(h2c_pkt)                             \
761 	LE_BITS_TO_4BYTE(h2c_pkt + 0X1C, 16, 16)
762 #define NAN_CHANNEL_PLAN_0_SET_DURATION_2(h2c_pkt, value)                      \
763 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X1C, 16, 16, value)
764 #define NAN_CHANNEL_PLAN_1_GET_CHANNEL_NUMBER_3(h2c_pkt)                       \
765 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 8)
766 #define NAN_CHANNEL_PLAN_1_SET_CHANNEL_NUMBER_3(h2c_pkt, value)                \
767 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 8, value)
768 #define NAN_CHANNEL_PLAN_1_GET_UNPAUSE_MACID_3(h2c_pkt)                        \
769 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 8, 8)
770 #define NAN_CHANNEL_PLAN_1_SET_UNPAUSE_MACID_3(h2c_pkt, value)                 \
771 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 8, 8, value)
772 #define NAN_CHANNEL_PLAN_1_GET_START_TIME_SLOT_3(h2c_pkt)                      \
773 	LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 0, 16)
774 #define NAN_CHANNEL_PLAN_1_SET_START_TIME_SLOT_3(h2c_pkt, value)               \
775 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 0, 16, value)
776 #define NAN_CHANNEL_PLAN_1_GET_DURATION_3(h2c_pkt)                             \
777 	LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 16, 16)
778 #define NAN_CHANNEL_PLAN_1_SET_DURATION_3(h2c_pkt, value)                      \
779 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 16, 16, value)
780 #define NAN_CHANNEL_PLAN_1_GET_CHANNEL_NUMBER_4(h2c_pkt)                       \
781 	LE_BITS_TO_4BYTE(h2c_pkt + 0X10, 0, 8)
782 #define NAN_CHANNEL_PLAN_1_SET_CHANNEL_NUMBER_4(h2c_pkt, value)                \
783 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X10, 0, 8, value)
784 #define NAN_CHANNEL_PLAN_1_GET_UNPAUSE_MACID_4(h2c_pkt)                        \
785 	LE_BITS_TO_4BYTE(h2c_pkt + 0X10, 8, 8)
786 #define NAN_CHANNEL_PLAN_1_SET_UNPAUSE_MACID_4(h2c_pkt, value)                 \
787 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X10, 8, 8, value)
788 #define NAN_CHANNEL_PLAN_1_GET_START_TIME_SLOT_4(h2c_pkt)                      \
789 	LE_BITS_TO_4BYTE(h2c_pkt + 0X14, 0, 16)
790 #define NAN_CHANNEL_PLAN_1_SET_START_TIME_SLOT_4(h2c_pkt, value)               \
791 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X14, 0, 16, value)
792 #define NAN_CHANNEL_PLAN_1_GET_DURATION_4(h2c_pkt)                             \
793 	LE_BITS_TO_4BYTE(h2c_pkt + 0X14, 16, 16)
794 #define NAN_CHANNEL_PLAN_1_SET_DURATION_4(h2c_pkt, value)                      \
795 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X14, 16, 16, value)
796 #define NAN_CHANNEL_PLAN_1_GET_CHANNEL_NUMBER_5(h2c_pkt)                       \
797 	LE_BITS_TO_4BYTE(h2c_pkt + 0X18, 0, 8)
798 #define NAN_CHANNEL_PLAN_1_SET_CHANNEL_NUMBER_5(h2c_pkt, value)                \
799 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X18, 0, 8, value)
800 #define NAN_CHANNEL_PLAN_1_GET_UNPAUSE_MACID_5(h2c_pkt)                        \
801 	LE_BITS_TO_4BYTE(h2c_pkt + 0X18, 8, 8)
802 #define NAN_CHANNEL_PLAN_1_SET_UNPAUSE_MACID_5(h2c_pkt, value)                 \
803 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X18, 8, 8, value)
804 #define NAN_CHANNEL_PLAN_1_GET_START_TIME_SLOT_5(h2c_pkt)                      \
805 	LE_BITS_TO_4BYTE(h2c_pkt + 0X1C, 0, 16)
806 #define NAN_CHANNEL_PLAN_1_SET_START_TIME_SLOT_5(h2c_pkt, value)               \
807 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X1C, 0, 16, value)
808 #define NAN_CHANNEL_PLAN_1_GET_DURATION_5(h2c_pkt)                             \
809 	LE_BITS_TO_4BYTE(h2c_pkt + 0X1C, 16, 16)
810 #define NAN_CHANNEL_PLAN_1_SET_DURATION_5(h2c_pkt, value)                      \
811 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X1C, 16, 16, value)
812 #define NAN_FUNC_CTRL_GET_PORT_IDX(h2c_pkt)                                    \
813 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 8)
814 #define NAN_FUNC_CTRL_SET_PORT_IDX(h2c_pkt, value)                             \
815 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 8, value)
816 #define NAN_FUNC_CTRL_GET_MAC_ID(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 8, 8)
817 #define NAN_FUNC_CTRL_SET_MAC_ID(h2c_pkt, value)                               \
818 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 8, 8, value)
819 #define NAN_FUNC_CTRL_GET_MASTER_PREF(h2c_pkt)                                 \
820 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 16, 8)
821 #define NAN_FUNC_CTRL_SET_MASTER_PREF(h2c_pkt, value)                          \
822 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 16, 8, value)
823 #define NAN_FUNC_CTRL_GET_RANDOM_FACTOR(h2c_pkt)                               \
824 	LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 24, 8)
825 #define NAN_FUNC_CTRL_SET_RANDOM_FACTOR(h2c_pkt, value)                        \
826 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 24, 8, value)
827 #define NAN_FUNC_CTRL_GET_OP_CH_24G(h2c_pkt)                                   \
828 	LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 0, 8)
829 #define NAN_FUNC_CTRL_SET_OP_CH_24G(h2c_pkt, value)                            \
830 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 0, 8, value)
831 #define NAN_FUNC_CTRL_GET_OP_CH_5G(h2c_pkt)                                    \
832 	LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 8, 8)
833 #define NAN_FUNC_CTRL_SET_OP_CH_5G(h2c_pkt, value)                             \
834 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 8, 8, value)
835 #define NAN_FUNC_CTRL_GET_OPTIONS(h2c_pkt)                                     \
836 	LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 16, 16)
837 #define NAN_FUNC_CTRL_SET_OPTIONS(h2c_pkt, value)                              \
838 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 16, 16, value)
839 #define NAN_FUNC_CTRL_GET_SYNC_BCN_RSVD_OFFSET(h2c_pkt)                        \
840 	LE_BITS_TO_4BYTE(h2c_pkt + 0X10, 0, 8)
841 #define NAN_FUNC_CTRL_SET_SYNC_BCN_RSVD_OFFSET(h2c_pkt, value)                 \
842 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X10, 0, 8, value)
843 #define NAN_FUNC_CTRL_GET_DISC_BCN_RSVD_OFFSET(h2c_pkt)                        \
844 	LE_BITS_TO_4BYTE(h2c_pkt + 0X10, 8, 8)
845 #define NAN_FUNC_CTRL_SET_DISC_BCN_RSVD_OFFSET(h2c_pkt, value)                 \
846 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X10, 8, 8, value)
847 #define NAN_FUNC_CTRL_GET_DW_SCHDL_PRIORITY(h2c_pkt)                           \
848 	LE_BITS_TO_4BYTE(h2c_pkt + 0X10, 16, 8)
849 #define NAN_FUNC_CTRL_SET_DW_SCHDL_PRIORITY(h2c_pkt, value)                    \
850 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X10, 16, 8, value)
851 #define NAN_FUNC_CTRL_GET_TIME_INDICATE_PERIOD(h2c_pkt)                        \
852 	LE_BITS_TO_4BYTE(h2c_pkt + 0X10, 24, 8)
853 #define NAN_FUNC_CTRL_SET_TIME_INDICATE_PERIOD(h2c_pkt, value)                 \
854 	SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X10, 24, 8, value)
855 #endif
856