support different wifi bt chip auto compatible
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / mt5931_kk / drv_wlan / include / mgmt / bow_fsm.h
1 /*
2 ** $Id: //Department/DaVinci/BRANCHES/MT662X_593X_WIFI_DRIVER_V2_3/include/mgmt/bow_fsm.h#1 $
3 */
4
5 /*! \file   bow_fsm.h
6     \brief  Declaration of functions and finite state machine for BOW Module.
7
8     Declaration of functions and finite state machine for BOW Module.
9 */
10
11 /*******************************************************************************
12 * Copyright (c) 2010 MediaTek Inc.
13 *
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
17 * MediaTek Inc.
18 ********************************************************************************
19 */
20
21 /*******************************************************************************
22 * LEGAL DISCLAIMER
23 *
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.
37 *
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.
43 *
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
49 * (ICC).
50 ********************************************************************************
51 */
52
53 /*
54 ** $Log: bow_fsm.h $
55  *
56  * 05 22 2011 terry.wu
57  * [WCXRP00000735] [MT6620 Wi-Fi][BoW][FW/Driver] Protect BoW connection establishment
58  * Submit missing BoW header files.
59  *
60  * 03 27 2011 chinghwa.yu
61  * [WCXRP00000065] Update BoW design and settings
62  * Support multiple physical link.
63  *
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..
67  *
68  * 02 15 2011 chinghwa.yu
69  * [WCXRP00000065] Update BoW design and settings
70  * Add channel previledge into _BOW_FSM_INFO_T.
71  *
72  * 09 16 2010 chinghwa.yu
73  * NULL
74  * update bowChangeMediaState.
75  *
76  * 08 24 2010 chinghwa.yu
77  * NULL
78  * Update BOW for the 1st time.
79  */
80
81 #ifndef _BOW_FSM_H
82 #define _BOW_FSM_H
83
84 /*******************************************************************************
85 *                         C O M P I L E R   F L A G S
86 ********************************************************************************
87 */
88
89 /*******************************************************************************
90 *                    E X T E R N A L   R E F E R E N C E S
91 ********************************************************************************
92 */
93
94 /*******************************************************************************
95 *                              C O N S T A N T S
96 ********************************************************************************
97 */
98
99 #define BOW_BG_SCAN_INTERVAL_MIN_SEC        2 //30 // exponential to 960
100 #define BOW_BG_SCAN_INTERVAL_MAX_SEC        2 //960 // 16min
101
102 #define BOW_DELAY_TIME_OF_DISCONNECT_SEC    10
103
104 #define BOW_BEACON_TIMEOUT_COUNT_STARTING   10
105 #define BOW_BEACON_TIMEOUT_GUARD_TIME_SEC   1 /* Second */
106
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
111
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
116
117 #define BOW_JOIN_CH_GRANT_THRESHOLD         10
118 #define BOW_JOIN_CH_REQUEST_INTERVAL        2000
119
120 /*******************************************************************************
121 *                             D A T A   T Y P E S
122 ********************************************************************************
123 */
124
125 typedef enum _ENUM_BOW_STATE_T {
126     BOW_STATE_IDLE = 0,
127     BOW_STATE_SEARCH,
128     BOW_STATE_SCAN,
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,
135     BOW_STATE_JOIN,
136     BOW_STATE_IBSS_ALONE,
137     BOW_STATE_IBSS_MERGE,
138     BOW_STATE_NORMAL_TR,
139     BOW_STATE_NUM
140 } ENUM_BOW_STATE_T;
141
142 typedef struct _BOW_FSM_INFO_T {
143     ENUM_BOW_STATE_T    ePreviousState;
144     ENUM_BOW_STATE_T    eCurrentState;
145
146     BOOLEAN             fgTryScan;
147
148     /* Channel Privilege */
149
150     BOOLEAN             fgIsInfraChannelFinished;
151     BOOLEAN             fgIsChannelRequested;
152     BOOLEAN             fgIsChannelGranted;
153     BOOLEAN             fgIsScanPending;
154     UINT_32                      u4ChGrantedInterval;
155
156
157     UINT_8                  ucPrimaryChannel;
158     ENUM_BAND_T       eBand;
159     UINT_16                 u2BeaconInterval;
160
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. */
163
164     P_BSS_DESC_T prTargetBss; /* BSS of target P2P Device. For Connection/Service Discovery */
165
166     P_STA_RECORD_T prTargetStaRec;
167     P_BSS_DESC_T        prTargetBssDesc;            /* For destination */
168
169     UINT_8          aucPeerAddress[6];
170
171     UINT_8                        ucRole;
172
173     BOOLEAN      fgSupportQoS;
174
175     BOOLEAN fgIsRsponseProbe; /* Indicate if BOW can response probe request frame. */
176
177     /* Sequence number of requested message. */
178     UINT_8 ucSeqNumOfChReq;
179     UINT_8 ucSeqNumOfReqMsg;
180     UINT_8 ucSeqNumOfScnMsg;
181     UINT_8 ucSeqNumOfScanReq;
182
183     UINT_8 ucSeqNumOfCancelMsg;
184
185     UINT_8 ucDialogToken;
186
187     /* Timer */
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;
194
195     UINT_8  ucAvailableAuthTypes;       /* Used for AUTH_MODE_AUTO_SWITCH */
196
197 } BOW_FSM_INFO_T, *P_BOW_FSM_INFO_T;
198
199
200 /*******************************************************************************
201 *                            P U B L I C   D A T A
202 ********************************************************************************
203 */
204
205 /*******************************************************************************
206 *                           P R I V A T E   D A T A
207 ********************************************************************************
208 */
209
210 /*******************************************************************************
211 *                                 M A C R O S
212 ********************************************************************************
213 */
214
215 #define bowChangeMediaState(_prAdapter, _eNewMediaState) \
216             (_prAdapter->rWifiVar.arBssInfo[NETWORK_TYPE_BOW_INDEX].eConnectionState = (_eNewMediaState));
217
218 /*******************************************************************************
219 *                  F U N C T I O N   D E C L A R A T I O N S
220 ********************************************************************************
221 */
222
223 /*******************************************************************************
224 *                              F U N C T I O N S
225 ********************************************************************************
226 */
227
228
229
230 #endif