5 /*! \file "roaming_fsm.h"
6 \brief This file defines the FSM for Roaming MODULE.
8 This file defines the FSM for Roaming MODULE.
14 ** $Log: roaming_fsm.h $
16 ** 09 03 2013 tsaiyuan.hsu
17 ** [BORA00002775] MT6630 unified MAC ROAMING
18 ** 1. modify roaming fsm.
19 ** 2. add roaming control.
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)
26 * 08 31 2011 tsaiyuan.hsu
27 * [WCXRP00000931] [MT5931 Wi-Fi][DRV/FW] add swcr to disable roaming from driver
28 * remove obsolete code.
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 .
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.
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.
42 * 01 27 2011 tsaiyuan.hsu
43 * [WCXRP00000392] [MT6620 Wi-Fi][Driver] Add Roaming Support
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.
50 * 01 27 2011 tsaiyuan.hsu
51 * [WCXRP00000392] [MT6620 Wi-Fi][Driver] Add Roaming Support
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.
60 #ifndef _ROAMING_FSM_H
61 #define _ROAMING_FSM_H
63 /*******************************************************************************
64 * C O M P I L E R F L A G S
65 ********************************************************************************
68 /*******************************************************************************
69 * E X T E R N A L R E F E R E N C E S
70 ********************************************************************************
73 /*******************************************************************************
75 ********************************************************************************
77 /* Roaming Discovery interval, SCAN result need to be updated */
78 #define ROAMING_DISCOVERY_TIMEOUT_SEC 5 /* Seconds. */
80 /* #define ROAMING_NO_SWING_RCPI_STEP 5 //rcpi */
81 /*******************************************************************************
83 ********************************************************************************
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
;
91 /* events of roaming between driver and firmware */
92 typedef enum _ENUM_ROAMING_EVENT_T
{
93 ROAMING_EVENT_START
= 0,
94 ROAMING_EVENT_DISCOVERY
,
99 } ENUM_ROAMING_EVENT_T
;
101 typedef struct _CMD_ROAMING_TRANSIT_T
{
104 } CMD_ROAMING_TRANSIT_T
, *P_CMD_ROAMING_TRANSIT_T
;
106 typedef struct _CMD_ROAMING_CTRL_T
{
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
;
115 /**/ typedef enum _ENUM_ROAMING_STATE_T
{
116 ROAMING_STATE_IDLE
= 0,
117 ROAMING_STATE_DECISION
,
118 ROAMING_STATE_DISCOVERY
,
121 } ENUM_ROAMING_STATE_T
;
123 typedef struct _ROAMING_INFO_T
{
124 BOOLEAN fgIsEnableRoaming
;
126 ENUM_ROAMING_STATE_T eCurrentState
;
128 OS_SYSTIME rRoamingDiscoveryUpdateTime
;
130 } ROAMING_INFO_T
, *P_ROAMING_INFO_T
;
132 /*******************************************************************************
133 * P U B L I C D A T A
134 ********************************************************************************
137 /*******************************************************************************
138 * P R I V A T E D A T A
139 ********************************************************************************
142 /*******************************************************************************
144 ********************************************************************************
147 #if CFG_SUPPORT_ROAMING
148 #define IS_ROAMING_ACTIVE(prAdapter) \
149 (prAdapter->rWifiVar.rRoamingInfo.eCurrentState == ROAMING_STATE_ROAM)
151 #define IS_ROAMING_ACTIVE(prAdapter) FALSE
152 #endif /* CFG_SUPPORT_ROAMING */
154 /*******************************************************************************
155 * F U N C T I O N D E C L A R A T I O N S
156 ********************************************************************************
158 VOID
roamingFsmInit(IN P_ADAPTER_T prAdapter
);
160 VOID
roamingFsmUninit(IN P_ADAPTER_T prAdapter
);
162 VOID
roamingFsmSendCmd(IN P_ADAPTER_T prAdapter
, IN P_CMD_ROAMING_TRANSIT_T prTransit
);
164 VOID
roamingFsmScanResultsUpdate(IN P_ADAPTER_T prAdapter
);
166 VOID
roamingFsmSteps(IN P_ADAPTER_T prAdapter
, IN ENUM_ROAMING_STATE_T eNextState
);
168 VOID
roamingFsmRunEventStart(IN P_ADAPTER_T prAdapter
);
170 VOID
roamingFsmRunEventDiscovery(IN P_ADAPTER_T prAdapter
, IN UINT_32 u4Param
);
172 VOID
roamingFsmRunEventRoam(IN P_ADAPTER_T prAdapter
);
174 VOID
roamingFsmRunEventFail(IN P_ADAPTER_T prAdapter
, IN UINT_32 u4Reason
);
176 VOID
roamingFsmRunEventAbort(IN P_ADAPTER_T prAdapter
);
178 WLAN_STATUS
roamingFsmProcessEvent(IN P_ADAPTER_T prAdapter
, IN P_CMD_ROAMING_TRANSIT_T prTransit
);
180 /*******************************************************************************
182 ********************************************************************************
185 #endif /* _ROAMING_FSM_H */