5 /*! \file "roaming_fsm.h"
6 \brief This file defines the FSM for Roaming MODULE.
8 This file defines the FSM for Roaming MODULE.
11 /*******************************************************************************
12 * Copyright (c) 2009 MediaTek Inc.
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
18 ********************************************************************************
21 /*******************************************************************************
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.
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.
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
50 ********************************************************************************
54 ** $Log: roaming_fsm.h $
56 * 08 31 2011 tsaiyuan.hsu
57 * [WCXRP00000931] [MT5931 Wi-Fi][DRV/FW] add swcr to disable roaming from driver
58 * remove obsolete code.
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 .
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.
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.
72 * 01 27 2011 tsaiyuan.hsu
73 * [WCXRP00000392] [MT6620 Wi-Fi][Driver] Add Roaming Support
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.
80 * 01 27 2011 tsaiyuan.hsu
81 * [WCXRP00000392] [MT6620 Wi-Fi][Driver] Add Roaming Support
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.
90 #ifndef _ROAMING_FSM_H
91 #define _ROAMING_FSM_H
93 /*******************************************************************************
94 * C O M P I L E R F L A G S
95 ********************************************************************************
98 /*******************************************************************************
99 * E X T E R N A L R E F E R E N C E S
100 ********************************************************************************
103 /*******************************************************************************
105 ********************************************************************************
107 /* Roaming Discovery interval, SCAN result need to be updated */
108 #define ROAMING_DISCOVERY_TIMEOUT_SEC 5 // Seconds.
110 //#define ROAMING_NO_SWING_RCPI_STEP 5 //rcpi
111 /*******************************************************************************
113 ********************************************************************************
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;
121 /* events of roaming between driver and firmware */
122 typedef enum _ENUM_ROAMING_EVENT_T {
123 ROAMING_EVENT_START = 0,
124 ROAMING_EVENT_DISCOVERY,
129 } ENUM_ROAMING_EVENT_T;
131 typedef struct _ROAMING_PARAM_T {
134 } ROAMING_PARAM_T, *P_ROAMING_PARAM_T;
137 typedef enum _ENUM_ROAMING_STATE_T {
138 ROAMING_STATE_IDLE = 0,
139 ROAMING_STATE_DECISION,
140 ROAMING_STATE_DISCOVERY,
143 } ENUM_ROAMING_STATE_T;
145 typedef struct _ROAMING_INFO_T {
146 BOOLEAN fgIsEnableRoaming;
148 ENUM_ROAMING_STATE_T eCurrentState;
150 OS_SYSTIME rRoamingDiscoveryUpdateTime;
152 } ROAMING_INFO_T, *P_ROAMING_INFO_T;
154 /*******************************************************************************
155 * P U B L I C D A T A
156 ********************************************************************************
159 /*******************************************************************************
160 * P R I V A T E D A T A
161 ********************************************************************************
164 /*******************************************************************************
166 ********************************************************************************
169 #if CFG_SUPPORT_ROAMING
170 #define IS_ROAMING_ACTIVE(prAdapter) \
171 (prAdapter->rWifiVar.rRoamingInfo.eCurrentState == ROAMING_STATE_ROAM)
173 #define IS_ROAMING_ACTIVE(prAdapter) FALSE
174 #endif /* CFG_SUPPORT_ROAMING */
176 /*******************************************************************************
177 * F U N C T I O N D E C L A R A T I O N S
178 ********************************************************************************
182 IN P_ADAPTER_T prAdapter
187 IN P_ADAPTER_T prAdapter
192 IN P_ADAPTER_T prAdapter,
193 IN P_ROAMING_PARAM_T prParam
197 roamingFsmScanResultsUpdate (
198 IN P_ADAPTER_T prAdapter
203 IN P_ADAPTER_T prAdapter,
204 IN ENUM_ROAMING_STATE_T eNextState
208 roamingFsmRunEventStart (
209 IN P_ADAPTER_T prAdapter
213 roamingFsmRunEventDiscovery (
214 IN P_ADAPTER_T prAdapter,
219 roamingFsmRunEventRoam (
220 IN P_ADAPTER_T prAdapter
224 roamingFsmRunEventFail (
225 IN P_ADAPTER_T prAdapter,
230 roamingFsmRunEventAbort (
231 IN P_ADAPTER_T prAdapter
235 roamingFsmProcessEvent (
236 IN P_ADAPTER_T prAdapter,
237 IN P_ROAMING_PARAM_T prParam
240 /*******************************************************************************
242 ********************************************************************************
245 #endif /* _ROAMING_FSM_H */