import PULS_20160108
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / misc / mediatek / connectivity / conn_soc / drv_wlan / mt_wifi / 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
13 /*
14 ** $Log: roaming_fsm.h $
15 *
16 * 08 31 2011 tsaiyuan.hsu
17 * [WCXRP00000931] [MT5931 Wi-Fi][DRV/FW] add swcr to disable roaming from driver
18 * remove obsolete code.
19 *
20 * 08 15 2011 tsaiyuan.hsu
21 * [WCXRP00000931] [MT5931 Wi-Fi][DRV/FW] add swcr to disable roaming from driver
22 * add swcr in driver reg, 0x9fxx0000, to disable roaming .
23 *
24 * 03 16 2011 tsaiyuan.hsu
25 * [WCXRP00000517] [MT6620 Wi-Fi][Driver][FW] Fine Tune Performance of Roaming
26 * remove obsolete definition and unused variables.
27 *
28 * 02 26 2011 tsaiyuan.hsu
29 * [WCXRP00000391] [MT6620 Wi-Fi][FW] Add Roaming Support
30 * not send disassoc or deauth to leaving AP so as to improve performace of roaming.
31 *
32 * 01 27 2011 tsaiyuan.hsu
33 * [WCXRP00000392] [MT6620 Wi-Fi][Driver] Add Roaming Support
34 * add roaming fsm
35 * 1. not support 11r, only use strength of signal to determine roaming.
36 * 2. not enable CFG_SUPPORT_ROAMING until completion of full test.
37 * 3. in 6620, adopt work-around to avoid sign extension problem of cck of hw
38 * 4. assume that change of link quality in smooth way.
39 *
40 * 01 27 2011 tsaiyuan.hsu
41 * [WCXRP00000392] [MT6620 Wi-Fi][Driver] Add Roaming Support
42 * add roaming fsm
43 * 1. not support 11r, only use strength of signal to determine roaming.
44 * 2. not enable CFG_SUPPORT_ROAMING until completion of full test.
45 * 3. in 6620, adopt work-around to avoid sign extension problem of cck of hw
46 * 4. assume that change of link quality in smooth way.
47 *
48 */
49
50 #ifndef _ROAMING_FSM_H
51 #define _ROAMING_FSM_H
52
53 /*******************************************************************************
54 * C O M P I L E R F L A G S
55 ********************************************************************************
56 */
57
58 /*******************************************************************************
59 * E X T E R N A L R E F E R E N C E S
60 ********************************************************************************
61 */
62
63 /*******************************************************************************
64 * C O N S T A N T S
65 ********************************************************************************
66 */
67 /* Roaming Discovery interval, SCAN result need to be updated */
68 #define ROAMING_DISCOVERY_TIMEOUT_SEC 5 // Seconds.
69
70 //#define ROAMING_NO_SWING_RCPI_STEP 5 //rcpi
71 /*******************************************************************************
72 * D A T A T Y P E S
73 ********************************************************************************
74 */
75 typedef enum _ENUM_ROAMING_FAIL_REASON_T {
76 ROAMING_FAIL_REASON_CONNLIMIT = 0,
77 ROAMING_FAIL_REASON_NOCANDIDATE,
78 ROAMING_FAIL_REASON_NUM
79 } ENUM_ROAMING_FAIL_REASON_T;
80
81 /* events of roaming between driver and firmware */
82 typedef enum _ENUM_ROAMING_EVENT_T {
83 ROAMING_EVENT_START = 0,
84 ROAMING_EVENT_DISCOVERY,
85 ROAMING_EVENT_ROAM,
86 ROAMING_EVENT_FAIL,
87 ROAMING_EVENT_ABORT,
88 ROAMING_EVENT_NUM
89 } ENUM_ROAMING_EVENT_T;
90
91 typedef struct _ROAMING_PARAM_T {
92 UINT_16 u2Event;
93 UINT_16 u2Data;
94 } ROAMING_PARAM_T, *P_ROAMING_PARAM_T;
95
96 /**/
97 typedef enum _ENUM_ROAMING_STATE_T {
98 ROAMING_STATE_IDLE = 0,
99 ROAMING_STATE_DECISION,
100 ROAMING_STATE_DISCOVERY,
101 ROAMING_STATE_ROAM,
102 ROAMING_STATE_NUM
103 } ENUM_ROAMING_STATE_T;
104
105 typedef struct _ROAMING_INFO_T {
106 BOOLEAN fgIsEnableRoaming;
107
108 ENUM_ROAMING_STATE_T eCurrentState;
109
110 OS_SYSTIME rRoamingDiscoveryUpdateTime;
111
112 #define ROAMING_ENTRY_TIMEOUT_SKIP_COUNT_MAX 2
113 UINT_32 RoamingEntryTimeoutSkipCount;
114
115 } ROAMING_INFO_T, *P_ROAMING_INFO_T;
116
117 /*******************************************************************************
118 * P U B L I C D A T A
119 ********************************************************************************
120 */
121
122 /*******************************************************************************
123 * P R I V A T E D A T A
124 ********************************************************************************
125 */
126
127 /*******************************************************************************
128 * M A C R O S
129 ********************************************************************************
130 */
131
132 #if CFG_SUPPORT_ROAMING
133 #define IS_ROAMING_ACTIVE(prAdapter) \
134 (prAdapter->rWifiVar.rRoamingInfo.eCurrentState == ROAMING_STATE_ROAM)
135 #else
136 #define IS_ROAMING_ACTIVE(prAdapter) FALSE
137 #endif /* CFG_SUPPORT_ROAMING */
138
139 /*******************************************************************************
140 * F U N C T I O N D E C L A R A T I O N S
141 ********************************************************************************
142 */
143 VOID
144 roamingFsmInit (
145 IN P_ADAPTER_T prAdapter
146 );
147
148 VOID
149 roamingFsmUninit (
150 IN P_ADAPTER_T prAdapter
151 );
152
153 VOID
154 roamingFsmSendCmd (
155 IN P_ADAPTER_T prAdapter,
156 IN P_ROAMING_PARAM_T prParam
157 );
158
159 VOID
160 roamingFsmScanResultsUpdate (
161 IN P_ADAPTER_T prAdapter
162 );
163
164 VOID
165 roamingFsmSteps (
166 IN P_ADAPTER_T prAdapter,
167 IN ENUM_ROAMING_STATE_T eNextState
168 );
169
170 VOID
171 roamingFsmRunEventStart (
172 IN P_ADAPTER_T prAdapter
173 );
174
175 VOID
176 roamingFsmRunEventDiscovery (
177 IN P_ADAPTER_T prAdapter,
178 IN UINT_32 u4Param
179 );
180
181 VOID
182 roamingFsmRunEventRoam (
183 IN P_ADAPTER_T prAdapter
184 );
185
186 VOID
187 roamingFsmRunEventFail (
188 IN P_ADAPTER_T prAdapter,
189 IN UINT_32 u4Reason
190 );
191
192 VOID
193 roamingFsmRunEventAbort (
194 IN P_ADAPTER_T prAdapter
195 );
196
197 WLAN_STATUS
198 roamingFsmProcessEvent (
199 IN P_ADAPTER_T prAdapter,
200 IN P_ROAMING_PARAM_T prParam
201 );
202
203 /*******************************************************************************
204 * F U N C T I O N S
205 ********************************************************************************
206 */
207
208 #endif /* _ROAMING_FSM_H */
209
210
211
212