roaming_fsm.h 6.1 KB

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