MT6620: add the new driver JB2 V1.0
[firefly-linux-kernel-4.4.55.git] / drivers / mtk_wcn_combo / drv_wlan / mt6620 / 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 } ROAMING_INFO_T, *P_ROAMING_INFO_T;
113
114 /*******************************************************************************
115 *                            P U B L I C   D A T A
116 ********************************************************************************
117 */
118
119 /*******************************************************************************
120 *                           P R I V A T E   D A T A
121 ********************************************************************************
122 */
123
124 /*******************************************************************************
125 *                                 M A C R O S
126 ********************************************************************************
127 */
128
129 #if CFG_SUPPORT_ROAMING
130 #define IS_ROAMING_ACTIVE(prAdapter) \
131         (prAdapter->rWifiVar.rRoamingInfo.eCurrentState == ROAMING_STATE_ROAM)
132 #else
133 #define IS_ROAMING_ACTIVE(prAdapter) FALSE
134 #endif /* CFG_SUPPORT_ROAMING */
135
136 /*******************************************************************************
137 *                  F U N C T I O N   D E C L A R A T I O N S
138 ********************************************************************************
139 */
140 VOID
141 roamingFsmInit (
142     IN P_ADAPTER_T prAdapter
143     );
144
145 VOID
146 roamingFsmUninit (
147     IN P_ADAPTER_T prAdapter
148     );
149
150 VOID
151 roamingFsmSendCmd (
152     IN P_ADAPTER_T prAdapter,
153     IN P_ROAMING_PARAM_T prParam
154     );
155
156 VOID
157 roamingFsmScanResultsUpdate (
158     IN P_ADAPTER_T prAdapter
159     );
160     
161 VOID
162 roamingFsmSteps (
163     IN P_ADAPTER_T prAdapter,
164     IN ENUM_ROAMING_STATE_T eNextState
165     );
166
167 VOID
168 roamingFsmRunEventStart (
169     IN P_ADAPTER_T prAdapter
170     );
171
172 VOID
173 roamingFsmRunEventDiscovery (
174     IN P_ADAPTER_T prAdapter,
175     IN UINT_32 u4Param
176     );    
177
178 VOID
179 roamingFsmRunEventRoam (
180     IN P_ADAPTER_T prAdapter
181     );
182
183 VOID
184 roamingFsmRunEventFail (
185     IN P_ADAPTER_T prAdapter,
186     IN UINT_32 u4Reason
187     );
188
189 VOID
190 roamingFsmRunEventAbort (
191     IN P_ADAPTER_T prAdapter
192     );
193         
194 WLAN_STATUS
195 roamingFsmProcessEvent (
196     IN P_ADAPTER_T prAdapter,
197     IN P_ROAMING_PARAM_T prParam
198     );
199
200 /*******************************************************************************
201 *                              F U N C T I O N S
202 ********************************************************************************
203 */
204
205 #endif /* _ROAMING_FSM_H */
206
207
208
209