2 ** $Id: //Department/DaVinci/BRANCHES/MT662X_593X_WIFI_DRIVER_V2_3/include/mgmt/bow_fsm.h#1 $
6 \brief Declaration of functions and finite state machine for BOW Module.
8 Declaration of functions and finite state machine for BOW Module.
11 /*******************************************************************************
12 * Copyright (c) 2010 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 * [WCXRP00000735] [MT6620 Wi-Fi][BoW][FW/Driver] Protect BoW connection establishment
58 * Submit missing BoW header files.
60 * 03 27 2011 chinghwa.yu
61 * [WCXRP00000065] Update BoW design and settings
62 * Support multiple physical link.
64 * 02 16 2011 chinghwa.yu
65 * [WCXRP00000065] Update BoW design and settings
66 * Add bowNotifyAllLinkDisconnected interface and change channel grant procedure for bow starting..
68 * 02 15 2011 chinghwa.yu
69 * [WCXRP00000065] Update BoW design and settings
70 * Add channel previledge into _BOW_FSM_INFO_T.
72 * 09 16 2010 chinghwa.yu
74 * update bowChangeMediaState.
76 * 08 24 2010 chinghwa.yu
78 * Update BOW for the 1st time.
84 /*******************************************************************************
85 * C O M P I L E R F L A G S
86 ********************************************************************************
89 /*******************************************************************************
90 * E X T E R N A L R E F E R E N C E S
91 ********************************************************************************
94 /*******************************************************************************
96 ********************************************************************************
99 #define BOW_BG_SCAN_INTERVAL_MIN_SEC 2 //30 // exponential to 960
100 #define BOW_BG_SCAN_INTERVAL_MAX_SEC 2 //960 // 16min
102 #define BOW_DELAY_TIME_OF_DISCONNECT_SEC 10
104 #define BOW_BEACON_TIMEOUT_COUNT_STARTING 10
105 #define BOW_BEACON_TIMEOUT_GUARD_TIME_SEC 1 /* Second */
107 #define BOW_BEACON_MAX_TIMEOUT_TU 100
108 #define BOW_BEACON_MIN_TIMEOUT_TU 5
109 #define BOW_BEACON_MAX_TIMEOUT_VALID TRUE
110 #define BOW_BEACON_MIN_TIMEOUT_VALID TRUE
112 #define BOW_BMC_MAX_TIMEOUT_TU 100
113 #define BOW_BMC_MIN_TIMEOUT_TU 5
114 #define BOW_BMC_MAX_TIMEOUT_VALID TRUE
115 #define BOW_BMC_MIN_TIMEOUT_VALID TRUE
117 #define BOW_JOIN_CH_GRANT_THRESHOLD 10
118 #define BOW_JOIN_CH_REQUEST_INTERVAL 2000
120 /*******************************************************************************
122 ********************************************************************************
125 typedef enum _ENUM_BOW_STATE_T {
129 BOW_STATE_ONLINE_SCAN,
130 BOW_STATE_LOOKING_FOR,
131 BOW_STATE_WAIT_FOR_NEXT_SCAN,
132 BOW_STATE_REQ_CHANNEL_JOIN,
133 BOW_STATE_REQ_CHANNEL_ALONE,
134 BOW_STATE_REQ_CHANNEL_MERGE,
136 BOW_STATE_IBSS_ALONE,
137 BOW_STATE_IBSS_MERGE,
142 typedef struct _BOW_FSM_INFO_T {
143 ENUM_BOW_STATE_T ePreviousState;
144 ENUM_BOW_STATE_T eCurrentState;
148 /* Channel Privilege */
150 BOOLEAN fgIsInfraChannelFinished;
151 BOOLEAN fgIsChannelRequested;
152 BOOLEAN fgIsChannelGranted;
153 BOOLEAN fgIsScanPending;
154 UINT_32 u4ChGrantedInterval;
157 UINT_8 ucPrimaryChannel;
159 UINT_16 u2BeaconInterval;
161 ENUM_BOW_STATE_T eReturnState; /* Return state after current activity finished or abort. */
162 ENUM_BOW_STATE_T eForwardState; /* Step to next state if ACTION frame is TX successfully. */
164 P_BSS_DESC_T prTargetBss; /* BSS of target P2P Device. For Connection/Service Discovery */
166 P_STA_RECORD_T prTargetStaRec;
167 P_BSS_DESC_T prTargetBssDesc; /* For destination */
169 UINT_8 aucPeerAddress[6];
173 BOOLEAN fgSupportQoS;
175 BOOLEAN fgIsRsponseProbe; /* Indicate if BOW can response probe request frame. */
177 /* Sequence number of requested message. */
178 UINT_8 ucSeqNumOfChReq;
179 UINT_8 ucSeqNumOfReqMsg;
180 UINT_8 ucSeqNumOfScnMsg;
181 UINT_8 ucSeqNumOfScanReq;
183 UINT_8 ucSeqNumOfCancelMsg;
185 UINT_8 ucDialogToken;
188 TIMER_T rStartingBeaconTimer; /* For device discovery time of each discovery request from user.*/
189 TIMER_T rStartingDiscoveryTimer;
190 TIMER_T rOperationListenTimer; /* For Find phase under operational state. */
191 TIMER_T rFSMTimer; /* A timer used for Action frame timeout usage. */
192 TIMER_T rIndicationOfDisconnectTimer;
193 TIMER_T rChGrantedTimer;
195 UINT_8 ucAvailableAuthTypes; /* Used for AUTH_MODE_AUTO_SWITCH */
197 } BOW_FSM_INFO_T, *P_BOW_FSM_INFO_T;
200 /*******************************************************************************
201 * P U B L I C D A T A
202 ********************************************************************************
205 /*******************************************************************************
206 * P R I V A T E D A T A
207 ********************************************************************************
210 /*******************************************************************************
212 ********************************************************************************
215 #define bowChangeMediaState(_prAdapter, _eNewMediaState) \
216 (_prAdapter->rWifiVar.arBssInfo[NETWORK_TYPE_BOW_INDEX].eConnectionState = (_eNewMediaState));
218 /*******************************************************************************
219 * F U N C T I O N D E C L A R A T I O N S
220 ********************************************************************************
223 /*******************************************************************************
225 ********************************************************************************