halmac_fw_offload_h2c_ap.h 61 KB

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