2 ** $Id: //Department/DaVinci/BRANCHES/MT662X_593X_WIFI_DRIVER_V2_3/include/wlan_lib.h#1 $
6 \brief The declaration of the functions of the wlanAdpater objects
11 /*******************************************************************************
12 * Copyright (c) 2007 MediaTek Inc.
14 * All rights reserved. Copying, compilation, modification, distribution
15 * or any other use whatsoever of this material is strictly prohibited
16 * except in accordance with a Software License Agreement with
18 ********************************************************************************
21 /*******************************************************************************
24 * BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND
25 * AGREES THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK
26 * SOFTWARE") RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE
27 * PROVIDED TO BUYER ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY
28 * DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
29 * LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
30 * PARTICULAR PURPOSE OR NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE
31 * ANY WARRANTY WHATSOEVER WITH RESPECT TO THE SOFTWARE OF ANY THIRD PARTY
32 * WHICH MAY BE USED BY, INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK
33 * SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY
34 * WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE
35 * FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S SPECIFICATION OR TO
36 * CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
38 * BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
39 * LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL
40 * BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT
41 * ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY
42 * BUYER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
44 * THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
45 * WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT
46 * OF LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING
47 * THEREOF AND RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN
48 * FRANCISCO, CA, UNDER THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE
50 ********************************************************************************
57 ** [WCXRP00001269] [MT6620 Wi-Fi][Driver] cfg80211 porting merge back to DaVinci
58 ** sync changes on roaming to an unindicated BSS under cfg80211.
61 ** [WCXRP00001269] [MT6620 Wi-Fi][Driver] cfg80211 porting merge back to DaVinci
62 ** sync for NVRAM warning scan result generation for CFG80211.
65 ** [WCXRP00001269] [MT6620 Wi-Fi][Driver] cfg80211 porting merge back to DaVinci
69 ** [WCXRP00001269] [MT6620 Wi-Fi][Driver] cfg80211 porting merge back to DaVinci
70 ** cfg80211 support merge back from ALPS.JB to DaVinci - MT6620 Driver v2.3 branch.
72 * 06 08 2012 eason.tsai
74 * Nvram context covert from 6620 to 6628 for old 6620 meta tool
77 * [MT6620 Wi-Fi][Driver] API and behavior modification for preferred band configuration with corresponding network configuration
78 * add wlanSetPreferBandByNetwork() for glue layer to invoke for setting preferred band configuration corresponding to network type.
81 * [WCXRP00001153] [MT6620 Wi-Fi][Driver] Adding the get_ch_list and set_tx_power proto type function
82 * Adding the related ioctl / wlan oid function to set the Tx power cfg.
85 * [WCXRP00001022] [MT6628 Driver][Firmware Download] Add multi section independent download functionality
86 * eliminate win32 native data types.
89 * [WCXRP00001022] [MT6628 Driver][Firmware Download] Add multi section independent download functionality
90 * add firmware download path in divided scatters.
93 * [MT6628 Driver][Firmware Download] Add multi section independent download functionality
94 * add firmware downloading aggregated path.
96 * 09 20 2011 tsaiyuan.hsu
97 * [WCXRP00000931] [MT5931 Wi-Fi][DRV/FW] add swcr to disable roaming from driver
98 * change window registry of driver for roaming.
100 * 09 08 2011 cm.chang
101 * [WCXRP00000969] [MT6620 Wi-Fi][Driver][FW] Channel list for 5G band based on country code
102 * Use new fields ucChannelListMap and ucChannelListIndex in NVRAM
104 * 08 31 2011 cm.chang
105 * [WCXRP00000969] [MT6620 Wi-Fi][Driver][FW] Channel list for 5G band based on country code
108 * 08 25 2011 chinghwa.yu
109 * [WCXRP00000612] [MT6620 Wi-Fi] [FW] CSD update SWRDD algorithm
112 * 08 24 2011 chinghwa.yu
113 * [WCXRP00000612] [MT6620 Wi-Fi] [FW] CSD update SWRDD algorithm
114 * Update RDD test mode cases.
117 * [WCXRP00000913] [MT6620 Wi-Fi] create repository of source code dedicated for MT6620 E6 ASIC
118 * support to load different firmware image for E3/E4/E5 and E6 ASIC on win32 platforms.
120 * 08 02 2011 yuche.tsai
121 * [WCXRP00000896] [Volunteer Patch][WiFi Direct][Driver] GO with multiple client, TX deauth to a disconnecting device issue.
122 * Fix GO send deauth frame issue.
124 * 07 22 2011 jeffrey.chang
125 * [WCXRP00000864] [MT5931] Add command to adjust OSC stable time
126 * modify driver to set OSC stable time after f/w download
128 * 07 18 2011 chinghwa.yu
129 * [WCXRP00000063] Update BCM CoEx design and settings[WCXRP00000612] [MT6620 Wi-Fi] [FW] CSD update SWRDD algorithm
130 * Add CMD/Event for RDD and BWCS.
133 * [WCXRP00000749] [MT6620 Wi-Fi][Driver] Add band edge tx power control to Wi-Fi NVRAM
134 * invoke CMD_ID_SET_EDGE_TXPWR_LIMIT when there is valid data exist in NVRAM content.
137 * [WCXRP00000718] [MT6620 Wi-Fi] modify the behavior of setting tx power
138 * ACPI APIs migrate to wlan_lib.c for glue layer to invoke.
141 * [WCXRP00000636] [WHQL][MT5931 Driver] 2c_PMHibernate (hang on 2h)
142 * 1) add API for glue layer to query ACPI state
143 * 2) Windows glue should not access to hardware after switched into D3 state
146 * [WCXRP00000532] [MT6620 Wi-Fi][Driver] Migrate NVRAM configuration procedures from MT6620 E2 to MT6620 E3
147 * deprecate configuration used by MT6620 E2
149 * 01 27 2011 tsaiyuan.hsu
150 * [WCXRP00000392] [MT6620 Wi-Fi][Driver] Add Roaming Support
152 * 1. not support 11r, only use strength of signal to determine roaming.
153 * 2. not enable CFG_SUPPORT_ROAMING until completion of full test.
154 * 3. in 6620, adopt work-around to avoid sign extension problem of cck of hw
155 * 4. assume that change of link quality in smooth way.
157 * 01 27 2011 george.huang
158 * [WCXRP00000355] [MT6620 Wi-Fi] Set WMM-PS related setting with qualifying AP capability
159 * Support current measure mode, assigned by registry (XP only).
162 * [WCXRP00000382] [MT6620 Wi-Fi][Driver] Track forwarding packet number with notifying tx thread for serving
163 * 1. add an extra counter for tracking pending forward frames.
164 * 2. notify TX service thread as well when there is pending forward frame
165 * 3. correct build errors leaded by introduction of Wi-Fi direct separation module
168 * [WCXRP00000351] [MT6620 Wi-Fi][Driver] remove from scanning result in OID handling layer when the corresponding BSS is disconnected due to beacon timeout
169 * remove from scanning result when the BSS is disconnected due to beacon timeout.
171 * 10 27 2010 george.huang
172 * [WCXRP00000127] [MT6620 Wi-Fi][Driver] Add a registry to disable Beacon Timeout function for SQA test by using E1 EVB
173 * Support registry option for disable beacon lost detection.
176 * [WCXRP00000056] [MT6620 Wi-Fi][Driver] NVRAM implementation with Version Check[WCXRP00000137] [MT6620 Wi-Fi] [FW] Support NIC capability query command
177 * 1) update NVRAM content template to ver 1.02
178 * 2) add compile option for querying NIC capability (default: off)
179 * 3) modify AIS 5GHz support to run-time option, which could be turned on by registry or NVRAM setting
180 * 4) correct auto-rate compiler error under linux (treat warning as error)
181 * 5) simplify usage of NVRAM and REG_INFO_T
182 * 6) add version checking between driver and firmware
184 * 10 26 2010 eddie.chen
185 * [WCXRP00000134] [MT6620 Wi-Fi][Driver] Add a registry to enable auto rate for SQA test by using E1 EVB
186 * Add auto rate parameter in registry.
189 * [WCXRP00000056] [MT6620 Wi-Fi][Driver] NVRAM implementation with Version Check[WCXRP00000086] [MT6620 Wi-Fi][Driver] The mac address is all zero at android
190 * complete implementation of Android NVRAM access
193 * [WCXRP00000084] [MT6620 Wi-Fi][Driver][FW] Add fixed rate support for distance test
194 * adding fixed rate support for distance test. (from registry setting)
197 * [WCXRP00000052] [MT6620 Wi-Fi][Driver] Eliminate Linux Compile Warning
198 * divide a single function into 2 part to surpress a weird compiler warning from gcc-4.4.0
201 * [WCXRP00000052] [MT6620 Wi-Fi][Driver] Eliminate Linux Compile Warning
202 * code reorganization to improve isolation between GLUE and CORE layers.
205 * [WCXRP00000056] [MT6620 Wi-Fi][Driver] NVRAM implementation with Version Check
206 * load manufacture data when CFG_SUPPORT_NVRAM is set to 1
209 * [WCXRP00000057] [MT6620 Wi-Fi][Driver] Modify online scan to a run-time switchable feature
210 * Modify online scan as a run-time adjustable option (for Windows, in registry)
213 * [WCXRP00000051] [MT6620 Wi-Fi][Driver] WHQL test fail in MAC address changed item
214 * use firmware reported mac address right after wlanAdapterStart() as permanent address
217 * [WCXRP00000056] [MT6620 Wi-Fi][Driver] NVRAM implementation with Version Check
218 * add skeleton for NVRAM integration
220 * 08 26 2010 yuche.tsai
222 * Add AT GO test configure mode under WinXP.
223 * Please enable 1. CFG_ENABLE_WIFI_DIRECT, 2. CFG_TEST_WIFI_DIRECT_GO, 3. CFG_SUPPORT_AAA
225 * 08 25 2010 george.huang
231 * 1) change BG_SCAN to ONLINE_SCAN for consistent term
232 * 2) only clear scanning result when scan is permitted to do
236 * 1) MMPDUs are now sent to MT6620 by CMD queue for keeping strict order of 1X/MMPDU/CMD packets
237 * 2) integrate with qmGetFrameAction() for deciding which MMPDU/1X could pass checking for sending
238 * 2) enhance CMD_INFO_T descriptor number from 10 to 32 to avoid descriptor underflow under concurrent network operation
242 * [WPD00003833] [MT6620 and MT5931] Driver migration - move to new repository.
245 * [WPD00003833][MT6620 and MT5931] Driver migration
246 * 802.1x and bluetooth-over-Wi-Fi security frames are now delievered to firmware via command path instead of data path.
249 * [WPD00003833][MT6620 and MT5931] Driver migration
250 * change MAC address updating logic.
253 * [WPD00003833][MT6620 and MT5931] Driver migration
254 * simplify timer usage.
257 * [WPD00003833][MT6620 and MT5931] Driver migration
258 * 1) migrate assoc.c.
259 * 2) add ucTxSeqNum for tracking frames which needs TX-DONE awareness
260 * 3) add configuration options for CNM_MEM and RSN modules
261 * 4) add data path for management frames
262 * 5) eliminate rPacketInfo of MSDU_INFO_T
265 * [WPD00003833][MT6620 and MT5931] Driver migration
266 * cnm_timer has been migrated.
268 * 06 06 2010 kevin.huang
269 * [WPD00003832][MT6620 5931] Create driver base
270 * [MT6620 5931] Create driver base
273 * [WPD00001943]Create WiFi test driver framework on WinXP
274 * 1) integrate OID_GEN_NETWORK_LAYER_ADDRESSES with CMD_ID_SET_IP_ADDRESS
275 * 2) buffer statistics data for 2 seconds
276 * 3) use default value for adhoc parameters instead of 0
279 * [WPD00001943]Create WiFi test driver framework on WinXP
280 * add extra 64 adjustable parameters for CoEX scenario.
283 * [WPD00001943]Create WiFi test driver framework on WinXP
284 * code refine: fgTestMode should be at adapter rather than glue due to the device/fw is also involved
287 * [WPD00001943]Create WiFi test driver framework on WinXP
288 * 1) for some OID, never do timeout expiration
289 * * 2) add 2 kal API for later integration
292 * [WPD00001943]Create WiFi test driver framework on WinXP
293 * change to use WIFI_TCM_ALWAYS_ON as firmware image
296 * [WPD00003816][MT6620 Wi-Fi] Adding the security support
297 * modify the wapi related code for new driver's design.
300 * [WPD00001943]Create WiFi test driver framework on WinXP
301 * always send CMD_NIC_POWER_CTRL packet when nic is being halted
304 * [WPD00001943]Create WiFi test driver framework on WinXP
305 * add two option for ACK and ENCRYPTION for firmware download
308 * [WPD00001943]Create WiFi test driver framework on WinXP
309 * separate wlanProcesQueuePacket() into 2 APIs upon request
312 * [WPD00001943]Create WiFi test driver framework on WinXP
313 * add new API: wlanProcessQueuedPackets()
316 * [WPD00001943]Create WiFi test driver framework on WinXP
317 * 1. add logic for firmware download
318 * * * 2. firmware image filename and start/load address are now retrieved from registry
321 * [WPD00001943]Create WiFi test driver framework on WinXP
322 * 1) remove unused function in nic_rx.c [which has been handled in que_mgt.c]
323 * * * * 2) firmware image length is now retrieved via NdisFileOpen
324 * * * * 3) firmware image is not structured by (P_IMG_SEC_HDR_T) anymore
325 * * * * 4) nicRxWaitResponse() revised
326 * * * * 5) another set of TQ counter default value is added for fw-download state
327 * * * * 6) Wi-Fi load address is now retrieved from registry too
330 * [WPD00001943]Create WiFi test driver framework on WinXP
331 * prepare for implementing fw download logic
334 * [WPD00001943]Create WiFi test driver framework on WinXP
335 * 1. eliminate improper variable in rHifInfo
336 * * * * * * * 2. block TX/ordinary OID when RF test mode is engaged
337 * * * * * * * 3. wait until firmware finish operation when entering into and leaving from RF test mode
338 * * * * * * * 4. correct some HAL implementation
339 ** \main\maintrunk.MT6620WiFiDriver_Prj\10 2009-12-10 16:39:55 GMT mtk02752
340 ** eliminate unused API
341 ** \main\maintrunk.MT6620WiFiDriver_Prj\9 2009-10-13 21:58:41 GMT mtk01084
342 ** update for new macro define
343 ** \main\maintrunk.MT6620WiFiDriver_Prj\8 2009-05-19 10:43:06 GMT mtk01461
344 ** Add wlanReleasePendingOid()
345 ** \main\maintrunk.MT6620WiFiDriver_Prj\7 2009-04-13 16:38:44 GMT mtk01084
346 ** add WIFI start function
347 ** \main\maintrunk.MT6620WiFiDriver_Prj\6 2009-04-08 16:51:14 GMT mtk01084
348 ** Update for the image download part
349 ** \main\maintrunk.MT6620WiFiDriver_Prj\5 2009-04-01 10:57:38 GMT mtk01461
350 ** Add wlanSendLeftClusteredFrames() for SDIO_TX_ENHANCE
351 ** \main\maintrunk.MT6620WiFiDriver_Prj\4 2009-03-23 00:31:02 GMT mtk01461
352 ** Add declaration of FW Image download reference code
353 ** \main\maintrunk.MT6620WiFiDriver_Prj\3 2009-03-16 09:08:31 GMT mtk01461
354 ** Update TX PATH API
355 ** \main\maintrunk.MT6620WiFiDriver_Prj\2 2009-03-10 20:12:04 GMT mtk01426
363 /*******************************************************************************
364 * C O M P I L E R F L A G S
365 ********************************************************************************
368 /*******************************************************************************
369 * E X T E R N A L R E F E R E N C E S
370 ********************************************************************************
372 #include "CFG_Wifi_File.h"
373 #include "rlm_domain.h"
374 #include "wlan_typedef.h"
376 /*******************************************************************************
378 ********************************************************************************
381 #define MAX_NUM_GROUP_ADDR 32 /* max number of group addresses */
385 #define TX_CS_TCP_UDP_GEN BIT(1)
386 #define TX_CS_IP_GEN BIT(0)
389 #define CSUM_OFFLOAD_EN_TX_TCP BIT(0)
390 #define CSUM_OFFLOAD_EN_TX_UDP BIT(1)
391 #define CSUM_OFFLOAD_EN_TX_IP BIT(2)
392 #define CSUM_OFFLOAD_EN_RX_TCP BIT(3)
393 #define CSUM_OFFLOAD_EN_RX_UDP BIT(4)
394 #define CSUM_OFFLOAD_EN_RX_IPv4 BIT(5)
395 #define CSUM_OFFLOAD_EN_RX_IPv6 BIT(6)
396 #define CSUM_OFFLOAD_EN_TX_MASK BITS(0,2)
397 #define CSUM_OFFLOAD_EN_ALL BITS(0,6)
399 /* TCP, UDP, IP Checksum */
400 #define RX_CS_TYPE_UDP BIT(7)
401 #define RX_CS_TYPE_TCP BIT(6)
402 #define RX_CS_TYPE_IPv6 BIT(5)
403 #define RX_CS_TYPE_IPv4 BIT(4)
405 #define RX_CS_STATUS_UDP BIT(3)
406 #define RX_CS_STATUS_TCP BIT(2)
407 #define RX_CS_STATUS_IP BIT(0)
409 #define CSUM_NOT_SUPPORTED 0x0
411 #define TXPWR_USE_PDSLOPE 0
413 /* NVRAM error code definitions */
414 #define NVRAM_ERROR_VERSION_MISMATCH BIT(1)
415 #define NVRAM_ERROR_INVALID_TXPWR BIT(2)
416 #define NVRAM_ERROR_INVALID_DPD BIT(3)
417 #define NVRAM_ERROR_INVALID_MAC_ADDR BIT(4)
420 /*******************************************************************************
422 ********************************************************************************
424 typedef WLAN_STATUS (*PFN_OID_HANDLER_FUNC) (
425 IN P_ADAPTER_T prAdapter,
428 OUT PUINT_32 pu4OutInfoLen
431 typedef enum _ENUM_CSUM_TYPE_T {
437 } ENUM_CSUM_TYPE_T, *P_ENUM_CSUM_TYPE_T;
439 typedef enum _ENUM_CSUM_RESULT_T {
444 } ENUM_CSUM_RESULT_T, *P_ENUM_CSUM_RESULT_T;
446 typedef enum _ENUM_PHY_MODE_T {
448 ENUM_PHY_2G4_OFDM_BPSK,
449 ENUM_PHY_2G4_OFDM_QPSK,
450 ENUM_PHY_2G4_OFDM_16QAM,
451 ENUM_PHY_2G4_OFDM_48M,
452 ENUM_PHY_2G4_OFDM_54M,
453 ENUM_PHY_2G4_HT20_BPSK,
454 ENUM_PHY_2G4_HT20_QPSK,
455 ENUM_PHY_2G4_HT20_16QAM,
456 ENUM_PHY_2G4_HT20_MCS5,
457 ENUM_PHY_2G4_HT20_MCS6,
458 ENUM_PHY_2G4_HT20_MCS7,
459 ENUM_PHY_2G4_HT40_BPSK,
460 ENUM_PHY_2G4_HT40_QPSK,
461 ENUM_PHY_2G4_HT40_16QAM,
462 ENUM_PHY_2G4_HT40_MCS5,
463 ENUM_PHY_2G4_HT40_MCS6,
464 ENUM_PHY_2G4_HT40_MCS7,
465 ENUM_PHY_5G_OFDM_BPSK,
466 ENUM_PHY_5G_OFDM_QPSK,
467 ENUM_PHY_5G_OFDM_16QAM,
468 ENUM_PHY_5G_OFDM_48M,
469 ENUM_PHY_5G_OFDM_54M,
470 ENUM_PHY_5G_HT20_BPSK,
471 ENUM_PHY_5G_HT20_QPSK,
472 ENUM_PHY_5G_HT20_16QAM,
473 ENUM_PHY_5G_HT20_MCS5,
474 ENUM_PHY_5G_HT20_MCS6,
475 ENUM_PHY_5G_HT20_MCS7,
476 ENUM_PHY_5G_HT40_BPSK,
477 ENUM_PHY_5G_HT40_QPSK,
478 ENUM_PHY_5G_HT40_16QAM,
479 ENUM_PHY_5G_HT40_MCS5,
480 ENUM_PHY_5G_HT40_MCS6,
481 ENUM_PHY_5G_HT40_MCS7,
483 } ENUM_PHY_MODE_T, *P_ENUM_PHY_MODE_T;
485 typedef enum _ENUM_POWER_SAVE_POLL_MODE_T {
486 ENUM_POWER_SAVE_POLL_DISABLE,
487 ENUM_POWER_SAVE_POLL_LEGACY_NULL,
488 ENUM_POWER_SAVE_POLL_QOS_NULL,
489 ENUM_POWER_SAVE_POLL_NUM
490 } ENUM_POWER_SAVE_POLL_MODE_T, *P_ENUM_POWER_SAVE_POLL_MODE_T;
492 typedef enum _ENUM_AC_TYPE_T {
502 } ENUM_AC_TYPE_T, *P_ENUM_AC_TYPE_T;
504 typedef enum _ENUM_ADV_AC_TYPE_T {
505 ENUM_ADV_AC_TYPE_RX_NSW,
506 ENUM_ADV_AC_TYPE_RX_PTA,
507 ENUM_ADV_AC_TYPE_RX_SP,
508 ENUM_ADV_AC_TYPE_TX_PTA,
509 ENUM_ADV_AC_TYPE_TX_RSP,
511 } ENUM_ADV_AC_TYPE_T, *P_ENUM_ADV_AC_TYPE_T;
513 typedef enum _ENUM_REG_CH_MAP_T {
514 REG_CH_MAP_COUNTRY_CODE,
516 REG_CH_MAP_CUSTOMIZED,
518 } ENUM_REG_CH_MAP_T, *P_ENUM_REG_CH_MAP_T;
520 typedef struct _SET_TXPWR_CTRL_T{
521 INT_8 c2GLegacyStaPwrOffset; /* Unit: 0.5dBm, default: 0*/
522 INT_8 c2GHotspotPwrOffset;
523 INT_8 c2GP2pPwrOffset;
524 INT_8 c2GBowPwrOffset;
525 INT_8 c5GLegacyStaPwrOffset; /* Unit: 0.5dBm, default: 0*/
526 INT_8 c5GHotspotPwrOffset;
527 INT_8 c5GP2pPwrOffset;
528 INT_8 c5GBowPwrOffset;
529 UINT_8 ucConcurrencePolicy; /* TX power policy when concurrence
531 0: Highest power has priority
532 1: Lowest power has priority */
533 INT_8 acReserved1[3]; /* Must be zero */
535 /* Power limit by channel for all data rates */
536 INT_8 acTxPwrLimit2G[14]; /* Channel 1~14, Unit: 0.5dBm*/
537 INT_8 acTxPwrLimit5G[4]; /* UNII 1~4 */
538 INT_8 acReserved2[2]; /* Must be zero */
539 } SET_TXPWR_CTRL_T, *P_SET_TXPWR_CTRL_T;
541 /* For storing driver initialization value from glue layer */
542 typedef struct _REG_INFO_T {
543 UINT_32 u4SdBlockSize; /* SDIO block size */
544 UINT_32 u4SdBusWidth; /* SDIO bus width. 1 or 4 */
545 UINT_32 u4SdClockRate; /* SDIO clock rate. (in unit of HZ) */
546 UINT_32 u4StartAddress; /* Starting address of Wi-Fi Firmware */
547 UINT_32 u4LoadAddress; /* Load address of Wi-Fi Firmware */
548 UINT_16 aucFwImgFilename[65]; /* Firmware filename */
549 UINT_16 aucFwImgFilenameE6[65]; /* Firmware filename for E6 */
550 UINT_32 u4StartFreq; /* Start Frequency for Ad-Hoc network : in unit of KHz */
551 UINT_32 u4AdhocMode; /* Default mode for Ad-Hoc network : ENUM_PARAM_AD_HOC_MODE_T */
552 UINT_32 u4RddStartFreq;
553 UINT_32 u4RddStopFreq;
554 UINT_32 u4RddTestMode;
555 UINT_32 u4RddShutFreq;
557 INT_32 i4HighRssiThreshold;
558 INT_32 i4MediumRssiThreshold;
559 INT_32 i4LowRssiThreshold;
560 INT_32 au4TxPriorityTag[ENUM_AC_TYPE_NUM];
561 INT_32 au4RxPriorityTag[ENUM_AC_TYPE_NUM];
562 INT_32 au4AdvPriorityTag[ENUM_ADV_AC_TYPE_NUM];
563 UINT_32 u4FastPSPoll;
564 UINT_32 u4PTA; /* 0: disable, 1: enable */
565 UINT_32 u4TXLimit; /* 0: disable, 1: enable */
566 UINT_32 u4SilenceWindow; /* range: 100 - 625, unit: us */
567 UINT_32 u4TXLimitThreshold; /* range: 250 - 1250, unit: us */
569 UINT_32 fgEnArpFilter;
570 UINT_32 u4PsCurrentMeasureEn;
571 UINT_32 u4UapsdAcBmp;
573 UINT_32 fgDisOnlineScan; /* 0: enable online scan, non-zero: disable online scan*/
574 UINT_32 fgDisBcnLostDetection; /* 0: enable online scan, non-zero: disable online scan*/
575 UINT_32 u4FixedRate; /* 0: automatic, non-zero: fixed rate */
576 UINT_32 u4ArSysParam0;
577 UINT_32 u4ArSysParam1;
578 UINT_32 u4ArSysParam2;
579 UINT_32 u4ArSysParam3;
580 UINT_32 fgDisRoaming; /* 0:enable roaming 1:disable */
582 // NVRAM - MP Data -START-
583 UINT_8 aucMacAddr[6];
584 UINT_16 au2CountryCode[4]; /* Country code (in ISO 3166-1 expression, ex: "US", "TW") */
585 TX_PWR_PARAM_T rTxPwr;
586 UINT_8 aucEFUSE[144];
588 UINT_8 ucSupport5GBand;
589 UINT_8 fg2G4BandEdgePwrUsed;
590 INT_8 cBandEdgeMaxPwrCCK;
591 INT_8 cBandEdgeMaxPwrOFDM20;
592 INT_8 cBandEdgeMaxPwrOFDM40;
593 ENUM_REG_CH_MAP_T eRegChannelListMap;
594 UINT_8 ucRegChannelListIndex;
595 DOMAIN_INFO_ENTRY rDomainInfo;
596 // NVRAM - MP Data -END-
598 // NVRAM - Functional Data -START-
599 UINT_8 uc2G4BwFixed20M;
600 UINT_8 uc5GBwFixed20M;
601 UINT_8 ucEnable5GBand;
602 // NVRAM - Functional Data -END-
604 } REG_INFO_T, *P_REG_INFO_T;
606 /* for divided firmware loading */
607 typedef struct _FWDL_SECTION_INFO_T
613 } FWDL_SECTION_INFO_T, *P_FWDL_SECTION_INFO_T;
615 typedef struct _FIRMWARE_DIVIDED_DOWNLOAD_T
618 UINT_32 u4CRC; /* CRC calculated without first 8 bytes included */
619 UINT_32 u4NumOfEntries;
621 FWDL_SECTION_INFO_T arSection[];
622 } FIRMWARE_DIVIDED_DOWNLOAD_T, *P_FIRMWARE_DIVIDED_DOWNLOAD_T;
624 typedef struct _PARAM_MCR_RW_STRUC_T {
627 } PARAM_MCR_RW_STRUC_T, *P_PARAM_MCR_RW_STRUC_T;
630 /*******************************************************************************
631 * P U B L I C D A T A
632 ********************************************************************************
635 /*******************************************************************************
636 * P R I V A T E D A T A
637 ********************************************************************************
640 /*******************************************************************************
642 ********************************************************************************
644 #define BUILD_SIGN(ch0, ch1, ch2, ch3) \
645 ((UINT_32)(UINT_8)(ch0) | ((UINT_32)(UINT_8)(ch1) << 8) | \
646 ((UINT_32)(UINT_8)(ch2) << 16) | ((UINT_32)(UINT_8)(ch3) << 24 ))
648 #define MTK_WIFI_SIGNATURE BUILD_SIGN('M', 'T', 'K', 'W')
650 /*******************************************************************************
651 * F U N C T I O N D E C L A R A T I O N S
652 ********************************************************************************
657 IN P_GLUE_INFO_T prGlueInfo
662 IN P_ADAPTER_T prAdapter
667 IN P_ADAPTER_T prAdapter
672 IN P_ADAPTER_T prAdapter
677 IN P_ADAPTER_T prAdapter,
678 IN BOOLEAN fgGlobalIntrCtrl
682 wlanProcessCommandQueue (
683 IN P_ADAPTER_T prAdapter,
689 IN P_ADAPTER_T prAdapter,
690 IN P_CMD_INFO_T prCmdInfo
695 IN P_ADAPTER_T prAdapter,
696 IN P_CMD_INFO_T prCmdInfo
700 wlanReleasePendingOid (
701 IN P_ADAPTER_T prAdapter,
706 wlanReleasePendingCMDbyNetwork(
707 IN P_ADAPTER_T prAdapter,
708 IN ENUM_NETWORK_TYPE_INDEX_T eNetworkType
713 IN P_ADAPTER_T prAdapter,
718 wlanQueryInformation (
719 IN P_ADAPTER_T prAdapter,
720 IN PFN_OID_HANDLER_FUNC pfOidQryHandler,
722 IN UINT_32 u4InfoBufLen,
723 OUT PUINT_32 pu4QryInfoLen
728 IN P_ADAPTER_T prAdapter,
729 IN PFN_OID_HANDLER_FUNC pfOidSetHandler,
731 IN UINT_32 u4InfoBufLen,
732 OUT PUINT_32 pu4SetInfoLen
738 IN P_ADAPTER_T prAdapter,
739 IN P_REG_INFO_T prRegInfo,
740 IN PVOID pvFwImageMapFile,
741 IN UINT_32 u4FwImageFileLength
746 IN P_ADAPTER_T prAdapter
752 IN P_ADAPTER_T prAdapter
764 IN P_ADAPTER_T prAdapter,
765 IN BOOLEAN fgEnableBroadcast
769 wlanIsHandlerNeedHwAccess (
770 IN PFN_OID_HANDLER_FUNC pfnOidHandler,
775 wlanSetPromiscuousMode (
776 IN P_ADAPTER_T prAdapter,
777 IN BOOLEAN fgEnablePromiscuousMode
780 #if CFG_ENABLE_FW_DOWNLOAD
781 #if CFG_ENABLE_FW_DOWNLOAD_AGGREGATION
783 wlanImageSectionDownloadAggregated (
784 IN P_ADAPTER_T prAdapter,
785 IN UINT_32 u4DestAddr,
786 IN UINT_32 u4ImgSecSize,
787 IN PUINT_8 pucImgSecBuf
792 wlanImageSectionDownload (
793 IN P_ADAPTER_T prAdapter,
794 IN UINT_32 u4DestAddr,
795 IN UINT_32 u4ImgSecSize,
796 IN PUINT_8 pucImgSecBuf
799 #if !CFG_ENABLE_FW_DOWNLOAD_ACK
801 wlanImageQueryStatus(
802 IN P_ADAPTER_T prAdapter
806 wlanImageSectionDownloadStatus (
807 IN P_ADAPTER_T prAdapter,
808 IN UINT_8 ucCmdSeqNum
814 IN P_ADAPTER_T prAdapter,
816 IN UINT_32 u4StartAddress
827 wlanSendNicPowerCtrlCmd (
828 IN P_ADAPTER_T prAdapter,
829 IN UINT_8 ucPowerMode
833 wlanIsHandlerAllowedInRFTest (
834 IN PFN_OID_HANDLER_FUNC pfnOidHandler,
839 wlanProcessQueuedSwRfb (
840 IN P_ADAPTER_T prAdapter,
841 IN P_SW_RFB_T prSwRfbListHead
845 wlanProcessQueuedMsduInfo (
846 IN P_ADAPTER_T prAdapter,
847 IN P_MSDU_INFO_T prMsduInfoListHead
851 wlanoidTimeoutCheck (
852 IN P_ADAPTER_T prAdapter,
853 IN PFN_OID_HANDLER_FUNC pfnOidHandler
857 wlanoidClearTimeoutCheck (
858 IN P_ADAPTER_T prAdapter
862 wlanUpdateNetworkAddress (
863 IN P_ADAPTER_T prAdapter
868 IN P_ADAPTER_T prAdapter
871 /* Security Frame Handling */
873 wlanProcessSecurityFrame(
874 IN P_ADAPTER_T prAdapter,
875 IN P_NATIVE_PACKET prPacket
879 wlanSecurityFrameTxDone(
880 IN P_ADAPTER_T prAdapter,
881 IN P_CMD_INFO_T prCmdInfo,
882 IN PUINT_8 pucEventBuf
886 wlanSecurityFrameTxTimeout(
887 IN P_ADAPTER_T prAdapter,
888 IN P_CMD_INFO_T prCmdInfo
891 /*----------------------------------------------------------------------------*/
892 /* OID/IOCTL Handling */
893 /*----------------------------------------------------------------------------*/
895 wlanClearScanningResult(
896 IN P_ADAPTER_T prAdapter
900 wlanClearBssInScanningResult(
901 IN P_ADAPTER_T prAdapter,
905 #if CFG_TEST_WIFI_DIRECT_GO
907 wlanEnableP2pFunction(
908 IN P_ADAPTER_T prAdapter
913 IN P_ADAPTER_T prAdapter
918 /*----------------------------------------------------------------------------*/
919 /* Address Retreive by Polling */
920 /*----------------------------------------------------------------------------*/
922 wlanQueryPermanentAddress(
923 IN P_ADAPTER_T prAdapter
927 /*----------------------------------------------------------------------------*/
928 /* NIC Capability Retrieve by Polling */
929 /*----------------------------------------------------------------------------*/
931 wlanQueryNicCapability(
932 IN P_ADAPTER_T prAdapter
936 /*----------------------------------------------------------------------------*/
937 /* PD MCR Retrieve by Polling */
938 /*----------------------------------------------------------------------------*/
941 IN P_ADAPTER_T prAdapter,
942 IN P_PARAM_MCR_RW_STRUC_T prMcrRdInfo
944 /*----------------------------------------------------------------------------*/
945 /* Loading Manufacture Data */
946 /*----------------------------------------------------------------------------*/
948 wlanLoadManufactureData (
949 IN P_ADAPTER_T prAdapter,
950 IN P_REG_INFO_T prRegInfo
954 /*----------------------------------------------------------------------------*/
955 /* Media Stream Mode */
956 /*----------------------------------------------------------------------------*/
958 wlanResetMediaStreamMode(
959 IN P_ADAPTER_T prAdapter
963 /*----------------------------------------------------------------------------*/
964 /* Timer Timeout Check (for Glue Layer) */
965 /*----------------------------------------------------------------------------*/
967 wlanTimerTimeoutCheck(
968 IN P_ADAPTER_T prAdapter
972 /*----------------------------------------------------------------------------*/
973 /* Mailbox Message Check (for Glue Layer) */
974 /*----------------------------------------------------------------------------*/
976 wlanProcessMboxMessage(
977 IN P_ADAPTER_T prAdapter
981 /*----------------------------------------------------------------------------*/
982 /* TX Pending Packets Handling (for Glue Layer) */
983 /*----------------------------------------------------------------------------*/
985 wlanEnqueueTxPacket (
986 IN P_ADAPTER_T prAdapter,
987 IN P_NATIVE_PACKET prNativePacket
991 wlanFlushTxPendingPackets(
992 IN P_ADAPTER_T prAdapter
996 wlanTxPendingPackets (
997 IN P_ADAPTER_T prAdapter,
998 IN OUT PBOOLEAN pfgHwAccess
1002 /*----------------------------------------------------------------------------*/
1003 /* Low Power Acquire/Release (for Glue Layer) */
1004 /*----------------------------------------------------------------------------*/
1006 wlanAcquirePowerControl(
1007 IN P_ADAPTER_T prAdapter
1011 wlanReleasePowerControl(
1012 IN P_ADAPTER_T prAdapter
1016 /*----------------------------------------------------------------------------*/
1017 /* Pending Packets Number Reporting (for Glue Layer) */
1018 /*----------------------------------------------------------------------------*/
1020 wlanGetTxPendingFrameCount (
1021 IN P_ADAPTER_T prAdapter
1025 /*----------------------------------------------------------------------------*/
1026 /* ACPI state inquiry (for Glue Layer) */
1027 /*----------------------------------------------------------------------------*/
1030 IN P_ADAPTER_T prAdapter
1035 IN P_ADAPTER_T prAdapter,
1036 IN ENUM_ACPI_STATE_T ePowerState
1039 #if CFG_SUPPORT_OSC_SETTING && defined(MT5931)
1041 wlanSetMcuOscStableTime (
1042 IN P_ADAPTER_T prAdapter,
1043 IN UINT_16 u2OscStableTime
1049 IN P_ADAPTER_T prAdapter
1052 /*----------------------------------------------------------------------------*/
1053 /* get ECO version from Revision ID register (for Win32) */
1054 /*----------------------------------------------------------------------------*/
1057 IN P_ADAPTER_T prAdapter
1060 /*----------------------------------------------------------------------------*/
1061 /* set preferred band configuration corresponding to network type */
1062 /*----------------------------------------------------------------------------*/
1064 wlanSetPreferBandByNetwork (
1065 IN P_ADAPTER_T prAdapter,
1066 IN ENUM_BAND_T eBand,
1067 IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex
1070 /*----------------------------------------------------------------------------*/
1071 /* get currently operating channel information */
1072 /*----------------------------------------------------------------------------*/
1074 wlanGetChannelNumberByNetwork (
1075 IN P_ADAPTER_T prAdapter,
1076 IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex
1079 /*----------------------------------------------------------------------------*/
1080 /* get BSS Descriptor information */
1081 /*----------------------------------------------------------------------------*/
1083 wlanGetTargetBssDescByNetwork (
1084 IN P_ADAPTER_T prAdapter,
1085 IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex
1088 /*----------------------------------------------------------------------------*/
1089 /* check for system configuration to generate message on scan list */
1090 /*----------------------------------------------------------------------------*/
1092 wlanCheckSystemConfiguration (
1093 IN P_ADAPTER_T prAdapter
1097 #endif /* _WLAN_LIB_H */