halmac_type.h 73 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134
  1. #ifndef _HALMAC_TYPE_H_
  2. #define _HALMAC_TYPE_H_
  3. #include "halmac_2_platform.h"
  4. #include "halmac_hw_cfg.h"
  5. #include "halmac_fw_info.h"
  6. #include "halmac_intf_phy_cmd.h"
  7. #define IN
  8. #define OUT
  9. #define INOUT
  10. #define VOID void
  11. #define HALMAC_SCAN_CH_NUM_MAX 28
  12. #define HALMAC_BCN_IE_BMP_SIZE 24 /* ID0~ID191, 192/8=24 */
  13. #define HALMAC_PHY_PARAMETER_SIZE 12
  14. #define HALMAC_PHY_PARAMETER_MAX_NUM 128
  15. #define HALMAC_MAX_SSID_LEN 32
  16. #define HALMAC_SUPPORT_NLO_NUM 16
  17. #define HALMAC_SUPPORT_PROBE_REQ_NUM 8
  18. #define HALMC_DDMA_POLLING_COUNT 1000
  19. #define API_ARRAY_SIZE 32
  20. #ifndef HALMAC_RX_FIFO_EXPANDING_MODE_PKT_SIZE
  21. #define HALMAC_RX_FIFO_EXPANDING_MODE_PKT_SIZE 48
  22. #endif
  23. /* platform api */
  24. #define PLATFORM_SDIO_CMD52_READ pHalmac_adapter->pHalmac_platform_api->SDIO_CMD52_READ
  25. #define PLATFORM_SDIO_CMD53_READ_8 pHalmac_adapter->pHalmac_platform_api->SDIO_CMD53_READ_8
  26. #define PLATFORM_SDIO_CMD53_READ_16 pHalmac_adapter->pHalmac_platform_api->SDIO_CMD53_READ_16
  27. #define PLATFORM_SDIO_CMD53_READ_32 pHalmac_adapter->pHalmac_platform_api->SDIO_CMD53_READ_32
  28. #define PLATFORM_SDIO_CMD53_READ_N pHalmac_adapter->pHalmac_platform_api->SDIO_CMD53_READ_N
  29. #define PLATFORM_SDIO_CMD52_WRITE pHalmac_adapter->pHalmac_platform_api->SDIO_CMD52_WRITE
  30. #define PLATFORM_SDIO_CMD53_WRITE_8 pHalmac_adapter->pHalmac_platform_api->SDIO_CMD53_WRITE_8
  31. #define PLATFORM_SDIO_CMD53_WRITE_16 pHalmac_adapter->pHalmac_platform_api->SDIO_CMD53_WRITE_16
  32. #define PLATFORM_SDIO_CMD53_WRITE_32 pHalmac_adapter->pHalmac_platform_api->SDIO_CMD53_WRITE_32
  33. #define PLATFORM_REG_READ_8 pHalmac_adapter->pHalmac_platform_api->REG_READ_8
  34. #define PLATFORM_REG_READ_16 pHalmac_adapter->pHalmac_platform_api->REG_READ_16
  35. #define PLATFORM_REG_READ_32 pHalmac_adapter->pHalmac_platform_api->REG_READ_32
  36. #define PLATFORM_REG_WRITE_8 pHalmac_adapter->pHalmac_platform_api->REG_WRITE_8
  37. #define PLATFORM_REG_WRITE_16 pHalmac_adapter->pHalmac_platform_api->REG_WRITE_16
  38. #define PLATFORM_REG_WRITE_32 pHalmac_adapter->pHalmac_platform_api->REG_WRITE_32
  39. #define PLATFORM_SEND_RSVD_PAGE pHalmac_adapter->pHalmac_platform_api->SEND_RSVD_PAGE
  40. #define PLATFORM_SEND_H2C_PKT pHalmac_adapter->pHalmac_platform_api->SEND_H2C_PKT
  41. #define PLATFORM_RTL_FREE pHalmac_adapter->pHalmac_platform_api->RTL_FREE
  42. #define PLATFORM_RTL_MALLOC pHalmac_adapter->pHalmac_platform_api->RTL_MALLOC
  43. #define PLATFORM_RTL_MEMCPY pHalmac_adapter->pHalmac_platform_api->RTL_MEMCPY
  44. #define PLATFORM_RTL_MEMSET pHalmac_adapter->pHalmac_platform_api->RTL_MEMSET
  45. #define PLATFORM_RTL_DELAY_US pHalmac_adapter->pHalmac_platform_api->RTL_DELAY_US
  46. #define PLATFORM_MUTEX_INIT pHalmac_adapter->pHalmac_platform_api->MUTEX_INIT
  47. #define PLATFORM_MUTEX_DEINIT pHalmac_adapter->pHalmac_platform_api->MUTEX_DEINIT
  48. #define PLATFORM_MUTEX_LOCK pHalmac_adapter->pHalmac_platform_api->MUTEX_LOCK
  49. #define PLATFORM_MUTEX_UNLOCK pHalmac_adapter->pHalmac_platform_api->MUTEX_UNLOCK
  50. #define PLATFORM_EVENT_INDICATION pHalmac_adapter->pHalmac_platform_api->EVENT_INDICATION
  51. #if HALMAC_DBG_MSG_ENABLE
  52. #define PLATFORM_MSG_PRINT pHalmac_adapter->pHalmac_platform_api->MSG_PRINT
  53. #else
  54. #define PLATFORM_MSG_PRINT(pDriver_adapter, msg_type, msg_level, fmt, ...)
  55. #endif
  56. #if HALMAC_PLATFORM_TESTPROGRAM
  57. #define PLATFORM_WRITE_DATA_SDIO_ADDR pHalmac_adapter->pHalmac_platform_api->WRITE_DATA_SDIO_ADDR
  58. #define PLATFORM_WRITE_DATA_USB_BULKOUT_ID pHalmac_adapter->pHalmac_platform_api->WRITE_DATA_USB_BULKOUT_ID
  59. #define PLATFORM_WRITE_DATA_PCIE_QUEUE pHalmac_adapter->pHalmac_platform_api->WRITE_DATA_PCIE_QUEUE
  60. #define PLATFORM_READ_DATA pHalmac_adapter->pHalmac_platform_api->READ_DATA
  61. #endif
  62. #define HALMAC_REG_READ_8 pHalmac_api->halmac_reg_read_8
  63. #define HALMAC_REG_READ_16 pHalmac_api->halmac_reg_read_16
  64. #define HALMAC_REG_READ_32 pHalmac_api->halmac_reg_read_32
  65. #define HALMAC_REG_WRITE_8 pHalmac_api->halmac_reg_write_8
  66. #define HALMAC_REG_WRITE_16 pHalmac_api->halmac_reg_write_16
  67. #define HALMAC_REG_WRITE_32 pHalmac_api->halmac_reg_write_32
  68. #define HALMAC_REG_SDIO_CMD53_READ_N pHalmac_api->halmac_reg_sdio_cmd53_read_n
  69. /* Swap Little-endian <-> Big-endia*/
  70. #define SWAP32(x) ((u32)( \
  71. (((u32)(x) & (u32)0x000000ff) << 24) | \
  72. (((u32)(x) & (u32)0x0000ff00) << 8) | \
  73. (((u32)(x) & (u32)0x00ff0000) >> 8) | \
  74. (((u32)(x) & (u32)0xff000000) >> 24)))
  75. #define SWAP16(x) ((u16)( \
  76. (((u16)(x) & (u16)0x00ff) << 8) | \
  77. (((u16)(x) & (u16)0xff00) >> 8)))
  78. /*1->Little endian 0->Big endian*/
  79. #if HALMAC_SYSTEM_ENDIAN
  80. #ifndef rtk_le16_to_cpu
  81. #define rtk_cpu_to_le32(x) ((u32)(x))
  82. #define rtk_le32_to_cpu(x) ((u32)(x))
  83. #define rtk_cpu_to_le16(x) ((u16)(x))
  84. #define rtk_le16_to_cpu(x) ((u16)(x))
  85. #define rtk_cpu_to_be32(x) SWAP32((x))
  86. #define rtk_be32_to_cpu(x) SWAP32((x))
  87. #define rtk_cpu_to_be16(x) SWAP16((x))
  88. #define rtk_be16_to_cpu(x) SWAP16((x))
  89. #endif
  90. #else
  91. #ifndef rtk_le16_to_cpu
  92. #define rtk_cpu_to_le32(x) SWAP32((x))
  93. #define rtk_le32_to_cpu(x) SWAP32((x))
  94. #define rtk_cpu_to_le16(x) SWAP16((x))
  95. #define rtk_le16_to_cpu(x) SWAP16((x))
  96. #define rtk_cpu_to_be32(x) ((u32)(x))
  97. #define rtk_be32_to_cpu(x) ((u32)(x))
  98. #define rtk_cpu_to_be16(x) ((u16)(x))
  99. #define rtk_be16_to_cpu(x) ((u16)(x))
  100. #endif
  101. #endif
  102. #define HALMAC_ALIGN(x, a) HALMAC_ALIGN_MASK(x, (a) - 1)
  103. #define HALMAC_ALIGN_MASK(x, mask) (((x) + (mask)) & ~(mask))
  104. /* #if !HALMAC_PLATFORM_WINDOWS */
  105. #if !((HALMAC_PLATFORM_WINDOWS == 1) && (HALMAC_PLATFORM_TESTPROGRAM == 0))
  106. /* Byte Swapping routine */
  107. #ifndef EF1Byte
  108. #define EF1Byte (u8)
  109. #endif
  110. #ifndef EF2Byte
  111. #define EF2Byte rtk_le16_to_cpu
  112. #endif
  113. #ifndef EF4Byte
  114. #define EF4Byte rtk_le32_to_cpu
  115. #endif
  116. /* Example:
  117. * BIT_LEN_MASK_32(0) => 0x00000000
  118. * BIT_LEN_MASK_32(1) => 0x00000001
  119. * BIT_LEN_MASK_32(2) => 0x00000003
  120. * BIT_LEN_MASK_32(32) => 0xFFFFFFFF
  121. */
  122. #ifndef BIT_LEN_MASK_32
  123. #define BIT_LEN_MASK_32(__BitLen) \
  124. (0xFFFFFFFF >> (32 - (__BitLen)))
  125. #endif
  126. /* Example:
  127. * BIT_OFFSET_LEN_MASK_32(0, 2) => 0x00000003
  128. * BIT_OFFSET_LEN_MASK_32(16, 2) => 0x00030000
  129. */
  130. #ifndef BIT_OFFSET_LEN_MASK_32
  131. #define BIT_OFFSET_LEN_MASK_32(__BitOffset, __BitLen) \
  132. (BIT_LEN_MASK_32(__BitLen) << (__BitOffset))
  133. #endif
  134. /* Return 4-byte value in host byte ordering from
  135. * 4-byte pointer in litten-endian system
  136. */
  137. #ifndef LE_P4BYTE_TO_HOST_4BYTE
  138. #define LE_P4BYTE_TO_HOST_4BYTE(__pStart) \
  139. (EF4Byte(*((u32 *)(__pStart))))
  140. #endif
  141. /* Translate subfield (continuous bits in little-endian) of
  142. * 4-byte value in litten byte to 4-byte value in host byte ordering
  143. */
  144. #ifndef LE_BITS_TO_4BYTE
  145. #define LE_BITS_TO_4BYTE(__pStart, __BitOffset, __BitLen) \
  146. ( \
  147. (LE_P4BYTE_TO_HOST_4BYTE(__pStart) >> (__BitOffset)) \
  148. & \
  149. BIT_LEN_MASK_32(__BitLen) \
  150. )
  151. #endif
  152. /* Mask subfield (continuous bits in little-endian) of 4-byte
  153. * value in litten byte oredering and return the result in 4-byte
  154. * value in host byte ordering
  155. */
  156. #ifndef LE_BITS_CLEARED_TO_4BYTE
  157. #define LE_BITS_CLEARED_TO_4BYTE(__pStart, __BitOffset, __BitLen) \
  158. ( \
  159. LE_P4BYTE_TO_HOST_4BYTE(__pStart) \
  160. & \
  161. (~BIT_OFFSET_LEN_MASK_32(__BitOffset, __BitLen)) \
  162. )
  163. #endif
  164. /* Set subfield of little-endian 4-byte value to specified value */
  165. #ifndef SET_BITS_TO_LE_4BYTE
  166. #define SET_BITS_TO_LE_4BYTE(__pStart, __BitOffset, __BitLen, __Value) \
  167. do { \
  168. *((u32 *)(__pStart)) = \
  169. EF4Byte( \
  170. LE_BITS_CLEARED_TO_4BYTE(__pStart, __BitOffset, __BitLen) \
  171. | \
  172. ((((u32)__Value) & BIT_LEN_MASK_32(__BitLen)) << (__BitOffset)) \
  173. ); \
  174. } while (0)
  175. #endif
  176. #ifndef HALMAC_BIT_OFFSET_VAL_MASK_32
  177. #define HALMAC_BIT_OFFSET_VAL_MASK_32(__BitVal, __BitOffset) \
  178. (__BitVal << (__BitOffset))
  179. #endif
  180. #ifndef SET_MEM_OP
  181. #define SET_MEM_OP(Dw, Value32, Mask, Shift) \
  182. (((Dw) & ~((Mask) << (Shift))) | (((Value32) & (Mask)) << (Shift)))
  183. #endif
  184. #ifndef HALMAC_SET_DESC_FIELD_CLR
  185. #define HALMAC_SET_DESC_FIELD_CLR(Dw, Value32, Mask, Shift) \
  186. (Dw = (rtk_cpu_to_le32(SET_MEM_OP(rtk_cpu_to_le32(Dw), Value32, Mask, Shift))))
  187. #endif
  188. #ifndef HALMAC_SET_DESC_FIELD_NO_CLR
  189. #define HALMAC_SET_DESC_FIELD_NO_CLR(Dw, Value32, Mask, Shift) \
  190. (Dw |= (rtk_cpu_to_le32(((Value32) & (Mask)) << (Shift))))
  191. #endif
  192. #ifndef HALMAC_GET_DESC_FIELD
  193. #define HALMAC_GET_DESC_FIELD(Dw, Mask, Shift) \
  194. ((rtk_le32_to_cpu(Dw) >> (Shift)) & (Mask))
  195. #endif
  196. #define HALMAC_SET_BD_FIELD_CLR HALMAC_SET_DESC_FIELD_CLR
  197. #define HALMAC_SET_BD_FIELD_NO_CLR HALMAC_SET_DESC_FIELD_NO_CLR
  198. #define HALMAC_GET_BD_FIELD HALMAC_GET_DESC_FIELD
  199. #ifndef GET_H2C_FIELD
  200. #define GET_H2C_FIELD LE_BITS_TO_4BYTE
  201. #endif
  202. #ifndef SET_H2C_FIELD_CLR
  203. #define SET_H2C_FIELD_CLR SET_BITS_TO_LE_4BYTE
  204. #endif
  205. #ifndef SET_H2C_FIELD_NO_CLR
  206. #define SET_H2C_FIELD_NO_CLR SET_BITS_TO_LE_4BYTE
  207. #endif
  208. #ifndef GET_C2H_FIELD
  209. #define GET_C2H_FIELD LE_BITS_TO_4BYTE
  210. #endif
  211. #ifndef SET_C2H_FIELD_CLR
  212. #define SET_C2H_FIELD_CLR SET_BITS_TO_LE_4BYTE
  213. #endif
  214. #ifndef SET_C2H_FIELD_NO_CLR
  215. #define SET_C2H_FIELD_NO_CLR SET_BITS_TO_LE_4BYTE
  216. #endif
  217. #endif /* #if !HALMAC_PLATFORM_WINDOWS */
  218. #ifndef BIT
  219. #define BIT(x) (1 << (x))
  220. #endif
  221. /* HALMAC API return status*/
  222. typedef enum _HALMAC_RET_STATUS {
  223. HALMAC_RET_SUCCESS = 0x00,
  224. HALMAC_RET_SUCCESS_ENQUEUE = 0x01,
  225. HALMAC_RET_PLATFORM_API_NULL = 0x02,
  226. HALMAC_RET_EFUSE_SIZE_INCORRECT = 0x03,
  227. HALMAC_RET_MALLOC_FAIL = 0x04,
  228. HALMAC_RET_ADAPTER_INVALID = 0x05,
  229. HALMAC_RET_ITF_INCORRECT = 0x06,
  230. HALMAC_RET_DLFW_FAIL = 0x07,
  231. HALMAC_RET_PORT_NOT_SUPPORT = 0x08,
  232. HALMAC_RET_TRXMODE_NOT_SUPPORT = 0x09,
  233. HALMAC_RET_INIT_LLT_FAIL = 0x0A,
  234. HALMAC_RET_POWER_STATE_INVALID = 0x0B,
  235. HALMAC_RET_H2C_ACK_NOT_RECEIVED = 0x0C,
  236. HALMAC_RET_DL_RSVD_PAGE_FAIL = 0x0D,
  237. HALMAC_RET_EFUSE_R_FAIL = 0x0E,
  238. HALMAC_RET_EFUSE_W_FAIL = 0x0F,
  239. HALMAC_RET_H2C_SW_RES_FAIL = 0x10,
  240. HALMAC_RET_SEND_H2C_FAIL = 0x11,
  241. HALMAC_RET_PARA_NOT_SUPPORT = 0x12,
  242. HALMAC_RET_PLATFORM_API_INCORRECT = 0x13,
  243. HALMAC_RET_ENDIAN_ERR = 0x14,
  244. HALMAC_RET_FW_SIZE_ERR = 0x15,
  245. HALMAC_RET_TRX_MODE_NOT_SUPPORT = 0x16,
  246. HALMAC_RET_FAIL = 0x17,
  247. HALMAC_RET_CHANGE_PS_FAIL = 0x18,
  248. HALMAC_RET_CFG_PARA_FAIL = 0x19,
  249. HALMAC_RET_UPDATE_PROBE_FAIL = 0x1A,
  250. HALMAC_RET_SCAN_FAIL = 0x1B,
  251. HALMAC_RET_STOP_SCAN_FAIL = 0x1C,
  252. HALMAC_RET_BCN_PARSER_CMD_FAIL = 0x1D,
  253. HALMAC_RET_POWER_ON_FAIL = 0x1E,
  254. HALMAC_RET_POWER_OFF_FAIL = 0x1F,
  255. HALMAC_RET_RX_AGG_MODE_FAIL = 0x20,
  256. HALMAC_RET_DATA_BUF_NULL = 0x21,
  257. HALMAC_RET_DATA_SIZE_INCORRECT = 0x22,
  258. HALMAC_RET_QSEL_INCORRECT = 0x23,
  259. HALMAC_RET_DMA_MAP_INCORRECT = 0x24,
  260. HALMAC_RET_SEND_ORIGINAL_H2C_FAIL = 0x25,
  261. HALMAC_RET_DDMA_FAIL = 0x26,
  262. HALMAC_RET_FW_CHECKSUM_FAIL = 0x27,
  263. HALMAC_RET_PWRSEQ_POLLING_FAIL = 0x28,
  264. HALMAC_RET_PWRSEQ_CMD_INCORRECT = 0x29,
  265. HALMAC_RET_WRITE_DATA_FAIL = 0x2A,
  266. HALMAC_RET_DUMP_FIFOSIZE_INCORRECT = 0x2B,
  267. HALMAC_RET_NULL_POINTER = 0x2C,
  268. HALMAC_RET_PROBE_NOT_FOUND = 0x2D,
  269. HALMAC_RET_FW_NO_MEMORY = 0x2E,
  270. HALMAC_RET_H2C_STATUS_ERR = 0x2F,
  271. HALMAC_RET_GET_H2C_SPACE_ERR = 0x30,
  272. HALMAC_RET_H2C_SPACE_FULL = 0x31,
  273. HALMAC_RET_DATAPACK_NO_FOUND = 0x32,
  274. HALMAC_RET_CANNOT_FIND_H2C_RESOURCE = 0x33,
  275. HALMAC_RET_TX_DMA_ERR = 0x34,
  276. HALMAC_RET_RX_DMA_ERR = 0x35,
  277. HALMAC_RET_CHIP_NOT_SUPPORT = 0x36,
  278. HALMAC_RET_FREE_SPACE_NOT_ENOUGH = 0x37,
  279. HALMAC_RET_CH_SW_SEQ_WRONG = 0x38,
  280. HALMAC_RET_CH_SW_NO_BUF = 0x39,
  281. HALMAC_RET_SW_CASE_NOT_SUPPORT = 0x3A,
  282. HALMAC_RET_CONVERT_SDIO_OFFSET_FAIL = 0x3B,
  283. HALMAC_RET_INVALID_SOUNDING_SETTING = 0x3C,
  284. HALMAC_RET_GEN_INFO_NOT_SENT = 0x3D,
  285. HALMAC_RET_STATE_INCORRECT = 0x3E,
  286. HALMAC_RET_H2C_BUSY = 0x3F,
  287. HALMAC_RET_INVALID_FEATURE_ID = 0x40,
  288. HALMAC_RET_BUFFER_TOO_SMALL = 0x41,
  289. HALMAC_RET_ZERO_LEN_RSVD_PACKET = 0x42,
  290. HALMAC_RET_BUSY_STATE = 0x43,
  291. HALMAC_RET_ERROR_STATE = 0x44,
  292. HALMAC_RET_API_INVALID = 0x45,
  293. HALMAC_RET_POLLING_BCN_VALID_FAIL = 0x46,
  294. HALMAC_RET_SDIO_LEAVE_SUSPEND_FAIL = 0x47,
  295. HALMAC_RET_EEPROM_PARSING_FAIL = 0x48,
  296. HALMAC_RET_EFUSE_NOT_ENOUGH = 0x49,
  297. HALMAC_RET_WRONG_ARGUMENT = 0x4A,
  298. HALMAC_RET_NOT_SUPPORT = 0x4B,
  299. HALMAC_RET_C2H_NOT_HANDLED = 0x4C,
  300. HALMAC_RET_PARA_SENDING = 0x4D,
  301. HALMAC_RET_CFG_DLFW_SIZE_FAIL = 0x4E,
  302. HALMAC_RET_CFG_TXFIFO_PAGE_FAIL = 0x4F,
  303. HALMAC_RET_SWITCH_CASE_ERROR = 0x50,
  304. HALMAC_RET_EFUSE_BANK_INCORRECT = 0x51,
  305. HALMAC_RET_SWITCH_EFUSE_BANK_FAIL = 0x52,
  306. HALMAC_RET_USB_MODE_UNCHANGE = 0x53,
  307. HALMAC_RET_NO_DLFW = 0x54,
  308. HALMAC_RET_USB2_3_SWITCH_UNSUPPORT = 0x55,
  309. HALMAC_RET_BIP_NO_SUPPORT = 0x56,
  310. HALMAC_RET_ENTRY_INDEX_ERROR = 0x57,
  311. HALMAC_RET_ENTRY_KEY_ID_ERROR = 0x58,
  312. HALMAC_RET_DRV_DL_ERR = 0x59,
  313. HALMAC_RET_OQT_NOT_ENOUGH = 0x5A,
  314. HALMAC_RET_PWR_UNCHANGE = 0x5B,
  315. HALMAC_RET_WRONG_INTF = 0x5C,
  316. HALMAC_RET_FW_NO_SUPPORT = 0x60,
  317. HALMAC_RET_TXFIFO_NO_EMPTY = 0x61,
  318. HALMAC_RET_SDIO_CLOCK_ERR = 0x62,
  319. } HALMAC_RET_STATUS;
  320. typedef enum _HALMAC_MAC_CLOCK_HW_DEF {
  321. HALMAC_MAC_CLOCK_HW_DEF_80M = 0,
  322. HALMAC_MAC_CLOCK_HW_DEF_40M = 1,
  323. HALMAC_MAC_CLOCK_HW_DEF_20M = 2,
  324. } HALMAC_MAC_CLOCK_HW_DEF;
  325. /* Rx aggregation parameters */
  326. typedef enum _HALMAC_NORMAL_RXAGG_TH_TO {
  327. HALMAC_NORMAL_RXAGG_THRESHOLD = 0xFF,
  328. HALMAC_NORMAL_RXAGG_TIMEOUT = 0x01,
  329. } HALMAC_NORMAL_RXAGG_TH_TO;
  330. typedef enum _HALMAC_LOOPBACK_RXAGG_TH_TO {
  331. HALMAC_LOOPBACK_RXAGG_THRESHOLD = 0xFF,
  332. HALMAC_LOOPBACK_RXAGG_TIMEOUT = 0x01,
  333. } HALMAC_LOOPBACK_RXAGG_TH_TO;
  334. /* Chip ID*/
  335. typedef enum _HALMAC_CHIP_ID {
  336. HALMAC_CHIP_ID_8822B = 0,
  337. HALMAC_CHIP_ID_8821C = 1,
  338. HALMAC_CHIP_ID_8814B = 2,
  339. HALMAC_CHIP_ID_8197F = 3,
  340. HALMAC_CHIP_ID_UNDEFINE = 0x7F,
  341. } HALMAC_CHIP_ID;
  342. typedef enum _HALMAC_CHIP_ID_HW_DEF {
  343. HALMAC_CHIP_ID_HW_DEF_8723A = 0x01,
  344. HALMAC_CHIP_ID_HW_DEF_8188E = 0x02,
  345. HALMAC_CHIP_ID_HW_DEF_8881A = 0x03,
  346. HALMAC_CHIP_ID_HW_DEF_8812A = 0x04,
  347. HALMAC_CHIP_ID_HW_DEF_8821A = 0x05,
  348. HALMAC_CHIP_ID_HW_DEF_8723B = 0x06,
  349. HALMAC_CHIP_ID_HW_DEF_8192E = 0x07,
  350. HALMAC_CHIP_ID_HW_DEF_8814A = 0x08,
  351. HALMAC_CHIP_ID_HW_DEF_8821C = 0x09,
  352. HALMAC_CHIP_ID_HW_DEF_8822B = 0x0A,
  353. HALMAC_CHIP_ID_HW_DEF_8703B = 0x0B,
  354. HALMAC_CHIP_ID_HW_DEF_8188F = 0x0C,
  355. HALMAC_CHIP_ID_HW_DEF_8192F = 0x0D,
  356. HALMAC_CHIP_ID_HW_DEF_8197F = 0x0E,
  357. HALMAC_CHIP_ID_HW_DEF_8723D = 0x0F,
  358. HALMAC_CHIP_ID_HW_DEF_8814B = 0x10,
  359. HALMAC_CHIP_ID_HW_DEF_UNDEFINE = 0x7F,
  360. HALMAC_CHIP_ID_HW_DEF_PS = 0xEA,
  361. } HALMAC_CHIP_ID_HW_DEF;
  362. /* Chip Version*/
  363. typedef enum _HALMAC_CHIP_VER {
  364. HALMAC_CHIP_VER_A_CUT = 0x00,
  365. HALMAC_CHIP_VER_B_CUT = 0x01,
  366. HALMAC_CHIP_VER_C_CUT = 0x02,
  367. HALMAC_CHIP_VER_D_CUT = 0x03,
  368. HALMAC_CHIP_VER_E_CUT = 0x04,
  369. HALMAC_CHIP_VER_F_CUT = 0x05,
  370. HALMAC_CHIP_VER_TEST = 0xFF,
  371. HALMAC_CHIP_VER_UNDEFINE = 0x7FFF,
  372. } HALMAC_CHIP_VER;
  373. /* Network type select */
  374. typedef enum _HALMAC_NETWORK_TYPE_SELECT {
  375. HALMAC_NETWORK_NO_LINK = 0,
  376. HALMAC_NETWORK_ADHOC = 1,
  377. HALMAC_NETWORK_INFRASTRUCTURE = 2,
  378. HALMAC_NETWORK_AP = 3,
  379. HALMAC_NETWORK_UNDEFINE = 0x7F,
  380. } HALMAC_NETWORK_TYPE_SELECT;
  381. /* Transfer mode select */
  382. typedef enum _HALMAC_TRNSFER_MODE_SELECT {
  383. HALMAC_TRNSFER_NORMAL = 0x0,
  384. HALMAC_TRNSFER_LOOPBACK_DIRECT = 0xB,
  385. HALMAC_TRNSFER_LOOPBACK_DELAY = 0x3,
  386. HALMAC_TRNSFER_UNDEFINE = 0x7F,
  387. } HALMAC_TRNSFER_MODE_SELECT;
  388. /* Queue select */
  389. typedef enum _HALMAC_DMA_MAPPING {
  390. HALMAC_DMA_MAPPING_EXTRA = 0,
  391. HALMAC_DMA_MAPPING_LOW = 1,
  392. HALMAC_DMA_MAPPING_NORMAL = 2,
  393. HALMAC_DMA_MAPPING_HIGH = 3,
  394. HALMAC_DMA_MAPPING_UNDEFINE = 0x7F,
  395. } HALMAC_DMA_MAPPING;
  396. #define HALMAC_MAP2_HQ HALMAC_DMA_MAPPING_HIGH
  397. #define HALMAC_MAP2_NQ HALMAC_DMA_MAPPING_NORMAL
  398. #define HALMAC_MAP2_LQ HALMAC_DMA_MAPPING_LOW
  399. #define HALMAC_MAP2_EXQ HALMAC_DMA_MAPPING_EXTRA
  400. #define HALMAC_MAP2_UNDEF HALMAC_DMA_MAPPING_UNDEFINE
  401. /* TXDESC queue select TID */
  402. typedef enum _HALMAC_TXDESC_QUEUE_TID {
  403. HALMAC_TXDESC_QSEL_TID0 = 0,
  404. HALMAC_TXDESC_QSEL_TID1 = 1,
  405. HALMAC_TXDESC_QSEL_TID2 = 2,
  406. HALMAC_TXDESC_QSEL_TID3 = 3,
  407. HALMAC_TXDESC_QSEL_TID4 = 4,
  408. HALMAC_TXDESC_QSEL_TID5 = 5,
  409. HALMAC_TXDESC_QSEL_TID6 = 6,
  410. HALMAC_TXDESC_QSEL_TID7 = 7,
  411. HALMAC_TXDESC_QSEL_TID8 = 8,
  412. HALMAC_TXDESC_QSEL_TID9 = 9,
  413. HALMAC_TXDESC_QSEL_TIDA = 10,
  414. HALMAC_TXDESC_QSEL_TIDB = 11,
  415. HALMAC_TXDESC_QSEL_TIDC = 12,
  416. HALMAC_TXDESC_QSEL_TIDD = 13,
  417. HALMAC_TXDESC_QSEL_TIDE = 14,
  418. HALMAC_TXDESC_QSEL_TIDF = 15,
  419. HALMAC_TXDESC_QSEL_BEACON = 0x10,
  420. HALMAC_TXDESC_QSEL_HIGH = 0x11,
  421. HALMAC_TXDESC_QSEL_MGT = 0x12,
  422. HALMAC_TXDESC_QSEL_H2C_CMD = 0x13,
  423. HALMAC_TXDESC_QSEL_UNDEFINE = 0x7F,
  424. } HALMAC_TXDESC_QUEUE_TID;
  425. typedef enum _HALMAC_PTCL_QUEUE {
  426. HALMAC_PTCL_QUEUE_VO = 0x0,
  427. HALMAC_PTCL_QUEUE_VI = 0x1,
  428. HALMAC_PTCL_QUEUE_BE = 0x2,
  429. HALMAC_PTCL_QUEUE_BK = 0x3,
  430. HALMAC_PTCL_QUEUE_MG = 0x4,
  431. HALMAC_PTCL_QUEUE_HI = 0x5,
  432. HALMAC_PTCL_QUEUE_NUM = 0x6,
  433. HALMAC_PTCL_QUEUE_UNDEFINE = 0x7F,
  434. } HALMAC_PTCL_QUEUE;
  435. typedef enum {
  436. HALMAC_QUEUE_SELECT_VO = HALMAC_TXDESC_QSEL_TID6,
  437. HALMAC_QUEUE_SELECT_VI = HALMAC_TXDESC_QSEL_TID4,
  438. HALMAC_QUEUE_SELECT_BE = HALMAC_TXDESC_QSEL_TID0,
  439. HALMAC_QUEUE_SELECT_BK = HALMAC_TXDESC_QSEL_TID1,
  440. HALMAC_QUEUE_SELECT_VO_V2 = HALMAC_TXDESC_QSEL_TID7,
  441. HALMAC_QUEUE_SELECT_VI_V2 = HALMAC_TXDESC_QSEL_TID5,
  442. HALMAC_QUEUE_SELECT_BE_V2 = HALMAC_TXDESC_QSEL_TID3,
  443. HALMAC_QUEUE_SELECT_BK_V2 = HALMAC_TXDESC_QSEL_TID2,
  444. HALMAC_QUEUE_SELECT_BCN = HALMAC_TXDESC_QSEL_BEACON,
  445. HALMAC_QUEUE_SELECT_HIGH = HALMAC_TXDESC_QSEL_HIGH,
  446. HALMAC_QUEUE_SELECT_MGNT = HALMAC_TXDESC_QSEL_MGT,
  447. HALMAC_QUEUE_SELECT_CMD = HALMAC_TXDESC_QSEL_H2C_CMD,
  448. HALMAC_QUEUE_SELECT_UNDEFINE = 0x7F,
  449. } HALMAC_QUEUE_SELECT;
  450. /* USB burst size */
  451. typedef enum _HALMAC_USB_BURST_SIZE {
  452. HALMAC_USB_BURST_SIZE_3_0 = 0x0,
  453. HALMAC_USB_BURST_SIZE_2_0_HSPEED = 0x1,
  454. HALMAC_USB_BURST_SIZE_2_0_FSPEED = 0x2,
  455. HALMAC_USB_BURST_SIZE_2_0_OTHERS = 0x3,
  456. HALMAC_USB_BURST_SIZE_UNDEFINE = 0x7F,
  457. } HALMAC_USB_BURST_SIZE;
  458. /* HAL API function parameters*/
  459. typedef enum _HALMAC_INTERFACE {
  460. HALMAC_INTERFACE_PCIE = 0x0,
  461. HALMAC_INTERFACE_USB = 0x1,
  462. HALMAC_INTERFACE_SDIO = 0x2,
  463. HALMAC_INTERFACE_AXI = 0x3,
  464. HALMAC_INTERFACE_UNDEFINE = 0x7F,
  465. } HALMAC_INTERFACE;
  466. typedef enum _HALMAC_RX_AGG_MODE {
  467. HALMAC_RX_AGG_MODE_NONE = 0x0,
  468. HALMAC_RX_AGG_MODE_DMA = 0x1,
  469. HALMAC_RX_AGG_MODE_USB = 0x2,
  470. HALMAC_RX_AGG_MODE_UNDEFINE = 0x7F,
  471. } HALMAC_RX_AGG_MODE;
  472. typedef struct _HALMAC_RXAGG_TH {
  473. u8 drv_define;
  474. u8 timeout;
  475. u8 size;
  476. } HALMAC_RXAGG_TH, *PHALMAC_RXAGG_TH;
  477. typedef struct _HALMAC_RXAGG_CFG {
  478. HALMAC_RX_AGG_MODE mode;
  479. HALMAC_RXAGG_TH threshold;
  480. } HALMAC_RXAGG_CFG, *PHALMAC_RXAGG_CFG;
  481. typedef enum _HALMAC_MAC_POWER {
  482. HALMAC_MAC_POWER_OFF = 0x0,
  483. HALMAC_MAC_POWER_ON = 0x1,
  484. HALMAC_MAC_POWER_UNDEFINE = 0x7F,
  485. } HALMAC_MAC_POWER;
  486. typedef enum _HALMAC_PS_STATE {
  487. HALMAC_PS_STATE_ACT = 0x0,
  488. HALMAC_PS_STATE_LPS = 0x1,
  489. HALMAC_PS_STATE_IPS = 0x2,
  490. HALMAC_PS_STATE_UNDEFINE = 0x7F,
  491. } HALMAC_PS_STATE;
  492. typedef enum _HALMAC_TRX_MODE {
  493. HALMAC_TRX_MODE_NORMAL = 0x0,
  494. HALMAC_TRX_MODE_TRXSHARE = 0x1,
  495. HALMAC_TRX_MODE_WMM = 0x2,
  496. HALMAC_TRX_MODE_P2P = 0x3,
  497. HALMAC_TRX_MODE_LOOPBACK = 0x4,
  498. HALMAC_TRX_MODE_DELAY_LOOPBACK = 0x5,
  499. HALMAC_TRX_MODE_MAX = 0x6,
  500. HALMAC_TRX_MODE_WMM_LINUX = 0x7E,
  501. HALMAC_TRX_MODE_UNDEFINE = 0x7F,
  502. } HALMAC_TRX_MODE;
  503. typedef enum _HALMAC_WIRELESS_MODE {
  504. HALMAC_WIRELESS_MODE_B = 0x0,
  505. HALMAC_WIRELESS_MODE_G = 0x1,
  506. HALMAC_WIRELESS_MODE_N = 0x2,
  507. HALMAC_WIRELESS_MODE_AC = 0x3,
  508. HALMAC_WIRELESS_MODE_UNDEFINE = 0x7F,
  509. } HALMAC_WIRELESS_MODE;
  510. typedef enum _HALMAC_BW {
  511. HALMAC_BW_20 = 0x00,
  512. HALMAC_BW_40 = 0x01,
  513. HALMAC_BW_80 = 0x02,
  514. HALMAC_BW_160 = 0x03,
  515. HALMAC_BW_5 = 0x04,
  516. HALMAC_BW_10 = 0x05,
  517. HALMAC_BW_MAX = 0x06,
  518. HALMAC_BW_UNDEFINE = 0x7F,
  519. } HALMAC_BW;
  520. typedef enum _HALMAC_EFUSE_READ_CFG {
  521. HALMAC_EFUSE_R_AUTO = 0x00,
  522. HALMAC_EFUSE_R_DRV = 0x01,
  523. HALMAC_EFUSE_R_FW = 0x02,
  524. HALMAC_EFUSE_R_UNDEFINE = 0x7F,
  525. } HALMAC_EFUSE_READ_CFG;
  526. typedef enum _HALMAC_DLFW_MEM {
  527. HALMAC_DLFW_MEM_EMEM = 0x00,
  528. HALMAC_DLFW_MEM_UNDEFINE = 0x7F,
  529. } HALMAC_DLFW_MEM;
  530. typedef struct _HALMAC_TX_DESC {
  531. u32 Dword0;
  532. u32 Dword1;
  533. u32 Dword2;
  534. u32 Dword3;
  535. u32 Dword4;
  536. u32 Dword5;
  537. u32 Dword6;
  538. u32 Dword7;
  539. u32 Dword8;
  540. u32 Dword9;
  541. u32 Dword10;
  542. u32 Dword11;
  543. } HALMAC_TX_DESC, *PHALMAC_TX_DESC;
  544. typedef struct _HALMAC_RX_DESC {
  545. u32 Dword0;
  546. u32 Dword1;
  547. u32 Dword2;
  548. u32 Dword3;
  549. u32 Dword4;
  550. u32 Dword5;
  551. } HALMAC_RX_DESC, *PHALMAC_RX_DESC;
  552. typedef struct _HALMAC_FWLPS_OPTION {
  553. u8 mode;
  554. u8 clk_request;
  555. u8 rlbm;
  556. u8 smart_ps;
  557. u8 awake_interval;
  558. u8 all_queue_uapsd;
  559. u8 pwr_state;
  560. u8 low_pwr_rx_beacon;
  561. u8 ant_auto_switch;
  562. u8 ps_allow_bt_high_Priority;
  563. u8 protect_bcn;
  564. u8 silence_period;
  565. u8 fast_bt_connect;
  566. u8 two_antenna_en;
  567. u8 adopt_user_Setting;
  568. u8 drv_bcn_early_shift;
  569. u8 enter_32K;
  570. } HALMAC_FWLPS_OPTION, *PHALMAC_FWLPS_OPTION;
  571. typedef struct _HALMAC_FWIPS_OPTION {
  572. u8 adopt_user_Setting;
  573. } HALMAC_FWIPS_OPTION, *PHALMAC_FWIPS_OPTION;
  574. typedef struct _HALMAC_WOWLAN_OPTION {
  575. u8 adopt_user_Setting;
  576. } HALMAC_WOWLAN_OPTION, *PHALMAC_WOWLAN_OPTION;
  577. typedef struct _HALMAC_BCN_IE_INFO {
  578. u8 func_en;
  579. u8 size_th;
  580. u8 timeout;
  581. u8 ie_bmp[HALMAC_BCN_IE_BMP_SIZE];
  582. } HALMAC_BCN_IE_INFO, *PHALMAC_BCN_IE_INFO;
  583. typedef enum _HALMAC_REG_TYPE {
  584. HALMAC_REG_TYPE_MAC = 0x0,
  585. HALMAC_REG_TYPE_BB = 0x1,
  586. HALMAC_REG_TYPE_RF = 0x2,
  587. HALMAC_REG_TYPE_UNDEFINE = 0x7F,
  588. } HALMAC_REG_TYPE;
  589. typedef enum _HALMAC_PARAMETER_CMD {
  590. /* HALMAC_PARAMETER_CMD_LLT = 0x1, */
  591. /* HALMAC_PARAMETER_CMD_R_EFUSE = 0x2, */
  592. /* HALMAC_PARAMETER_CMD_EFUSE_PATCH = 0x3, */
  593. HALMAC_PARAMETER_CMD_MAC_W8 = 0x4,
  594. HALMAC_PARAMETER_CMD_MAC_W16 = 0x5,
  595. HALMAC_PARAMETER_CMD_MAC_W32 = 0x6,
  596. HALMAC_PARAMETER_CMD_RF_W = 0x7,
  597. HALMAC_PARAMETER_CMD_BB_W8 = 0x8,
  598. HALMAC_PARAMETER_CMD_BB_W16 = 0x9,
  599. HALMAC_PARAMETER_CMD_BB_W32 = 0XA,
  600. HALMAC_PARAMETER_CMD_DELAY_US = 0X10,
  601. HALMAC_PARAMETER_CMD_DELAY_MS = 0X11,
  602. HALMAC_PARAMETER_CMD_END = 0XFF,
  603. } HALMAC_PARAMETER_CMD;
  604. typedef union _HALMAC_PARAMETER_CONTENT {
  605. struct _MAC_REG_W {
  606. u32 value;
  607. u32 msk;
  608. u16 offset;
  609. u8 msk_en;
  610. } MAC_REG_W;
  611. struct _BB_REG_W {
  612. u32 value;
  613. u32 msk;
  614. u16 offset;
  615. u8 msk_en;
  616. } BB_REG_W;
  617. struct _RF_REG_W {
  618. u32 value;
  619. u32 msk;
  620. u8 offset;
  621. u8 msk_en;
  622. u8 rf_path;
  623. } RF_REG_W;
  624. struct _DELAY_TIME {
  625. u32 rsvd1;
  626. u32 rsvd2;
  627. u16 delay_time;
  628. u8 rsvd3;
  629. } DELAY_TIME;
  630. } HALMAC_PARAMETER_CONTENT, *PHALMAC_PARAMETER_CONTENT;
  631. typedef struct _HALMAC_PHY_PARAMETER_INFO {
  632. HALMAC_PARAMETER_CMD cmd_id;
  633. HALMAC_PARAMETER_CONTENT content;
  634. } HALMAC_PHY_PARAMETER_INFO, *PHALMAC_PHY_PARAMETER_INFO;
  635. typedef struct _HALMAC_H2C_INFO {
  636. u16 h2c_seq_num; /* H2C sequence number */
  637. u8 in_use; /* 0 : empty 1 : used */
  638. HALMAC_H2C_RETURN_CODE status;
  639. } HALMAC_H2C_INFO, *PHALMAC_H2C_INFO;
  640. typedef struct _HALMAC_PG_EFUSE_INFO {
  641. u8 *pEfuse_map;
  642. u32 efuse_map_size;
  643. u8 *pEfuse_mask;
  644. u32 efuse_mask_size;
  645. } HALMAC_PG_EFUSE_INFO, *PHALMAC_PG_EFUSE_INFO;
  646. typedef struct _HALMAC_TXAGG_BUFF_INFO {
  647. u8 *pTx_agg_buf;
  648. u8 *pCurr_pkt_buf;
  649. u32 avai_buf_size;
  650. u32 total_pkt_size;
  651. u8 agg_num;
  652. } HALMAC_TXAGG_BUFF_INFO, *PHALMAC_TXAGG_BUFF_INFO;
  653. typedef struct _HALMAC_CONFIG_PARA_INFO {
  654. u32 para_buf_size; /* Parameter buffer size */
  655. u8 *pCfg_para_buf; /* Buffer for config parameter */
  656. u8 *pPara_buf_w; /* Write pointer of the parameter buffer */
  657. u32 para_num; /* Parameter numbers in parameter buffer */
  658. u32 avai_para_buf_size; /* Free size of parameter buffer */
  659. u32 offset_accumulation;
  660. u32 value_accumulation;
  661. HALMAC_DATA_TYPE data_type; /*DataType which is passed to FW*/
  662. u8 datapack_segment; /*DataPack Segment, from segment0...*/
  663. u8 full_fifo_mode; /* Used full tx fifo to save cfg parameter */
  664. } HALMAC_CONFIG_PARA_INFO, *PHALMAC_CONFIG_PARA_INFO;
  665. typedef struct _HALMAC_HW_CONFIG_INFO {
  666. u32 efuse_size; /* Record efuse size */
  667. u32 eeprom_size; /* Record eeprom size */
  668. u32 bt_efuse_size; /* Record BT efuse size */
  669. u32 tx_fifo_size; /* Record tx fifo size */
  670. u32 rx_fifo_size; /* Record rx fifo size */
  671. u8 txdesc_size; /* Record tx desc size */
  672. u8 rxdesc_size; /* Record rx desc size */
  673. u32 page_size; /* Record page size */
  674. u16 tx_align_size;
  675. u8 page_size_2_power;
  676. u8 cam_entry_num; /* Record CAM entry number */
  677. } HALMAC_HW_CONFIG_INFO, *PHALMAC_HW_CONFIG_INFO;
  678. typedef struct _HALMAC_SDIO_FREE_SPACE {
  679. u16 high_queue_number; /* Free space of HIQ */
  680. u16 normal_queue_number; /* Free space of MIDQ */
  681. u16 low_queue_number; /* Free space of LOWQ */
  682. u16 public_queue_number; /* Free space of PUBQ */
  683. u16 extra_queue_number; /* Free space of EXBQ */
  684. u8 ac_oqt_number;
  685. u8 non_ac_oqt_number;
  686. u8 ac_empty;
  687. } HALMAC_SDIO_FREE_SPACE, *PHALMAC_SDIO_FREE_SPACE;
  688. typedef enum _HAL_FIFO_SEL {
  689. HAL_FIFO_SEL_TX,
  690. HAL_FIFO_SEL_RX,
  691. HAL_FIFO_SEL_RSVD_PAGE,
  692. HAL_FIFO_SEL_REPORT,
  693. HAL_FIFO_SEL_LLT,
  694. } HAL_FIFO_SEL;
  695. typedef enum _HALMAC_DRV_INFO {
  696. HALMAC_DRV_INFO_NONE, /* No information is appended in rx_pkt */
  697. HALMAC_DRV_INFO_PHY_STATUS, /* PHY status is appended after rx_desc */
  698. HALMAC_DRV_INFO_PHY_SNIFFER, /* PHY status and sniffer info are appended after rx_desc */
  699. HALMAC_DRV_INFO_PHY_PLCP, /* PHY status and plcp header are appended after rx_desc */
  700. HALMAC_DRV_INFO_UNDEFINE,
  701. } HALMAC_DRV_INFO;
  702. typedef struct _HALMAC_BT_COEX_CMD {
  703. u8 element_id;
  704. u8 op_code;
  705. u8 op_code_ver;
  706. u8 req_num;
  707. u8 data0;
  708. u8 data1;
  709. u8 data2;
  710. u8 data3;
  711. u8 data4;
  712. } HALMAC_BT_COEX_CMD, *PHALMAC_BT_COEX_CMD;
  713. typedef enum _HALMAC_PRI_CH_IDX {
  714. HALMAC_CH_IDX_UNDEFINE = 0,
  715. HALMAC_CH_IDX_1 = 1,
  716. HALMAC_CH_IDX_2 = 2,
  717. HALMAC_CH_IDX_3 = 3,
  718. HALMAC_CH_IDX_4 = 4,
  719. HALMAC_CH_IDX_MAX = 5,
  720. } HALMAC_PRI_CH_IDX;
  721. typedef struct _HALMAC_CH_INFO {
  722. HALMAC_CS_ACTION_ID action_id;
  723. HALMAC_BW bw;
  724. HALMAC_PRI_CH_IDX pri_ch_idx;
  725. u8 channel;
  726. u8 timeout;
  727. u8 extra_info;
  728. } HALMAC_CH_INFO, *PHALMAC_CH_INFO;
  729. typedef struct _HALMAC_CH_EXTRA_INFO {
  730. u8 extra_info;
  731. HALMAC_CS_EXTRA_ACTION_ID extra_action_id;
  732. u8 extra_info_size;
  733. u8 *extra_info_data;
  734. } HALMAC_CH_EXTRA_INFO, *PHALMAC_CH_EXTRA_INFO;
  735. typedef enum _HALMAC_CS_PERIODIC_OPTION {
  736. HALMAC_CS_PERIODIC_NONE,
  737. HALMAC_CS_PERIODIC_NORMAL,
  738. HALMAC_CS_PERIODIC_2_PHASE,
  739. HALMAC_CS_PERIODIC_SEAMLESS,
  740. } HALMAC_CS_PERIODIC_OPTION;
  741. typedef struct _HALMAC_CH_SWITCH_OPTION {
  742. HALMAC_BW dest_bw;
  743. HALMAC_CS_PERIODIC_OPTION periodic_option;
  744. HALMAC_PRI_CH_IDX dest_pri_ch_idx;
  745. /* u32 tsf_high; */
  746. u32 tsf_low;
  747. u8 switch_en;
  748. u8 dest_ch_en;
  749. u8 absolute_time_en;
  750. u8 dest_ch;
  751. u8 normal_period;
  752. u8 normal_cycle;
  753. u8 phase_2_period;
  754. } HALMAC_CH_SWITCH_OPTION, *PHALMAC_CH_SWITCH_OPTION;
  755. typedef struct _HALMAC_FW_BUILD_TIME {
  756. u16 year;
  757. u8 month;
  758. u8 date;
  759. u8 hour;
  760. u8 min;
  761. } HALMAC_FW_BUILD_TIME, *PHALMAC_FW_BUILD_TIME;
  762. typedef struct _HALMAC_FW_VERSION {
  763. u16 version;
  764. u8 sub_version;
  765. u8 sub_index;
  766. u16 h2c_version;
  767. HALMAC_FW_BUILD_TIME build_time;
  768. } HALMAC_FW_VERSION, *PHALMAC_FW_VERSION;
  769. typedef enum _HALMAC_RF_TYPE {
  770. HALMAC_RF_1T2R = 0,
  771. HALMAC_RF_2T4R = 1,
  772. HALMAC_RF_2T2R = 2,
  773. HALMAC_RF_2T3R = 3,
  774. HALMAC_RF_1T1R = 4,
  775. HALMAC_RF_2T2R_GREEN = 5,
  776. HALMAC_RF_3T3R = 6,
  777. HALMAC_RF_3T4R = 7,
  778. HALMAC_RF_4T4R = 8,
  779. HALMAC_RF_MAX_TYPE = 0xF,
  780. } HALMAC_RF_TYPE;
  781. typedef struct _HALMAC_GENERAL_INFO {
  782. u8 rfe_type;
  783. HALMAC_RF_TYPE rf_type;
  784. } HALMAC_GENERAL_INFO, *PHALMAC_GENERAL_INFO;
  785. typedef struct _HALMAC_PWR_TRACKING_PARA {
  786. u8 enable;
  787. u8 tx_pwr_index;
  788. u8 pwr_tracking_offset_value;
  789. u8 tssi_value;
  790. } HALMAC_PWR_TRACKING_PARA, *PHALMAC_PWR_TRACKING_PARA;
  791. typedef struct _HALMAC_PWR_TRACKING_OPTION {
  792. u8 type;
  793. u8 bbswing_index;
  794. HALMAC_PWR_TRACKING_PARA pwr_tracking_para[4]; /* pathA, pathB, pathC, pathD */
  795. } HALMAC_PWR_TRACKING_OPTION, *PHALMAC_PWR_TRACKING_OPTION;
  796. typedef struct _HALMAC_NLO_CFG {
  797. u8 num_of_ssid;
  798. u8 num_of_hidden_ap;
  799. u8 rsvd[2];
  800. u32 pattern_check;
  801. u32 rsvd1;
  802. u32 rsvd2;
  803. u8 ssid_len[HALMAC_SUPPORT_NLO_NUM];
  804. u8 ChiperType[HALMAC_SUPPORT_NLO_NUM];
  805. u8 rsvd3[HALMAC_SUPPORT_NLO_NUM];
  806. u8 loc_probeReq[HALMAC_SUPPORT_PROBE_REQ_NUM];
  807. u8 rsvd4[56];
  808. u8 ssid[HALMAC_SUPPORT_NLO_NUM][HALMAC_MAX_SSID_LEN];
  809. } HALMAC_NLO_CFG, *PHALMAC_NLO_CFG;
  810. typedef enum _HALMAC_DATA_RATE {
  811. HALMAC_CCK1,
  812. HALMAC_CCK2,
  813. HALMAC_CCK5_5,
  814. HALMAC_CCK11,
  815. HALMAC_OFDM6,
  816. HALMAC_OFDM9,
  817. HALMAC_OFDM12,
  818. HALMAC_OFDM18,
  819. HALMAC_OFDM24,
  820. HALMAC_OFDM36,
  821. HALMAC_OFDM48,
  822. HALMAC_OFDM54,
  823. HALMAC_MCS0,
  824. HALMAC_MCS1,
  825. HALMAC_MCS2,
  826. HALMAC_MCS3,
  827. HALMAC_MCS4,
  828. HALMAC_MCS5,
  829. HALMAC_MCS6,
  830. HALMAC_MCS7,
  831. HALMAC_MCS8,
  832. HALMAC_MCS9,
  833. HALMAC_MCS10,
  834. HALMAC_MCS11,
  835. HALMAC_MCS12,
  836. HALMAC_MCS13,
  837. HALMAC_MCS14,
  838. HALMAC_MCS15,
  839. HALMAC_MCS16,
  840. HALMAC_MCS17,
  841. HALMAC_MCS18,
  842. HALMAC_MCS19,
  843. HALMAC_MCS20,
  844. HALMAC_MCS21,
  845. HALMAC_MCS22,
  846. HALMAC_MCS23,
  847. HALMAC_MCS24,
  848. HALMAC_MCS25,
  849. HALMAC_MCS26,
  850. HALMAC_MCS27,
  851. HALMAC_MCS28,
  852. HALMAC_MCS29,
  853. HALMAC_MCS30,
  854. HALMAC_MCS31,
  855. HALMAC_VHT_NSS1_MCS0,
  856. HALMAC_VHT_NSS1_MCS1,
  857. HALMAC_VHT_NSS1_MCS2,
  858. HALMAC_VHT_NSS1_MCS3,
  859. HALMAC_VHT_NSS1_MCS4,
  860. HALMAC_VHT_NSS1_MCS5,
  861. HALMAC_VHT_NSS1_MCS6,
  862. HALMAC_VHT_NSS1_MCS7,
  863. HALMAC_VHT_NSS1_MCS8,
  864. HALMAC_VHT_NSS1_MCS9,
  865. HALMAC_VHT_NSS2_MCS0,
  866. HALMAC_VHT_NSS2_MCS1,
  867. HALMAC_VHT_NSS2_MCS2,
  868. HALMAC_VHT_NSS2_MCS3,
  869. HALMAC_VHT_NSS2_MCS4,
  870. HALMAC_VHT_NSS2_MCS5,
  871. HALMAC_VHT_NSS2_MCS6,
  872. HALMAC_VHT_NSS2_MCS7,
  873. HALMAC_VHT_NSS2_MCS8,
  874. HALMAC_VHT_NSS2_MCS9,
  875. HALMAC_VHT_NSS3_MCS0,
  876. HALMAC_VHT_NSS3_MCS1,
  877. HALMAC_VHT_NSS3_MCS2,
  878. HALMAC_VHT_NSS3_MCS3,
  879. HALMAC_VHT_NSS3_MCS4,
  880. HALMAC_VHT_NSS3_MCS5,
  881. HALMAC_VHT_NSS3_MCS6,
  882. HALMAC_VHT_NSS3_MCS7,
  883. HALMAC_VHT_NSS3_MCS8,
  884. HALMAC_VHT_NSS3_MCS9,
  885. HALMAC_VHT_NSS4_MCS0,
  886. HALMAC_VHT_NSS4_MCS1,
  887. HALMAC_VHT_NSS4_MCS2,
  888. HALMAC_VHT_NSS4_MCS3,
  889. HALMAC_VHT_NSS4_MCS4,
  890. HALMAC_VHT_NSS4_MCS5,
  891. HALMAC_VHT_NSS4_MCS6,
  892. HALMAC_VHT_NSS4_MCS7,
  893. HALMAC_VHT_NSS4_MCS8,
  894. HALMAC_VHT_NSS4_MCS9
  895. } HALMAC_DATA_RATE;
  896. typedef enum _HALMAC_RF_PATH {
  897. HALMAC_RF_PATH_A,
  898. HALMAC_RF_PATH_B,
  899. HALMAC_RF_PATH_C,
  900. HALMAC_RF_PATH_D
  901. } HALMAC_RF_PATH;
  902. typedef enum _HALMAC_SND_PKT_SEL {
  903. HALMAC_UNI_NDPA,
  904. HALMAC_BMC_NDPA,
  905. HALMAC_NON_FINAL_BFRPRPOLL,
  906. HALMAC_FINAL_BFRPTPOLL,
  907. } HALMAC_SND_PKT_SEL;
  908. typedef enum _HAL_SECURITY_TYPE {
  909. HAL_SECURITY_TYPE_NONE = 0,
  910. HAL_SECURITY_TYPE_WEP40 = 1,
  911. HAL_SECURITY_TYPE_WEP104 = 2,
  912. HAL_SECURITY_TYPE_TKIP = 3,
  913. HAL_SECURITY_TYPE_AES128 = 4,
  914. HAL_SECURITY_TYPE_WAPI = 5,
  915. HAL_SECURITY_TYPE_AES256 = 6,
  916. HAL_SECURITY_TYPE_GCMP128 = 7,
  917. HAL_SECURITY_TYPE_GCMP256 = 8,
  918. HAL_SECURITY_TYPE_GCMSMS4 = 9,
  919. HAL_SECURITY_TYPE_BIP = 10,
  920. HAL_SECURITY_TYPE_UNDEFINE = 0x7F,
  921. } HAL_SECURITY_TYPE;
  922. typedef enum _HAL_INTF_PHY {
  923. HAL_INTF_PHY_USB2 = 0,
  924. HAL_INTF_PHY_USB3 = 1,
  925. HAL_INTF_PHY_PCIE_GEN1 = 2,
  926. HAL_INTF_PHY_PCIE_GEN2 = 3,
  927. HAL_INTF_PHY_UNDEFINE = 0x7F,
  928. } HAL_INTF_PHY;
  929. #if HALMAC_PLATFORM_TESTPROGRAM
  930. typedef enum _HALMAC_PWR_SEQ_ID {
  931. HALMAC_PWR_SEQ_ENABLE,
  932. HALMAC_PWR_SEQ_DISABLE,
  933. HALMAC_PWR_SEQ_ENTER_LPS,
  934. HALMAC_PWR_SEQ_ENTER_DEEP_LPS,
  935. HALMAC_PWR_SEQ_LEAVE_LPS,
  936. HALMAC_PWR_SEQ_MAX
  937. } HALMAC_PWR_SEQ_ID;
  938. typedef enum _HAL_TX_ID {
  939. HAL_TX_ID_VO,
  940. HAL_TX_ID_VI,
  941. HAL_TX_ID_BE,
  942. HAL_TX_ID_BK,
  943. HAL_TX_ID_BCN,
  944. HAL_TX_ID_H2C,
  945. HAL_TX_ID_MAX
  946. } HAL_TX_ID;
  947. typedef enum _HAL_QSEL {
  948. HAL_QSEL_TID0,
  949. HAL_QSEL_TID1,
  950. HAL_QSEL_TID2,
  951. HAL_QSEL_TID3,
  952. HAL_QSEL_TID4,
  953. HAL_QSEL_TID5,
  954. HAL_QSEL_TID6,
  955. HAL_QSEL_TID7,
  956. HAL_QSEL_BEACON = 0x10,
  957. HAL_QSEL_HIGH = 0x11,
  958. HAL_QSEL_MGT = 0x12,
  959. HAL_QSEL_CMD = 0x13
  960. } HAL_QSEL;
  961. typedef enum _HAL_RTS_MODE {
  962. HAL_RTS_MODE_NONE,
  963. HAL_RTS_MODE_CTS2SELF,
  964. HAL_RTS_MODE_RTS,
  965. } HAL_RTS_MODE;
  966. typedef enum _HAL_DATA_BW {
  967. HAL_DATA_BW_20M,
  968. HAL_DATA_BW_40M,
  969. HAL_DATA_BW_80M,
  970. HAL_DATA_BW_160M,
  971. } HAL_DATA_BW;
  972. typedef enum _HAL_RTS_SHORT {
  973. HAL_RTS_SHORT_SHORT,
  974. HAL_RTS_SHORT_LONG,
  975. } HAL_RTS_SHORT;
  976. typedef enum _HAL_SECURITY_METHOD {
  977. HAL_SECURITY_METHOD_HW = 0,
  978. HAL_SECURITY_METHOD_SW = 1,
  979. HAL_SECURITY_METHOD_UNDEFINE = 0x7F,
  980. } HAL_SECURITY_METHOD;
  981. typedef struct _HAL_TXDESC_INFO {
  982. u32 txdesc_length;
  983. u32 packet_size; /* payload + wlheader */
  984. HAL_TX_ID tx_id;
  985. HALMAC_DATA_RATE data_rate;
  986. HAL_RTS_MODE rts_mode;
  987. HAL_DATA_BW data_bw;
  988. HAL_RTS_SHORT rts_short;
  989. HAL_SECURITY_TYPE security_type;
  990. HAL_SECURITY_METHOD encryption_method;
  991. u16 seq_num;
  992. u8 retry_limit_en;
  993. u8 retry_limit_number;
  994. u8 rts_threshold;
  995. u8 qos;
  996. u8 ht;
  997. u8 ampdu;
  998. u8 early_mode;
  999. u8 bm_cast;
  1000. u8 data_short;
  1001. u8 mac_id;
  1002. } HAL_TXDESC_INFO, *PHAL_TXDESC_INFO;
  1003. typedef struct _HAL_RXDESC_INFO {
  1004. u8 c2h;
  1005. u8 *pWifi_pkt;
  1006. u32 packet_size;
  1007. u8 crc_err;
  1008. u8 icv_err;
  1009. } HAL_RXDESC_INFO, *PHAL_RXDESC_INFO;
  1010. typedef struct _HAL_TXDESC_PARSER {
  1011. u8 txdesc_len;
  1012. u16 txpkt_size;
  1013. } HAL_TXDESC_PARSER, *PHAL_TXDESC_PARSER;
  1014. typedef struct _HAL_RXDESC_PARSER {
  1015. u32 driver_info_size;
  1016. u16 rxpkt_size;
  1017. u8 rxdesc_len;
  1018. u8 c2h;
  1019. u8 crc_err;
  1020. u8 icv_err;
  1021. } HAL_RXDESC_PARSER, *PHAL_RXDESC_PARSER;
  1022. typedef struct _HAL_RF_REG_INFO {
  1023. HALMAC_RF_PATH rf_path;
  1024. u32 offset;
  1025. u32 bit_mask;
  1026. u32 data;
  1027. } HAL_RF_REG_INFO, *PHAL_RF_REG_INFO;
  1028. typedef struct _HALMAC_SDIO_HIMR_INFO {
  1029. u8 rx_request;
  1030. u8 aval_msk;
  1031. } HALMAC_SDIO_HIMR_INFO, *PHALMAC_SDIO_HIMR_INFO;
  1032. typedef struct _HALMAC_BEACON_INFO {
  1033. } HALMAC_BEACON_INFO, *PHALMAC_BEACON_INFO;
  1034. typedef struct _HALMAC_MGNT_INFO {
  1035. u8 mu_enable;
  1036. u8 bip;
  1037. u8 unicast;
  1038. u32 packet_size;
  1039. } HALMAC_MGNT_INFO, *PHALMAC_MGNT_INFO;
  1040. typedef struct _HALMAC_CTRL_INFO {
  1041. u8 snd_enable;
  1042. HALMAC_SND_PKT_SEL snd_pkt_sel; /* 0:unicast ndpa 1:broadcast ndpa 3:non-final BF Rpt Poll 4:final BF Rpt Poll */
  1043. u8 *pPacket_desc;
  1044. u32 desc_size;
  1045. u16 seq_num;
  1046. u8 bw;
  1047. u16 paid;
  1048. } HALMAC_CTRL_INFO, *PHALMAC_CTRL_INFO;
  1049. typedef struct _HALMAC_HIGH_QUEUE_INFO {
  1050. u8 *pPacket_desc;
  1051. u32 desc_size;
  1052. } HALMAC_HIGH_QUEUE_INFO, *PHALMAC_HIGH_QUEUE_INFO;
  1053. typedef struct _HALMAC_CHIP_TYPE {
  1054. HALMAC_CHIP_ID chip_id;
  1055. HALMAC_CHIP_VER chip_version;
  1056. } HALMAC_CHIP_TYPE, *PHALMAC_CHIP_TYPE;
  1057. #endif /* End of test program */
  1058. typedef enum _HALMAC_DBG_MSG_INFO {
  1059. HALMAC_DBG_ALWAYS,
  1060. HALMAC_DBG_ERR,
  1061. HALMAC_DBG_WARN,
  1062. HALMAC_DBG_TRACE,
  1063. } HALMAC_DBG_MSG_INFO;
  1064. typedef enum _HALMAC_DBG_MSG_TYPE {
  1065. HALMAC_MSG_INIT,
  1066. HALMAC_MSG_EFUSE,
  1067. HALMAC_MSG_FW,
  1068. HALMAC_MSG_H2C,
  1069. HALMAC_MSG_PWR,
  1070. HALMAC_MSG_SND,
  1071. HALMAC_MSG_COMMON,
  1072. HALMAC_MSG_DBI,
  1073. HALMAC_MSG_MDIO,
  1074. HALMAC_MSG_USB
  1075. } HALMAC_DBG_MSG_TYPE;
  1076. typedef enum _HALMAC_CMD_PROCESS_STATUS {
  1077. HALMAC_CMD_PROCESS_IDLE = 0x01, /* Init status */
  1078. HALMAC_CMD_PROCESS_SENDING = 0x02, /* Wait ack */
  1079. HALMAC_CMD_PROCESS_RCVD = 0x03, /* Rcvd ack */
  1080. HALMAC_CMD_PROCESS_DONE = 0x04, /* Event done */
  1081. HALMAC_CMD_PROCESS_ERROR = 0x05, /* Return code error */
  1082. HALMAC_CMD_PROCESS_UNDEFINE = 0x7F,
  1083. } HALMAC_CMD_PROCESS_STATUS;
  1084. typedef enum _HALMAC_FEATURE_ID {
  1085. HALMAC_FEATURE_CFG_PARA, /* Support */
  1086. HALMAC_FEATURE_DUMP_PHYSICAL_EFUSE, /* Support */
  1087. HALMAC_FEATURE_DUMP_LOGICAL_EFUSE, /* Support */
  1088. HALMAC_FEATURE_UPDATE_PACKET, /* Support */
  1089. HALMAC_FEATURE_UPDATE_DATAPACK,
  1090. HALMAC_FEATURE_RUN_DATAPACK,
  1091. HALMAC_FEATURE_CHANNEL_SWITCH, /* Support */
  1092. HALMAC_FEATURE_IQK, /* Support */
  1093. HALMAC_FEATURE_POWER_TRACKING, /* Support */
  1094. HALMAC_FEATURE_PSD, /* Support */
  1095. HALMAC_FEATURE_ALL, /* Support, only for reset */
  1096. } HALMAC_FEATURE_ID;
  1097. typedef enum _HALMAC_DRV_RSVD_PG_NUM {
  1098. HALMAC_RSVD_PG_NUM16, /* 2K */
  1099. HALMAC_RSVD_PG_NUM24, /* 3K */
  1100. HALMAC_RSVD_PG_NUM32, /* 4K */
  1101. } HALMAC_DRV_RSVD_PG_NUM;
  1102. typedef enum _HALMAC_PCIE_CFG {
  1103. HALMAC_PCIE_GEN1,
  1104. HALMAC_PCIE_GEN2,
  1105. HALMAC_PCIE_CFG_UNDEFINE,
  1106. } HALMAC_PCIE_CFG;
  1107. typedef enum _HALMAC_PORTID {
  1108. HALMAC_PORTID0 = 0,
  1109. HALMAC_PORTID1 = 1,
  1110. HALMAC_PORTID2 = 2,
  1111. HALMAC_PORTID3 = 3,
  1112. HALMAC_PORTID4 = 4,
  1113. HALMAC_PORTIDMAX
  1114. } HALMAC_PORTID;
  1115. typedef struct _HALMAC_P2PPS {
  1116. /*DW0*/
  1117. u8 offload_en:1;
  1118. u8 role:1;
  1119. u8 ctwindow_en:1;
  1120. u8 noa_en:1;
  1121. u8 noa_sel:1;
  1122. u8 all_sta_sleep:1;
  1123. u8 discovery:1;
  1124. u8 rsvd2:1;
  1125. u8 p2p_port_id;
  1126. u8 p2p_group;
  1127. u8 p2p_macid;
  1128. /*DW1*/
  1129. u8 ctwindow_length;
  1130. u8 rsvd3;
  1131. u8 rsvd4;
  1132. u8 rsvd5;
  1133. /*DW2*/
  1134. u32 noa_duration_para;
  1135. /*DW3*/
  1136. u32 noa_interval_para;
  1137. /*DW4*/
  1138. u32 noa_start_time_para;
  1139. /*DW5*/
  1140. u32 noa_count_para;
  1141. } HALMAC_P2PPS, *PHALMAC_P2PPS;
  1142. /* Platform API setting */
  1143. typedef struct _HALMAC_PLATFORM_API {
  1144. /* R/W register */
  1145. u8 (*SDIO_CMD52_READ)(VOID *pDriver_adapter, u32 offset);
  1146. u8 (*SDIO_CMD53_READ_8)(VOID *pDriver_adapter, u32 offset);
  1147. u16 (*SDIO_CMD53_READ_16)(VOID *pDriver_adapter, u32 offset);
  1148. u32 (*SDIO_CMD53_READ_32)(VOID *pDriver_adapter, u32 offset);
  1149. u8 (*SDIO_CMD53_READ_N)(VOID *pDriver_adapter, u32 offset, u32 size, u8 *data);
  1150. VOID (*SDIO_CMD52_WRITE)(VOID *pDriver_adapter, u32 offset, u8 value);
  1151. VOID (*SDIO_CMD53_WRITE_8)(VOID *pDriver_adapter, u32 offset, u8 value);
  1152. VOID (*SDIO_CMD53_WRITE_16)(VOID *pDriver_adapter, u32 offset, u16 value);
  1153. VOID (*SDIO_CMD53_WRITE_32)(VOID *pDriver_adapter, u32 offset, u32 value);
  1154. u8 (*REG_READ_8)(VOID *pDriver_adapter, u32 offset);
  1155. u16 (*REG_READ_16)(VOID *pDriver_adapter, u32 offset);
  1156. u32 (*REG_READ_32)(VOID *pDriver_adapter, u32 offset);
  1157. VOID (*REG_WRITE_8)(VOID *pDriver_adapter, u32 offset, u8 value);
  1158. VOID (*REG_WRITE_16)(VOID *pDriver_adapter, u32 offset, u16 value);
  1159. VOID (*REG_WRITE_32)(VOID *pDriver_adapter, u32 offset, u32 value);
  1160. /* send pBuf to reserved page, the tx_desc is not included in pBuf, driver need to fill tx_desc with qsel = bcn */
  1161. u8 (*SEND_RSVD_PAGE)(VOID *pDriver_adapter, u8 *pBuf, u32 size);
  1162. /* send pBuf to h2c queue, the tx_desc is not included in pBuf, driver need to fill tx_desc with qsel = h2c */
  1163. u8 (*SEND_H2C_PKT)(VOID *pDriver_adapter, u8 *pBuf, u32 size);
  1164. u8 (*RTL_FREE)(VOID *pDriver_adapter, VOID *pBuf, u32 size);
  1165. VOID* (*RTL_MALLOC)(VOID *pDriver_adapter, u32 size);
  1166. u8 (*RTL_MEMCPY)(VOID *pDriver_adapter, VOID *dest, VOID *src, u32 size);
  1167. u8 (*RTL_MEMSET)(VOID *pDriver_adapter, VOID *pAddress, u8 value, u32 size);
  1168. VOID (*RTL_DELAY_US)(VOID *pDriver_adapter, u32 us);
  1169. u8 (*MUTEX_INIT)(VOID *pDriver_adapter, HALMAC_MUTEX *pMutex);
  1170. u8 (*MUTEX_DEINIT)(VOID *pDriver_adapter, HALMAC_MUTEX *pMutex);
  1171. u8 (*MUTEX_LOCK)(VOID *pDriver_adapter, HALMAC_MUTEX *pMutex);
  1172. u8 (*MUTEX_UNLOCK)(VOID *pDriver_adapter, HALMAC_MUTEX *pMutex);
  1173. u8 (*MSG_PRINT)(VOID *pDriver_adapter, u32 msg_type, u8 msg_level, s8 *fmt, ...);
  1174. u8 (*BUFF_PRINT)(VOID *pDriver_adapter, u32 msg_type, u8 msg_level, s8 *buf, u32 size);
  1175. u8 (*EVENT_INDICATION)(VOID *pDriver_adapter, HALMAC_FEATURE_ID feature_id, HALMAC_CMD_PROCESS_STATUS process_status, u8 *buf, u32 size);
  1176. #if HALMAC_PLATFORM_TESTPROGRAM
  1177. VOID* (*PCI_ALLOC_COMM_BUFF)(VOID *pDriver_adapter, u32 size, u32 *physical_addr, u8 cache_en);
  1178. VOID (*PCI_FREE_COMM_BUFF)(VOID *pDriver_adapter, u32 size, u32 physical_addr, VOID *virtual_addr, u8 cache_en);
  1179. u8 (*WRITE_DATA_SDIO_ADDR)(VOID *pDriver_adapter, u8 *pBuf, u32 size, u32 addr);
  1180. u8 (*WRITE_DATA_USB_BULKOUT_ID)(VOID *pDriver_adapter, u8 *pBuf, u32 size, u8 bulkout_id);
  1181. u8 (*WRITE_DATA_PCIE_QUEUE)(VOID *pDriver_adapter, u8 *pBuf, u32 size, u8 queue);
  1182. u8 (*READ_DATA)(VOID *pDriver_adapter, u8 *pBuf, u32 *read_length);
  1183. #endif
  1184. } HALMAC_PLATFORM_API, *PHALMAC_PLATFORM_API;
  1185. /*1->Little endian 0->Big endian*/
  1186. #if HALMAC_SYSTEM_ENDIAN
  1187. #else
  1188. #endif
  1189. /* User can not use members in Address_L_H, use Address[6] is mandatory */
  1190. typedef union _HALMAC_WLAN_ADDR {
  1191. u8 Address[6]; /* WLAN address (MACID, BSSID, Brodcast ID). Address[0] is lowest, Address[5] is highest*/
  1192. struct {
  1193. union {
  1194. u32 Address_Low;
  1195. u8 Address_Low_B[4];
  1196. };
  1197. union {
  1198. u16 Address_High;
  1199. u8 Address_High_B[2];
  1200. };
  1201. } Address_L_H;
  1202. } HALMAC_WLAN_ADDR, *PHALMAC_WLAN_ADDR;
  1203. typedef enum _HALMAC_SND_ROLE {
  1204. HAL_BFER = 0,
  1205. HAL_BFEE = 1,
  1206. } HALMAC_SND_ROLE;
  1207. typedef enum _HALMAC_CSI_SEG_LEN {
  1208. HAL_CSI_SEG_4K = 0,
  1209. HAL_CSI_SEG_8K = 1,
  1210. HAL_CSI_SEG_11K = 2,
  1211. } HALMAC_CSI_SEG_LEN;
  1212. typedef struct _HALMAC_CFG_MUMIMO_PARA {
  1213. HALMAC_SND_ROLE role;
  1214. u8 sounding_sts[6];
  1215. u16 grouping_bitmap;
  1216. u8 mu_tx_en;
  1217. u32 given_gid_tab[2];
  1218. u32 given_user_pos[4];
  1219. } HALMAC_CFG_MUMIMO_PARA, *PHALMAC_CFG_MUMIMO_PARA;
  1220. typedef struct _HALMAC_SU_BFER_INIT_PARA {
  1221. u8 userid;
  1222. u16 paid;
  1223. u16 csi_para;
  1224. HALMAC_WLAN_ADDR bfer_address;
  1225. } HALMAC_SU_BFER_INIT_PARA, *PHALMAC_SU_BFER_INIT_PARA;
  1226. typedef struct _HALMAC_MU_BFEE_INIT_PARA {
  1227. u8 userid;
  1228. u16 paid;
  1229. u32 user_position_l;
  1230. u32 user_position_h;
  1231. } HALMAC_MU_BFEE_INIT_PARA, *PHALMAC_MU_BFEE_INIT_PARA;
  1232. typedef struct _HALMAC_MU_BFER_INIT_PARA {
  1233. u16 paid;
  1234. u16 csi_para;
  1235. u16 my_aid;
  1236. HALMAC_CSI_SEG_LEN csi_length_sel;
  1237. HALMAC_WLAN_ADDR bfer_address;
  1238. } HALMAC_MU_BFER_INIT_PARA, *PHALMAC_MU_BFER_INIT_PARA;
  1239. typedef struct _HALMAC_SND_INFO {
  1240. u16 paid;
  1241. u8 userid;
  1242. HALMAC_DATA_RATE ndpa_rate;
  1243. u16 csi_para;
  1244. u16 my_aid;
  1245. HALMAC_DATA_RATE csi_rate;
  1246. HALMAC_CSI_SEG_LEN csi_length_sel;
  1247. HALMAC_SND_ROLE role;
  1248. HALMAC_WLAN_ADDR bfer_address;
  1249. HALMAC_BW bw;
  1250. u8 txbf_en;
  1251. PHALMAC_SU_BFER_INIT_PARA pSu_bfer_init;
  1252. PHALMAC_MU_BFER_INIT_PARA pMu_bfer_init;
  1253. PHALMAC_MU_BFEE_INIT_PARA pMu_bfee_init;
  1254. } HALMAC_SND_INFO, *PHALMAC_SND_INFO;
  1255. typedef struct _HALMAC_CS_INFO {
  1256. u8 *ch_info_buf;
  1257. u8 *ch_info_buf_w;
  1258. u8 extra_info_en;
  1259. u32 buf_size; /* buffer size */
  1260. u32 avai_buf_size; /* buffer size */
  1261. u32 total_size;
  1262. u32 accu_timeout;
  1263. u32 ch_num;
  1264. } HALMAC_CS_INFO, *PHALMAC_CS_INFO;
  1265. typedef struct _HALMAC_RESTORE_INFO {
  1266. u32 mac_register;
  1267. u32 value;
  1268. u8 length;
  1269. } HALMAC_RESTORE_INFO, *PHALMAC_RESTORE_INFO;
  1270. typedef struct _HALMAC_EVENT_TRIGGER {
  1271. u32 physical_efuse_map : 1;
  1272. u32 logical_efuse_map : 1;
  1273. u32 rsvd1 : 28;
  1274. } HALMAC_EVENT_TRIGGER, *PHALMAC_EVENT_TRIGGER;
  1275. typedef struct _HALMAC_H2C_HEADER_INFO {
  1276. u16 sub_cmd_id;
  1277. u16 content_size;
  1278. u8 ack;
  1279. } HALMAC_H2C_HEADER_INFO, *PHALMAC_H2C_HEADER_INFO;
  1280. typedef enum _HALMAC_DLFW_STATE {
  1281. HALMAC_DLFW_NONE = 0,
  1282. HALMAC_DLFW_DONE = 1,
  1283. HALMAC_GEN_INFO_SENT = 2,
  1284. HALMAC_DLFW_UNDEFINED = 0x7F,
  1285. } HALMAC_DLFW_STATE;
  1286. typedef enum _HALMAC_EFUSE_CMD_CONSTRUCT_STATE {
  1287. HALMAC_EFUSE_CMD_CONSTRUCT_IDLE = 0,
  1288. HALMAC_EFUSE_CMD_CONSTRUCT_BUSY = 1,
  1289. HALMAC_EFUSE_CMD_CONSTRUCT_H2C_SENT = 2,
  1290. HALMAC_EFUSE_CMD_CONSTRUCT_STATE_NUM = 3,
  1291. HALMAC_EFUSE_CMD_CONSTRUCT_UNDEFINED = 0x7F,
  1292. } HALMAC_EFUSE_CMD_CONSTRUCT_STATE;
  1293. typedef enum _HALMAC_CFG_PARA_CMD_CONSTRUCT_STATE {
  1294. HALMAC_CFG_PARA_CMD_CONSTRUCT_IDLE = 0,
  1295. HALMAC_CFG_PARA_CMD_CONSTRUCT_CONSTRUCTING = 1,
  1296. HALMAC_CFG_PARA_CMD_CONSTRUCT_H2C_SENT = 2,
  1297. HALMAC_CFG_PARA_CMD_CONSTRUCT_NUM = 3,
  1298. HALMAC_CFG_PARA_CMD_CONSTRUCT_UNDEFINED = 0x7F,
  1299. } HALMAC_CFG_PARA_CMD_CONSTRUCT_STATE;
  1300. typedef enum _HALMAC_SCAN_CMD_CONSTRUCT_STATE {
  1301. HALMAC_SCAN_CMD_CONSTRUCT_IDLE = 0,
  1302. HALMAC_SCAN_CMD_CONSTRUCT_BUFFER_CLEARED = 1,
  1303. HALMAC_SCAN_CMD_CONSTRUCT_CONSTRUCTING = 2,
  1304. HALMAC_SCAN_CMD_CONSTRUCT_H2C_SENT = 3,
  1305. HALMAC_SCAN_CMD_CONSTRUCT_STATE_NUM = 4,
  1306. HALMAC_SCAN_CMD_CONSTRUCT_UNDEFINED = 0x7F,
  1307. } HALMAC_SCAN_CMD_CONSTRUCT_STATE;
  1308. typedef enum _HALMAC_API_STATE {
  1309. HALMAC_API_STATE_INIT = 0,
  1310. HALMAC_API_STATE_HALT = 1,
  1311. HALMAC_API_STATE_UNDEFINED = 0x7F,
  1312. } HALMAC_API_STATE;
  1313. typedef struct _HALMAC_EFUSE_STATE_SET {
  1314. HALMAC_EFUSE_CMD_CONSTRUCT_STATE efuse_cmd_construct_state;
  1315. HALMAC_CMD_PROCESS_STATUS process_status;
  1316. u8 fw_return_code;
  1317. u16 seq_num;
  1318. } HALMAC_EFUSE_STATE_SET, *PHALMAC_EFUSE_STATE_SET;
  1319. typedef struct _HALMAC_CFG_PARA_STATE_SET {
  1320. HALMAC_CFG_PARA_CMD_CONSTRUCT_STATE cfg_para_cmd_construct_state;
  1321. HALMAC_CMD_PROCESS_STATUS process_status;
  1322. u8 fw_return_code;
  1323. u16 seq_num;
  1324. } HALMAC_CFG_PARA_STATE_SET, *PHALMAC_CFG_PARA_STATE_SET;
  1325. typedef struct _HALMAC_SCAN_STATE_SET {
  1326. HALMAC_SCAN_CMD_CONSTRUCT_STATE scan_cmd_construct_state;
  1327. HALMAC_CMD_PROCESS_STATUS process_status;
  1328. u8 fw_return_code;
  1329. u16 seq_num;
  1330. } HALMAC_SCAN_STATE_SET, *PHALMAC_SCAN_STATE_SET;
  1331. typedef struct _HALMAC_UPDATE_PACKET_STATE_SET {
  1332. HALMAC_CMD_PROCESS_STATUS process_status;
  1333. u8 fw_return_code;
  1334. u16 seq_num;
  1335. } HALMAC_UPDATE_PACKET_STATE_SET, *PHALMAC_UPDATE_PACKET_STATE_SET;
  1336. typedef struct _HALMAC_IQK_STATE_SET {
  1337. HALMAC_CMD_PROCESS_STATUS process_status;
  1338. u8 fw_return_code;
  1339. u16 seq_num;
  1340. } HALMAC_IQK_STATE_SET, *PHALMAC_IQK_STATE_SET;
  1341. typedef struct _HALMAC_POWER_TRACKING_STATE_SET {
  1342. HALMAC_CMD_PROCESS_STATUS process_status;
  1343. u8 fw_return_code;
  1344. u16 seq_num;
  1345. } HALMAC_POWER_TRACKING_STATE_SET, *PHALMAC_POWER_TRACKING_STATE_SET;
  1346. typedef struct _HALMAC_PSD_STATE_SET {
  1347. HALMAC_CMD_PROCESS_STATUS process_status;
  1348. u16 data_size;
  1349. u16 segment_size;
  1350. u8 *pData;
  1351. u8 fw_return_code;
  1352. u16 seq_num;
  1353. } HALMAC_PSD_STATE_SET, *PHALMAC_PSD_STATE_SET;
  1354. typedef struct _HALMAC_STATE {
  1355. HALMAC_EFUSE_STATE_SET efuse_state_set; /* State machine + cmd process status */
  1356. HALMAC_CFG_PARA_STATE_SET cfg_para_state_set; /* State machine + cmd process status */
  1357. HALMAC_SCAN_STATE_SET scan_state_set; /* State machine + cmd process status */
  1358. HALMAC_UPDATE_PACKET_STATE_SET update_packet_set; /* cmd process status */
  1359. HALMAC_IQK_STATE_SET iqk_set; /* cmd process status */
  1360. HALMAC_POWER_TRACKING_STATE_SET power_tracking_set; /* cmd process status */
  1361. HALMAC_PSD_STATE_SET psd_set; /* cmd process status */
  1362. HALMAC_API_STATE api_state; /* Halmac api state */
  1363. HALMAC_MAC_POWER mac_power; /* 0 : power off, 1 : power on*/
  1364. HALMAC_PS_STATE ps_state; /* power saving state */
  1365. HALMAC_DLFW_STATE dlfw_state; /* download FW state */
  1366. } HALMAC_STATE, *PHALMAC_STATE;
  1367. typedef struct _HALMAC_VER {
  1368. u8 major_ver;
  1369. u8 prototype_ver;
  1370. u8 minor_ver;
  1371. } HALMAC_VER, *PHALMAC_VER;
  1372. typedef enum _HALMAC_API_ID {
  1373. /*stuff, need to be the 1st*/
  1374. HALMAC_API_STUFF = 0x0,
  1375. /*stuff, need to be the 1st*/
  1376. HALMAC_API_MAC_POWER_SWITCH = 0x1,
  1377. HALMAC_API_DOWNLOAD_FIRMWARE = 0x2,
  1378. HALMAC_API_CFG_MAC_ADDR = 0x3,
  1379. HALMAC_API_CFG_BSSID = 0x4,
  1380. HALMAC_API_CFG_MULTICAST_ADDR = 0x5,
  1381. HALMAC_API_PRE_INIT_SYSTEM_CFG = 0x6,
  1382. HALMAC_API_INIT_SYSTEM_CFG = 0x7,
  1383. HALMAC_API_INIT_TRX_CFG = 0x8,
  1384. HALMAC_API_CFG_RX_AGGREGATION = 0x9,
  1385. HALMAC_API_INIT_PROTOCOL_CFG = 0xA,
  1386. HALMAC_API_INIT_EDCA_CFG = 0xB,
  1387. HALMAC_API_CFG_OPERATION_MODE = 0xC,
  1388. HALMAC_API_CFG_CH_BW = 0xD,
  1389. HALMAC_API_CFG_BW = 0xE,
  1390. HALMAC_API_INIT_WMAC_CFG = 0xF,
  1391. HALMAC_API_INIT_MAC_CFG = 0x10,
  1392. HALMAC_API_INIT_SDIO_CFG = 0x11,
  1393. HALMAC_API_INIT_USB_CFG = 0x12,
  1394. HALMAC_API_INIT_PCIE_CFG = 0x13,
  1395. HALMAC_API_INIT_INTERFACE_CFG = 0x14,
  1396. HALMAC_API_DEINIT_SDIO_CFG = 0x15,
  1397. HALMAC_API_DEINIT_USB_CFG = 0x16,
  1398. HALMAC_API_DEINIT_PCIE_CFG = 0x17,
  1399. HALMAC_API_DEINIT_INTERFACE_CFG = 0x18,
  1400. HALMAC_API_GET_EFUSE_SIZE = 0x19,
  1401. HALMAC_API_DUMP_EFUSE_MAP = 0x1A,
  1402. HALMAC_API_WRITE_EFUSE = 0x1B,
  1403. HALMAC_API_READ_EFUSE = 0x1C,
  1404. HALMAC_API_GET_LOGICAL_EFUSE_SIZE = 0x1D,
  1405. HALMAC_API_DUMP_LOGICAL_EFUSE_MAP = 0x1E,
  1406. HALMAC_API_WRITE_LOGICAL_EFUSE = 0x1F,
  1407. HALMAC_API_READ_LOGICAL_EFUSE = 0x20,
  1408. HALMAC_API_PG_EFUSE_BY_MAP = 0x21,
  1409. HALMAC_API_GET_C2H_INFO = 0x22,
  1410. HALMAC_API_CFG_FWLPS_OPTION = 0x23,
  1411. HALMAC_API_CFG_FWIPS_OPTION = 0x24,
  1412. HALMAC_API_ENTER_WOWLAN = 0x25,
  1413. HALMAC_API_LEAVE_WOWLAN = 0x26,
  1414. HALMAC_API_ENTER_PS = 0x27,
  1415. HALMAC_API_LEAVE_PS = 0x28,
  1416. HALMAC_API_H2C_LB = 0x29,
  1417. HALMAC_API_DEBUG = 0x2A,
  1418. HALMAC_API_CFG_PARAMETER = 0x2B,
  1419. HALMAC_API_UPDATE_PACKET = 0x2C,
  1420. HALMAC_API_BCN_IE_FILTER = 0x2D,
  1421. HALMAC_API_REG_READ_8 = 0x2E,
  1422. HALMAC_API_REG_WRITE_8 = 0x2F,
  1423. HALMAC_API_REG_READ_16 = 0x30,
  1424. HALMAC_API_REG_WRITE_16 = 0x31,
  1425. HALMAC_API_REG_READ_32 = 0x32,
  1426. HALMAC_API_REG_WRITE_32 = 0x33,
  1427. HALMAC_API_TX_ALLOWED_SDIO = 0x34,
  1428. HALMAC_API_SET_BULKOUT_NUM = 0x35,
  1429. HALMAC_API_GET_SDIO_TX_ADDR = 0x36,
  1430. HALMAC_API_GET_USB_BULKOUT_ID = 0x37,
  1431. HALMAC_API_TIMER_2S = 0x38,
  1432. HALMAC_API_FILL_TXDESC_CHECKSUM = 0x39,
  1433. HALMAC_API_SEND_ORIGINAL_H2C = 0x3A,
  1434. HALMAC_API_UPDATE_DATAPACK = 0x3B,
  1435. HALMAC_API_RUN_DATAPACK = 0x3C,
  1436. HALMAC_API_CFG_DRV_INFO = 0x3D,
  1437. HALMAC_API_SEND_BT_COEX = 0x3E,
  1438. HALMAC_API_VERIFY_PLATFORM_API = 0x3F,
  1439. HALMAC_API_GET_FIFO_SIZE = 0x40,
  1440. HALMAC_API_DUMP_FIFO = 0x41,
  1441. HALMAC_API_CFG_TXBF = 0x42,
  1442. HALMAC_API_CFG_MUMIMO = 0x43,
  1443. HALMAC_API_CFG_SOUNDING = 0x44,
  1444. HALMAC_API_DEL_SOUNDING = 0x45,
  1445. HALMAC_API_SU_BFER_ENTRY_INIT = 0x46,
  1446. HALMAC_API_SU_BFEE_ENTRY_INIT = 0x47,
  1447. HALMAC_API_MU_BFER_ENTRY_INIT = 0x48,
  1448. HALMAC_API_MU_BFEE_ENTRY_INIT = 0x49,
  1449. HALMAC_API_SU_BFER_ENTRY_DEL = 0x4A,
  1450. HALMAC_API_SU_BFEE_ENTRY_DEL = 0x4B,
  1451. HALMAC_API_MU_BFER_ENTRY_DEL = 0x4C,
  1452. HALMAC_API_MU_BFEE_ENTRY_DEL = 0x4D,
  1453. HALMAC_API_ADD_CH_INFO = 0x4E,
  1454. HALMAC_API_ADD_EXTRA_CH_INFO = 0x4F,
  1455. HALMAC_API_CTRL_CH_SWITCH = 0x50,
  1456. HALMAC_API_CLEAR_CH_INFO = 0x51,
  1457. HALMAC_API_SEND_GENERAL_INFO = 0x52,
  1458. HALMAC_API_START_IQK = 0x53,
  1459. HALMAC_API_CTRL_PWR_TRACKING = 0x54,
  1460. HALMAC_API_PSD = 0x55,
  1461. HALMAC_API_CFG_TX_AGG_ALIGN = 0x56,
  1462. HALMAC_API_QUERY_STATE = 0x57,
  1463. HALMAC_API_RESET_FEATURE = 0x58,
  1464. HALMAC_API_CHECK_FW_STATUS = 0x59,
  1465. HALMAC_API_DUMP_FW_DMEM = 0x5A,
  1466. HALMAC_API_CFG_MAX_DL_SIZE = 0x5B,
  1467. HALMAC_API_INIT_OBJ = 0x5C,
  1468. HALMAC_API_DEINIT_OBJ = 0x5D,
  1469. HALMAC_API_CFG_LA_MODE = 0x5E,
  1470. HALMAC_API_GET_HW_VALUE = 0x5F,
  1471. HALMAC_API_SET_HW_VALUE = 0x60,
  1472. HALMAC_API_CFG_DRV_RSVD_PG_NUM = 0x61,
  1473. HALMAC_API_SWITCH_EFUSE_BANK = 0x62,
  1474. HALMAC_API_WRITE_EFUSE_BT = 0x63,
  1475. HALMAC_API_DUMP_EFUSE_MAP_BT = 0x64,
  1476. HALMAC_API_DL_DRV_RSVD_PG = 0x65,
  1477. HALMAC_API_PCIE_SWITCH = 0x66,
  1478. HALMAC_API_PHY_CFG = 0x67,
  1479. HALMAC_API_CFG_RX_FIFO_EXPANDING_MODE = 0x68,
  1480. HALMAC_API_CFG_CSI_RATE = 0x69,
  1481. HALMAC_API_P2PPS = 0x6A,
  1482. HALMAC_API_CFG_TX_ADDR = 0x6B,
  1483. HALMAC_API_CFG_NET_TYPE = 0x6C,
  1484. HALMAC_API_CFG_TSF_RESET = 0x6D,
  1485. HALMAC_API_CFG_BCN_SPACE = 0x6E,
  1486. HALMAC_API_CFG_BCN_CTRL = 0x6F,
  1487. HALMAC_API_CFG_SIDEBAND_INT = 0x70,
  1488. HALMAC_API_REGISTER_API = 0x71,
  1489. HALMAC_API_FREE_DOWNLOAD_FIRMWARE = 0x72,
  1490. HALMAC_API_GET_FW_VERSION = 0x73,
  1491. HALMAC_API_GET_EFUSE_AVAL_SIZE = 0x74,
  1492. HALMAC_API_CHK_TXDESC = 0x75,
  1493. HALMAC_API_SDIO_CMD53_4BYTE = 0x76,
  1494. HALMAC_API_CFG_TRANS_ADDR = 0x77,
  1495. HALMAC_API_INTF_INTEGRA_TUNING = 0x78,
  1496. HALMAC_API_TXFIFO_IS_EMPTY = 0x79,
  1497. HALMAC_API_SDIO_HW_INFO = 0x80,
  1498. HALMAC_API_MAX
  1499. } HALMAC_API_ID;
  1500. typedef struct _HALMAC_API_RECORD {
  1501. HALMAC_API_ID api_array[API_ARRAY_SIZE];
  1502. u8 array_wptr;
  1503. } HALMAC_API_RECORD, *PHALMAC_API_RECORD;
  1504. typedef enum _HALMAC_LA_MODE {
  1505. HALMAC_LA_MODE_DISABLE = 0,
  1506. HALMAC_LA_MODE_PARTIAL = 1,
  1507. HALMAC_LA_MODE_FULL = 2,
  1508. HALMAC_LA_MODE_UNDEFINE = 0x7F,
  1509. } HALMAC_LA_MODE;
  1510. typedef enum _HALMAC_RX_FIFO_EXPANDING_MODE {
  1511. HALMAC_RX_FIFO_EXPANDING_MODE_DISABLE = 0,
  1512. HALMAC_RX_FIFO_EXPANDING_MODE_1_BLOCK = 1,
  1513. HALMAC_RX_FIFO_EXPANDING_MODE_2_BLOCK = 2,
  1514. HALMAC_RX_FIFO_EXPANDING_MODE_3_BLOCK = 3,
  1515. HALMAC_RX_FIFO_EXPANDING_MODE_UNDEFINE = 0x7F,
  1516. } HALMAC_RX_FIFO_EXPANDING_MODE;
  1517. typedef enum _HALMAC_SDIO_CMD53_4BYTE_MODE {
  1518. HALMAC_SDIO_CMD53_4BYTE_MODE_DISABLE = 0,
  1519. HALMAC_SDIO_CMD53_4BYTE_MODE_RW = 1,
  1520. HALMAC_SDIO_CMD53_4BYTE_MODE_R = 2,
  1521. HALMAC_SDIO_CMD53_4BYTE_MODE_W = 3,
  1522. HALMAC_SDIO_CMD53_4BYTE_MODE_UNDEFINE = 0x7F,
  1523. } HALMAC_SDIO_CMD53_4BYTE_MODE;
  1524. typedef enum _HALMAC_USB_MODE {
  1525. HALMAC_USB_MODE_U2 = 1,
  1526. HALMAC_USB_MODE_U3 = 2,
  1527. } HALMAC_USB_MODE;
  1528. typedef enum _HALMAC_HW_ID {
  1529. /* Get HW value */
  1530. HALMAC_HW_RQPN_MAPPING = 0x00,
  1531. HALMAC_HW_EFUSE_SIZE = 0x01,
  1532. HALMAC_HW_EEPROM_SIZE = 0x02,
  1533. HALMAC_HW_BT_BANK_EFUSE_SIZE = 0x03,
  1534. HALMAC_HW_BT_BANK1_EFUSE_SIZE = 0x04,
  1535. HALMAC_HW_BT_BANK2_EFUSE_SIZE = 0x05,
  1536. HALMAC_HW_TXFIFO_SIZE = 0x06,
  1537. HALMAC_HW_RSVD_PG_BNDY = 0x07,
  1538. HALMAC_HW_CAM_ENTRY_NUM = 0x08,
  1539. HALMAC_HW_IC_VERSION = 0x09,
  1540. HALMAC_HW_PAGE_SIZE = 0x0A,
  1541. HALMAC_HW_TX_AGG_ALIGN_SIZE = 0x0B,
  1542. HALMAC_HW_RX_AGG_ALIGN_SIZE = 0x0C,
  1543. HALMAC_HW_DRV_INFO_SIZE = 0x0D,
  1544. HALMAC_HW_TXFF_ALLOCATION = 0x0E,
  1545. HALMAC_HW_RSVD_EFUSE_SIZE = 0x0F,
  1546. HALMAC_HW_FW_HDR_SIZE = 0x10,
  1547. HALMAC_HW_TX_DESC_SIZE = 0x11,
  1548. HALMAC_HW_RX_DESC_SIZE = 0x12,
  1549. HALMAC_HW_WLAN_EFUSE_AVAILABLE_SIZE = 0x13,
  1550. /* Set HW value */
  1551. HALMAC_HW_USB_MODE = 0x60,
  1552. HALMAC_HW_SEQ_EN = 0x61,
  1553. HALMAC_HW_BANDWIDTH = 0x62,
  1554. HALMAC_HW_CHANNEL = 0x63,
  1555. HALMAC_HW_PRI_CHANNEL_IDX = 0x64,
  1556. HALMAC_HW_EN_BB_RF = 0x65,
  1557. HALMAC_HW_SDIO_TX_PAGE_THRESHOLD = 0x66,
  1558. HALMAC_HW_AMPDU_CONFIG = 0x67,
  1559. HALMAC_HW_ID_UNDEFINE = 0x7F,
  1560. } HALMAC_HW_ID;
  1561. typedef enum _HALMAC_EFUSE_BANK {
  1562. HALMAC_EFUSE_BANK_WIFI = 0,
  1563. HALMAC_EFUSE_BANK_BT = 1,
  1564. HALMAC_EFUSE_BANK_BT_1 = 2,
  1565. HALMAC_EFUSE_BANK_BT_2 = 3,
  1566. HALMAC_EFUSE_BANK_MAX,
  1567. HALMAC_EFUSE_BANK_UNDEFINE = 0X7F,
  1568. } HALMAC_EFUSE_BANK;
  1569. typedef enum _HALMAC_SDIO_SPEC_VER {
  1570. HALMAC_SDIO_SPEC_VER_2_00 = 0,
  1571. HALMAC_SDIO_SPEC_VER_3_00 = 1,
  1572. HALMAC_SDIO_SPEC_VER_UNDEFINE = 0X7F,
  1573. } HALMAC_SDIO_SPEC_VER;
  1574. typedef struct _HALMAC_TXFF_ALLOCATION {
  1575. u16 tx_fifo_pg_num;
  1576. u16 rsvd_pg_num;
  1577. u16 rsvd_drv_pg_num;
  1578. u16 ac_q_pg_num;
  1579. u16 high_queue_pg_num;
  1580. u16 low_queue_pg_num;
  1581. u16 normal_queue_pg_num;
  1582. u16 extra_queue_pg_num;
  1583. u16 pub_queue_pg_num;
  1584. u16 rsvd_pg_bndy;
  1585. u16 rsvd_drv_pg_bndy;
  1586. u16 rsvd_h2c_extra_info_pg_bndy;
  1587. u16 rsvd_h2c_queue_pg_bndy;
  1588. u16 rsvd_cpu_instr_pg_bndy;
  1589. u16 rsvd_fw_txbuff_pg_bndy;
  1590. HALMAC_LA_MODE la_mode;
  1591. HALMAC_RX_FIFO_EXPANDING_MODE rx_fifo_expanding_mode;
  1592. } HALMAC_TXFF_ALLOCATION, *PHALMAC_TXFF_ALLOCATION;
  1593. typedef struct _HALMAC_RQPN_MAP {
  1594. HALMAC_DMA_MAPPING dma_map_vo;
  1595. HALMAC_DMA_MAPPING dma_map_vi;
  1596. HALMAC_DMA_MAPPING dma_map_be;
  1597. HALMAC_DMA_MAPPING dma_map_bk;
  1598. HALMAC_DMA_MAPPING dma_map_mg;
  1599. HALMAC_DMA_MAPPING dma_map_hi;
  1600. } HALMAC_RQPN_MAP, *PHALMAC_RQPN_MAP;
  1601. typedef struct _HALMAC_SECURITY_SETTING {
  1602. u8 tx_encryption;
  1603. u8 rx_decryption;
  1604. u8 bip_enable;
  1605. } HALMAC_SECURITY_SETTING, *PHALMAC_SECURITY_SETTING;
  1606. typedef struct _HALMAC_CAM_ENTRY_INFO {
  1607. HAL_SECURITY_TYPE security_type;
  1608. u32 key[4];
  1609. u32 key_ext[4];
  1610. u8 mac_address[6];
  1611. u8 unicast;
  1612. u8 key_id;
  1613. u8 valid;
  1614. } HALMAC_CAM_ENTRY_INFO, *PHALMAC_CAM_ENTRY_INFO;
  1615. typedef struct _HALMAC_CAM_ENTRY_FORMAT {
  1616. u16 key_id : 2;
  1617. u16 type : 3;
  1618. u16 mic : 1;
  1619. u16 grp : 1;
  1620. u16 spp_mode : 1;
  1621. u16 rpt_md : 1;
  1622. u16 ext_sectype : 1;
  1623. u16 mgnt : 1;
  1624. u16 rsvd1 : 4;
  1625. u16 valid : 1;
  1626. u8 mac_address[6];
  1627. u32 key[4];
  1628. u32 rsvd[2];
  1629. } HALMAC_CAM_ENTRY_FORMAT, *PHALMAC_CAM_ENTRY_FORMAT;
  1630. typedef struct _HALMAC_TX_PAGE_THRESHOLD_INFO {
  1631. u32 threshold;
  1632. HALMAC_DMA_MAPPING dma_queue_sel;
  1633. } HALMAC_TX_PAGE_THRESHOLD_INFO, *PHALMAC_TX_PAGE_THRESHOLD_INFO;
  1634. typedef struct _HALMAC_AMPDU_CONFIG {
  1635. u8 max_agg_num;
  1636. } HALMAC_AMPDU_CONFIG, *PHALMAC_AMPDU_CONFIG;
  1637. typedef struct _HALMAC_PORT_CFG {
  1638. u8 port0_sync_tsf;
  1639. u8 port1_sync_tsf;
  1640. } HALMAC_PORT_CFG, *PHALMAC_PORT_CFG;
  1641. typedef struct _HALMAC_RQPN_ {
  1642. HALMAC_TRX_MODE mode;
  1643. HALMAC_DMA_MAPPING dma_map_vo;
  1644. HALMAC_DMA_MAPPING dma_map_vi;
  1645. HALMAC_DMA_MAPPING dma_map_be;
  1646. HALMAC_DMA_MAPPING dma_map_bk;
  1647. HALMAC_DMA_MAPPING dma_map_mg;
  1648. HALMAC_DMA_MAPPING dma_map_hi;
  1649. } HALMAC_RQPN, *PHALMAC_RQPN;
  1650. typedef struct _HALMAC_PG_NUM_ {
  1651. HALMAC_TRX_MODE mode;
  1652. u16 hq_num;
  1653. u16 nq_num;
  1654. u16 lq_num;
  1655. u16 exq_num;
  1656. u16 gap_num;/*used for loopback mode*/
  1657. } HALMAC_PG_NUM, *PHALMAC_PG_NUM;
  1658. typedef struct _HALMAC_INTF_PHY_PARA_ {
  1659. u16 offset;
  1660. u16 value;
  1661. u16 ip_sel;
  1662. u16 cut;
  1663. u16 plaform;
  1664. } HALMAC_INTF_PHY_PARA, *PHALMAC_INTF_PHY_PARA;
  1665. typedef struct _HALMAC_IQK_PARA_ {
  1666. u8 clear;
  1667. u8 segment_iqk;
  1668. } HALMAC_IQK_PARA, *PHALMAC_IQK_PARA;
  1669. typedef struct _HALMAC_SDIO_HW_INFO {
  1670. HALMAC_SDIO_SPEC_VER spec_ver;
  1671. u32 clock_speed;
  1672. u8 io_hi_speed_flag; /* Halmac internal use */
  1673. } HALMAC_SDIO_HW_INFO, *PHALMAC_SDIO_HW_INFO;
  1674. /* Hal mac adapter */
  1675. typedef struct _HALMAC_ADAPTER {
  1676. HALMAC_DMA_MAPPING halmac_ptcl_queue[HALMAC_PTCL_QUEUE_NUM]; /* Dma mapping of protocol queues */
  1677. HALMAC_FWLPS_OPTION fwlps_option; /* low power state option */
  1678. HALMAC_WLAN_ADDR pHal_mac_addr[HALMAC_PORTIDMAX]; /* mac address information, suppot 2 ports */
  1679. HALMAC_WLAN_ADDR pHal_bss_addr[HALMAC_PORTIDMAX]; /* bss address information, suppot 2 ports */
  1680. HALMAC_MUTEX h2c_seq_mutex; /* Protect h2c_packet_seq packet*/
  1681. HALMAC_MUTEX EfuseMutex; /* Protect Efuse map memory of halmac_adapter */
  1682. HALMAC_CONFIG_PARA_INFO config_para_info;
  1683. HALMAC_CS_INFO ch_sw_info;
  1684. HALMAC_EVENT_TRIGGER event_trigger;
  1685. HALMAC_HW_CONFIG_INFO hw_config_info; /* HW related information */
  1686. HALMAC_SDIO_FREE_SPACE sdio_free_space;
  1687. HALMAC_SND_INFO snd_info;
  1688. VOID *pHalAdapter_backup; /* Backup HalAdapter address */
  1689. VOID *pDriver_adapter; /* Driver or FW adapter address. Do not write this memory*/
  1690. u8 *pHalEfuse_map;
  1691. VOID *pHalmac_api; /* Record function pointer of halmac api */
  1692. PHALMAC_PLATFORM_API pHalmac_platform_api; /* Record function pointer of platform api */
  1693. u32 efuse_end; /* Record efuse used memory */
  1694. u32 h2c_buf_free_space;
  1695. u32 h2c_buff_size;
  1696. u32 max_download_size;
  1697. HALMAC_CHIP_ID chip_id; /* Chip ID, 8822B, 8821C... */
  1698. HALMAC_CHIP_VER chip_version; /* A cut, B cut... */
  1699. HALMAC_FW_VERSION fw_version;
  1700. HALMAC_STATE halmac_state;
  1701. HALMAC_INTERFACE halmac_interface; /* Interface information, get from driver */
  1702. HALMAC_TRX_MODE trx_mode; /* Noraml, WMM, P2P, LoopBack... */
  1703. HALMAC_TXFF_ALLOCATION txff_allocation;
  1704. u8 h2c_packet_seq; /* current h2c packet sequence number */
  1705. u16 ack_h2c_packet_seq; /*the acked h2c packet sequence number */
  1706. u8 hal_efuse_map_valid;
  1707. u8 efuse_segment_size;
  1708. u8 rpwm_record; /* record rpwm value */
  1709. u8 low_clk; /*LPS 32K or IPS 32K*/
  1710. u8 halmac_bulkout_num; /* USB bulkout num */
  1711. HALMAC_API_RECORD api_record; /* API record */
  1712. u8 gen_info_valid;
  1713. HALMAC_GENERAL_INFO general_info;
  1714. u8 drv_info_size;
  1715. HALMAC_SDIO_CMD53_4BYTE_MODE sdio_cmd53_4byte;
  1716. HALMAC_SDIO_HW_INFO sdio_hw_info;
  1717. #if HALMAC_PLATFORM_TESTPROGRAM
  1718. HALMAC_TXAGG_BUFF_INFO halmac_tx_buf_info[4];
  1719. HALMAC_MUTEX agg_buff_mutex; /*used for tx_agg_buffer */
  1720. u8 max_agg_num;
  1721. u8 send_bcn_reg_cr_backup;
  1722. #endif
  1723. } HALMAC_ADAPTER, *PHALMAC_ADAPTER;
  1724. /* Function pointer of Hal mac API */
  1725. typedef struct _HALMAC_API {
  1726. HALMAC_RET_STATUS(*halmac_mac_power_switch)(PHALMAC_ADAPTER pHalmac_adapter, HALMAC_MAC_POWER halmac_power);
  1727. HALMAC_RET_STATUS(*halmac_download_firmware)(PHALMAC_ADAPTER pHalmac_adapter, u8 *pHamacl_fw, u32 halmac_fw_size);
  1728. HALMAC_RET_STATUS (*halmac_free_download_firmware)(PHALMAC_ADAPTER pHalmac_adapter, HALMAC_DLFW_MEM dlfw_mem, u8 *pHamacl_fw, u32 halmac_fw_size);
  1729. HALMAC_RET_STATUS(*halmac_get_fw_version)(PHALMAC_ADAPTER pHalmac_adapter, PHALMAC_FW_VERSION pFw_version);
  1730. HALMAC_RET_STATUS(*halmac_cfg_mac_addr)(PHALMAC_ADAPTER pHalmac_adapter, u8 halmac_port, PHALMAC_WLAN_ADDR pHal_address);
  1731. HALMAC_RET_STATUS(*halmac_cfg_bssid)(PHALMAC_ADAPTER pHalmac_adapter, u8 halmac_port, PHALMAC_WLAN_ADDR pHal_address);
  1732. HALMAC_RET_STATUS(*halmac_cfg_multicast_addr)(PHALMAC_ADAPTER pHalmac_adapter, PHALMAC_WLAN_ADDR pHal_address);
  1733. HALMAC_RET_STATUS(*halmac_pre_init_system_cfg)(PHALMAC_ADAPTER pHalmac_adapter);
  1734. HALMAC_RET_STATUS(*halmac_init_system_cfg)(PHALMAC_ADAPTER pHalmac_adapter);
  1735. HALMAC_RET_STATUS(*halmac_init_trx_cfg)(PHALMAC_ADAPTER pHalmac_adapter, HALMAC_TRX_MODE Mode);
  1736. HALMAC_RET_STATUS(*halmac_init_h2c)(PHALMAC_ADAPTER pHalmac_adapter);
  1737. HALMAC_RET_STATUS(*halmac_cfg_rx_aggregation)(PHALMAC_ADAPTER pHalmac_adapter, PHALMAC_RXAGG_CFG phalmac_rxagg_cfg);
  1738. HALMAC_RET_STATUS(*halmac_init_protocol_cfg)(PHALMAC_ADAPTER pHalmac_adapter);
  1739. HALMAC_RET_STATUS(*halmac_init_edca_cfg)(PHALMAC_ADAPTER pHalmac_adapter);
  1740. HALMAC_RET_STATUS(*halmac_cfg_operation_mode)(PHALMAC_ADAPTER pHalmac_adapter, HALMAC_WIRELESS_MODE wireless_mode);
  1741. HALMAC_RET_STATUS(*halmac_cfg_ch_bw)(PHALMAC_ADAPTER pHalmac_adapter, u8 channel, HALMAC_PRI_CH_IDX pri_ch_idx, HALMAC_BW bw);
  1742. HALMAC_RET_STATUS(*halmac_cfg_bw)(PHALMAC_ADAPTER pHalmac_adapter, HALMAC_BW bw);
  1743. HALMAC_RET_STATUS(*halmac_init_wmac_cfg)(PHALMAC_ADAPTER pHalmac_adapter);
  1744. HALMAC_RET_STATUS(*halmac_init_mac_cfg)(PHALMAC_ADAPTER pHalmac_adapter, HALMAC_TRX_MODE Mode);
  1745. HALMAC_RET_STATUS(*halmac_init_sdio_cfg)(PHALMAC_ADAPTER pHalmac_adapter);
  1746. HALMAC_RET_STATUS(*halmac_init_usb_cfg)(PHALMAC_ADAPTER pHalmac_adapter);
  1747. HALMAC_RET_STATUS(*halmac_init_pcie_cfg)(PHALMAC_ADAPTER pHalmac_adapter);
  1748. HALMAC_RET_STATUS(*halmac_init_interface_cfg)(PHALMAC_ADAPTER pHalmac_adapter);
  1749. HALMAC_RET_STATUS(*halmac_deinit_sdio_cfg)(PHALMAC_ADAPTER pHalmac_adapter);
  1750. HALMAC_RET_STATUS(*halmac_deinit_usb_cfg)(PHALMAC_ADAPTER pHalmac_adapter);
  1751. HALMAC_RET_STATUS(*halmac_deinit_pcie_cfg)(PHALMAC_ADAPTER pHalmac_adapter);
  1752. HALMAC_RET_STATUS(*halmac_deinit_interface_cfg)(PHALMAC_ADAPTER pHalmac_adapter);
  1753. HALMAC_RET_STATUS(*halmac_get_efuse_size)(PHALMAC_ADAPTER pHalmac_adapter, u32 *halmac_size);
  1754. HALMAC_RET_STATUS(*halmac_get_efuse_available_size)(PHALMAC_ADAPTER pHalmac_adapter, u32 *halmac_size);
  1755. HALMAC_RET_STATUS(*halmac_dump_efuse_map)(PHALMAC_ADAPTER pHalmac_adapter, HALMAC_EFUSE_READ_CFG cfg);
  1756. HALMAC_RET_STATUS(*halmac_dump_efuse_map_bt)(PHALMAC_ADAPTER pHalmac_adapter, HALMAC_EFUSE_BANK halmac_efues_bank, u32 bt_efuse_map_size, u8 *pBT_efuse_map);
  1757. HALMAC_RET_STATUS(*halmac_write_efuse)(PHALMAC_ADAPTER pHalmac_adapter, u32 halmac_offset, u8 halmac_value);
  1758. HALMAC_RET_STATUS(*halmac_read_efuse)(PHALMAC_ADAPTER pHalmac_adapter, u32 halmac_offset, u8 *pValue);
  1759. HALMAC_RET_STATUS(*halmac_switch_efuse_bank)(PHALMAC_ADAPTER pHalmac_adapter, HALMAC_EFUSE_BANK halmac_efues_bank);
  1760. HALMAC_RET_STATUS(*halmac_write_efuse_bt)(PHALMAC_ADAPTER pHalmac_adapter, u32 halmac_offset, u8 halmac_value, HALMAC_EFUSE_BANK halmac_efues_bank);
  1761. HALMAC_RET_STATUS(*halmac_get_logical_efuse_size)(PHALMAC_ADAPTER pHalmac_adapter, u32 *halmac_size);
  1762. HALMAC_RET_STATUS(*halmac_dump_logical_efuse_map)(PHALMAC_ADAPTER pHalmac_adapter, HALMAC_EFUSE_READ_CFG cfg);
  1763. HALMAC_RET_STATUS(*halmac_write_logical_efuse)(PHALMAC_ADAPTER pHalmac_adapter, u32 halmac_offset, u8 halmac_value);
  1764. HALMAC_RET_STATUS(*halmac_read_logical_efuse)(PHALMAC_ADAPTER pHalmac_adapter, u32 halmac_offset, u8 *pValue);
  1765. HALMAC_RET_STATUS(*halmac_pg_efuse_by_map)(PHALMAC_ADAPTER pHalmac_adapter, PHALMAC_PG_EFUSE_INFO pPg_efuse_info, HALMAC_EFUSE_READ_CFG cfg);
  1766. HALMAC_RET_STATUS(*halmac_get_c2h_info)(PHALMAC_ADAPTER pHalmac_adapter, u8 *halmac_buf, u32 halmac_size);
  1767. HALMAC_RET_STATUS(*halmac_cfg_fwlps_option)(PHALMAC_ADAPTER pHalmac_adapter, PHALMAC_FWLPS_OPTION pLps_option);
  1768. HALMAC_RET_STATUS(*halmac_cfg_fwips_option)(PHALMAC_ADAPTER pHalmac_adapter, PHALMAC_FWIPS_OPTION pIps_option);
  1769. HALMAC_RET_STATUS(*halmac_enter_wowlan)(PHALMAC_ADAPTER pHalmac_adapter, PHALMAC_WOWLAN_OPTION pWowlan_option);
  1770. HALMAC_RET_STATUS(*halmac_leave_wowlan)(PHALMAC_ADAPTER pHalmac_adapter);
  1771. HALMAC_RET_STATUS(*halmac_enter_ps)(PHALMAC_ADAPTER pHalmac_adapter, HALMAC_PS_STATE ps_state);
  1772. HALMAC_RET_STATUS(*halmac_leave_ps)(PHALMAC_ADAPTER pHalmac_adapter);
  1773. HALMAC_RET_STATUS(*halmac_h2c_lb)(PHALMAC_ADAPTER pHalmac_adapter);
  1774. HALMAC_RET_STATUS(*halmac_debug)(PHALMAC_ADAPTER pHalmac_adapter);
  1775. HALMAC_RET_STATUS(*halmac_cfg_parameter)(PHALMAC_ADAPTER pHalmac_adapter, PHALMAC_PHY_PARAMETER_INFO para_info, u8 full_fifo);
  1776. HALMAC_RET_STATUS(*halmac_update_packet)(PHALMAC_ADAPTER pHalmac_adapter, HALMAC_PACKET_ID pkt_id, u8 *pkt, u32 pkt_size);
  1777. HALMAC_RET_STATUS(*halmac_bcn_ie_filter)(PHALMAC_ADAPTER pHalmac_adapter, PHALMAC_BCN_IE_INFO pBcn_ie_info);
  1778. u8 (*halmac_reg_read_8)(PHALMAC_ADAPTER pHalmac_adapter, u32 halmac_offset);
  1779. HALMAC_RET_STATUS(*halmac_reg_write_8)(PHALMAC_ADAPTER pHalmac_adapter, u32 halmac_offset, u8 halmac_data);
  1780. u16 (*halmac_reg_read_16)(PHALMAC_ADAPTER pHalmac_adapter, u32 halmac_offset);
  1781. HALMAC_RET_STATUS(*halmac_reg_write_16)(PHALMAC_ADAPTER pHalmac_adapter, u32 halmac_offset, u16 halmac_data);
  1782. u32 (*halmac_reg_read_32)(PHALMAC_ADAPTER pHalmac_adapter, u32 halmac_offset);
  1783. u32 (*halmac_reg_read_indirect_32)(PHALMAC_ADAPTER pHalmac_adapter, u32 halmac_offset);
  1784. u8 (*halmac_reg_sdio_cmd53_read_n)(PHALMAC_ADAPTER pHalmac_adapter, u32 halmac_offset, u32 halmac_size, u8 *halmac_data);
  1785. HALMAC_RET_STATUS(*halmac_reg_write_32)(PHALMAC_ADAPTER pHalmac_adapter, u32 halmac_offset, u32 halmac_data);
  1786. HALMAC_RET_STATUS(*halmac_tx_allowed_sdio)(PHALMAC_ADAPTER pHalmac_adapter, u8 *pHalmac_buf, u32 halmac_size);
  1787. HALMAC_RET_STATUS(*halmac_set_bulkout_num)(PHALMAC_ADAPTER pHalmac_adapter, u8 bulkout_num);
  1788. HALMAC_RET_STATUS(*halmac_get_sdio_tx_addr)(PHALMAC_ADAPTER pHalmac_adapter, u8 *halmac_buf, u32 halmac_size, u32 *pcmd53_addr);
  1789. HALMAC_RET_STATUS(*halmac_get_usb_bulkout_id)(PHALMAC_ADAPTER pHalmac_adapter, u8 *halmac_buf, u32 halmac_size, u8 *bulkout_id);
  1790. HALMAC_RET_STATUS(*halmac_timer_2s)(PHALMAC_ADAPTER pHalmac_adapter);
  1791. HALMAC_RET_STATUS(*halmac_fill_txdesc_checksum)(PHALMAC_ADAPTER pHalmac_adapter, u8 *cur_desc);
  1792. HALMAC_RET_STATUS(*halmac_update_datapack)(PHALMAC_ADAPTER pHalmac_adapter, HALMAC_DATA_TYPE halmac_data_type, PHALMAC_PHY_PARAMETER_INFO para_info);
  1793. HALMAC_RET_STATUS(*halmac_run_datapack)(PHALMAC_ADAPTER pHalmac_adapter, HALMAC_DATA_TYPE halmac_data_type);
  1794. HALMAC_RET_STATUS(*halmac_cfg_drv_info)(PHALMAC_ADAPTER pHalmac_adapter, HALMAC_DRV_INFO halmac_drv_info);
  1795. HALMAC_RET_STATUS(*halmac_send_bt_coex)(PHALMAC_ADAPTER pHalmac_adapter, u8 *pBt_buf, u32 bt_size, u8 ack);
  1796. HALMAC_RET_STATUS(*halmac_verify_platform_api)(PHALMAC_ADAPTER pHalmac_adapte);
  1797. u32 (*halmac_get_fifo_size)(PHALMAC_ADAPTER pHalmac_adapter, HAL_FIFO_SEL halmac_fifo_sel);
  1798. HALMAC_RET_STATUS(*halmac_dump_fifo)(PHALMAC_ADAPTER pHalmac_adapter, HAL_FIFO_SEL halmac_fifo_sel, u32 halmac_start_addr, u32 halmac_fifo_dump_size, u8 *pFifo_map);
  1799. HALMAC_RET_STATUS(*halmac_cfg_txbf)(PHALMAC_ADAPTER pHalmac_adapter, u8 userid, HALMAC_BW bw, u8 txbf_en);
  1800. HALMAC_RET_STATUS(*halmac_cfg_mumimo)(PHALMAC_ADAPTER pHalmac_adapter, PHALMAC_CFG_MUMIMO_PARA pCfgmu);
  1801. HALMAC_RET_STATUS(*halmac_cfg_sounding)(PHALMAC_ADAPTER pHalmac_adapter, HALMAC_SND_ROLE role, HALMAC_DATA_RATE datarate);
  1802. HALMAC_RET_STATUS(*halmac_del_sounding)(PHALMAC_ADAPTER pHalmac_adapter, HALMAC_SND_ROLE role);
  1803. HALMAC_RET_STATUS(*halmac_su_bfer_entry_init)(PHALMAC_ADAPTER pHalmac_adapter, PHALMAC_SU_BFER_INIT_PARA pSu_bfer_init);
  1804. HALMAC_RET_STATUS(*halmac_su_bfee_entry_init)(PHALMAC_ADAPTER pHalmac_adapter, u8 userid, u16 paid);
  1805. HALMAC_RET_STATUS(*halmac_mu_bfer_entry_init)(PHALMAC_ADAPTER pHalmac_adapter, PHALMAC_MU_BFER_INIT_PARA pMu_bfer_init);
  1806. HALMAC_RET_STATUS(*halmac_mu_bfee_entry_init)(PHALMAC_ADAPTER pHalmac_adapter, PHALMAC_MU_BFEE_INIT_PARA pMu_bfee_init);
  1807. HALMAC_RET_STATUS(*halmac_su_bfer_entry_del)(PHALMAC_ADAPTER pHalmac_adapter, u8 userid);
  1808. HALMAC_RET_STATUS(*halmac_su_bfee_entry_del)(PHALMAC_ADAPTER pHalmac_adapter, u8 userid);
  1809. HALMAC_RET_STATUS(*halmac_mu_bfer_entry_del)(PHALMAC_ADAPTER pHalmac_adapter);
  1810. HALMAC_RET_STATUS(*halmac_mu_bfee_entry_del)(PHALMAC_ADAPTER pHalmac_adapter, u8 userid);
  1811. HALMAC_RET_STATUS(*halmac_add_ch_info)(PHALMAC_ADAPTER pHalmac_adapter, PHALMAC_CH_INFO pCh_info);
  1812. HALMAC_RET_STATUS(*halmac_add_extra_ch_info)(PHALMAC_ADAPTER pHalmac_adapter, PHALMAC_CH_EXTRA_INFO pCh_extra_info);
  1813. HALMAC_RET_STATUS(*halmac_ctrl_ch_switch)(PHALMAC_ADAPTER pHalmac_adapter, PHALMAC_CH_SWITCH_OPTION pCs_option);
  1814. HALMAC_RET_STATUS (*halmac_p2pps)(PHALMAC_ADAPTER pHalmac_adapter, PHALMAC_P2PPS pP2PPS);
  1815. HALMAC_RET_STATUS(*halmac_clear_ch_info)(PHALMAC_ADAPTER pHalmac_adapter);
  1816. HALMAC_RET_STATUS(*halmac_send_general_info)(PHALMAC_ADAPTER pHalmac_adapter, PHALMAC_GENERAL_INFO pgGeneral_info);
  1817. HALMAC_RET_STATUS (*halmac_start_iqk)(PHALMAC_ADAPTER pHalmac_adapter, PHALMAC_IQK_PARA pIqk_para);
  1818. HALMAC_RET_STATUS(*halmac_ctrl_pwr_tracking)(PHALMAC_ADAPTER pHalmac_adapter, PHALMAC_PWR_TRACKING_OPTION pPwr_tracking_opt);
  1819. HALMAC_RET_STATUS(*halmac_psd)(PHALMAC_ADAPTER pHalmac_adapter, u16 start_psd, u16 end_psd);
  1820. HALMAC_RET_STATUS(*halmac_cfg_tx_agg_align)(PHALMAC_ADAPTER pHalmac_adapter, u8 enable, u16 align_size);
  1821. HALMAC_RET_STATUS(*halmac_query_status)(PHALMAC_ADAPTER pHalmac_adapter, HALMAC_FEATURE_ID feature_id, HALMAC_CMD_PROCESS_STATUS *pProcess_status, u8 *data, u32 *size);
  1822. HALMAC_RET_STATUS(*halmac_reset_feature)(PHALMAC_ADAPTER pHalmac_adapter, HALMAC_FEATURE_ID feature_id);
  1823. HALMAC_RET_STATUS(*halmac_check_fw_status)(PHALMAC_ADAPTER pHalmac_adapter, u8 *fw_status);
  1824. HALMAC_RET_STATUS(*halmac_dump_fw_dmem)(PHALMAC_ADAPTER pHalmac_adapter, u8 *dmem, u32 *size);
  1825. HALMAC_RET_STATUS(*halmac_cfg_max_dl_size)(PHALMAC_ADAPTER pHalmac_adapter, u32 size);
  1826. HALMAC_RET_STATUS(*halmac_cfg_la_mode)(PHALMAC_ADAPTER pHalmac_adapter, HALMAC_LA_MODE la_mode);
  1827. HALMAC_RET_STATUS(*halmac_cfg_rx_fifo_expanding_mode)(PHALMAC_ADAPTER pHalmac_adapter, HALMAC_RX_FIFO_EXPANDING_MODE rx_fifo_expanding_mode);
  1828. HALMAC_RET_STATUS(*halmac_config_security)(PHALMAC_ADAPTER pHalmac_adapter, PHALMAC_SECURITY_SETTING pSec_setting);
  1829. u8 (*halmac_get_used_cam_entry_num)(PHALMAC_ADAPTER pHalmac_adapter, HAL_SECURITY_TYPE sec_type);
  1830. HALMAC_RET_STATUS(*halmac_write_cam)(PHALMAC_ADAPTER pHalmac_adapter, u32 entry_index, PHALMAC_CAM_ENTRY_INFO pCam_entry_info);
  1831. HALMAC_RET_STATUS(*halmac_read_cam_entry)(PHALMAC_ADAPTER pHalmac_adapter, u32 entry_index, PHALMAC_CAM_ENTRY_FORMAT pContent);
  1832. HALMAC_RET_STATUS(*halmac_clear_cam_entry)(PHALMAC_ADAPTER pHalmac_adapter, u32 entry_index);
  1833. HALMAC_RET_STATUS(*halmac_get_hw_value)(PHALMAC_ADAPTER pHalmac_adapter, HALMAC_HW_ID hw_id, VOID *pvalue);
  1834. HALMAC_RET_STATUS(*halmac_set_hw_value)(PHALMAC_ADAPTER pHalmac_adapter, HALMAC_HW_ID hw_id, VOID *pvalue);
  1835. HALMAC_RET_STATUS(*halmac_cfg_drv_rsvd_pg_num)(PHALMAC_ADAPTER pHalmac_adapter, HALMAC_DRV_RSVD_PG_NUM pg_num);
  1836. HALMAC_RET_STATUS(*halmac_get_chip_version)(PHALMAC_ADAPTER pHalmac_adapter, HALMAC_VER *version);
  1837. HALMAC_RET_STATUS(*halmac_chk_txdesc)(PHALMAC_ADAPTER pHalmac_adapter, u8 *pHalmac_buf, u32 halmac_size);
  1838. HALMAC_RET_STATUS(*halmac_dl_drv_rsvd_page)(PHALMAC_ADAPTER pHalmac_adapter, u8 pg_offset, u8 *pHal_buf, u32 size);
  1839. HALMAC_RET_STATUS(*halmac_pcie_switch)(PHALMAC_ADAPTER pHalmac_adapter, HALMAC_PCIE_CFG pcie_cfg);
  1840. HALMAC_RET_STATUS(*halmac_phy_cfg)(PHALMAC_ADAPTER pHalmac_adapter, HALMAC_INTF_PHY_PLATFORM platform);
  1841. HALMAC_RET_STATUS(*halmac_cfg_csi_rate)(PHALMAC_ADAPTER pHalmac_adapter, u8 rssi, u8 current_rate, u8 fixrate_en, u8 *new_rate);
  1842. HALMAC_RET_STATUS (*halmac_sdio_cmd53_4byte)(PHALMAC_ADAPTER pHalmac_adapter, HALMAC_SDIO_CMD53_4BYTE_MODE cmd53_4byte_mode);
  1843. HALMAC_RET_STATUS (*halmac_sdio_hw_info)(PHALMAC_ADAPTER pHalmac_adapter, PHALMAC_SDIO_HW_INFO pSdio_hw_info);
  1844. HALMAC_RET_STATUS (*halmac_interface_integration_tuning)(PHALMAC_ADAPTER pHalmac_adapter);
  1845. HALMAC_RET_STATUS (*halmac_txfifo_is_empty)(PHALMAC_ADAPTER pHalmac_adapter, u32 chk_num);
  1846. #if HALMAC_PLATFORM_TESTPROGRAM
  1847. HALMAC_RET_STATUS(*halmac_gen_txdesc)(PHALMAC_ADAPTER pHalmac_adapter, u8 *pPcket_buffer, PHAL_TXDESC_INFO pTxdesc_info);
  1848. HALMAC_RET_STATUS(*halmac_txdesc_parser)(PHALMAC_ADAPTER pHalmac_adapter, u8 *pTxdesc, PHAL_TXDESC_PARSER pTxdesc_parser);
  1849. HALMAC_RET_STATUS(*halmac_rxdesc_parser)(PHALMAC_ADAPTER pHalmac_adapter, u8 *pRxdesc, PHAL_RXDESC_PARSER pRxdesc_parser);
  1850. HALMAC_RET_STATUS(*halmac_get_txdesc_size)(PHALMAC_ADAPTER pHalmac_adapter, PHAL_TXDESC_INFO pTxdesc_info, u32 *size);
  1851. HALMAC_RET_STATUS(*halmac_send_packet)(PHALMAC_ADAPTER pHalmac_adapter, u8 *pBuf, u32 size, PHAL_TXDESC_INFO pTxdesc_Info);
  1852. HALMAC_RET_STATUS(*halmac_get_pcie_packet)(PHALMAC_ADAPTER pHalmac_adapter, u8 *pBuf, u32 *size);
  1853. HALMAC_RET_STATUS(*halmac_gen_txagg_desc)(PHALMAC_ADAPTER pHalmac_adapter, u8 *pPcket_buffer, u32 agg_num);
  1854. HALMAC_RET_STATUS(*halmac_parse_packet)(PHALMAC_ADAPTER pHalmac_adapter, u8 *pBuf, PHAL_RXDESC_INFO pRxdesc_info, u8 **next_pkt);
  1855. u32 (*halmac_bb_reg_read)(PHALMAC_ADAPTER pHalmac_adapter, u32 halmac_offset, u8 len);
  1856. HALMAC_RET_STATUS(*halmac_bb_reg_write)(PHALMAC_ADAPTER pHalmac_adapter, u32 halmac_offset, u32 halmac_data, u8 len);
  1857. u32 (*halmac_rf_reg_read)(PHALMAC_ADAPTER pHalmac_adapter, PHAL_RF_REG_INFO pRf_reg_info);
  1858. HALMAC_RET_STATUS(*halmac_rf_reg_write)(PHALMAC_ADAPTER pHalmac_adapter, PHAL_RF_REG_INFO pRf_reg_info);
  1859. HALMAC_RET_STATUS(*halmac_init_antenna_selection)(PHALMAC_ADAPTER pHalmac_adapter);
  1860. HALMAC_RET_STATUS(*halmac_bb_preconfig)(PHALMAC_ADAPTER pHalmac_adapter);
  1861. HALMAC_RET_STATUS(*halmac_init_crystal_capacity)(PHALMAC_ADAPTER pHalmac_adapter);
  1862. HALMAC_RET_STATUS(*halmac_trx_antenna_setting)(PHALMAC_ADAPTER pHalmac_adapter);
  1863. HALMAC_RET_STATUS(*halmac_himr_setting_sdio)(PHALMAC_ADAPTER pHalmac_adapter, PHALMAC_SDIO_HIMR_INFO sdio_himr_sdio);
  1864. HALMAC_RET_STATUS(*halmac_dump_cam_table)(PHALMAC_ADAPTER pHalmac_adapter, u32 entry_num, PHALMAC_CAM_ENTRY_FORMAT pCam_table);
  1865. HALMAC_RET_STATUS(*halmac_load_cam_table)(PHALMAC_ADAPTER pHalmac_adapter, u8 entry_num, PHALMAC_CAM_ENTRY_FORMAT pCam_table);
  1866. HALMAC_RET_STATUS(*halmac_send_beacon)(PHALMAC_ADAPTER pHalmac_adapter, u8 *pBuf, u32 size, PHALMAC_BEACON_INFO pbeacon_info);
  1867. HALMAC_RET_STATUS(*halmac_get_management_txdesc)(PHALMAC_ADAPTER pHalmac_adapter, u8 *pBuf, u32 *pSize, PHALMAC_MGNT_INFO pmgnt_info);
  1868. HALMAC_RET_STATUS(*halmac_send_control)(PHALMAC_ADAPTER pHalmac_adapter, u8 *pBuf, u32 size, PHALMAC_CTRL_INFO pctrl_info);
  1869. HALMAC_RET_STATUS(*halmac_send_hiqueue)(PHALMAC_ADAPTER pHalmac_adapter, u8 *pBuf, u32 size, PHALMAC_HIGH_QUEUE_INFO pHigh_info);
  1870. HALMAC_RET_STATUS(*halmac_run_pwrseq)(PHALMAC_ADAPTER pHalmac_adapter, HALMAC_PWR_SEQ_ID seq);
  1871. HALMAC_RET_STATUS(*halmac_media_status_rpt)(PHALMAC_ADAPTER pHalmac_adapter, u8 op_mode, u8 mac_id_ind, u8 mac_id, u8 mac_id_end);
  1872. HALMAC_RET_STATUS(*halmac_stop_beacon)(PHALMAC_ADAPTER pHalmac_adapter);
  1873. HALMAC_RET_STATUS(*halmac_check_trx_status)(PHALMAC_ADAPTER pHalmac_adapter);
  1874. HALMAC_RET_STATUS(*halmac_set_agg_num)(PHALMAC_ADAPTER pHalmac_adapter, u8 agg_num);
  1875. HALMAC_RET_STATUS(*halmac_timer_10ms)(PHALMAC_ADAPTER pHalmac_adapter);
  1876. HALMAC_RET_STATUS(*halmac_download_firmware_fpag)(PHALMAC_ADAPTER pHalmac_adapter, u8 *pHamacl_fw, u32 halmac_fw_size, u32 iram_address);
  1877. HALMAC_RET_STATUS(*halmac_download_rom_fpga)(PHALMAC_ADAPTER pHalmac_adapter, u8 *pHamacl_fw, u32 halmac_fw_size, u32 rom_address);
  1878. HALMAC_RET_STATUS(*halmac_download_flash)(PHALMAC_ADAPTER pHalmac_adapter, u8 *pHamacl_fw, u32 halmac_fw_size, u32 rom_address);
  1879. HALMAC_RET_STATUS(*halmac_erase_flash)(PHALMAC_ADAPTER pHalmac_adapter);
  1880. HALMAC_RET_STATUS(*halmac_check_flash)(PHALMAC_ADAPTER pHalmac_adapter, u8 *pHamacl_fw, u32 halmac_fw_size);
  1881. HALMAC_RET_STATUS(*halmac_send_nlo)(PHALMAC_ADAPTER pHalmac_adapter, PHALMAC_NLO_CFG pNlo_cfg);
  1882. HALMAC_RET_STATUS(*halmac_get_chip_type)(PHALMAC_ADAPTER pHalmac_adapter, PHALMAC_CHIP_TYPE pChip_type);
  1883. u32 (*halmac_get_rx_agg_num)(PHALMAC_ADAPTER pHalmac_adapter, u32 pkt_size, u8 *pPkt_buff);
  1884. u8 (*halmac_check_rx_scsi_resp)(PHALMAC_ADAPTER pHalmac_adapter, u8 *pRxdesc, PHAL_RXDESC_PARSER pRxdesc_parser);
  1885. VOID (*halmac_get_hcpwm)(PHALMAC_ADAPTER pHalmac_adapter, u8 *pHcpwm);
  1886. VOID (*halmac_get_hcpwm2)(PHALMAC_ADAPTER pHalmac_adapter, u16 *pHcpwm2);
  1887. VOID (*halmac_set_hrpwm)(PHALMAC_ADAPTER pHalmac_adapter, u8 hrpwm);
  1888. VOID (*halmac_set_hrpwm2)(PHALMAC_ADAPTER pHalmac_adapter, u16 hrpwm2);
  1889. #endif
  1890. } HALMAC_API, *PHALMAC_API;
  1891. #define HALMAC_GET_API(phalmac_adapter) ((PHALMAC_API)phalmac_adapter->pHalmac_api)
  1892. static HALMAC_INLINE HALMAC_RET_STATUS
  1893. halmac_adapter_validate(
  1894. PHALMAC_ADAPTER pHalmac_adapter
  1895. )
  1896. {
  1897. if ((NULL == pHalmac_adapter) || (pHalmac_adapter->pHalAdapter_backup != pHalmac_adapter))
  1898. return HALMAC_RET_ADAPTER_INVALID;
  1899. return HALMAC_RET_SUCCESS;
  1900. }
  1901. static HALMAC_INLINE HALMAC_RET_STATUS
  1902. halmac_api_validate(
  1903. PHALMAC_ADAPTER pHalmac_adapter
  1904. )
  1905. {
  1906. if (HALMAC_API_STATE_INIT != pHalmac_adapter->halmac_state.api_state)
  1907. return HALMAC_RET_API_INVALID;
  1908. return HALMAC_RET_SUCCESS;
  1909. }
  1910. static HALMAC_INLINE HALMAC_RET_STATUS
  1911. halmac_fw_validate(
  1912. PHALMAC_ADAPTER pHalmac_adapter
  1913. )
  1914. {
  1915. if (HALMAC_DLFW_DONE != pHalmac_adapter->halmac_state.dlfw_state && HALMAC_GEN_INFO_SENT != pHalmac_adapter->halmac_state.dlfw_state)
  1916. return HALMAC_RET_NO_DLFW;
  1917. return HALMAC_RET_SUCCESS;
  1918. }
  1919. #endif