wlan_lib.h 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978
  1. /*
  2. ** Id: //Department/DaVinci/BRANCHES/MT6620_WIFI_DRIVER_V2_3/include/wlan_lib.h#1
  3. */
  4. /*! \file "wlan_lib.h"
  5. \brief The declaration of the functions of the wlanAdpater objects
  6. Detail description.
  7. */
  8. /*
  9. ** Log: wlan_lib.h
  10. *
  11. * 06 08 2012 eason.tsai
  12. * NULL
  13. * Nvram context covert from 6620 to 6628 for old 6620 meta tool
  14. *
  15. * 01 16 2012 cp.wu
  16. * [MT6620 Wi-Fi][Driver] API and behavior modification for
  17. * preferred band configuration with corresponding network configuration
  18. * add wlanSetPreferBandByNetwork() for glue layer to invoke for
  19. * setting preferred band configuration corresponding to network type.
  20. *
  21. * 01 05 2012 wh.su
  22. * [WCXRP00001153] [MT6620 Wi-Fi][Driver] Adding the get_ch_list and set_tx_power proto type function
  23. * Adding the related ioctl / wlan oid function to set the Tx power cfg.
  24. *
  25. * 10 03 2011 cp.wu
  26. * [WCXRP00001022] [MT6628 Driver][Firmware Download] Add multi section independent download functionality
  27. * eliminate win32 native data types.
  28. *
  29. * 10 03 2011 cp.wu
  30. * [WCXRP00001022] [MT6628 Driver][Firmware Download] Add multi section independent download functionality
  31. * add firmware download path in divided scatters.
  32. *
  33. * 10 03 2011 cp.wu
  34. * [MT6628 Driver][Firmware Download] Add multi section independent download functionality
  35. * add firmware downloading aggregated path.
  36. *
  37. * 09 20 2011 tsaiyuan.hsu
  38. * [WCXRP00000931] [MT5931 Wi-Fi][DRV/FW] add swcr to disable roaming from driver
  39. * change window registry of driver for roaming.
  40. *
  41. * 09 08 2011 cm.chang
  42. * [WCXRP00000969] [MT6620 Wi-Fi][Driver][FW] Channel list for 5G band based on country code
  43. * Use new fields ucChannelListMap and ucChannelListIndex in NVRAM
  44. *
  45. * 08 31 2011 cm.chang
  46. * [WCXRP00000969] [MT6620 Wi-Fi][Driver][FW] Channel list for 5G band based on country code
  47. * .
  48. *
  49. * 08 25 2011 chinghwa.yu
  50. * [WCXRP00000612] [MT6620 Wi-Fi] [FW] CSD update SWRDD algorithm
  51. * Add DFS switch.
  52. *
  53. * 08 24 2011 chinghwa.yu
  54. * [WCXRP00000612] [MT6620 Wi-Fi] [FW] CSD update SWRDD algorithm
  55. * Update RDD test mode cases.
  56. *
  57. * 08 15 2011 cp.wu
  58. * [WCXRP00000913] [MT6620 Wi-Fi] create repository of source code dedicated for MT6620 E6 ASIC
  59. * support to load different firmware image for E3/E4/E5 and E6 ASIC on win32 platforms.
  60. *
  61. * 08 02 2011 yuche.tsai
  62. * [WCXRP00000896] [Volunteer Patch][WiFi Direct][Driver] GO with multiple client,
  63. * TX deauth to a disconnecting device issue.
  64. * Fix GO send deauth frame issue.
  65. *
  66. * 07 22 2011 jeffrey.chang
  67. * [WCXRP00000864] [MT5931] Add command to adjust OSC stable time
  68. * modify driver to set OSC stable time after f/w download
  69. *
  70. * 07 18 2011 chinghwa.yu
  71. * [WCXRP00000063] Update BCM CoEx design and settings[WCXRP00000612] [MT6620 Wi-Fi] [FW] CSD update SWRDD algorithm
  72. * Add CMD/Event for RDD and BWCS.
  73. *
  74. * 05 27 2011 cp.wu
  75. * [WCXRP00000749] [MT6620 Wi-Fi][Driver] Add band edge tx power control to Wi-Fi NVRAM
  76. * invoke CMD_ID_SET_EDGE_TXPWR_LIMIT when there is valid data exist in NVRAM content.
  77. *
  78. * 05 11 2011 cp.wu
  79. * [WCXRP00000718] [MT6620 Wi-Fi] modify the behavior of setting tx power
  80. * ACPI APIs migrate to wlan_lib.c for glue layer to invoke.
  81. *
  82. * 04 18 2011 cp.wu
  83. * [WCXRP00000636] [WHQL][MT5931 Driver] 2c_PMHibernate (hang on 2h)
  84. * 1) add API for glue layer to query ACPI state
  85. * 2) Windows glue should not access to hardware after switched into D3 state
  86. *
  87. * 03 10 2011 cp.wu
  88. * [WCXRP00000532] [MT6620 Wi-Fi][Driver] Migrate NVRAM configuration procedures from MT6620 E2 to MT6620 E3
  89. * deprecate configuration used by MT6620 E2
  90. *
  91. * 01 27 2011 tsaiyuan.hsu
  92. * [WCXRP00000392] [MT6620 Wi-Fi][Driver] Add Roaming Support
  93. * add roaming fsm
  94. * 1. not support 11r, only use strength of signal to determine roaming.
  95. * 2. not enable CFG_SUPPORT_ROAMING until completion of full test.
  96. * 3. in 6620, adopt work-around to avoid sign extension problem of cck of hw
  97. * 4. assume that change of link quality in smooth way.
  98. *
  99. * 01 27 2011 george.huang
  100. * [WCXRP00000355] [MT6620 Wi-Fi] Set WMM-PS related setting with qualifying AP capability
  101. * Support current measure mode, assigned by registry (XP only).
  102. *
  103. * 01 24 2011 cp.wu
  104. * [WCXRP00000382] [MT6620 Wi-Fi][Driver] Track forwarding packet number with notifying tx thread for serving
  105. * 1. add an extra counter for tracking pending forward frames.
  106. * 2. notify TX service thread as well when there is pending forward frame
  107. * 3. correct build errors leaded by introduction of Wi-Fi direct separation module
  108. *
  109. * 01 10 2011 cp.wu
  110. * [WCXRP00000351] [MT6620 Wi-Fi][Driver] remove from scanning result
  111. * in OID handling layer when the corresponding BSS is disconnected due to beacon timeout
  112. * remove from scanning result when the BSS is disconnected due to beacon timeout.
  113. *
  114. * 10 27 2010 george.huang
  115. * [WCXRP00000127] [MT6620 Wi-Fi][Driver] Add a registry to
  116. * disable Beacon Timeout function for SQA test by using E1 EVB
  117. * Support registry option for disable beacon lost detection.
  118. *
  119. * 10 26 2010 cp.wu
  120. * [WCXRP00000056] [MT6620 Wi-Fi][Driver] NVRAM implementation with Version Check
  121. * [WCXRP00000137] [MT6620 Wi-Fi] [FW] Support NIC capability query command
  122. * 1) update NVRAM content template to ver 1.02
  123. * 2) add compile option for querying NIC capability (default: off)
  124. * 3) modify AIS 5GHz support to run-time option, which could be turned on by registry or NVRAM setting
  125. * 4) correct auto-rate compiler error under linux (treat warning as error)
  126. * 5) simplify usage of NVRAM and REG_INFO_T
  127. * 6) add version checking between driver and firmware
  128. *
  129. * 10 26 2010 eddie.chen
  130. * [WCXRP00000134] [MT6620 Wi-Fi][Driver] Add a registry to enable auto rate for SQA test by using E1 EVB
  131. * Add auto rate parameter in registry.
  132. *
  133. * 10 18 2010 cp.wu
  134. * [WCXRP00000056] [MT6620 Wi-Fi][Driver] NVRAM implementation with Version Check
  135. * [WCXRP00000086] [MT6620 Wi-Fi][Driver] The mac address is all zero at android
  136. * complete implementation of Android NVRAM access
  137. *
  138. * 10 08 2010 cp.wu
  139. * [WCXRP00000084] [MT6620 Wi-Fi][Driver][FW] Add fixed rate support for distance test
  140. * adding fixed rate support for distance test. (from registry setting)
  141. *
  142. * 10 06 2010 cp.wu
  143. * [WCXRP00000052] [MT6620 Wi-Fi][Driver] Eliminate Linux Compile Warning
  144. * divide a single function into 2 part to surpress a weird compiler warning from gcc-4.4.0
  145. *
  146. * 10 06 2010 cp.wu
  147. * [WCXRP00000052] [MT6620 Wi-Fi][Driver] Eliminate Linux Compile Warning
  148. * code reorganization to improve isolation between GLUE and CORE layers.
  149. *
  150. * 10 05 2010 cp.wu
  151. * [WCXRP00000056] [MT6620 Wi-Fi][Driver] NVRAM implementation with Version Check
  152. * load manufacture data when CFG_SUPPORT_NVRAM is set to 1
  153. *
  154. * 09 24 2010 cp.wu
  155. * [WCXRP00000057] [MT6620 Wi-Fi][Driver] Modify online scan to a run-time switchable feature
  156. * Modify online scan as a run-time adjustable option (for Windows, in registry)
  157. *
  158. * 09 23 2010 cp.wu
  159. * [WCXRP00000051] [MT6620 Wi-Fi][Driver] WHQL test fail in MAC address changed item
  160. * use firmware reported mac address right after wlanAdapterStart() as permanent address
  161. *
  162. * 09 23 2010 cp.wu
  163. * [WCXRP00000056] [MT6620 Wi-Fi][Driver] NVRAM implementation with Version Check
  164. * add skeleton for NVRAM integration
  165. *
  166. * 08 26 2010 yuche.tsai
  167. * NULL
  168. * Add AT GO test configure mode under WinXP.
  169. * Please enable 1. CFG_ENABLE_WIFI_DIRECT, 2. CFG_TEST_WIFI_DIRECT_GO, 3. CFG_SUPPORT_AAA
  170. *
  171. * 08 25 2010 george.huang
  172. * NULL
  173. * .
  174. *
  175. * 07 21 2010 cp.wu
  176. *
  177. * 1) change BG_SCAN to ONLINE_SCAN for consistent term
  178. * 2) only clear scanning result when scan is permitted to do
  179. *
  180. * 07 13 2010 cp.wu
  181. *
  182. * 1) MMPDUs are now sent to MT6620 by CMD queue for keeping strict order of 1X/MMPDU/CMD packets
  183. * 2) integrate with qmGetFrameAction() for deciding which MMPDU/1X could pass checking for sending
  184. * 2) enhance CMD_INFO_T descriptor number from 10 to 32 to avoid
  185. * descriptor underflow under concurrent network operation
  186. *
  187. * 07 08 2010 cp.wu
  188. *
  189. * [WPD00003833] [MT6620 and MT5931] Driver migration - move to new repository.
  190. *
  191. * 06 24 2010 cp.wu
  192. * [WPD00003833][MT6620 and MT5931] Driver migration
  193. * 802.1x and bluetooth-over-Wi-Fi security frames are now delievered to firmware via command path instead of data path.
  194. *
  195. * 06 21 2010 cp.wu
  196. * [WPD00003833][MT6620 and MT5931] Driver migration
  197. * change MAC address updating logic.
  198. *
  199. * 06 21 2010 cp.wu
  200. * [WPD00003833][MT6620 and MT5931] Driver migration
  201. * simplify timer usage.
  202. *
  203. * 06 11 2010 cp.wu
  204. * [WPD00003833][MT6620 and MT5931] Driver migration
  205. * 1) migrate assoc.c.
  206. * 2) add ucTxSeqNum for tracking frames which needs TX-DONE awareness
  207. * 3) add configuration options for CNM_MEM and RSN modules
  208. * 4) add data path for management frames
  209. * 5) eliminate rPacketInfo of MSDU_INFO_T
  210. *
  211. * 06 08 2010 cp.wu
  212. * [WPD00003833][MT6620 and MT5931] Driver migration
  213. * cnm_timer has been migrated.
  214. *
  215. * 06 06 2010 kevin.huang
  216. * [WPD00003832][MT6620 5931] Create driver base
  217. * [MT6620 5931] Create driver base
  218. *
  219. * 05 20 2010 cp.wu
  220. * [WPD00001943]Create WiFi test driver framework on WinXP
  221. * 1) integrate OID_GEN_NETWORK_LAYER_ADDRESSES with CMD_ID_SET_IP_ADDRESS
  222. * 2) buffer statistics data for 2 seconds
  223. * 3) use default value for adhoc parameters instead of 0
  224. *
  225. * 05 12 2010 cp.wu
  226. * [WPD00001943]Create WiFi test driver framework on WinXP
  227. * add extra 64 adjustable parameters for CoEX scenario.
  228. *
  229. * 04 06 2010 cp.wu
  230. * [WPD00001943]Create WiFi test driver framework on WinXP
  231. * code refine: fgTestMode should be at adapter rather than glue due to the device/fw is also involved
  232. *
  233. * 04 06 2010 cp.wu
  234. * [WPD00001943]Create WiFi test driver framework on WinXP
  235. * 1) for some OID, never do timeout expiration
  236. * * 2) add 2 kal API for later integration
  237. *
  238. * 04 01 2010 cp.wu
  239. * [WPD00001943]Create WiFi test driver framework on WinXP
  240. * change to use WIFI_TCM_ALWAYS_ON as firmware image
  241. *
  242. * 03 31 2010 wh.su
  243. * [WPD00003816][MT6620 Wi-Fi] Adding the security support
  244. * modify the wapi related code for new driver's design.
  245. *
  246. * 03 22 2010 cp.wu
  247. * [WPD00001943]Create WiFi test driver framework on WinXP
  248. * always send CMD_NIC_POWER_CTRL packet when nic is being halted
  249. *
  250. * 03 12 2010 cp.wu
  251. * [WPD00001943]Create WiFi test driver framework on WinXP
  252. * add two option for ACK and ENCRYPTION for firmware download
  253. *
  254. * 02 24 2010 cp.wu
  255. * [WPD00001943]Create WiFi test driver framework on WinXP
  256. * separate wlanProcesQueuePacket() into 2 APIs upon request
  257. *
  258. * 02 23 2010 cp.wu
  259. * [WPD00001943]Create WiFi test driver framework on WinXP
  260. * add new API: wlanProcessQueuedPackets()
  261. *
  262. * 02 11 2010 cp.wu
  263. * [WPD00001943]Create WiFi test driver framework on WinXP
  264. * 1. add logic for firmware download
  265. * * * 2. firmware image filename and start/load address are now retrieved from registry
  266. *
  267. * 02 10 2010 cp.wu
  268. * [WPD00001943]Create WiFi test driver framework on WinXP
  269. * 1) remove unused function in nic_rx.c [which has been handled in que_mgt.c]
  270. * * * * 2) firmware image length is now retrieved via NdisFileOpen
  271. * * * * 3) firmware image is not structured by (P_IMG_SEC_HDR_T) anymore
  272. * * * * 4) nicRxWaitResponse() revised
  273. * * * * 5) another set of TQ counter default value is added for fw-download state
  274. * * * * 6) Wi-Fi load address is now retrieved from registry too
  275. *
  276. * 02 08 2010 cp.wu
  277. * [WPD00001943]Create WiFi test driver framework on WinXP
  278. * prepare for implementing fw download logic
  279. *
  280. * 01 27 2010 cp.wu
  281. * [WPD00001943]Create WiFi test driver framework on WinXP
  282. * 1. eliminate improper variable in rHifInfo
  283. * * * * * * * 2. block TX/ordinary OID when RF test mode is engaged
  284. * * * * * * * 3. wait until firmware finish operation when entering into and leaving from RF test mode
  285. * * * * * * * 4. correct some HAL implementation
  286. ** \main\maintrunk.MT6620WiFiDriver_Prj\10 2009-12-10 16:39:55 GMT mtk02752
  287. ** eliminate unused API
  288. ** \main\maintrunk.MT6620WiFiDriver_Prj\9 2009-10-13 21:58:41 GMT mtk01084
  289. ** update for new macro define
  290. ** \main\maintrunk.MT6620WiFiDriver_Prj\8 2009-05-19 10:43:06 GMT mtk01461
  291. ** Add wlanReleasePendingOid()
  292. ** \main\maintrunk.MT6620WiFiDriver_Prj\7 2009-04-13 16:38:44 GMT mtk01084
  293. ** add WIFI start function
  294. ** \main\maintrunk.MT6620WiFiDriver_Prj\6 2009-04-08 16:51:14 GMT mtk01084
  295. ** Update for the image download part
  296. ** \main\maintrunk.MT6620WiFiDriver_Prj\5 2009-04-01 10:57:38 GMT mtk01461
  297. ** Add wlanSendLeftClusteredFrames() for SDIO_TX_ENHANCE
  298. ** \main\maintrunk.MT6620WiFiDriver_Prj\4 2009-03-23 00:31:02 GMT mtk01461
  299. ** Add declaration of FW Image download reference code
  300. ** \main\maintrunk.MT6620WiFiDriver_Prj\3 2009-03-16 09:08:31 GMT mtk01461
  301. ** Update TX PATH API
  302. ** \main\maintrunk.MT6620WiFiDriver_Prj\2 2009-03-10 20:12:04 GMT mtk01426
  303. ** Init for develop
  304. **
  305. */
  306. #ifndef _WLAN_LIB_H
  307. #define _WLAN_LIB_H
  308. /*******************************************************************************
  309. * C O M P I L E R F L A G S
  310. ********************************************************************************
  311. */
  312. /*******************************************************************************
  313. * E X T E R N A L R E F E R E N C E S
  314. ********************************************************************************
  315. */
  316. #include "CFG_Wifi_File.h"
  317. #include "rlm_domain.h"
  318. #include "wlan_typedef.h"
  319. extern BOOLEAN fgIsResetting;
  320. /*******************************************************************************
  321. * C O N S T A N T S
  322. ********************************************************************************
  323. */
  324. #define MAX_NUM_GROUP_ADDR 32 /* max number of group addresses */
  325. #define TX_CS_TCP_UDP_GEN BIT(1)
  326. #define TX_CS_IP_GEN BIT(0)
  327. #define CSUM_OFFLOAD_EN_TX_TCP BIT(0)
  328. #define CSUM_OFFLOAD_EN_TX_UDP BIT(1)
  329. #define CSUM_OFFLOAD_EN_TX_IP BIT(2)
  330. #define CSUM_OFFLOAD_EN_RX_TCP BIT(3)
  331. #define CSUM_OFFLOAD_EN_RX_UDP BIT(4)
  332. #define CSUM_OFFLOAD_EN_RX_IPv4 BIT(5)
  333. #define CSUM_OFFLOAD_EN_RX_IPv6 BIT(6)
  334. #define CSUM_OFFLOAD_EN_TX_MASK BITS(0, 2)
  335. #define CSUM_OFFLOAD_EN_ALL BITS(0, 6)
  336. /* TCP, UDP, IP Checksum */
  337. #define RX_CS_TYPE_UDP BIT(7)
  338. #define RX_CS_TYPE_TCP BIT(6)
  339. #define RX_CS_TYPE_IPv6 BIT(5)
  340. #define RX_CS_TYPE_IPv4 BIT(4)
  341. #define RX_CS_STATUS_UDP BIT(3)
  342. #define RX_CS_STATUS_TCP BIT(2)
  343. #define RX_CS_STATUS_IP BIT(0)
  344. #define CSUM_NOT_SUPPORTED 0x0
  345. #define TXPWR_USE_PDSLOPE 0
  346. /* NVRAM error code definitions */
  347. #define NVRAM_ERROR_VERSION_MISMATCH BIT(1)
  348. #define NVRAM_ERROR_INVALID_TXPWR BIT(2)
  349. #define NVRAM_ERROR_INVALID_DPD BIT(3)
  350. #define NVRAM_ERROR_INVALID_MAC_ADDR BIT(4)
  351. #if CFG_SUPPORT_PWR_LIMIT_COUNTRY
  352. #define NVRAM_POWER_LIMIT_TABLE_INVALID BIT(5)
  353. #endif
  354. #define NUM_TC_RESOURCE_TO_STATISTICS 4
  355. #define WLAN_CFG_ARGV_MAX 8
  356. #define WLAN_CFG_ENTRY_NUM_MAX 128
  357. #define WLAN_CFG_KEY_LEN_MAX 32 /* include \x00 EOL */
  358. #define WLAN_CFG_VALUE_LEN_MAX 32 /* include \x00 EOL */
  359. #define WLAN_CFG_FLAG_SKIP_CB BIT(0)
  360. #define WLAN_CFG_FILE_BUF_SIZE 2048
  361. #define WLAN_CFG_SET_CHIP_LEN_MAX 10
  362. #define WLAN_CFG_SET_DEBUG_LEVEL_LEN_MAX 10
  363. #define WLAN_CFG_SET_SW_CTRL_LEN_MAX 10
  364. #define WLAN_OID_TIMEOUT_THRESHOLD 2000 /* OID timeout (in ms) */
  365. #define WLAN_OID_TIMEOUT_THRESHOLD_IN_RESETTING 300 /* OID timeout during chip-resetting (in ms) */
  366. #define WLAN_OID_NO_ACK_THRESHOLD 3
  367. #define WLAN_TX_THREAD_TASK_PRIORITY 0 /* If not setting the priority, 0 is the default */
  368. #define WLAN_TX_THREAD_TASK_NICE (-10) /* If not setting the nice, -10 is the default */
  369. /*******************************************************************************
  370. * D A T A T Y P E S
  371. ********************************************************************************
  372. */
  373. typedef WLAN_STATUS(*PFN_OID_HANDLER_FUNC) (IN P_ADAPTER_T prAdapter,
  374. IN PVOID pvBuf, IN UINT_32 u4BufLen, OUT PUINT_32 pu4OutInfoLen);
  375. typedef enum _ENUM_CSUM_TYPE_T {
  376. CSUM_TYPE_IPV4,
  377. CSUM_TYPE_IPV6,
  378. CSUM_TYPE_TCP,
  379. CSUM_TYPE_UDP,
  380. CSUM_TYPE_NUM
  381. } ENUM_CSUM_TYPE_T, *P_ENUM_CSUM_TYPE_T;
  382. typedef enum _ENUM_CSUM_RESULT_T {
  383. CSUM_RES_NONE,
  384. CSUM_RES_SUCCESS,
  385. CSUM_RES_FAILED,
  386. CSUM_RES_NUM
  387. } ENUM_CSUM_RESULT_T, *P_ENUM_CSUM_RESULT_T;
  388. typedef enum _ENUM_PHY_MODE_T {
  389. ENUM_PHY_2G4_CCK,
  390. ENUM_PHY_2G4_OFDM_BPSK,
  391. ENUM_PHY_2G4_OFDM_QPSK,
  392. ENUM_PHY_2G4_OFDM_16QAM,
  393. ENUM_PHY_2G4_OFDM_48M,
  394. ENUM_PHY_2G4_OFDM_54M,
  395. ENUM_PHY_2G4_HT20_BPSK,
  396. ENUM_PHY_2G4_HT20_QPSK,
  397. ENUM_PHY_2G4_HT20_16QAM,
  398. ENUM_PHY_2G4_HT20_MCS5,
  399. ENUM_PHY_2G4_HT20_MCS6,
  400. ENUM_PHY_2G4_HT20_MCS7,
  401. ENUM_PHY_2G4_HT40_BPSK,
  402. ENUM_PHY_2G4_HT40_QPSK,
  403. ENUM_PHY_2G4_HT40_16QAM,
  404. ENUM_PHY_2G4_HT40_MCS5,
  405. ENUM_PHY_2G4_HT40_MCS6,
  406. ENUM_PHY_2G4_HT40_MCS7,
  407. ENUM_PHY_5G_OFDM_BPSK,
  408. ENUM_PHY_5G_OFDM_QPSK,
  409. ENUM_PHY_5G_OFDM_16QAM,
  410. ENUM_PHY_5G_OFDM_48M,
  411. ENUM_PHY_5G_OFDM_54M,
  412. ENUM_PHY_5G_HT20_BPSK,
  413. ENUM_PHY_5G_HT20_QPSK,
  414. ENUM_PHY_5G_HT20_16QAM,
  415. ENUM_PHY_5G_HT20_MCS5,
  416. ENUM_PHY_5G_HT20_MCS6,
  417. ENUM_PHY_5G_HT20_MCS7,
  418. ENUM_PHY_5G_HT40_BPSK,
  419. ENUM_PHY_5G_HT40_QPSK,
  420. ENUM_PHY_5G_HT40_16QAM,
  421. ENUM_PHY_5G_HT40_MCS5,
  422. ENUM_PHY_5G_HT40_MCS6,
  423. ENUM_PHY_5G_HT40_MCS7,
  424. ENUM_PHY_MODE_NUM
  425. } ENUM_PHY_MODE_T, *P_ENUM_PHY_MODE_T;
  426. typedef enum _ENUM_POWER_SAVE_POLL_MODE_T {
  427. ENUM_POWER_SAVE_POLL_DISABLE,
  428. ENUM_POWER_SAVE_POLL_LEGACY_NULL,
  429. ENUM_POWER_SAVE_POLL_QOS_NULL,
  430. ENUM_POWER_SAVE_POLL_NUM
  431. } ENUM_POWER_SAVE_POLL_MODE_T, *P_ENUM_POWER_SAVE_POLL_MODE_T;
  432. typedef enum _ENUM_AC_TYPE_T {
  433. ENUM_AC_TYPE_AC0,
  434. ENUM_AC_TYPE_AC1,
  435. ENUM_AC_TYPE_AC2,
  436. ENUM_AC_TYPE_AC3,
  437. ENUM_AC_TYPE_AC4,
  438. ENUM_AC_TYPE_AC5,
  439. ENUM_AC_TYPE_AC6,
  440. ENUM_AC_TYPE_BMC,
  441. ENUM_AC_TYPE_NUM
  442. } ENUM_AC_TYPE_T, *P_ENUM_AC_TYPE_T;
  443. typedef enum _ENUM_ADV_AC_TYPE_T {
  444. ENUM_ADV_AC_TYPE_RX_NSW,
  445. ENUM_ADV_AC_TYPE_RX_PTA,
  446. ENUM_ADV_AC_TYPE_RX_SP,
  447. ENUM_ADV_AC_TYPE_TX_PTA,
  448. ENUM_ADV_AC_TYPE_TX_RSP,
  449. ENUM_ADV_AC_TYPE_NUM
  450. } ENUM_ADV_AC_TYPE_T, *P_ENUM_ADV_AC_TYPE_T;
  451. typedef enum _ENUM_REG_CH_MAP_T {
  452. REG_CH_MAP_COUNTRY_CODE,
  453. REG_CH_MAP_TBL_IDX,
  454. REG_CH_MAP_CUSTOMIZED,
  455. REG_CH_MAP_NUM
  456. } ENUM_REG_CH_MAP_T, *P_ENUM_REG_CH_MAP_T;
  457. #define CHIP_CONFIG_RESP_SIZE 320
  458. enum {
  459. CHIP_CONFIG_TYPE_WO_RESPONSE = 0x00,
  460. CHIP_CONFIG_TYPE_MEM8 = 0x01,
  461. CHIP_CONFIG_TYPE_MEM32 = 0x02,
  462. CHIP_CONFIG_TYPE_ASCII = 0x03,
  463. CHIP_CONFIG_TYPE_BINARY = 0x04,
  464. CHIP_CONFIG_TYPE_DRV_PASSTHROUGH = 0x05,
  465. CHIP_CONFIG_TYPE_END
  466. };
  467. typedef struct _SET_TXPWR_CTRL_T {
  468. INT_8 c2GLegacyStaPwrOffset; /* Unit: 0.5dBm, default: 0 */
  469. INT_8 c2GHotspotPwrOffset;
  470. INT_8 c2GP2pPwrOffset;
  471. INT_8 c2GBowPwrOffset;
  472. INT_8 c5GLegacyStaPwrOffset; /* Unit: 0.5dBm, default: 0 */
  473. INT_8 c5GHotspotPwrOffset;
  474. INT_8 c5GP2pPwrOffset;
  475. INT_8 c5GBowPwrOffset;
  476. UINT_8 ucConcurrencePolicy; /* TX power policy when concurrence
  477. in the same channel
  478. 0: Highest power has priority
  479. 1: Lowest power has priority */
  480. INT_8 acReserved1[3]; /* Must be zero */
  481. /* Power limit by channel for all data rates */
  482. INT_8 acTxPwrLimit2G[14]; /* Channel 1~14, Unit: 0.5dBm */
  483. INT_8 acTxPwrLimit5G[4]; /* UNII 1~4 */
  484. INT_8 acReserved2[2]; /* Must be zero */
  485. } SET_TXPWR_CTRL_T, *P_SET_TXPWR_CTRL_T;
  486. /* For storing driver initialization value from glue layer */
  487. typedef struct _REG_INFO_T {
  488. UINT_32 u4SdBlockSize; /* SDIO block size */
  489. UINT_32 u4SdBusWidth; /* SDIO bus width. 1 or 4 */
  490. UINT_32 u4SdClockRate; /* SDIO clock rate. (in unit of HZ) */
  491. UINT_32 u4StartAddress; /* Starting address of Wi-Fi Firmware */
  492. UINT_32 u4LoadAddress; /* Load address of Wi-Fi Firmware */
  493. UINT_16 aucFwImgFilename[65]; /* Firmware filename */
  494. UINT_16 aucFwImgFilenameE6[65]; /* Firmware filename for E6 */
  495. UINT_32 u4StartFreq; /* Start Frequency for Ad-Hoc network : in unit of KHz */
  496. UINT_32 u4AdhocMode; /* Default mode for Ad-Hoc network : ENUM_PARAM_AD_HOC_MODE_T */
  497. UINT_32 u4RddStartFreq;
  498. UINT_32 u4RddStopFreq;
  499. UINT_32 u4RddTestMode;
  500. UINT_32 u4RddShutFreq;
  501. UINT_32 u4RddDfs;
  502. INT_32 i4HighRssiThreshold;
  503. INT_32 i4MediumRssiThreshold;
  504. INT_32 i4LowRssiThreshold;
  505. INT_32 au4TxPriorityTag[ENUM_AC_TYPE_NUM];
  506. INT_32 au4RxPriorityTag[ENUM_AC_TYPE_NUM];
  507. INT_32 au4AdvPriorityTag[ENUM_ADV_AC_TYPE_NUM];
  508. UINT_32 u4FastPSPoll;
  509. UINT_32 u4PTA; /* 0: disable, 1: enable */
  510. UINT_32 u4TXLimit; /* 0: disable, 1: enable */
  511. UINT_32 u4SilenceWindow; /* range: 100 - 625, unit: us */
  512. UINT_32 u4TXLimitThreshold; /* range: 250 - 1250, unit: us */
  513. UINT_32 u4PowerMode;
  514. UINT_32 fgEnArpFilter;
  515. UINT_32 u4PsCurrentMeasureEn;
  516. UINT_32 u4UapsdAcBmp;
  517. UINT_32 u4MaxSpLen;
  518. UINT_32 fgDisOnlineScan; /* 0: enable online scan, non-zero: disable online scan */
  519. UINT_32 fgDisBcnLostDetection; /* 0: enable online scan, non-zero: disable online scan */
  520. UINT_32 u4FixedRate; /* 0: automatic, non-zero: fixed rate */
  521. UINT_32 u4ArSysParam0;
  522. UINT_32 u4ArSysParam1;
  523. UINT_32 u4ArSysParam2;
  524. UINT_32 u4ArSysParam3;
  525. UINT_32 fgDisRoaming; /* 0:enable roaming 1:disable */
  526. /* NVRAM - MP Data -START- */
  527. UINT_8 aucMacAddr[6];
  528. UINT_16 au2CountryCode[4]; /* Country code (in ISO 3166-1 expression, ex: "US", "TW") */
  529. TX_PWR_PARAM_T rTxPwr;
  530. UINT_8 aucEFUSE[144];
  531. UINT_8 ucTxPwrValid;
  532. UINT_8 ucSupport5GBand;
  533. UINT_8 fg2G4BandEdgePwrUsed;
  534. INT_8 cBandEdgeMaxPwrCCK;
  535. INT_8 cBandEdgeMaxPwrOFDM20;
  536. INT_8 cBandEdgeMaxPwrOFDM40;
  537. ENUM_REG_CH_MAP_T eRegChannelListMap;
  538. UINT_8 ucRegChannelListIndex;
  539. DOMAIN_INFO_ENTRY rDomainInfo;
  540. /* NVRAM - MP Data -END- */
  541. /* NVRAM - Functional Data -START- */
  542. UINT_8 uc2G4BwFixed20M;
  543. UINT_8 uc5GBwFixed20M;
  544. UINT_8 ucEnable5GBand;
  545. UINT_8 uc2GRssiCompensation;
  546. UINT_8 uc5GRssiCompensation;
  547. UINT_8 fgRssiCompensationValidbit;
  548. UINT_8 ucRxAntennanumber;
  549. /* NVRAM - Functional Data -END- */
  550. } REG_INFO_T, *P_REG_INFO_T;
  551. /* for divided firmware loading */
  552. typedef struct _FWDL_SECTION_INFO_T {
  553. UINT_32 u4Offset;
  554. UINT_32 u4Reserved;
  555. UINT_32 u4Length;
  556. UINT_32 u4DestAddr;
  557. } FWDL_SECTION_INFO_T, *P_FWDL_SECTION_INFO_T;
  558. typedef struct _FIRMWARE_DIVIDED_DOWNLOAD_T {
  559. UINT_32 u4Signature;
  560. UINT_32 u4CRC; /* CRC calculated without first 8 bytes included */
  561. UINT_32 u4NumOfEntries;
  562. UINT_32 u4Reserved;
  563. FWDL_SECTION_INFO_T arSection[];
  564. } FIRMWARE_DIVIDED_DOWNLOAD_T, *P_FIRMWARE_DIVIDED_DOWNLOAD_T;
  565. typedef struct _PARAM_MCR_RW_STRUCT_T {
  566. UINT_32 u4McrOffset;
  567. UINT_32 u4McrData;
  568. } PARAM_MCR_RW_STRUCT_T, *P_PARAM_MCR_RW_STRUCT_T;
  569. typedef struct _PARAM_GET_STA_STATISTICS {
  570. /* Per-STA statistic */
  571. UINT_8 aucMacAddr[MAC_ADDR_LEN];
  572. UINT_32 u4Flag;
  573. /* From driver */
  574. UINT_32 u4TxTotalCount;
  575. UINT_32 u4TxExceedThresholdCount;
  576. UINT_32 u4TxMaxTime;
  577. UINT_32 u4TxAverageProcessTime;
  578. UINT_32 au4TcResourceEmptyCount[NUM_TC_RESOURCE_TO_STATISTICS];
  579. UINT_32 au4TcQueLen[NUM_TC_RESOURCE_TO_STATISTICS];
  580. /* From FW */
  581. UINT_8 ucPer; /* base: 128 */
  582. UINT_8 ucRcpi;
  583. UINT_32 u4PhyMode;
  584. UINT_16 u2LinkSpeed; /* unit is 0.5 Mbits */
  585. UINT_32 u4TxFailCount;
  586. UINT_32 u4TxLifeTimeoutCount;
  587. UINT_32 u4TxAverageAirTime;
  588. /* Global queue management statistic */
  589. UINT_32 au4TcAverageQueLen[NUM_TC_RESOURCE_TO_STATISTICS];
  590. UINT_32 au4TcCurrentQueLen[NUM_TC_RESOURCE_TO_STATISTICS];
  591. /* Reserved fields */
  592. UINT_8 au4Reserved[32];
  593. } PARAM_GET_STA_STA_STATISTICS, *P_PARAM_GET_STA_STATISTICS;
  594. typedef enum _ENUM_BAND_EDGE_CERT_T {
  595. BAND_EDGE_CERT_FCC = 0,
  596. BAND_EDGE_CERT_KCC = 1,
  597. BAND_EDGE_CERT_NUM = 2
  598. } ENUM_BAND_EDGE_CERT_T, *P_ENUM_BAND_EDGE_CERT_T;
  599. #if CFG_AUTO_CHANNEL_SEL_SUPPORT
  600. typedef enum _ENUM_TESTMODE_AVAILABLE_CHAN_ATTR {
  601. NL80211_TESTMODE_AVAILABLE_CHAN_INVALID = 0,
  602. NL80211_TESTMODE_AVAILABLE_CHAN_2G_BASE_1,
  603. NL80211_TESTMODE_AVAILABLE_CHAN_5G_BASE_34,
  604. NL80211_TESTMODE_AVAILABLE_CHAN_5G_BASE_149,
  605. NL80211_TESTMODE_AVAILABLE_CHAN_5G_BASE_184,
  606. NL80211_TESTMODE_AVAILABLE_CHAN_NUM,
  607. } ENUM_TESTMODE_AVAILABLE_CHAN_ATTR;
  608. typedef struct _LTE_SAFE_CH_INFO_T {
  609. UINT_32 au4SafeChannelBitmask[NL80211_TESTMODE_AVAILABLE_CHAN_NUM - 1];
  610. } LTE_SAFE_CH_INFO_T, *P_CMD_LTE_SAFE_CH_INFO_T;
  611. /* Record Each CH Load */
  612. typedef struct _PARAM_CHN_LOAD_INFO {
  613. /* Per-CHN Load */
  614. UINT_32 u4Flag;
  615. UINT_8 ucChannel;
  616. UINT_16 u2ChannelLoad;
  617. UINT_8 au4Reserved[1];
  618. UINT_16 u2APNum;
  619. UINT_16 u2APNumTmpCountingBuf;
  620. /* Reserved fields */
  621. UINT_8 au4Reserved1[8];
  622. } PARAM_CHN_LOAD_INFO, *P_PARAM_CHN_LOAD_INFO;
  623. typedef struct _PARAM_GET_CHN_LOAD {
  624. LTE_SAFE_CH_INFO_T rLteSafeChnList;
  625. PARAM_CHN_LOAD_INFO rEachChnLoad[MAX_AUTO_CHAL_NUM];
  626. BOOLEAN fgDataReadyBit;
  627. UINT_8 au4Reserved1[3];
  628. } PARAM_GET_CHN_LOAD, *P_PARAM_GET_CHN_LOAD;
  629. typedef struct _PARAM_PREFER_CHN_INFO {
  630. UINT_8 ucChannel;
  631. UINT_16 u2APNum;
  632. UINT_8 au4Reserved1[1];
  633. } PARAM_PREFER_CHN_INFO, *P_PARAM_PREFER_CHN_INFO;
  634. typedef struct _PARAM_GET_LTE_MODE {
  635. /* Event Body */
  636. UINT_8 ucVersion;
  637. UINT_8 aucReserved1[3];
  638. UINT_32 u4Flags; /* Bit0: valid */
  639. LTE_SAFE_CH_INFO_T LTE_MODE;
  640. UINT_8 aucReserved4[3];
  641. UINT_8 aucReserved[4];
  642. } PARAM_GET_LTE_MODE, *P_PARAM_GET_LTE_MODE;
  643. #endif
  644. /*******************************************************************************
  645. * P U B L I C D A T A
  646. ********************************************************************************
  647. */
  648. /*******************************************************************************
  649. * P R I V A T E D A T A
  650. ********************************************************************************
  651. */
  652. /*******************************************************************************
  653. * M A C R O S
  654. ********************************************************************************
  655. */
  656. #define BUILD_SIGN(ch0, ch1, ch2, ch3) \
  657. ((UINT_32)(UINT_8)(ch0) | ((UINT_32)(UINT_8)(ch1) << 8) | \
  658. ((UINT_32)(UINT_8)(ch2) << 16) | ((UINT_32)(UINT_8)(ch3) << 24))
  659. #define MTK_WIFI_SIGNATURE BUILD_SIGN('M', 'T', 'K', 'W')
  660. /*******************************************************************************
  661. * F U N C T I O N D E C L A R A T I O N S
  662. ********************************************************************************
  663. */
  664. P_ADAPTER_T wlanAdapterCreate(IN P_GLUE_INFO_T prGlueInfo);
  665. VOID wlanAdapterDestroy(IN P_ADAPTER_T prAdapter);
  666. VOID wlanCardEjected(IN P_ADAPTER_T prAdapter);
  667. VOID wlanIST(IN P_ADAPTER_T prAdapter);
  668. BOOLEAN wlanISR(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgGlobalIntrCtrl);
  669. WLAN_STATUS wlanProcessCommandQueue(IN P_ADAPTER_T prAdapter, IN P_QUE_T prCmdQue);
  670. WLAN_STATUS wlanSendCommand(IN P_ADAPTER_T prAdapter, IN P_CMD_INFO_T prCmdInfo);
  671. VOID wlanReleaseCommand(IN P_ADAPTER_T prAdapter, IN P_CMD_INFO_T prCmdInfo);
  672. VOID wlanReleasePendingOid(IN P_ADAPTER_T prAdapter, IN ULONG ulData);
  673. VOID wlanReleasePendingCMDbyNetwork(IN P_ADAPTER_T prAdapter, IN ENUM_NETWORK_TYPE_INDEX_T eNetworkType);
  674. VOID wlanReturnPacket(IN P_ADAPTER_T prAdapter, IN PVOID pvPacket);
  675. VOID wlanReturnIndicatedPacketsTimeOut(IN P_ADAPTER_T prAdapter, IN ULONG ulData);
  676. WLAN_STATUS
  677. wlanQueryInformation(IN P_ADAPTER_T prAdapter,
  678. IN PFN_OID_HANDLER_FUNC pfOidQryHandler,
  679. IN PVOID pvInfoBuf, IN UINT_32 u4InfoBufLen, OUT PUINT_32 pu4QryInfoLen);
  680. WLAN_STATUS
  681. wlanSetInformation(IN P_ADAPTER_T prAdapter,
  682. IN PFN_OID_HANDLER_FUNC pfOidSetHandler,
  683. IN PVOID pvInfoBuf, IN UINT_32 u4InfoBufLen, OUT PUINT_32 pu4SetInfoLen);
  684. WLAN_STATUS
  685. wlanAdapterStart(IN P_ADAPTER_T prAdapter,
  686. IN P_REG_INFO_T prRegInfo, IN PVOID pvFwImageMapFile, IN UINT_32 u4FwImageFileLength);
  687. WLAN_STATUS wlanAdapterStop(IN P_ADAPTER_T prAdapter);
  688. #if CFG_SUPPORT_WAPI
  689. BOOLEAN wlanQueryWapiMode(IN P_ADAPTER_T prAdapter);
  690. #endif
  691. VOID wlanReturnRxPacket(IN PVOID pvAdapter, IN PVOID pvPacket);
  692. VOID wlanRxSetBroadcast(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgEnableBroadcast);
  693. BOOLEAN wlanIsHandlerNeedHwAccess(IN PFN_OID_HANDLER_FUNC pfnOidHandler, IN BOOLEAN fgSetInfo);
  694. VOID wlanSetPromiscuousMode(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgEnablePromiscuousMode);
  695. #if CFG_ENABLE_FW_DOWNLOAD
  696. #if CFG_ENABLE_FW_DOWNLOAD_AGGREGATION
  697. WLAN_STATUS
  698. wlanImageSectionDownloadAggregated(IN P_ADAPTER_T prAdapter,
  699. IN UINT_32 u4DestAddr, IN UINT_32 u4ImgSecSize, IN PUINT_8 pucImgSecBuf);
  700. #endif
  701. WLAN_STATUS
  702. wlanImageSectionDownload(IN P_ADAPTER_T prAdapter,
  703. IN UINT_32 u4DestAddr, IN UINT_32 u4ImgSecSize, IN PUINT_8 pucImgSecBuf);
  704. #if !CFG_ENABLE_FW_DOWNLOAD_ACK
  705. WLAN_STATUS wlanImageQueryStatus(IN P_ADAPTER_T prAdapter);
  706. #else
  707. WLAN_STATUS wlanImageSectionDownloadStatus(IN P_ADAPTER_T prAdapter, IN UINT_8 ucCmdSeqNum);
  708. #endif
  709. WLAN_STATUS wlanConfigWifiFunc(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgEnable, IN UINT_32 u4StartAddress);
  710. UINT_32 wlanCRC32(PUINT_8 buf, UINT_32 len);
  711. #endif
  712. WLAN_STATUS wlanSendNicPowerCtrlCmd(IN P_ADAPTER_T prAdapter, IN UINT_8 ucPowerMode);
  713. BOOLEAN wlanIsHandlerAllowedInRFTest(IN PFN_OID_HANDLER_FUNC pfnOidHandler, IN BOOLEAN fgSetInfo);
  714. WLAN_STATUS wlanProcessQueuedSwRfb(IN P_ADAPTER_T prAdapter, IN P_SW_RFB_T prSwRfbListHead);
  715. WLAN_STATUS wlanProcessQueuedMsduInfo(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfoListHead);
  716. BOOLEAN wlanoidTimeoutCheck(IN P_ADAPTER_T prAdapter, IN PFN_OID_HANDLER_FUNC pfnOidHandler);
  717. VOID wlanoidClearTimeoutCheck(IN P_ADAPTER_T prAdapter);
  718. WLAN_STATUS wlanUpdateNetworkAddress(IN P_ADAPTER_T prAdapter);
  719. BOOLEAN wlanQueryTestMode(IN P_ADAPTER_T prAdapter);
  720. /* Security Frame Handling */
  721. BOOLEAN wlanProcessSecurityFrame(IN P_ADAPTER_T prAdapter, IN P_NATIVE_PACKET prPacket);
  722. VOID wlanSecurityFrameTxDone(IN P_ADAPTER_T prAdapter, IN P_CMD_INFO_T prCmdInfo, IN PUINT_8 pucEventBuf);
  723. VOID wlanSecurityFrameTxTimeout(IN P_ADAPTER_T prAdapter, IN P_CMD_INFO_T prCmdInfo);
  724. /*----------------------------------------------------------------------------*/
  725. /* OID/IOCTL Handling */
  726. /*----------------------------------------------------------------------------*/
  727. VOID wlanClearScanningResult(IN P_ADAPTER_T prAdapter);
  728. VOID wlanClearBssInScanningResult(IN P_ADAPTER_T prAdapter, IN PUINT_8 arBSSID);
  729. #if CFG_TEST_WIFI_DIRECT_GO
  730. VOID wlanEnableP2pFunction(IN P_ADAPTER_T prAdapter);
  731. VOID wlanEnableATGO(IN P_ADAPTER_T prAdapter);
  732. #endif
  733. /*----------------------------------------------------------------------------*/
  734. /* Address Retrieve by Polling */
  735. /*----------------------------------------------------------------------------*/
  736. WLAN_STATUS wlanQueryPermanentAddress(IN P_ADAPTER_T prAdapter);
  737. /*----------------------------------------------------------------------------*/
  738. /* NIC Capability Retrieve by Polling */
  739. /*----------------------------------------------------------------------------*/
  740. WLAN_STATUS wlanQueryNicCapability(IN P_ADAPTER_T prAdapter);
  741. /*----------------------------------------------------------------------------*/
  742. /* NIC Capability Retrieve by Polling */
  743. /*----------------------------------------------------------------------------*/
  744. WLAN_STATUS wlanQueryDebugCode(IN P_ADAPTER_T prAdapter);
  745. /*----------------------------------------------------------------------------*/
  746. /* Compiler Flags Retrieve by Polling */
  747. /*----------------------------------------------------------------------------*/
  748. WLAN_STATUS wlanQueryCompileFlags(IN P_ADAPTER_T prAdapter);
  749. /*----------------------------------------------------------------------------*/
  750. /* PD MCR Retrieve by Polling */
  751. /*----------------------------------------------------------------------------*/
  752. WLAN_STATUS wlanQueryPdMcr(IN P_ADAPTER_T prAdapter, IN P_PARAM_MCR_RW_STRUCT_T prMcrRdInfo);
  753. /*----------------------------------------------------------------------------*/
  754. /* Loading Manufacture Data */
  755. /*----------------------------------------------------------------------------*/
  756. WLAN_STATUS wlanLoadManufactureData(IN P_ADAPTER_T prAdapter, IN P_REG_INFO_T prRegInfo);
  757. /*----------------------------------------------------------------------------*/
  758. /* Media Stream Mode */
  759. /*----------------------------------------------------------------------------*/
  760. BOOLEAN wlanResetMediaStreamMode(IN P_ADAPTER_T prAdapter);
  761. /*----------------------------------------------------------------------------*/
  762. /* Timer Timeout Check (for Glue Layer) */
  763. /*----------------------------------------------------------------------------*/
  764. WLAN_STATUS wlanTimerTimeoutCheck(IN P_ADAPTER_T prAdapter);
  765. /*----------------------------------------------------------------------------*/
  766. /* Mailbox Message Check (for Glue Layer) */
  767. /*----------------------------------------------------------------------------*/
  768. WLAN_STATUS wlanProcessMboxMessage(IN P_ADAPTER_T prAdapter);
  769. /*----------------------------------------------------------------------------*/
  770. /* TX Pending Packets Handling (for Glue Layer) */
  771. /*----------------------------------------------------------------------------*/
  772. WLAN_STATUS wlanEnqueueTxPacket(IN P_ADAPTER_T prAdapter, IN P_NATIVE_PACKET prNativePacket);
  773. WLAN_STATUS wlanFlushTxPendingPackets(IN P_ADAPTER_T prAdapter);
  774. WLAN_STATUS wlanTxPendingPackets(IN P_ADAPTER_T prAdapter, IN OUT PBOOLEAN pfgHwAccess);
  775. /*----------------------------------------------------------------------------*/
  776. /* Low Power Acquire/Release (for Glue Layer) */
  777. /*----------------------------------------------------------------------------*/
  778. WLAN_STATUS wlanAcquirePowerControl(IN P_ADAPTER_T prAdapter);
  779. WLAN_STATUS wlanReleasePowerControl(IN P_ADAPTER_T prAdapter);
  780. /*----------------------------------------------------------------------------*/
  781. /* Pending Packets Number Reporting (for Glue Layer) */
  782. /*----------------------------------------------------------------------------*/
  783. UINT_32 wlanGetTxPendingFrameCount(IN P_ADAPTER_T prAdapter);
  784. /*----------------------------------------------------------------------------*/
  785. /* ACPI state inquiry (for Glue Layer) */
  786. /*----------------------------------------------------------------------------*/
  787. ENUM_ACPI_STATE_T wlanGetAcpiState(IN P_ADAPTER_T prAdapter);
  788. VOID wlanSetAcpiState(IN P_ADAPTER_T prAdapter, IN ENUM_ACPI_STATE_T ePowerState);
  789. VOID wlanDefTxPowerCfg(IN P_ADAPTER_T prAdapter);
  790. /*----------------------------------------------------------------------------*/
  791. /* get ECO version from Revision ID register (for Win32) */
  792. /*----------------------------------------------------------------------------*/
  793. UINT_8 wlanGetEcoVersion(IN P_ADAPTER_T prAdapter);
  794. /*----------------------------------------------------------------------------*/
  795. /* set preferred band configuration corresponding to network type */
  796. /*----------------------------------------------------------------------------*/
  797. VOID
  798. wlanSetPreferBandByNetwork(IN P_ADAPTER_T prAdapter, IN ENUM_BAND_T eBand, IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex);
  799. /*----------------------------------------------------------------------------*/
  800. /* get currently operating channel information */
  801. /*----------------------------------------------------------------------------*/
  802. UINT_8 wlanGetChannelNumberByNetwork(IN P_ADAPTER_T prAdapter, IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex);
  803. /*----------------------------------------------------------------------------*/
  804. /* get BSS Descriptor information */
  805. /*----------------------------------------------------------------------------*/
  806. P_BSS_DESC_T wlanGetTargetBssDescByNetwork(IN P_ADAPTER_T prAdapter, IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex);
  807. /*----------------------------------------------------------------------------*/
  808. /* check for system configuration to generate message on scan list */
  809. /*----------------------------------------------------------------------------*/
  810. WLAN_STATUS wlanCheckSystemConfiguration(IN P_ADAPTER_T prAdapter);
  811. /*----------------------------------------------------------------------------*/
  812. /* query sta statistics information from driver and firmware */
  813. /*----------------------------------------------------------------------------*/
  814. WLAN_STATUS
  815. wlanoidQueryStaStatistics(IN P_ADAPTER_T prAdapter,
  816. IN PVOID pvQueryBuffer, IN UINT_32 u4QueryBufferLen, OUT PUINT_32 pu4QueryInfoLen);
  817. WLAN_STATUS wlanCfgParseArgument(CHAR *cmdLine, INT_32 *argc, CHAR *argv[]);
  818. P_WLAN_CFG_ENTRY_T wlanCfgGetEntry(IN P_ADAPTER_T prAdapter, const PCHAR pucKey);
  819. WLAN_STATUS
  820. wlanCfgGet(IN P_ADAPTER_T prAdapter, const PCHAR pucKey, PCHAR pucValue, PCHAR pucValueDef, UINT_32 u4Flags);
  821. UINT_32 wlanCfgGetUint32(IN P_ADAPTER_T prAdapter, const PCHAR pucKey, UINT_32 u4ValueDef);
  822. INT_32 wlanCfgGetInt32(IN P_ADAPTER_T prAdapter, const PCHAR pucKey, INT_32 i4ValueDef);
  823. WLAN_STATUS wlanCfgSetUint32(IN P_ADAPTER_T prAdapter, const PCHAR pucKey, UINT_32 u4Value);
  824. WLAN_STATUS wlanCfgSet(IN P_ADAPTER_T prAdapter, const PCHAR pucKey, PCHAR pucValue, UINT_32 u4Flags);
  825. WLAN_STATUS
  826. wlanCfgSetCb(IN P_ADAPTER_T prAdapter, const PCHAR pucKey, WLAN_CFG_SET_CB pfSetCb, void *pPrivate, UINT_32 u4Flags);
  827. #if CFG_SUPPORT_CFG_FILE
  828. WLAN_STATUS wlanCfgInit(IN P_ADAPTER_T prAdapter, PUINT_8 pucConfigBuf, UINT_32 u4ConfigBufLen, UINT_32 u4Flags);
  829. VOID wlanCfgApply(IN P_ADAPTER_T prAdapter);
  830. #endif /* CFG_SUPPORT_CFG_FILE */
  831. #endif /* _WLAN_LIB_H */