roaming_fsm.c 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548
  1. /*
  2. ** Id:
  3. */
  4. /*! \file "roaming_fsm.c"
  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.c
  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. ** 01 22 2013 cp.wu
  17. ** [BORA00002253] [MT6630 Wi-Fi][Driver][Firmware] Add NLO and timeout mechanism to SCN module
  18. ** modification for ucBssIndex migration
  19. **
  20. ** 09 17 2012 cm.chang
  21. ** [BORA00002149] [MT6630 Wi-Fi] Initial software development
  22. ** Duplicate source from MT6620 v2.3 driver branch
  23. ** (Davinci label: MT6620_WIFI_Driver_V2_3_120913_1942_As_MT6630_Base)
  24. *
  25. * 11 24 2011 wh.su
  26. * [WCXRP00001078] [MT6620 Wi-Fi][Driver] Adding the mediatek log improment support : XLOG
  27. * Adjust code for DBG and CONFIG_XLOG.
  28. *
  29. * 11 11 2011 wh.su
  30. * [WCXRP00001078] [MT6620 Wi-Fi][Driver] Adding the mediatek log improment support : XLOG
  31. * modify the xlog related code.
  32. *
  33. * 11 02 2011 wh.su
  34. * [WCXRP00001078] [MT6620 Wi-Fi][Driver] Adding the mediatek log improment support : XLOG
  35. * adding the code for XLOG.
  36. *
  37. * 08 31 2011 tsaiyuan.hsu
  38. * [WCXRP00000931] [MT5931 Wi-Fi][DRV/FW] add swcr to disable roaming from driver
  39. * remove obsolete code.
  40. *
  41. * 08 15 2011 tsaiyuan.hsu
  42. * [WCXRP00000931] [MT5931 Wi-Fi][DRV/FW] add swcr to disable roaming from driver
  43. * add swcr in driver reg, 0x9fxx0000, to disable roaming .
  44. *
  45. * 03 16 2011 tsaiyuan.hsu
  46. * [WCXRP00000517] [MT6620 Wi-Fi][Driver][FW] Fine Tune Performance of Roaming
  47. * remove obsolete definition and unused variables.
  48. *
  49. * 02 26 2011 tsaiyuan.hsu
  50. * [WCXRP00000391] [MT6620 Wi-Fi][FW] Add Roaming Support
  51. * not send disassoc or deauth to leaving AP so as to improve performace of roaming.
  52. *
  53. * 01 27 2011 tsaiyuan.hsu
  54. * [WCXRP00000392] [MT6620 Wi-Fi][Driver] Add Roaming Support
  55. * add roaming fsm
  56. * 1. not support 11r, only use strength of signal to determine roaming.
  57. * 2. not enable CFG_SUPPORT_ROAMING until completion of full test.
  58. * 3. in 6620, adopt work-around to avoid sign extension problem of cck of hw
  59. * 4. assume that change of link quality in smooth way.
  60. *
  61. * 01 27 2011 tsaiyuan.hsu
  62. * [WCXRP00000392] [MT6620 Wi-Fi][Driver] Add Roaming Support
  63. * add roaming fsm
  64. * 1. not support 11r, only use strength of signal to determine roaming.
  65. * 2. not enable CFG_SUPPORT_ROAMING until completion of full test.
  66. * 3. in 6620, adopt work-around to avoid sign extension problem of cck of hw
  67. * 4. assume that change of link quality in smooth way.
  68. *
  69. */
  70. /*******************************************************************************
  71. * C O M P I L E R F L A G S
  72. ********************************************************************************
  73. */
  74. /*******************************************************************************
  75. * E X T E R N A L R E F E R E N C E S
  76. ********************************************************************************
  77. */
  78. #include "precomp.h"
  79. #if CFG_SUPPORT_ROAMING
  80. /*******************************************************************************
  81. * C O N S T A N T S
  82. ********************************************************************************
  83. */
  84. /*******************************************************************************
  85. * D A T A T Y P E S
  86. ********************************************************************************
  87. */
  88. /*******************************************************************************
  89. * P U B L I C D A T A
  90. ********************************************************************************
  91. */
  92. /*******************************************************************************
  93. * P R I V A T E D A T A
  94. ********************************************************************************
  95. */
  96. #if DBG
  97. /*lint -save -e64 Type mismatch */
  98. static PUINT_8 apucDebugRoamingState[ROAMING_STATE_NUM] = {
  99. (PUINT_8) DISP_STRING("ROAMING_STATE_IDLE"),
  100. (PUINT_8) DISP_STRING("ROAMING_STATE_DECISION"),
  101. (PUINT_8) DISP_STRING("ROAMING_STATE_DISCOVERY"),
  102. (PUINT_8) DISP_STRING("ROAMING_STATE_ROAM")
  103. };
  104. /*lint -restore */
  105. #endif /* DBG */
  106. /*******************************************************************************
  107. * M A C R O S
  108. ********************************************************************************
  109. */
  110. /*******************************************************************************
  111. * F U N C T I O N D E C L A R A T I O N S
  112. ********************************************************************************
  113. */
  114. /*******************************************************************************
  115. * F U N C T I O N S
  116. ********************************************************************************
  117. */
  118. /*----------------------------------------------------------------------------*/
  119. /*!
  120. * @brief Initialize the value in ROAMING_FSM_INFO_T for ROAMING FSM operation
  121. *
  122. * @param [IN P_ADAPTER_T] prAdapter
  123. *
  124. * @return (none)
  125. */
  126. /*----------------------------------------------------------------------------*/
  127. VOID roamingFsmInit(IN P_ADAPTER_T prAdapter)
  128. {
  129. P_ROAMING_INFO_T prRoamingFsmInfo;
  130. P_CONNECTION_SETTINGS_T prConnSettings;
  131. DBGLOG(ROAMING, LOUD, "->roamingFsmInit(): Current Time = %ld\n", kalGetTimeTick());
  132. prRoamingFsmInfo = (P_ROAMING_INFO_T) &(prAdapter->rWifiVar.rRoamingInfo);
  133. prConnSettings = &(prAdapter->rWifiVar.rConnSettings);
  134. /* 4 <1> Initiate FSM */
  135. prRoamingFsmInfo->fgIsEnableRoaming = prConnSettings->fgIsEnableRoaming;
  136. prRoamingFsmInfo->eCurrentState = ROAMING_STATE_IDLE;
  137. prRoamingFsmInfo->rRoamingDiscoveryUpdateTime = 0;
  138. } /* end of roamingFsmInit() */
  139. /*----------------------------------------------------------------------------*/
  140. /*!
  141. * @brief Uninitialize the value in AIS_FSM_INFO_T for AIS FSM operation
  142. *
  143. * @param [IN P_ADAPTER_T] prAdapter
  144. *
  145. * @return (none)
  146. */
  147. /*----------------------------------------------------------------------------*/
  148. VOID roamingFsmUninit(IN P_ADAPTER_T prAdapter)
  149. {
  150. P_ROAMING_INFO_T prRoamingFsmInfo;
  151. DBGLOG(ROAMING, LOUD, "->roamingFsmUninit(): Current Time = %ld\n", kalGetTimeTick());
  152. prRoamingFsmInfo = (P_ROAMING_INFO_T) &(prAdapter->rWifiVar.rRoamingInfo);
  153. prRoamingFsmInfo->eCurrentState = ROAMING_STATE_IDLE;
  154. } /* end of roamingFsmUninit() */
  155. /*----------------------------------------------------------------------------*/
  156. /*!
  157. * @brief Send commands to firmware
  158. *
  159. * @param [IN P_ADAPTER_T] prAdapter
  160. * [IN P_ROAMING_PARAM_T] prParam
  161. *
  162. * @return (none)
  163. */
  164. /*----------------------------------------------------------------------------*/
  165. VOID roamingFsmSendCmd(IN P_ADAPTER_T prAdapter, IN P_CMD_ROAMING_TRANSIT_T prTransit)
  166. {
  167. P_ROAMING_INFO_T prRoamingFsmInfo;
  168. WLAN_STATUS rStatus;
  169. DBGLOG(ROAMING, LOUD, "->roamingFsmSendCmd(): Current Time = %ld\n", kalGetTimeTick());
  170. prRoamingFsmInfo = (P_ROAMING_INFO_T) &(prAdapter->rWifiVar.rRoamingInfo);
  171. rStatus = wlanSendSetQueryCmd(prAdapter, /* prAdapter */
  172. CMD_ID_ROAMING_TRANSIT, /* ucCID */
  173. TRUE, /* fgSetQuery */
  174. FALSE, /* fgNeedResp */
  175. FALSE, /* fgIsOid */
  176. NULL, /* pfCmdDoneHandler */
  177. NULL, /* pfCmdTimeoutHandler */
  178. sizeof(CMD_ROAMING_TRANSIT_T), /* u4SetQueryInfoLen */
  179. (PUINT_8) prTransit, /* pucInfoBuffer */
  180. NULL, /* pvSetQueryBuffer */
  181. 0 /* u4SetQueryBufferLen */
  182. );
  183. /* ASSERT(rStatus == WLAN_STATUS_PENDING); */
  184. } /* end of roamingFsmSendCmd() */
  185. /*----------------------------------------------------------------------------*/
  186. /*!
  187. * @brief Update the recent time when ScanDone occurred
  188. *
  189. * @param [IN P_ADAPTER_T] prAdapter
  190. *
  191. * @return none
  192. */
  193. /*----------------------------------------------------------------------------*/
  194. VOID roamingFsmScanResultsUpdate(IN P_ADAPTER_T prAdapter)
  195. {
  196. P_ROAMING_INFO_T prRoamingFsmInfo;
  197. prRoamingFsmInfo = (P_ROAMING_INFO_T) &(prAdapter->rWifiVar.rRoamingInfo);
  198. /* Check Roaming Conditions */
  199. do {
  200. if (!(prRoamingFsmInfo->fgIsEnableRoaming))
  201. return;
  202. } while (0);
  203. DBGLOG(ROAMING, LOUD, "->roamingFsmScanResultsUpdate(): Current Time = %ld\n", kalGetTimeTick());
  204. GET_CURRENT_SYSTIME(&prRoamingFsmInfo->rRoamingDiscoveryUpdateTime);
  205. } /* end of roamingFsmScanResultsUpdate() */
  206. /*----------------------------------------------------------------------------*/
  207. /*!
  208. * @brief The Core FSM engine of ROAMING for AIS Infra.
  209. *
  210. * @param [IN P_ADAPTER_T] prAdapter
  211. * [IN ENUM_ROAMING_STATE_T] eNextState Enum value of next AIS STATE
  212. *
  213. * @return (none)
  214. */
  215. /*----------------------------------------------------------------------------*/
  216. VOID roamingFsmSteps(IN P_ADAPTER_T prAdapter, IN ENUM_ROAMING_STATE_T eNextState)
  217. {
  218. P_ROAMING_INFO_T prRoamingFsmInfo;
  219. ENUM_ROAMING_STATE_T ePreviousState;
  220. BOOLEAN fgIsTransition = (BOOLEAN) FALSE;
  221. prRoamingFsmInfo = (P_ROAMING_INFO_T) &(prAdapter->rWifiVar.rRoamingInfo);
  222. do {
  223. /* Do entering Next State */
  224. #if DBG
  225. DBGLOG(ROAMING, STATE, "TRANSITION: [%s] -> [%s]\n",
  226. apucDebugRoamingState[prRoamingFsmInfo->eCurrentState],
  227. apucDebugRoamingState[eNextState]);
  228. #else
  229. DBGLOG(ROAMING, STATE, "[%d] TRANSITION: [%d] -> [%d]\n",
  230. DBG_ROAMING_IDX, prRoamingFsmInfo->eCurrentState, eNextState);
  231. #endif
  232. /* NOTE(Kevin): This is the only place to change the eCurrentState(except initial) */
  233. ePreviousState = prRoamingFsmInfo->eCurrentState;
  234. prRoamingFsmInfo->eCurrentState = eNextState;
  235. fgIsTransition = (BOOLEAN) FALSE;
  236. /* Do tasks of the State that we just entered */
  237. switch (prRoamingFsmInfo->eCurrentState) {
  238. /* NOTE(Kevin): we don't have to rearrange the sequence of following
  239. * switch case. Instead I would like to use a common lookup table of array
  240. * of function pointer to speed up state search.
  241. */
  242. case ROAMING_STATE_IDLE:
  243. case ROAMING_STATE_DECISION:
  244. break;
  245. case ROAMING_STATE_DISCOVERY:
  246. {
  247. OS_SYSTIME rCurrentTime;
  248. GET_CURRENT_SYSTIME(&rCurrentTime);
  249. if (CHECK_FOR_TIMEOUT
  250. (rCurrentTime, prRoamingFsmInfo->rRoamingDiscoveryUpdateTime,
  251. SEC_TO_SYSTIME(ROAMING_DISCOVERY_TIMEOUT_SEC))) {
  252. DBGLOG(ROAMING, LOUD, "roamingFsmSteps: DiscoveryUpdateTime Timeout");
  253. aisFsmRunEventRoamingDiscovery(prAdapter, TRUE);
  254. } else {
  255. DBGLOG(ROAMING, LOUD, "roamingFsmSteps: DiscoveryUpdateTime Updated");
  256. aisFsmRunEventRoamingDiscovery(prAdapter, FALSE);
  257. }
  258. }
  259. break;
  260. case ROAMING_STATE_ROAM:
  261. break;
  262. default:
  263. ASSERT(0); /* Make sure we have handle all STATEs */
  264. }
  265. } while (fgIsTransition);
  266. } /* end of roamingFsmSteps() */
  267. /*----------------------------------------------------------------------------*/
  268. /*!
  269. * @brief Transit to Decision state after join completion
  270. *
  271. * @param [IN P_ADAPTER_T] prAdapter
  272. *
  273. * @return none
  274. */
  275. /*----------------------------------------------------------------------------*/
  276. VOID roamingFsmRunEventStart(IN P_ADAPTER_T prAdapter)
  277. {
  278. P_ROAMING_INFO_T prRoamingFsmInfo;
  279. ENUM_ROAMING_STATE_T eNextState;
  280. P_BSS_INFO_T prAisBssInfo;
  281. CMD_ROAMING_TRANSIT_T rTransit;
  282. prRoamingFsmInfo = (P_ROAMING_INFO_T) &(prAdapter->rWifiVar.rRoamingInfo);
  283. /* Check Roaming Conditions */
  284. do {
  285. if (!(prRoamingFsmInfo->fgIsEnableRoaming))
  286. return;
  287. } while (0);
  288. prAisBssInfo = prAdapter->prAisBssInfo;
  289. if (prAisBssInfo->eCurrentOPMode != OP_MODE_INFRASTRUCTURE)
  290. return;
  291. DBGLOG(ROAMING, EVENT, "EVENT-ROAMING START: Current Time = %ld\n", kalGetTimeTick());
  292. /* IDLE, ROAM -> DECISION */
  293. /* Errors as DECISION, DISCOVERY -> DECISION */
  294. if (!(prRoamingFsmInfo->eCurrentState == ROAMING_STATE_IDLE
  295. || prRoamingFsmInfo->eCurrentState == ROAMING_STATE_ROAM))
  296. return;
  297. eNextState = ROAMING_STATE_DECISION;
  298. if (eNextState != prRoamingFsmInfo->eCurrentState) {
  299. rTransit.u2Event = ROAMING_EVENT_START;
  300. rTransit.u2Data = prAisBssInfo->ucBssIndex;
  301. roamingFsmSendCmd(prAdapter, (P_CMD_ROAMING_TRANSIT_T) & rTransit);
  302. /* Step to next state */
  303. roamingFsmSteps(prAdapter, eNextState);
  304. }
  305. } /* end of roamingFsmRunEventStart() */
  306. /*----------------------------------------------------------------------------*/
  307. /*!
  308. * @brief Transit to Discovery state when deciding to find a candidate
  309. *
  310. * @param [IN P_ADAPTER_T] prAdapter
  311. *
  312. * @return none
  313. */
  314. /*----------------------------------------------------------------------------*/
  315. VOID roamingFsmRunEventDiscovery(IN P_ADAPTER_T prAdapter, IN UINT_32 u4Param)
  316. {
  317. P_ROAMING_INFO_T prRoamingFsmInfo;
  318. ENUM_ROAMING_STATE_T eNextState;
  319. prRoamingFsmInfo = (P_ROAMING_INFO_T) &(prAdapter->rWifiVar.rRoamingInfo);
  320. /* Check Roaming Conditions */
  321. do {
  322. if (!(prRoamingFsmInfo->fgIsEnableRoaming))
  323. return;
  324. } while (0);
  325. DBGLOG(ROAMING, EVENT, "EVENT-ROAMING DISCOVERY: Current Time = %ld\n", kalGetTimeTick());
  326. /* DECISION -> DISCOVERY */
  327. /* Errors as IDLE, DISCOVERY, ROAM -> DISCOVERY */
  328. if (prRoamingFsmInfo->eCurrentState != ROAMING_STATE_DECISION)
  329. return;
  330. eNextState = ROAMING_STATE_DISCOVERY;
  331. /* DECISION -> DISCOVERY */
  332. if (eNextState != prRoamingFsmInfo->eCurrentState) {
  333. P_BSS_INFO_T prAisBssInfo;
  334. P_BSS_DESC_T prBssDesc;
  335. /* sync. rcpi with firmware */
  336. prAisBssInfo = prAdapter->prAisBssInfo;
  337. prBssDesc = scanSearchBssDescByBssid(prAdapter, prAisBssInfo->aucBSSID);
  338. if (prBssDesc)
  339. prBssDesc->ucRCPI = (UINT_8) (u4Param & 0xff);
  340. roamingFsmSteps(prAdapter, eNextState);
  341. }
  342. } /* end of roamingFsmRunEventDiscovery() */
  343. /*----------------------------------------------------------------------------*/
  344. /*!
  345. * @brief Transit to Roam state after Scan Done
  346. *
  347. * @param [IN P_ADAPTER_T] prAdapter
  348. *
  349. * @return none
  350. */
  351. /*----------------------------------------------------------------------------*/
  352. VOID roamingFsmRunEventRoam(IN P_ADAPTER_T prAdapter)
  353. {
  354. P_ROAMING_INFO_T prRoamingFsmInfo;
  355. ENUM_ROAMING_STATE_T eNextState;
  356. CMD_ROAMING_TRANSIT_T rTransit;
  357. prRoamingFsmInfo = (P_ROAMING_INFO_T) &(prAdapter->rWifiVar.rRoamingInfo);
  358. /* Check Roaming Conditions */
  359. do {
  360. if (!(prRoamingFsmInfo->fgIsEnableRoaming))
  361. return;
  362. } while (0);
  363. DBGLOG(ROAMING, EVENT, "EVENT-ROAMING ROAM: Current Time = %ld\n", kalGetTimeTick());
  364. /* IDLE, ROAM -> DECISION */
  365. /* Errors as IDLE, DECISION, ROAM -> ROAM */
  366. if (prRoamingFsmInfo->eCurrentState != ROAMING_STATE_DISCOVERY)
  367. return;
  368. eNextState = ROAMING_STATE_ROAM;
  369. /* DISCOVERY -> ROAM */
  370. if (eNextState != prRoamingFsmInfo->eCurrentState) {
  371. rTransit.u2Event = ROAMING_EVENT_ROAM;
  372. roamingFsmSendCmd(prAdapter, (P_CMD_ROAMING_TRANSIT_T) & rTransit);
  373. /* Step to next state */
  374. roamingFsmSteps(prAdapter, eNextState);
  375. }
  376. } /* end of roamingFsmRunEventRoam() */
  377. /*----------------------------------------------------------------------------*/
  378. /*!
  379. * @brief Transit to Decision state as being failed to find out any candidate
  380. *
  381. * @param [IN P_ADAPTER_T] prAdapter
  382. *
  383. * @return none
  384. */
  385. /*----------------------------------------------------------------------------*/
  386. VOID roamingFsmRunEventFail(IN P_ADAPTER_T prAdapter, IN UINT_32 u4Param)
  387. {
  388. P_ROAMING_INFO_T prRoamingFsmInfo;
  389. ENUM_ROAMING_STATE_T eNextState;
  390. CMD_ROAMING_TRANSIT_T rTransit;
  391. prRoamingFsmInfo = (P_ROAMING_INFO_T) &(prAdapter->rWifiVar.rRoamingInfo);
  392. /* Check Roaming Conditions */
  393. do {
  394. if (!(prRoamingFsmInfo->fgIsEnableRoaming))
  395. return;
  396. } while (0);
  397. DBGLOG(ROAMING, EVENT, "EVENT-ROAMING FAIL: reason %x Current Time = %ld\n", u4Param, kalGetTimeTick());
  398. /* IDLE, ROAM -> DECISION */
  399. /* Errors as IDLE, DECISION, DISCOVERY -> DECISION */
  400. if (prRoamingFsmInfo->eCurrentState != ROAMING_STATE_ROAM)
  401. return;
  402. eNextState = ROAMING_STATE_DECISION;
  403. /* ROAM -> DECISION */
  404. if (eNextState != prRoamingFsmInfo->eCurrentState) {
  405. rTransit.u2Event = ROAMING_EVENT_FAIL;
  406. rTransit.u2Data = (UINT_16) (u4Param & 0xffff);
  407. roamingFsmSendCmd(prAdapter, (P_CMD_ROAMING_TRANSIT_T) & rTransit);
  408. /* Step to next state */
  409. roamingFsmSteps(prAdapter, eNextState);
  410. }
  411. } /* end of roamingFsmRunEventFail() */
  412. /*----------------------------------------------------------------------------*/
  413. /*!
  414. * @brief Transit to Idle state as beging aborted by other moduels, AIS
  415. *
  416. * @param [IN P_ADAPTER_T] prAdapter
  417. *
  418. * @return none
  419. */
  420. /*----------------------------------------------------------------------------*/
  421. VOID roamingFsmRunEventAbort(IN P_ADAPTER_T prAdapter)
  422. {
  423. P_ROAMING_INFO_T prRoamingFsmInfo;
  424. ENUM_ROAMING_STATE_T eNextState;
  425. CMD_ROAMING_TRANSIT_T rTransit;
  426. prRoamingFsmInfo = (P_ROAMING_INFO_T) &(prAdapter->rWifiVar.rRoamingInfo);
  427. do {
  428. if (!(prRoamingFsmInfo->fgIsEnableRoaming))
  429. return;
  430. } while (0);
  431. DBGLOG(ROAMING, TRACE, "EVENT-ROAMING ABORT: Current Time = %ld\n", kalGetTimeTick());
  432. eNextState = ROAMING_STATE_IDLE;
  433. /* IDLE, DECISION, DISCOVERY, ROAM -> IDLE */
  434. if (eNextState != prRoamingFsmInfo->eCurrentState) {
  435. rTransit.u2Event = ROAMING_EVENT_ABORT;
  436. roamingFsmSendCmd(prAdapter, (P_CMD_ROAMING_TRANSIT_T) & rTransit);
  437. /* Step to next state */
  438. roamingFsmSteps(prAdapter, eNextState);
  439. }
  440. } /* end of roamingFsmRunEventAbort() */
  441. /*----------------------------------------------------------------------------*/
  442. /*!
  443. * @brief Process events from firmware
  444. *
  445. * @param [IN P_ADAPTER_T] prAdapter
  446. * [IN P_ROAMING_PARAM_T] prParam
  447. *
  448. * @return none
  449. */
  450. /*----------------------------------------------------------------------------*/
  451. WLAN_STATUS roamingFsmProcessEvent(IN P_ADAPTER_T prAdapter, IN P_CMD_ROAMING_TRANSIT_T prTransit)
  452. {
  453. DBGLOG(ROAMING, LOUD, "ROAMING Process Events: Current Time = %ld\n", kalGetTimeTick());
  454. if (ROAMING_EVENT_DISCOVERY == prTransit->u2Event)
  455. roamingFsmRunEventDiscovery(prAdapter, prTransit->u2Data);
  456. return WLAN_STATUS_SUCCESS;
  457. }
  458. #endif