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