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