add rk3288 pinctrl dts code
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / mt5931_kk / drv_wlan / include / mgmt / roaming_fsm.h
1 /*
2 ** $Id:
3 */
4
5 /*! \file   "roaming_fsm.h"
6     \brief  This file defines the FSM for Roaming MODULE.
7
8     This file defines the FSM for Roaming MODULE.
9 */
10
11 /*******************************************************************************
12 * Copyright (c) 2009 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: roaming_fsm.h $
55  *
56  * 08 31 2011 tsaiyuan.hsu
57  * [WCXRP00000931] [MT5931 Wi-Fi][DRV/FW] add swcr to disable roaming from driver
58  * remove obsolete code.
59  *
60  * 08 15 2011 tsaiyuan.hsu
61  * [WCXRP00000931] [MT5931 Wi-Fi][DRV/FW] add swcr to disable roaming from driver
62  * add swcr in driver reg, 0x9fxx0000, to disable roaming .
63  *
64  * 03 16 2011 tsaiyuan.hsu
65  * [WCXRP00000517] [MT6620 Wi-Fi][Driver][FW] Fine Tune Performance of Roaming
66  * remove obsolete definition and unused variables.
67  *
68  * 02 26 2011 tsaiyuan.hsu
69  * [WCXRP00000391] [MT6620 Wi-Fi][FW] Add Roaming Support
70  * not send disassoc or deauth to leaving AP so as to improve performace of roaming.
71  *
72  * 01 27 2011 tsaiyuan.hsu
73  * [WCXRP00000392] [MT6620 Wi-Fi][Driver] Add Roaming Support
74  * add roaming fsm
75  * 1. not support 11r, only use strength of signal to determine roaming.
76  * 2. not enable CFG_SUPPORT_ROAMING until completion of full test.
77  * 3. in 6620, adopt work-around to avoid sign extension problem of cck of hw
78  * 4. assume that change of link quality in smooth way.
79  *
80  * 01 27 2011 tsaiyuan.hsu
81  * [WCXRP00000392] [MT6620 Wi-Fi][Driver] Add Roaming Support
82  * add roaming fsm
83  * 1. not support 11r, only use strength of signal to determine roaming.
84  * 2. not enable CFG_SUPPORT_ROAMING until completion of full test.
85  * 3. in 6620, adopt work-around to avoid sign extension problem of cck of hw
86  * 4. assume that change of link quality in smooth way.
87  *
88 */
89
90 #ifndef _ROAMING_FSM_H
91 #define _ROAMING_FSM_H
92
93 /*******************************************************************************
94 *                         C O M P I L E R   F L A G S
95 ********************************************************************************
96 */
97
98 /*******************************************************************************
99 *                    E X T E R N A L   R E F E R E N C E S
100 ********************************************************************************
101 */
102
103 /*******************************************************************************
104 *                              C O N S T A N T S
105 ********************************************************************************
106 */
107 /* Roaming Discovery interval, SCAN result need to be updated */
108 #define ROAMING_DISCOVERY_TIMEOUT_SEC               5 // Seconds.
109
110 //#define ROAMING_NO_SWING_RCPI_STEP                  5 //rcpi
111 /*******************************************************************************
112 *                             D A T A   T Y P E S
113 ********************************************************************************
114 */
115 typedef enum _ENUM_ROAMING_FAIL_REASON_T {
116     ROAMING_FAIL_REASON_CONNLIMIT = 0,
117     ROAMING_FAIL_REASON_NOCANDIDATE,
118     ROAMING_FAIL_REASON_NUM
119 } ENUM_ROAMING_FAIL_REASON_T;
120
121 /* events of roaming between driver and firmware */
122 typedef enum _ENUM_ROAMING_EVENT_T {
123     ROAMING_EVENT_START = 0,
124     ROAMING_EVENT_DISCOVERY,
125     ROAMING_EVENT_ROAM,
126     ROAMING_EVENT_FAIL,
127     ROAMING_EVENT_ABORT, 
128     ROAMING_EVENT_NUM
129 } ENUM_ROAMING_EVENT_T;
130
131 typedef struct _ROAMING_PARAM_T {
132     UINT_16     u2Event;
133     UINT_16     u2Data;
134 } ROAMING_PARAM_T, *P_ROAMING_PARAM_T;
135
136 /**/
137 typedef enum _ENUM_ROAMING_STATE_T {
138     ROAMING_STATE_IDLE = 0,
139     ROAMING_STATE_DECISION,
140     ROAMING_STATE_DISCOVERY,
141     ROAMING_STATE_ROAM,
142     ROAMING_STATE_NUM
143 } ENUM_ROAMING_STATE_T;
144
145 typedef struct _ROAMING_INFO_T {          
146           BOOLEAN                 fgIsEnableRoaming;
147           
148     ENUM_ROAMING_STATE_T    eCurrentState;
149
150     OS_SYSTIME              rRoamingDiscoveryUpdateTime;
151
152 } ROAMING_INFO_T, *P_ROAMING_INFO_T;
153
154 /*******************************************************************************
155 *                            P U B L I C   D A T A
156 ********************************************************************************
157 */
158
159 /*******************************************************************************
160 *                           P R I V A T E   D A T A
161 ********************************************************************************
162 */
163
164 /*******************************************************************************
165 *                                 M A C R O S
166 ********************************************************************************
167 */
168
169 #if CFG_SUPPORT_ROAMING
170 #define IS_ROAMING_ACTIVE(prAdapter) \
171         (prAdapter->rWifiVar.rRoamingInfo.eCurrentState == ROAMING_STATE_ROAM)
172 #else
173 #define IS_ROAMING_ACTIVE(prAdapter) FALSE
174 #endif /* CFG_SUPPORT_ROAMING */
175
176 /*******************************************************************************
177 *                  F U N C T I O N   D E C L A R A T I O N S
178 ********************************************************************************
179 */
180 VOID
181 roamingFsmInit (
182     IN P_ADAPTER_T prAdapter
183     );
184
185 VOID
186 roamingFsmUninit (
187     IN P_ADAPTER_T prAdapter
188     );
189
190 VOID
191 roamingFsmSendCmd (
192     IN P_ADAPTER_T prAdapter,
193     IN P_ROAMING_PARAM_T prParam
194     );
195
196 VOID
197 roamingFsmScanResultsUpdate (
198     IN P_ADAPTER_T prAdapter
199     );
200     
201 VOID
202 roamingFsmSteps (
203     IN P_ADAPTER_T prAdapter,
204     IN ENUM_ROAMING_STATE_T eNextState
205     );
206
207 VOID
208 roamingFsmRunEventStart (
209     IN P_ADAPTER_T prAdapter
210     );
211
212 VOID
213 roamingFsmRunEventDiscovery (
214     IN P_ADAPTER_T prAdapter,
215     IN UINT_32 u4Param
216     );    
217
218 VOID
219 roamingFsmRunEventRoam (
220     IN P_ADAPTER_T prAdapter
221     );
222
223 VOID
224 roamingFsmRunEventFail (
225     IN P_ADAPTER_T prAdapter,
226     IN UINT_32 u4Reason
227     );
228
229 VOID
230 roamingFsmRunEventAbort (
231     IN P_ADAPTER_T prAdapter
232     );
233         
234 WLAN_STATUS
235 roamingFsmProcessEvent (
236     IN P_ADAPTER_T prAdapter,
237     IN P_ROAMING_PARAM_T prParam
238     );
239
240 /*******************************************************************************
241 *                              F U N C T I O N S
242 ********************************************************************************
243 */
244
245 #endif /* _ROAMING_FSM_H */
246
247
248
249