2 ** $Id: //Department/DaVinci/BRANCHES/MT6620_WIFI_DRIVER_V2_3/include/nic/nic.h#1 $
6 \brief The declaration of nic functions
16 * 11 01 2011 chinglan.wang
18 * Modify the Wi-Fi method of the flush TX queue when disconnect the AP.
19 * If disconnect the AP and flush all the data frame in the TX queue, WPS cannot do the 4-way handshake to connect to the AP..
21 * 07 18 2011 chinghwa.yu
22 * [WCXRP00000063] Update BCM CoEx design and settings[WCXRP00000612] [MT6620 Wi-Fi] [FW] CSD update SWRDD algorithm
23 * Add CMD/Event for RDD and BWCS.
26 * [WCXRP00000718] [MT6620 Wi-Fi] modify the behavior of setting tx power
27 * ACPI APIs migrate to wlan_lib.c for glue layer to invoke.
29 * 04 11 2011 yuche.tsai
30 * [WCXRP00000627] [Volunteer Patch][MT6620][Driver] Pending MMPUD of P2P Network may crash system issue.
31 * Fix kernel panic issue when MMPDU of P2P is pending in driver.
34 * [WCXRP00000503] [MT6620 Wi-Fi][Driver] Take RCPI brought by association response as initial RSSI right after connection is built.
35 * use RCPI brought by ASSOC-RESP after connection is built as initial RCPI to avoid using a uninitialized MAC-RX RCPI.
38 * [WCXRP00000415] [MT6620 Wi-Fi][Driver] Check if any memory leakage happens when uninitializing in DGB mode
41 * 01 27 2011 tsaiyuan.hsu
42 * [WCXRP00000392] [MT6620 Wi-Fi][Driver] Add Roaming Support
44 * 1. not support 11r, only use strength of signal to determine roaming.
45 * 2. not enable CFG_SUPPORT_ROAMING until completion of full test.
46 * 3. in 6620, adopt work-around to avoid sign extension problem of cck of hw
47 * 4. assume that change of link quality in smooth way.
50 * [WCXRP00000056] [MT6620 Wi-Fi][Driver] NVRAM implementation with Version Check[WCXRP00000137] [MT6620 Wi-Fi] [FW] Support NIC capability query command
51 * 1) update NVRAM content template to ver 1.02
52 * 2) add compile option for querying NIC capability (default: off)
53 * 3) modify AIS 5GHz support to run-time option, which could be turned on by registry or NVRAM setting
54 * 4) correct auto-rate compiler error under linux (treat warning as error)
55 * 5) simplify usage of NVRAM and REG_INFO_T
56 * 6) add version checking between driver and firmware
58 * 10 26 2010 eddie.chen
59 * [WCXRP00000134] [MT6620 Wi-Fi][Driver] Add a registry to enable auto rate for SQA test by using E1 EVB
60 * Add auto rate parameter in registry.
63 * [WCXRP00000084] [MT6620 Wi-Fi][Driver][FW] Add fixed rate support for distance test
64 * add HT (802.11n) fixed rate support.
67 * [WCXRP00000084] [MT6620 Wi-Fi][Driver][FW] Add fixed rate support for distance test
68 * adding fixed rate support for distance test. (from registry setting)
71 * [WCXRP00000056] [MT6620 Wi-Fi][Driver] NVRAM implementation with Version Check
72 * 1) add NVRAM access API
73 * 2) fake scanning result when NVRAM doesn't exist and/or version mismatch. (off by compiler option)
74 * 3) add OID implementation for NVRAM read/write service
77 * [WCXRP00000077] [MT6620 Wi-Fi][Driver][FW] Eliminate use of ENUM_NETWORK_TYPE_T and replaced by ENUM_NETWORK_TYPE_INDEX_T only
78 * remove ENUM_NETWORK_TYPE_T definitions
81 * [WCXRP00000053] [MT6620 Wi-Fi][Driver] Reset incomplete and might leads to BSOD when entering RF test with AIS associated
82 * Do a complete reset with STA-REC null checking for RF test re-entry
86 * use static memory pool for storing IEs of scanning result.
90 * HIFSYS Clock Source Workaround
92 * 08 25 2010 george.huang
94 * update OID/ registry control path for PM related settings
98 * [AIS-FSM] honor registry setting for adhoc running mode. (A/B/G)
102 * Centralize mgmt/system service procedures into independent calls.
106 * 1) eliminate redundant variable eOPMode in prAdapter->rWlanInfo
107 * 2) change nicMediaStateChange() API prototype
109 * 07 14 2010 yarco.yang
111 * 1. Remove CFG_MQM_MIGRATION
112 * 2. Add CMD_UPDATE_WMM_PARMS command
116 * [WPD00003833] [MT6620 and MT5931] Driver migration - move to new repository.
118 * 07 06 2010 george.huang
119 * [WPD00001556]Basic power managemenet function
120 * Update arguments for nicUpdateBeaconIETemplate()
123 * [WPD00003833][MT6620 and MT5931] Driver migration
124 * STA-REC is maintained by CNM only.
127 * [WPD00003833][MT6620 and MT5931] Driver migration
128 * 1) ignore RSN checking when RSN is not turned on.
129 * 2) set STA-REC deactivation callback as NULL
130 * 3) add variable initialization API based on PHY configuration
133 * [WPD00003833][MT6620 and MT5931] Driver migration
134 * sync. with CMD/EVENT document ver0.07.
137 * [WPD00003833][MT6620 and MT5931] Driver migration
138 * 1) sync to. CMD/EVENT document v0.03
139 * 2) simplify DTIM period parsing in scan.c only, bss.c no longer parses it again.
140 * 3) send command packet to indicate FW-PM after
141 * a) 1st beacon is received after AIS has connected to an AP
142 * b) IBSS-ALONE has been created
143 * c) IBSS-MERGE has occured
145 * 06 25 2010 george.huang
146 * [WPD00001556]Basic power managemenet function
147 * Create beacon update path, with expose bssUpdateBeaconContent()
150 * [WPD00003833][MT6620 and MT5931] Driver migration
151 * 1) add command warpper for STA-REC/BSS-INFO sync.
152 * 2) enhance command packet sending procedure for non-oid part
153 * 3) add command packet definitions for STA-REC/BSS-INFO sync.
156 * [WPD00003833][MT6620 and MT5931] Driver migration
157 * implement TX_DONE callback path.
160 * [WPD00003833][MT6620 and MT5931] Driver migration
161 * 1) migrate assoc.c.
162 * 2) add ucTxSeqNum for tracking frames which needs TX-DONE awareness
163 * 3) add configuration options for CNM_MEM and RSN modules
164 * 4) add data path for management frames
165 * 5) eliminate rPacketInfo of MSDU_INFO_T
168 * [WPD00003833][MT6620 and MT5931] Driver migration
169 * 1) eliminate CFG_CMD_EVENT_VERSION_0_9
170 * 2) when disconnected, indicate nic directly (no event is needed)
172 * 06 06 2010 kevin.huang
173 * [WPD00003832][MT6620 5931] Create driver base
174 * [MT6620 5931] Create driver base
177 * [WPD00001943]Create WiFi test driver framework on WinXP
178 * 1) surpress compiler warning
179 * 2) when acqruing LP-own, keep writing WHLPCR whenever OWN is not acquired yet
182 * [WPD00003823][MT6620 Wi-Fi] Add Bluetooth-over-Wi-Fi support
183 * add framework for BT-over-Wi-Fi support.
184 * * * * * * * * * 1) prPendingCmdInfo is replaced by queue for multiple handler capability
185 * * * * * * * * * 2) command sequence number is now increased atomically
186 * * * * * * * * * 3) private data could be hold and taken use for other purpose
189 * [WPD00001943]Create WiFi test driver framework on WinXP
190 * add channel frequency <-> number conversion
193 * [WPD00001943]Create WiFi test driver framework on WinXP
194 * 1) add ACPI D0/D3 state switching support
195 * * * * * 2) use more formal way to handle interrupt when the status is retrieved from enhanced RX response
198 * [WPD00001943]Create WiFi test driver framework on WinXP
199 * always process TX interrupt first then RX interrupt.
202 * [WPD00001943]Create WiFi test driver framework on WinXP
203 * correct behavior to prevent duplicated RX handling for RX0_DONE and RX1_DONE
206 * [WPD00001943]Create WiFi test driver framework on WinXP
207 * add checksum offloading support.
208 ** \main\maintrunk.MT6620WiFiDriver_Prj\5 2009-10-13 21:58:58 GMT mtk01084
209 ** update for new HW architecture design
210 ** \main\maintrunk.MT6620WiFiDriver_Prj\4 2009-04-24 21:12:55 GMT mtk01104
211 ** Add function prototype nicRestoreSpiDefMode()
212 ** \main\maintrunk.MT6620WiFiDriver_Prj\3 2009-03-19 18:32:54 GMT mtk01084
213 ** update for basic power management functions
214 ** \main\maintrunk.MT6620WiFiDriver_Prj\2 2009-03-10 20:16:32 GMT mtk01426
222 /*******************************************************************************
223 * C O M P I L E R F L A G S
224 ********************************************************************************
227 /*******************************************************************************
229 ********************************************************************************
232 /*******************************************************************************
234 ********************************************************************************
238 struct _REG_ENTRY_T {
243 struct _TABLE_ENTRY_T {
244 P_REG_ENTRY_T pu4TablePtr;
248 /*! INT status to event map */
249 typedef struct _INT_EVENT_MAP_T {
252 } INT_EVENT_MAP_T, *P_INT_EVENT_MAP_T;
255 enum ENUM_INT_EVENT_T {
263 typedef enum _ENUM_IE_UPD_METHOD_T {
264 IE_UPD_METHOD_UPDATE_RANDOM,
265 IE_UPD_METHOD_UPDATE_ALL,
266 IE_UPD_METHOD_DELETE_ALL,
267 } ENUM_IE_UPD_METHOD_T, *P_ENUM_IE_UPD_METHOD_T;
270 /*******************************************************************************
271 * E X T E R N A L R E F E R E N C E S
272 ********************************************************************************
275 /*******************************************************************************
276 * P U B L I C D A T A
277 ********************************************************************************
280 /*******************************************************************************
281 * P R I V A T E D A T A
282 ********************************************************************************
285 /*******************************************************************************
287 ********************************************************************************
291 /*******************************************************************************
292 * F U N C T I O N D E C L A R A T I O N S
293 ********************************************************************************
295 /*----------------------------------------------------------------------------*/
296 /* Routines in nic.c */
297 /*----------------------------------------------------------------------------*/
299 nicAllocateAdapterMemory (
300 IN P_ADAPTER_T prAdapter
304 nicReleaseAdapterMemory (
305 IN P_ADAPTER_T prAdapter
309 nicDisableInterrupt (
310 IN P_ADAPTER_T prAdapter
315 IN P_ADAPTER_T prAdapter
320 IN P_ADAPTER_T prAdapter
325 IN P_ADAPTER_T prAdapter,
326 IN UINT_32 u4IntStatus
330 nicInitializeAdapter (
331 IN P_ADAPTER_T prAdapter
336 IN P_ADAPTER_T prAdapter
341 IN P_ADAPTER_T prAdapter
345 #if CFG_SDIO_INTR_ENHANCE
348 IN P_ADAPTER_T prAdapter
352 nicSDIOReadIntStatus (
353 IN P_ADAPTER_T prAdapter,
354 OUT PUINT_32 pu4IntStatus
360 IN P_ADAPTER_T prAdapter
365 IN P_ADAPTER_T prAdapter,
366 IN BOOLEAN fgEnableGlobalInt
370 nicpmSetAcpiPowerD0 (
371 IN P_ADAPTER_T prAdapter
375 nicpmSetAcpiPowerD3 (
376 IN P_ADAPTER_T prAdapter
379 #if defined(_HIF_SPI)
381 nicRestoreSpiDefMode(
382 IN P_ADAPTER_T prAdapter
387 nicProcessSoftwareInterrupt(
388 IN P_ADAPTER_T prAdapter
392 nicProcessAbnormalInterrupt (
393 IN P_ADAPTER_T prAdapter
398 IN P_ADAPTER_T prAdapter,
399 IN UINT_32 u4MailboxNum,
404 IN P_ADAPTER_T prAdapter,
405 IN UINT_32 u4MailboxNum,
406 OUT PUINT_32 pu4Data);
410 IN P_ADAPTER_T prAdapter,
411 IN UINT_32 u4SwIntrBitmap
415 nicGetPendingCmdInfo (
416 IN P_ADAPTER_T prAdapter,
421 nicGetPendingTxMsduInfo (
422 IN P_ADAPTER_T prAdapter,
427 nicGetPendingStaMMPDU(
428 IN P_ADAPTER_T prAdapter,
429 IN UINT_8 ucStaRecIdx
433 nicFreePendingTxMsduInfoByNetwork (
434 IN P_ADAPTER_T prAdapter,
435 IN ENUM_NETWORK_TYPE_INDEX_T eNetworkType
439 nicIncreaseCmdSeqNum (
440 IN P_ADAPTER_T prAdapter
444 nicIncreaseTxSeqNum (
445 IN P_ADAPTER_T prAdapter
448 /* Media State Change */
450 nicMediaStateChange (
451 IN P_ADAPTER_T prAdapter,
452 IN ENUM_NETWORK_TYPE_INDEX_T eNetworkType,
453 IN P_EVENT_CONNECTION_STATUS prConnectionStatus
456 /* Utility function for channel number conversion */
459 IN UINT_32 u4ChannelNum
464 IN UINT_32 u4FreqInKHz
467 /* firmware command wrapper */
468 /* NETWORK (WIFISYS) */
471 IN P_ADAPTER_T prAdapter,
472 IN ENUM_NETWORK_TYPE_INDEX_T eNetworkTypeIdx
476 nicDeactivateNetwork(
477 IN P_ADAPTER_T prAdapter,
478 IN ENUM_NETWORK_TYPE_INDEX_T eNetworkTypeIdx
485 IN P_ADAPTER_T prAdapter,
486 IN ENUM_NETWORK_TYPE_INDEX_T eNetworkTypeIdx
489 /* BSS-INFO Indication (PM) */
491 nicPmIndicateBssCreated(
492 IN P_ADAPTER_T prAdapter,
493 IN ENUM_NETWORK_TYPE_INDEX_T eNetworkTypeIdx
497 nicPmIndicateBssConnected(
498 IN P_ADAPTER_T prAdapter,
499 IN ENUM_NETWORK_TYPE_INDEX_T eNetworkTypeIdx
503 nicPmIndicateBssAbort(
504 IN P_ADAPTER_T prAdapter,
505 IN ENUM_NETWORK_TYPE_INDEX_T eNetworkTypeIdx
508 /* Beacon Template Update */
510 nicUpdateBeaconIETemplate (
511 IN P_ADAPTER_T prAdapter,
512 IN ENUM_IE_UPD_METHOD_T eIeUpdMethod,
513 IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex,
514 IN UINT_16 u2Capability,
521 IN P_ADAPTER_T prAdapter,
522 IN ENUM_NETWORK_TYPE_INDEX_T eNetworkTypeIdx
527 IN P_ADAPTER_T prAdapter,
528 IN P_CMD_AUTO_POWER_PARAM_T prAutoPwrParam
531 /*----------------------------------------------------------------------------*/
532 /* Calibration Control */
533 /*----------------------------------------------------------------------------*/
536 IN P_ADAPTER_T prAdapter,
537 IN P_CMD_TX_PWR_T prTxPwrParam
542 IN P_ADAPTER_T prAdapter,
543 IN P_CMD_5G_PWR_OFFSET_T pr5GPwrOffset
548 IN P_ADAPTER_T prAdapter,
549 IN P_CMD_PWR_PARAM_T prDpdCalResult
553 /*----------------------------------------------------------------------------*/
554 /* PHY configuration */
555 /*----------------------------------------------------------------------------*/
557 nicSetAvailablePhyTypeSet (
558 IN P_ADAPTER_T prAdapter
561 /*----------------------------------------------------------------------------*/
562 /* MGMT and System Service Control */
563 /*----------------------------------------------------------------------------*/
565 nicInitSystemService (
566 IN P_ADAPTER_T prAdapter
570 nicResetSystemService (
571 IN P_ADAPTER_T prAdapter
575 nicUninitSystemService (
576 IN P_ADAPTER_T prAdapter
581 IN P_ADAPTER_T prAdapter,
582 IN P_REG_INFO_T prRegInfo
587 IN P_ADAPTER_T prAdapter
591 nicConfigPowerSaveProfile (
592 IN P_ADAPTER_T prAdapter,
593 ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex,
594 PARAM_POWER_MODE ePwrMode,
600 IN P_ADAPTER_T prAdapter,
604 /*----------------------------------------------------------------------------*/
605 /* Scan Result Processing */
606 /*----------------------------------------------------------------------------*/
609 IN P_ADAPTER_T prAdapter,
610 IN PARAM_MAC_ADDRESS rMacAddr,
611 IN P_PARAM_SSID_T prSsid,
612 IN UINT_32 u4Privacy,
614 IN ENUM_PARAM_NETWORK_TYPE_T eNetworkType,
615 IN P_PARAM_802_11_CONFIG_T prConfiguration,
616 IN ENUM_PARAM_OP_MODE_T eOpMode,
617 IN PARAM_RATES_EX rSupportedRates,
618 IN UINT_16 u2IELength,
623 nicFreeScanResultIE (
624 IN P_ADAPTER_T prAdapter,
628 #if (MT6620_E1_ASIC_HIFSYS_WORKAROUND == 1)
629 /*----------------------------------------------------------------------------*/
630 /* Workaround Control */
631 /*----------------------------------------------------------------------------*/
633 nicEnableClockGating (
634 IN P_ADAPTER_T prAdapter
638 nicDisableClockGating (
639 IN P_ADAPTER_T prAdapter
644 /*----------------------------------------------------------------------------*/
645 /* Fixed Rate Hacking */
646 /*----------------------------------------------------------------------------*/
648 nicUpdateRateParams (
649 IN P_ADAPTER_T prAdapter,
650 IN ENUM_REGISTRY_FIXED_RATE_T eRateSetting,
651 IN PUINT_8 pucDesiredPhyTypeSet,
652 IN PUINT_16 pu2DesiredNonHTRateSet,
653 IN PUINT_16 pu2BSSBasicRateSet,
654 IN PUINT_8 pucMcsSet,
655 IN PUINT_8 pucSupMcs32,
656 IN PUINT_16 u2HtCapInfo
659 /*----------------------------------------------------------------------------*/
660 /* Write registers */
661 /*----------------------------------------------------------------------------*/
664 IN P_ADAPTER_T prAdapter,
665 IN UINT_32 u4Address,
669 /*----------------------------------------------------------------------------*/
670 /* Update auto rate */
671 /*----------------------------------------------------------------------------*/
674 IN P_ADAPTER_T prAdapter,
675 IN UINT_32 u4ArSysParam0,
676 IN UINT_32 u4ArSysParam1,
677 IN UINT_32 u4ArSysParam2,
678 IN UINT_32 u4ArSysParam3
681 /*----------------------------------------------------------------------------*/
682 /* Enable/Disable Roaming */
683 /*----------------------------------------------------------------------------*/
685 nicRoamingUpdateParams(
686 IN P_ADAPTER_T prAdapter,
687 IN UINT_32 u4EnableRoaming
692 nicPrintFirmwareAssertInfo(
693 IN P_ADAPTER_T prAdapter
696 /*----------------------------------------------------------------------------*/
697 /* Link Quality Updating */
698 /*----------------------------------------------------------------------------*/
700 nicUpdateLinkQuality(
701 IN P_ADAPTER_T prAdapter,
702 IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIdx,
703 IN P_EVENT_LINK_QUALITY prEventLinkQuality
708 IN P_ADAPTER_T prAdapter,
709 IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIdx,
711 IN INT_8 cLinkQuality
716 IN P_ADAPTER_T prAdapter,
717 IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIdx,
718 IN UINT_16 u2LinkSpeed
721 #if CFG_SUPPORT_RDD_TEST_MODE
723 nicUpdateRddTestMode(
724 IN P_ADAPTER_T prAdapter,
725 IN P_CMD_RDD_CH_T prRddChParam