halmac_original_c2h_ap.h 41 KB

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