roaming_fsm.h 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  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. * 08 31 2011 tsaiyuan.hsu
  12. * [WCXRP00000931] [MT5931 Wi-Fi][DRV/FW] add swcr to disable roaming from driver
  13. * remove obsolete code.
  14. *
  15. * 08 15 2011 tsaiyuan.hsu
  16. * [WCXRP00000931] [MT5931 Wi-Fi][DRV/FW] add swcr to disable roaming from driver
  17. * add swcr in driver reg, 0x9fxx0000, to disable roaming .
  18. *
  19. * 03 16 2011 tsaiyuan.hsu
  20. * [WCXRP00000517] [MT6620 Wi-Fi][Driver][FW] Fine Tune Performance of Roaming
  21. * remove obsolete definition and unused variables.
  22. *
  23. * 02 26 2011 tsaiyuan.hsu
  24. * [WCXRP00000391] [MT6620 Wi-Fi][FW] Add Roaming Support
  25. * not send disassoc or deauth to leaving AP so as to improve performace of roaming.
  26. *
  27. * 01 27 2011 tsaiyuan.hsu
  28. * [WCXRP00000392] [MT6620 Wi-Fi][Driver] Add Roaming Support
  29. * add roaming fsm
  30. * 1. not support 11r, only use strength of signal to determine roaming.
  31. * 2. not enable CFG_SUPPORT_ROAMING until completion of full test.
  32. * 3. in 6620, adopt work-around to avoid sign extension problem of cck of hw
  33. * 4. assume that change of link quality in smooth way.
  34. *
  35. * 01 27 2011 tsaiyuan.hsu
  36. * [WCXRP00000392] [MT6620 Wi-Fi][Driver] Add Roaming Support
  37. * add roaming fsm
  38. * 1. not support 11r, only use strength of signal to determine roaming.
  39. * 2. not enable CFG_SUPPORT_ROAMING until completion of full test.
  40. * 3. in 6620, adopt work-around to avoid sign extension problem of cck of hw
  41. * 4. assume that change of link quality in smooth way.
  42. *
  43. */
  44. #ifndef _ROAMING_FSM_H
  45. #define _ROAMING_FSM_H
  46. /*******************************************************************************
  47. * C O M P I L E R F L A G S
  48. ********************************************************************************
  49. */
  50. /*******************************************************************************
  51. * E X T E R N A L R E F E R E N C E S
  52. ********************************************************************************
  53. */
  54. /*******************************************************************************
  55. * C O N S T A N T S
  56. ********************************************************************************
  57. */
  58. /* Roaming Discovery interval, SCAN result need to be updated */
  59. #define ROAMING_DISCOVERY_TIMEOUT_SEC 5 /* Seconds. */
  60. /* #define ROAMING_NO_SWING_RCPI_STEP 5 //rcpi */
  61. /*******************************************************************************
  62. * D A T A T Y P E S
  63. ********************************************************************************
  64. */
  65. typedef enum _ENUM_ROAMING_FAIL_REASON_T {
  66. ROAMING_FAIL_REASON_CONNLIMIT = 0,
  67. ROAMING_FAIL_REASON_NOCANDIDATE,
  68. ROAMING_FAIL_REASON_NUM
  69. } ENUM_ROAMING_FAIL_REASON_T;
  70. /* events of roaming between driver and firmware */
  71. typedef enum _ENUM_ROAMING_EVENT_T {
  72. ROAMING_EVENT_START = 0,
  73. ROAMING_EVENT_DISCOVERY,
  74. ROAMING_EVENT_ROAM,
  75. ROAMING_EVENT_FAIL,
  76. ROAMING_EVENT_ABORT,
  77. ROAMING_EVENT_NUM
  78. } ENUM_ROAMING_EVENT_T;
  79. #define ROAMING_EVENT_REASON_TX_ERR BIT(0)
  80. #define ROAMING_EVENT_REASON_RCPI BIT(1)
  81. typedef struct _ROAMING_PARAM_T {
  82. UINT_16 u2Event;
  83. UINT_16 u2Data;
  84. UINT_16 u2Reason;
  85. } ROAMING_PARAM_T, *P_ROAMING_PARAM_T;
  86. /**/ typedef enum _ENUM_ROAMING_STATE_T {
  87. ROAMING_STATE_IDLE = 0,
  88. ROAMING_STATE_DECISION,
  89. ROAMING_STATE_DISCOVERY,
  90. ROAMING_STATE_ROAM,
  91. ROAMING_STATE_NUM
  92. } ENUM_ROAMING_STATE_T;
  93. typedef struct _ROAMING_INFO_T {
  94. BOOLEAN fgIsEnableRoaming;
  95. ENUM_ROAMING_STATE_T eCurrentState;
  96. OS_SYSTIME rRoamingDiscoveryUpdateTime;
  97. #define ROAMING_ENTRY_TIMEOUT_SKIP_COUNT_MAX 2
  98. UINT_32 RoamingEntryTimeoutSkipCount;
  99. } ROAMING_INFO_T, *P_ROAMING_INFO_T;
  100. /*******************************************************************************
  101. * P U B L I C D A T A
  102. ********************************************************************************
  103. */
  104. /*******************************************************************************
  105. * P R I V A T E D A T A
  106. ********************************************************************************
  107. */
  108. /*******************************************************************************
  109. * M A C R O S
  110. ********************************************************************************
  111. */
  112. #if CFG_SUPPORT_ROAMING
  113. #define IS_ROAMING_ACTIVE(prAdapter) \
  114. (prAdapter->rWifiVar.rRoamingInfo.eCurrentState == ROAMING_STATE_ROAM)
  115. #else
  116. #define IS_ROAMING_ACTIVE(prAdapter) FALSE
  117. #endif /* CFG_SUPPORT_ROAMING */
  118. /*******************************************************************************
  119. * F U N C T I O N D E C L A R A T I O N S
  120. ********************************************************************************
  121. */
  122. VOID roamingFsmInit(IN P_ADAPTER_T prAdapter);
  123. VOID roamingFsmUninit(IN P_ADAPTER_T prAdapter);
  124. VOID roamingFsmSendCmd(IN P_ADAPTER_T prAdapter, IN P_ROAMING_PARAM_T prParam);
  125. VOID roamingFsmScanResultsUpdate(IN P_ADAPTER_T prAdapter);
  126. VOID roamingFsmSteps(IN P_ADAPTER_T prAdapter, IN ENUM_ROAMING_STATE_T eNextState);
  127. VOID roamingFsmRunEventStart(IN P_ADAPTER_T prAdapter);
  128. VOID roamingFsmRunEventDiscovery(IN P_ADAPTER_T prAdapter, IN P_ROAMING_PARAM_T prParam);
  129. VOID roamingFsmRunEventRoam(IN P_ADAPTER_T prAdapter);
  130. VOID roamingFsmRunEventFail(IN P_ADAPTER_T prAdapter, IN UINT_32 u4Reason);
  131. VOID roamingFsmRunEventAbort(IN P_ADAPTER_T prAdapter);
  132. WLAN_STATUS roamingFsmProcessEvent(IN P_ADAPTER_T prAdapter, IN P_ROAMING_PARAM_T prParam);
  133. /*******************************************************************************
  134. * F U N C T I O N S
  135. ********************************************************************************
  136. */
  137. #endif /* _ROAMING_FSM_H */