PageRenderTime 52ms CodeModel.GetById 13ms RepoModel.GetById 0ms app.codeStats 0ms

/drivers/net/wireless/tiwlan1251/common/src/core/sme/configMgr/configMgr.c

https://bitbucket.org/cyanogenmod/cm-kernel
C | 2340 lines | 1331 code | 311 blank | 698 comment | 215 complexity | d61f251e051f3f2c0f65b32abedf042f MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.0, AGPL-1.0
  1. /****************************************************************************
  2. **+-----------------------------------------------------------------------+**
  3. **| |**
  4. **| Copyright(c) 1998 - 2008 Texas Instruments. All rights reserved. |**
  5. **| All rights reserved. |**
  6. **| |**
  7. **| Redistribution and use in source and binary forms, with or without |**
  8. **| modification, are permitted provided that the following conditions |**
  9. **| are met: |**
  10. **| |**
  11. **| * Redistributions of source code must retain the above copyright |**
  12. **| notice, this list of conditions and the following disclaimer. |**
  13. **| * Redistributions in binary form must reproduce the above copyright |**
  14. **| notice, this list of conditions and the following disclaimer in |**
  15. **| the documentation and/or other materials provided with the |**
  16. **| distribution. |**
  17. **| * Neither the name Texas Instruments nor the names of its |**
  18. **| contributors may be used to endorse or promote products derived |**
  19. **| from this software without specific prior written permission. |**
  20. **| |**
  21. **| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |**
  22. **| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |**
  23. **| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |**
  24. **| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |**
  25. **| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |**
  26. **| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |**
  27. **| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |**
  28. **| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |**
  29. **| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |**
  30. **| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |**
  31. **| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |**
  32. **| |**
  33. **+-----------------------------------------------------------------------+**
  34. ****************************************************************************/
  35. /** \file configMgr.c
  36. * \brief Driver interface to OS abstraction layer
  37. *
  38. * \see srcApi.h
  39. */
  40. #include "osTIType.h"
  41. #include "osApi.h"
  42. #include "paramOut.h"
  43. #include "paramIn.h"
  44. #include "srcApi.h"
  45. #include "report.h"
  46. #include "whalCtrl_api.h"
  47. #include "connApi.h"
  48. #include "siteMgrApi.h"
  49. #include "smeSmApi.h"
  50. #include "utils.h"
  51. #include "fsm.h"
  52. #include "configMgr.h"
  53. #include "DataCtrl_Api.h"
  54. #include "rsnApi.h"
  55. #include "scrApi.h"
  56. #include "MacServices_api.h"
  57. #include "ScanCncnApi.h"
  58. #include "scanMngrApi.h"
  59. #include "regulatoryDomainApi.h"
  60. #include "measurementMgrApi.h"
  61. #ifdef EXC_MODULE_INCLUDED
  62. #include "excMngr.h"
  63. #endif
  64. #include "SoftGeminiApi.h"
  65. #include "roamingMngrApi.h"
  66. #include "qosMngr_API.h"
  67. #include "whalCtrl.h"
  68. #include "TrafficMonitor.h"
  69. #include "PowerMgr_API.h"
  70. #include "EvHandler.h"
  71. #include "apConn.h"
  72. #include "currBss.h"
  73. #include "SwitchChannelApi.h"
  74. #include "ScanCncnAppApi.h"
  75. #include "healthMonitor.h"
  76. #include "wspVer.h"
  77. #include "Ethernet.h"
  78. #include "Core_AdaptTx.h"
  79. #include "TNETW_Driver_api.h"
  80. #include "rx.h"
  81. #include "Ctrl.h"
  82. #include "recoveryMgr_API.h"
  83. /****************************************************/
  84. /* Local Functions */
  85. /****************************************************/
  86. static configMgr_t *createDriver(TI_HANDLE hOs,void *pWLAN_Images, initTable_t *pInitTable);
  87. static void configMgr_config (TI_HANDLE hConfigManager);
  88. static int createCore(configMgr_t *pConfigManager, TI_HANDLE hOs, initTable_t *pInitTable);
  89. static void configMgr_RetrieveFWInfo(configMgr_t *pConfigManager, initTable_t *pInitTable, whalCtrl_chip_t *pChip_Version);
  90. static TI_STATUS configCore(configMgr_t *pConfigManager, whalCtrl_chip_t *pChipVer);
  91. static void release_module(configMgr_t *pConfigManager);
  92. static void configParamsAccessTable(configMgr_t *pConfigManager);
  93. UINT32 configMgr_RegisterEvent(TI_HANDLE hConfigMgr, PUCHAR pData, ULONG Length)
  94. {
  95. configMgr_t *pConfigManager= (configMgr_t *)hConfigMgr;
  96. return EvHandlerRegisterEvent(pConfigManager->hEvHandler,pData,Length);
  97. }
  98. UINT32 configMgr_UnRegisterEvent(TI_HANDLE hConfigMgr, TI_HANDLE uEventID)
  99. {
  100. configMgr_t *pConfigManager= (configMgr_t *)hConfigMgr;
  101. return EvHandlerUnRegisterEvent(pConfigManager->hEvHandler,uEventID);
  102. }
  103. UINT32 configMgr_GetEventData(TI_HANDLE hConfigMgr, PUCHAR pData, ULONG* pLength)
  104. {
  105. configMgr_t *pConfigManager= (configMgr_t *)hConfigMgr;
  106. return EvHandlerGetEventData(pConfigManager->hEvHandler,pData,pLength);
  107. }
  108. /****************************************************/
  109. /* Interface Functions Implementation */
  110. /****************************************************/
  111. /************************************************************************
  112. * configMgr_create *
  113. ************************************************************************
  114. DESCRIPTION: Driver creation & configuration function, called by the OS abstraction layer, performs the following:
  115. - Create the driver
  116. - Configure the driver
  117. INPUT: hOs - Handle to OS
  118. pInitTable - Pointer to the init table as received from the OS abstraction layer
  119. OUTPUT: pMac- MAC address of the device as read from the chip
  120. RETURN: Handle to the driver
  121. ************************************************************************/
  122. TI_HANDLE configMgr_create (TI_HANDLE hOs,
  123. void *pWLAN_Images,
  124. initTable_t *pInitTable,
  125. macAddress_t *pMac)
  126. {
  127. configMgr_t *pConfigManager;
  128. /****************
  129. Create the Driver
  130. *****************/
  131. pConfigManager = createDriver(hOs, pWLAN_Images, pInitTable);
  132. if (pConfigManager == NULL)
  133. {
  134. WLAN_OS_REPORT(("\n.....Configuration manager creation failure \n"));
  135. return NULL;
  136. }
  137. WLAN_REPORT_INIT(pConfigManager->hReport, CONFIG_MGR_MODULE_LOG,
  138. ("CREATED DRIVER\n"));
  139. return (TI_HANDLE)pConfigManager;
  140. }
  141. /************************************************************************
  142. * configMgr_init *
  143. ************************************************************************
  144. DESCRIPTION: FW Code Download in partition
  145. INPUT: hOs - Handle to OS
  146. TI_HANDLE hConfigManager
  147. pInitTable - Pointer to the init table as received from the OS abstraction layer
  148. OUTPUT: pMac- MAC address of the device as read from the chip
  149. RETURN: Handle to the driver
  150. ************************************************************************/
  151. TI_HANDLE configMgr_init (TI_HANDLE hOs,
  152. TI_HANDLE hConfigManager,
  153. void *pWLAN_Images,
  154. initTable_t *pInitTable,
  155. macAddress_t *pMacAddr)
  156. {
  157. configMgr_t *pConfigManager = (configMgr_t *)hConfigManager;
  158. pConfigManager->pInitTable = pInitTable;
  159. pConfigManager->pMacAddr = pMacAddr;
  160. /*
  161. * Init the module and Download the FW code in partition
  162. * At this stage it is very important that the pConfigManager has been created and linked to the HAL Ctrl
  163. * so that if the first DMA ends before the user returns to wait for the end of DMA
  164. * then the pConfigManager will have a valid value
  165. */
  166. if (TnetwDrv_Init (pConfigManager->hTnetwDrv,
  167. pConfigManager->hReport,
  168. pConfigManager->hMemMgr,
  169. hConfigManager,
  170. pWLAN_Images,
  171. &pInitTable->TnetwDrv_InitParams,
  172. configMgr_config) == TNETWIF_ERROR)
  173. {
  174. WLAN_OS_REPORT(("\n.....TNETW_Driver_Initialize: TNETW_Driver_Init failure \n"));
  175. return NULL;
  176. }
  177. return pConfigManager->hTnetwDrv;
  178. }
  179. /************************************************************************
  180. DESCRIPTION: Driver creation & configuration function, called by the OS abstraction layer, performs the following:
  181. - Create the driver
  182. - Configure the driver
  183. INPUT: hOs - Handle to OS
  184. pInitTable - Pointer to the init table as received from the OS abstraction layer
  185. OUTPUT: pMac- MAC address of the device as read from the chip
  186. RETURN: Handle to the driver
  187. ************************************************************************/
  188. static void configMgr_config (TI_HANDLE hConfigManager)
  189. {
  190. configMgr_t *pConfigManager = (configMgr_t *)hConfigManager;
  191. whalCtrl_chip_t chipVer;
  192. UINT8 *pMac;
  193. /****************
  194. Config the Driver
  195. *****************/
  196. WLAN_OS_REPORT(("Initializing Config Manager...\n"));
  197. if (configCore (pConfigManager, &chipVer) == NOK)
  198. {
  199. WLAN_OS_REPORT(("\n.....Configuration manager configuration failure\n"));
  200. release_module (pConfigManager);
  201. return;
  202. }
  203. pMac = (UINT8 *)chipVer.macAddress.addr;
  204. os_memoryCopy (pConfigManager->hOs,
  205. pConfigManager->pMacAddr,
  206. (void *)pConfigManager->pInitTable->ctrlDataInitParams.ctrlDataDeviceMacAddress.addr,
  207. MAC_ADDR_LEN);
  208. pConfigManager->state = CFG_MGR_STATE_IDLE;
  209. /* Print the driver and firmware version and the mac address */
  210. WLAN_OS_REPORT(("\n"));
  211. WLAN_OS_REPORT(("--------------------------------------------------------------------\n"));
  212. WLAN_OS_REPORT(("Driver Version : %s\n", SW_VERSION_STR));
  213. WLAN_OS_REPORT(("Firmware Version: %s\n", chipVer.fwVer));
  214. WLAN_OS_REPORT(("Station ID : %02X-%02X-%02X-%02X-%02X-%02X\n",
  215. pMac[0], pMac[1], pMac[2], pMac[3], pMac[4], pMac[5]));
  216. WLAN_OS_REPORT(("--------------------------------------------------------------------\n"));
  217. WLAN_OS_REPORT(("\n"));
  218. }
  219. /************************************************************************
  220. * configMgr_start *
  221. ************************************************************************
  222. DESCRIPTION: Driver start function, called by the OS abstraction layer in
  223. order to start the driver after creation.
  224. It enables the ISR and sends a start event to the driver's main state machine
  225. If the the driver was in IDLE state, it sends a 'WakeUp' command to the chip.
  226. INPUT: hConfigMgr - Handle to the driver
  227. OUTPUT:
  228. RETURN: OK on success, NOK on failure
  229. ************************************************************************/
  230. TI_STATUS configMgr_start(TI_HANDLE hConfigMgr)
  231. {
  232. TI_STATUS status = PARAM_VALUE_NOT_VALID;
  233. configMgr_t *pConfigManager = (configMgr_t *)hConfigMgr;
  234. switch (pConfigManager->state)
  235. {
  236. case CFG_MGR_STATE_IDLE :
  237. pConfigManager->state = CFG_MGR_STATE_RUNNING;
  238. WLAN_REPORT_SM(pConfigManager->hReport, CONFIG_MGR_MODULE_LOG,
  239. ("<STATE_IDLE, EVENT_START> --> STATE_RUNNING\n\n"));
  240. status = smeSm_start(pConfigManager->hSmeSm);
  241. #ifdef SDIO_INTERRUPT_HANDLING_ON
  242. whalCtr_SlaveAckMaskNotification(pConfigManager->hHalCtrl);
  243. #endif
  244. break;
  245. case CFG_MGR_STATE_RUNNING :
  246. WLAN_REPORT_SM(pConfigManager->hReport, CONFIG_MGR_MODULE_LOG,
  247. ("Got start command while not in RUNNING, ignoring the command"));
  248. break;
  249. case CFG_MGR_STATE_STOPPED:
  250. pConfigManager->state = CFG_MGR_STATE_RUNNING;
  251. WLAN_REPORT_SM(pConfigManager->hReport, CONFIG_MGR_MODULE_LOG,
  252. ("<STATE_STOPPED, EVENT_START> --> STATE_RUNNING\n\n"));
  253. status = smeSm_start(pConfigManager->hSmeSm);
  254. break;
  255. }
  256. return status;
  257. }
  258. /************************************************************************
  259. * configMgr_stop *
  260. ************************************************************************
  261. DESCRIPTION: Driver stop function, called by the OS abstraction layer in
  262. order to stop the driver.
  263. It sends a stop event to the driver main state mmachine
  264. If the the driver was in RUNNING state, it sends a 'Sleep' command to the chip.
  265. INPUT: hConfigMgr - Handle to the driver
  266. OUTPUT:
  267. RETURN: OK on success, NOK on failure
  268. ************************************************************************/
  269. TI_STATUS configMgr_stop(TI_HANDLE hConfigMgr)
  270. {
  271. configMgr_t *pConfigManager = (configMgr_t *)hConfigMgr;
  272. TI_STATUS status = PARAM_VALUE_NOT_VALID;
  273. switch (pConfigManager->state)
  274. {
  275. case CFG_MGR_STATE_IDLE :
  276. WLAN_REPORT_SM(pConfigManager->hReport, CONFIG_MGR_MODULE_LOG,
  277. ("<STATE_IDLE, EVENT_STOP> --> STATE_IDLE\n\n"));
  278. status = STATION_IS_NOT_RUNNING;
  279. break;
  280. case CFG_MGR_STATE_RUNNING :
  281. pConfigManager->state = CFG_MGR_STATE_STOPPED;
  282. WLAN_REPORT_SM(pConfigManager->hReport, CONFIG_MGR_MODULE_LOG,
  283. ("<STATE_RUNNING, EVENT_STOP> --> STATE_STOPPED\n\n"));
  284. smeSm_stop(pConfigManager->hSmeSm);
  285. break;
  286. case CFG_MGR_STATE_STOPPED:
  287. WLAN_REPORT_SM(pConfigManager->hReport, CONFIG_MGR_MODULE_LOG,
  288. ("<STATE_STOPPED, EVENT_STOP> --> STATE_STOPPED\n\n"));
  289. status = STATION_IS_NOT_RUNNING;
  290. break;
  291. }
  292. return status;
  293. }
  294. /****************************************************************************************
  295. * configMgr_setParam *
  296. ****************************************************************************************
  297. DESCRIPTION: Called by the OS abstraction layer in order to set a parameter the driver.
  298. If the parameter can not be set from outside the driver it returns a fialure status
  299. The parameters is set to the module that uses as its father in the system
  300. (refer to the file paramOut.h for more explanations)
  301. If the father returns a RE_SCAN_NEEDED status, it restarts the main
  302. state machine of the driver.
  303. INPUT: hConfigMgr - Handle to the driver
  304. pParam - Pointer to the parameter
  305. OUTPUT:
  306. RETURN: OK on success, NOK on failure
  307. ************************************************************************/
  308. TI_STATUS configMgr_setParam(TI_HANDLE hConfigMgr, paramInfo_t *pParam)
  309. {
  310. configMgr_t *pConfigManager = (configMgr_t *)hConfigMgr;
  311. TI_STATUS status;
  312. UINT32 moduleNumber;
  313. if (pConfigManager->state != CFG_MGR_STATE_RUNNING)
  314. {
  315. WLAN_REPORT_SM(pConfigManager->hReport, CONFIG_MGR_MODULE_LOG, ("State machine error, EVENT_SET_PARAM while in IDLE state \n\n"));
  316. return STATION_IS_NOT_RUNNING;
  317. }
  318. WLAN_REPORT_SM(pConfigManager->hReport, CONFIG_MGR_MODULE_LOG,
  319. ("<STATE_RUNNING, EVENT_SET_PARAM> --> STATE_RUNNING\n\n"));
  320. if (!EXTERNAL_SET_ENABLE(pParam->paramType))
  321. return EXTERNAL_SET_PARAM_DENIED;
  322. moduleNumber = GET_PARAM_MODULE_NUMBER(pParam->paramType);
  323. if (moduleNumber > MAX_PARAM_MODULE_NUMBER)
  324. return PARAM_MODULE_NUMBER_INVALID;
  325. WLAN_REPORT_SM(pConfigManager->hReport, CONFIG_MGR_MODULE_LOG,
  326. ("ParamType=0x%x ModuleNumber=0x%x\n\n",pParam->paramType));
  327. status = pConfigManager->paramAccessTable[moduleNumber - 1].set(pConfigManager->paramAccessTable[moduleNumber - 1].handle, pParam);
  328. if(status == RE_SCAN_NEEDED)
  329. return smeSm_reselect(pConfigManager->hSmeSm);
  330. else
  331. return status;
  332. }
  333. /****************************************************************************************
  334. * configMgr_getParam *
  335. ****************************************************************************************
  336. DESCRIPTION: Called by the OS abstraction layer in order to get a parameter the driver.
  337. If the parameter can not be get from outside the driver it returns a fialure status
  338. The parameters is get from the module that uses as its father in the system
  339. (refer to the file paramOut.h for more explanations)
  340. INPUT: hConfigMgr - Handle to the driver
  341. pParam - Pointer to the parameter
  342. OUTPUT:
  343. RETURN: OK on success, NOK on failure
  344. ************************************************************************/
  345. TI_STATUS configMgr_getParam (TI_HANDLE hConfigMgr, paramInfo_t *pParam)
  346. {
  347. configMgr_t *pConfigManager = (configMgr_t *)hConfigMgr;
  348. UINT32 moduleNumber;
  349. /* This is a unique parameter, it checks the driver running status, therefore we handle it here. */
  350. if (pParam->paramType == DRIVER_STATUS_PARAM)
  351. {
  352. if (pConfigManager->state == CFG_MGR_STATE_RUNNING)
  353. pParam->content.driverStatus = DRIVER_STATUS_RUNNING;
  354. else
  355. pParam->content.driverStatus = DRIVER_STATUS_IDLE;
  356. return OK;
  357. }
  358. if (pConfigManager->state != CFG_MGR_STATE_RUNNING)
  359. {
  360. WLAN_REPORT_SM(pConfigManager->hReport, CONFIG_MGR_MODULE_LOG, ("State machine error, EVENT_GET_PARAM while in IDLE state \n\n"));
  361. return STATION_IS_NOT_RUNNING;
  362. }
  363. WLAN_REPORT_SM(pConfigManager->hReport, CONFIG_MGR_MODULE_LOG,
  364. ("<STATE_RUNNING, EVENT_GET_PARAM> --> STATE_RUNNING\n\n"));
  365. if (!EXTERNAL_GET_ENABLE(pParam->paramType))
  366. return EXTERNAL_GET_PARAM_DENIED;
  367. moduleNumber = GET_PARAM_MODULE_NUMBER(pParam->paramType);
  368. if (moduleNumber > MAX_PARAM_MODULE_NUMBER)
  369. return PARAM_MODULE_NUMBER_INVALID;
  370. return pConfigManager->paramAccessTable[moduleNumber - 1].get(pConfigManager->paramAccessTable[moduleNumber - 1].handle, pParam);
  371. }
  372. /****************************************************************************************
  373. * configMgr_checkTxQueueSize *
  374. ****************************************************************************************
  375. DESCRIPTION: Check Tx queue size
  376. INPUT: hConfigMgr - Handle to the driver
  377. OUTPUT:
  378. RETURN: OK on success, NOK on queue full
  379. ************************************************************************/
  380. TI_STATUS configMgr_checkTxQueueSize(TI_HANDLE hConfigMgr,UINT8 qIndex)
  381. {
  382. configMgr_t *pConfigManager = (configMgr_t *)hConfigMgr;
  383. return txData_checkQueueSize(pConfigManager->hTxData, qIndex);
  384. }
  385. /****************************************************************************************
  386. * configMgr_printTxQueues *
  387. ****************************************************************************************
  388. DESCRIPTION: Tx queues print
  389. INPUT: hConfigMgr - Handle to the driver
  390. ************************************************************************/
  391. #ifdef TI_DBG
  392. void configMgr_printTxQueuesAndMemPolls(TI_HANDLE hConfigMgr)
  393. {
  394. configMgr_t *pConfigManager = (configMgr_t *)hConfigMgr;
  395. txData_printTxQosCounters(pConfigManager->hTxData);
  396. txData_fullPrintDataMsduList(pConfigManager->hTxData);
  397. memMngrPrint(pConfigManager->hMemMgr);
  398. }
  399. #endif
  400. /****************************************************************************************
  401. * configMgr_sendMsdu *
  402. ****************************************************************************************
  403. DESCRIPTION: Called by the OS abstract in layer in order to send a MSDU to the wlan network.
  404. INPUT: hConfigMgr - Handle to the driver
  405. pMsdu - Pointer to the MSDU
  406. packet_DTag - NDIS packet user priority tag
  407. OUTPUT:
  408. RETURN: OK on success, NOK on failure
  409. ************************************************************************/
  410. TI_STATUS configMgr_sendMsdu (TI_HANDLE hConfigMgr,
  411. mem_MSDU_T *pMsdu,
  412. UINT8 packet_DTag)
  413. {
  414. configMgr_t *pConfigManager = (configMgr_t *)hConfigMgr;
  415. TI_STATUS status = OK;
  416. #ifdef TI_DBG
  417. /* Add time stamp */
  418. wlan_memMngrAddTimeStamp (pConfigManager->hMemMgr, pMsdu);
  419. if (pConfigManager->state != CFG_MGR_STATE_RUNNING)
  420. {
  421. WLAN_REPORT_SM(pConfigManager->hReport, CONFIG_MGR_MODULE_LOG, ("State machine error, EVENT_SEND_MSDU while in IDLE state \n\n"));
  422. return STATION_IS_NOT_RUNNING;
  423. }
  424. WLAN_REPORT_SM(pConfigManager->hReport, CONFIG_MGR_MODULE_LOG,
  425. ("<STATE_RUNNING, EVENT_SEND_MSDU> --> STATE_RUNNING\n\n"));
  426. #endif
  427. WLAN_REPORT_DEBUG_TX(pConfigManager->hReport,("configMgr_sendMsdu Sending packet Lenght\n",pMsdu->dataLen));
  428. status = txData_sendPktToWlan(pConfigManager->hTxData, pMsdu, packet_DTag);
  429. return status;
  430. }
  431. /****************************************************************************************
  432. * configMgr_PollApPackets *
  433. ****************************************************************************************
  434. DESCRIPTION: Called by the OS abstraction layer in order to send VAD frame.
  435. Calls the txData module corresponding function.
  436. INPUT: hConfigMgr - Handle to the driver
  437. OUTPUT:
  438. RETURN: OK on success, NOK on failure
  439. ************************************************************************/
  440. TI_STATUS configMgr_PollApPackets(TI_HANDLE hConfigMgr)
  441. {
  442. configMgr_t *pConfigManager = (configMgr_t *)hConfigMgr;
  443. if (pConfigManager->state != CFG_MGR_STATE_RUNNING)
  444. {
  445. WLAN_REPORT_SM(pConfigManager->hReport, CONFIG_MGR_MODULE_LOG, ("State machine error, EVENT_SEND_MSDU while in IDLE state \n\n"));
  446. return STATION_IS_NOT_RUNNING;
  447. }
  448. WLAN_REPORT_SM(pConfigManager->hReport, CONFIG_MGR_MODULE_LOG,
  449. ("<STATE_RUNNING, EVENT_SEND_VAD_FRAME> --> STATE_RUNNING\n\n"));
  450. return txData_sendVadFrame(pConfigManager->hTxData, POLL_AP_PACKETS_FORCE_PS_POLL);
  451. }
  452. /****************************************************************************************
  453. * configMgr_HandleBusTxn_Complete *
  454. ****************************************************************************************
  455. DESCRIPTION: Called by the OS abstraction layer in order notify the driver that the DMA has finished
  456. INPUT: hConfigMgr - Handle to the driver
  457. OUTPUT:
  458. RETURN: OK on success, NOK on failure
  459. ************************************************************************/
  460. TI_STATUS configMgr_HandleBusTxn_Complete(TI_HANDLE hConfigMgr)
  461. {
  462. configMgr_t *pConfigManager = (configMgr_t *)hConfigMgr;
  463. whalCtrl_HandleBusTxn_Complete(pConfigManager->hHalCtrl);
  464. return OK;
  465. }
  466. /****************************************************************************************
  467. * configMgr_handleInterrupts *
  468. ****************************************************************************************
  469. DESCRIPTION: Called by the OS abstraction layer in order notify the driver that a ISR arrived
  470. INPUT: hConfigMgr - Handle to the driver
  471. OUTPUT:
  472. RETURN: OK on success, NOK on failure
  473. ************************************************************************/
  474. TI_STATUS configMgr_handleInterrupts(TI_HANDLE hConfigMgr)
  475. {
  476. configMgr_t *pConfigManager = (configMgr_t *)hConfigMgr;
  477. return (TI_STATUS)whalCtrl_HandleInterrupts(pConfigManager->hHalCtrl);
  478. }
  479. /****************************************************************************************
  480. * configMgr_enableInterrupts *
  481. ****************************************************************************************
  482. DESCRIPTION: Called by the OS abstraction layer in order to enable interrupts
  483. INPUT: hConfigMgr - Handle to the driver
  484. OUTPUT:
  485. RETURN: OK on success, NOK on failure
  486. ************************************************************************/
  487. TI_STATUS configMgr_enableInterrupts(TI_HANDLE hConfigMgr)
  488. {
  489. configMgr_t *pConfigManager = (configMgr_t *)hConfigMgr;
  490. whalCtrl_EnableInterrupts(pConfigManager->hHalCtrl);
  491. return OK;
  492. }
  493. /****************************************************************************************
  494. * configMgr_disableInterrupts *
  495. ****************************************************************************************
  496. DESCRIPTION: Called by the OS abstraction layer in order to disable interrupts
  497. INPUT: hConfigMgr - Handle to the driver
  498. OUTPUT:
  499. RETURN: OK on success, NOK on failure
  500. ************************************************************************/
  501. TI_STATUS configMgr_disableInterrupts(TI_HANDLE hConfigMgr)
  502. {
  503. configMgr_t *pConfigManager = (configMgr_t *)hConfigMgr;
  504. whalCtrl_DisableInterrupts(pConfigManager->hHalCtrl);
  505. return OK;
  506. }
  507. /****************************************************************************************
  508. * configMgr_disableRadio *
  509. ****************************************************************************************
  510. DESCRIPTION: Called by the OS abstraction layer in order to disable Radio
  511. INPUT: hConfigMgr - Handle to the driver
  512. OUTPUT:
  513. RETURN: OK on success, NOK on failure
  514. ************************************************************************/
  515. TI_STATUS configMgr_disableRadio(TI_HANDLE hConfigMgr)
  516. {
  517. configMgr_t *pConfigManager = (configMgr_t *)hConfigMgr;
  518. WLAN_REPORT_SM(pConfigManager->hReport, CONFIG_MGR_MODULE_LOG,
  519. ("<STATE_RUNNING, EVENT_DISABLE_RADIO> --> STATE_RUNNING\n\n"));
  520. /* Disable radio command is no longer active, and should be directed to the SME module. */
  521. /* whalCtrl_DisableRadio(pConfigManager->hHalCtrl); */
  522. return OK;
  523. }
  524. /****************************************************************************************
  525. * configMgr_checkInterrupts *
  526. ****************************************************************************************
  527. DESCRIPTION: Called by the OS abstraction layer in order to let the driver check if
  528. the receive interrupt is a driver's ISR.
  529. INPUT: hConfigMgr - Handle to the driver
  530. OUTPUT:
  531. RETURN: OK on success, NOK on failure
  532. ************************************************************************/
  533. UINT32 configMgr_checkInterrupts(TI_HANDLE hConfigMgr)
  534. {
  535. configMgr_t *pConfigManager = (configMgr_t *)hConfigMgr;
  536. return whalCtrl_CheckInterrupts(pConfigManager->hHalCtrl);
  537. }
  538. /****************************************************************************************
  539. * configMgr_ReadMacRegister *
  540. ****************************************************************************************
  541. DESCRIPTION: API function for registers read/write
  542. INPUT: hConfigMgr - Handle to the driver
  543. OUTPUT:
  544. RETURN:
  545. ************************************************************************/
  546. UINT32 configMgr_ReadMacRegister(TI_HANDLE hConfigMgr, UINT32 addr)
  547. {
  548. configMgr_t *pConfigManager = (configMgr_t *)hConfigMgr;
  549. return whalCtrlReadMacReg(pConfigManager->hHalCtrl, addr);
  550. }
  551. void configMgr_WriteMacRegister(TI_HANDLE hConfigMgr, UINT32 addr, UINT32 val)
  552. {
  553. configMgr_t *pConfigManager = (configMgr_t *)hConfigMgr;
  554. whalCtrlWriteMacReg(pConfigManager->hHalCtrl, addr, val);
  555. }
  556. UINT32 configMgr_ReadPhyRegister(TI_HANDLE hConfigMgr, UINT32 addr)
  557. {
  558. configMgr_t *pConfigManager = (configMgr_t *)hConfigMgr;
  559. return whalCtrlReadPhyReg(pConfigManager->hHalCtrl, addr);
  560. }
  561. void configMgr_WritePhyRegister(TI_HANDLE hConfigMgr, UINT32 addr, UINT32 val)
  562. {
  563. configMgr_t *pConfigManager = (configMgr_t *)hConfigMgr;
  564. whalCtrlWritePhyReg(pConfigManager->hHalCtrl, addr, val);
  565. }
  566. /****************************************************************************************
  567. * configMgr_isCardExist *
  568. ****************************************************************************************
  569. DESCRIPTION: Called by the OS abstraction layer in order to check if the card is inserted.
  570. INPUT: hConfigMgr - Handle to the driver
  571. OUTPUT:
  572. RETURN: OK on success, NOK on failure
  573. ************************************************************************/
  574. BOOL configMgr_isCardExist(TI_HANDLE hConfigMgr)
  575. {
  576. configMgr_t *pConfigManager = (configMgr_t *)hConfigMgr;
  577. if (whalCtrl_isCardIn(pConfigManager->hHalCtrl) == TRUE)
  578. return TRUE;
  579. else
  580. {
  581. wlan_memMngrFreeAllOsAlocatesBuffer(pConfigManager->hMemMgr);
  582. return FALSE;
  583. }
  584. }
  585. /****************************************************************************************
  586. * configMgr_areInputsFromOsDisabled *
  587. ****************************************************************************************
  588. DESCRIPTION: Called by the OS abstractin layer in order to
  589. check if Inputs From OS are Disabled.
  590. INPUT: hConfigMgr - Handle to the driver
  591. OUTPUT:
  592. RETURN: TRUE - recovery is in process,
  593. FALSE - recovery is not in process
  594. ************************************************************************/
  595. BOOL configMgr_areInputsFromOsDisabled(TI_HANDLE hConfigMgr)
  596. {
  597. configMgr_t *pConfigManager = (configMgr_t *)hConfigMgr;
  598. return (recoveryMgr_areInputsFromOsDisabled(pConfigManager->hRecoveryMgr));
  599. }
  600. /****************************************************************************************
  601. * configMgr_allocBDs *
  602. ****************************************************************************************
  603. DESCRIPTION: Called by the OS abstraction in order to allocate BDs from the memory manager pool.
  604. Calls the memory manager corresponding function.
  605. INPUT: hConfigMgr - Handle to the driver
  606. bdNumber - Number of BDs to allocate
  607. OUTPUT: bdPtr - Pointer to return the link list of allocated BDs.
  608. RETURN: OK on success, NOK on failure
  609. ************************************************************************/
  610. TI_STATUS configMgr_allocBDs(TI_HANDLE hConfigMgr,
  611. UINT32 bdNumber,
  612. mem_BD_T** bdPtr)
  613. {
  614. configMgr_t *pConfigManager = (configMgr_t *)hConfigMgr;
  615. TI_STATUS Status;
  616. #ifdef TI_DBG
  617. if (pConfigManager->state != CFG_MGR_STATE_RUNNING)
  618. {
  619. WLAN_REPORT_ERROR(pConfigManager->hReport, CONFIG_MGR_MODULE_LOG, ("State machine error, EVENT_ALLOC_BDS while in IDLE state \n\n"));
  620. return STATION_IS_NOT_RUNNING;
  621. }
  622. WLAN_REPORT_SM(pConfigManager->hReport, CONFIG_MGR_MODULE_LOG,
  623. ("<STATE_RUNNING, EVENT_ALLOC_BDS> --> STATE_RUNNING\n\n"));
  624. #endif
  625. Status = wlan_memMngrAllocBDs(pConfigManager->hMemMgr, bdNumber, bdPtr);
  626. return Status;
  627. }
  628. /****************************************************************************************
  629. * configMgr_allocMSDU *
  630. ****************************************************************************************
  631. DESCRIPTION: Called by the OS abstraction layer in order to allocate a MSDU and its associated
  632. BDs and data buffers.
  633. Calls the memory manager corresponding function.
  634. INPUT: hConfigMgr - Handle to the driver
  635. len - the length of the required data buffer
  636. module - The module that requests the allocation.
  637. OUTPUT: MSDUPtr - Pointer to return he allocated MSDU.
  638. RETURN: OK on success, NOK on failure
  639. ************************************************************************/
  640. TI_STATUS configMgr_allocMSDU(TI_HANDLE hConfigMgr,
  641. mem_MSDU_T** MSDUPtr,
  642. UINT32 len,
  643. allocatingModule_e module)
  644. {
  645. configMgr_t *pConfigManager = (configMgr_t *)hConfigMgr;
  646. #ifdef TI_DBG
  647. if (pConfigManager->state != CFG_MGR_STATE_RUNNING)
  648. {
  649. WLAN_REPORT_SM(pConfigManager->hReport, CONFIG_MGR_MODULE_LOG, ("State machine error, EVENT_ALLOC_MSDU while in IDLE state \n\n"));
  650. return STATION_IS_NOT_RUNNING;
  651. }
  652. WLAN_REPORT_SM(pConfigManager->hReport, CONFIG_MGR_MODULE_LOG,
  653. ("<STATE_RUNNING, EVENT_ALLOC_MSDU> --> STATE_RUNNING\n\n"));
  654. #endif
  655. return wlan_memMngrAllocMSDU(pConfigManager->hMemMgr, MSDUPtr, len, OS_ABS_TX_MODULE);
  656. }
  657. /****************************************************************************************
  658. * configMgr_allocMSDUBufferOnly *
  659. ****************************************************************************************
  660. DESCRIPTION: Called by the OS abstraction layer in order to allocate a MSDU only.
  661. Calls the memory manager corresponding function.
  662. INPUT: hConfigMgr - Handle to the driver
  663. module - The module that requests the allocation.
  664. OUTPUT: MSDUPtr - Pointer to return he allocated MSDU.
  665. RETURN: OK on success, NOK on failure
  666. ************************************************************************/
  667. TI_STATUS configMgr_allocMSDUBufferOnly(TI_HANDLE hConfigMgr,
  668. mem_MSDU_T** MSDUPtr,
  669. allocatingModule_e module)
  670. {
  671. configMgr_t *pConfigManager = (configMgr_t *)hConfigMgr;
  672. #ifdef TI_DBG
  673. if (pConfigManager->state != CFG_MGR_STATE_RUNNING)
  674. {
  675. WLAN_REPORT_SM(pConfigManager->hReport, CONFIG_MGR_MODULE_LOG, ("State machine error, EVENT_ALLOC_MSDU_BUFFER_ONLY while in IDLE state \n\n"));
  676. return STATION_IS_NOT_RUNNING;
  677. }
  678. WLAN_REPORT_SM(pConfigManager->hReport, CONFIG_MGR_MODULE_LOG,
  679. ("<STATE_RUNNING, EVENT_ALLOC_MSDU_BUFFER_ONLY> --> STATE_RUNNING\n\n"));
  680. #endif
  681. return wlan_memMngrAllocMSDUBufferOnly(pConfigManager->hMemMgr, MSDUPtr, OS_ABS_TX_MODULE);
  682. }
  683. /****************************************************************************************
  684. * configMgr_memMngrFreeMSDU *
  685. ****************************************************************************************
  686. DESCRIPTION: Called by the OS abstraction layer in order to free a MSDU.
  687. Calls the memory manager corresponding function.
  688. INPUT: hConfigMgr - Handle to the driver
  689. handle - handle of the MSDU.
  690. OUTPUT:
  691. RETURN: OK on success, NOK on failure
  692. ************************************************************************/
  693. TI_STATUS configMgr_memMngrFreeMSDU(TI_HANDLE hConfigMgr, UINT32 handle)
  694. {
  695. configMgr_t *pConfigManager = (configMgr_t *)hConfigMgr;
  696. #ifdef TI_DBG
  697. WLAN_REPORT_SM(pConfigManager->hReport, CONFIG_MGR_MODULE_LOG,
  698. ("<STATE_RUNNING, EVENT_FREE_MSDU> --> STATE_RUNNING\n\n"));
  699. #endif
  700. wlan_memMngrFreeMSDU(pConfigManager->hMemMgr, handle);
  701. return OK;
  702. }
  703. /****************************************************************************************
  704. * configMgr_unLoad *
  705. ****************************************************************************************
  706. DESCRIPTION: Driver unload function
  707. INPUT: hConfigMgr - Handle to the driver
  708. OUTPUT:
  709. RETURN: OK on success, NOK on failure
  710. ************************************************************************/
  711. TI_STATUS configMgr_unLoad(TI_HANDLE hConfigMgr)
  712. {
  713. configMgr_t *pConfigManager = (configMgr_t *)hConfigMgr;
  714. if (!pConfigManager)
  715. return NOK;
  716. whalCtrl_Stop(pConfigManager->hHalCtrl);
  717. WLAN_OS_REPORT(("\nCONFIG_MGR, UNLOAD: ***** DESTROYING THE DRIVER *****\n\n\n"));
  718. release_module(pConfigManager);
  719. return OK;
  720. }
  721. /****************************************************************************************
  722. * configMgr_InitiateUnload *
  723. ****************************************************************************************
  724. DESCRIPTION: Driver unload function
  725. INPUT: hConfigMgr - Handle to the driver
  726. OUTPUT:
  727. RETURN: OK on success, NOK on failure
  728. ************************************************************************/
  729. TI_STATUS configMgr_InitiateUnload(TI_HANDLE hConfigMgr)
  730. {
  731. configMgr_t *pConfigManager = (configMgr_t *)hConfigMgr;
  732. if (!pConfigManager)
  733. return NOK;
  734. smeSm_stopAndShutdown(pConfigManager->hSmeSm);
  735. WLAN_OS_REPORT(("\nCONFIG_MGR, UNLOAD: ***** DESTROYING THE DRIVER *****\n\n\n"));
  736. return OK;
  737. }
  738. /****************************************************************************************
  739. * configMgr_UnloadModules *
  740. ****************************************************************************************
  741. DESCRIPTION: Driver unload function
  742. INPUT: hConfigMgr - Handle to the driver
  743. OUTPUT:
  744. RETURN: OK on success, NOK on failure
  745. ************************************************************************/
  746. TI_STATUS configMgr_UnloadModules(TI_HANDLE hConfigMgr)
  747. {
  748. configMgr_t *pConfigManager = (configMgr_t *)hConfigMgr;
  749. if (!pConfigManager)
  750. return NOK;
  751. release_module(pConfigManager);
  752. return OK;
  753. }
  754. /****************************************************************************************
  755. * configMgr_DriverShutdownStatus *
  756. ****************************************************************************************
  757. DESCRIPTION: return status of driver shutdown process
  758. INPUT: hConfigMgr - Handle to the driver
  759. OUTPUT:
  760. RETURN: OK on success, NOK on failure
  761. ************************************************************************/
  762. UINT8 configMgr_DriverShutdownStatus(TI_HANDLE hConfigMgr)
  763. {
  764. configMgr_t *pConfigManager = (configMgr_t *)hConfigMgr;
  765. return smeSm_getDriverShutdownStatus(pConfigManager->hSmeSm);
  766. }
  767. /****************************************************************************************
  768. * configMgr_SlaveAckMaskNotification *
  769. ****************************************************************************************
  770. DESCRIPTION:
  771. INPUT: hConfigMgr - Handle to the driver
  772. OUTPUT:
  773. RETURN: void
  774. ************************************************************************/
  775. void configMgr_SlaveAckMaskNotification(TI_HANDLE hConfigMgr)
  776. {
  777. configMgr_t *pConfigManager = (configMgr_t *)hConfigMgr;
  778. whalCtr_SlaveAckMaskNotification(pConfigManager->hHalCtrl);
  779. }
  780. /****************************************************************************************
  781. * configMgr_getPacketHeaderLength *
  782. ****************************************************************************************
  783. DESCRIPTION: Called by os to know reserved space for WLAN header.
  784. INPUT: hConfigMgr - Handle to the driver
  785. data - pointer to packet
  786. txFlags - whether this frame is data or management
  787. OUTPUT:
  788. RETURN: void
  789. ************************************************************************/
  790. UINT32 configMgr_getPacketHeaderLength(TI_HANDLE hConfigMgr,
  791. void *pData,
  792. UINT32 txFlags)
  793. {
  794. configMgr_t *pConfigManager = (configMgr_t *)hConfigMgr;
  795. /* returns TxDescriptor size + reserved place for the bus txn operation + actual header length */
  796. return TX_TOTAL_OFFSET_BEFORE_DATA +
  797. txData_GetWlanHeaderLength (pConfigManager->hTxData, pData, txFlags);
  798. }
  799. /****************************************************/
  800. /* Local Functions Implementations */
  801. /****************************************************/
  802. /****************************************************************************************
  803. * createDriver *
  804. ****************************************************************************************
  805. DESCRIPTION: Driver creation function. Performs the following:
  806. - Calls the create function of each module.
  807. - Each module returns a handle if successful and NULL otherwise.
  808. - If the creation of all the modules succeeded, the driver main handle is configured with the
  809. modules handles. Then the driver main handle is returned to the caller.
  810. - If one of the modules fails in creation, the function calls the release function of the driver
  811. and all the modules handles are free, including the driver main handle.
  812. - Some of the modules are called with an init table as a parameter.
  813. - The callbacks table is filled with the callbacks returned from the core, in the configuration phase,
  814. the HAL is configured with those callbacks.
  815. INPUT: hOs - Handle to the OS
  816. pInitTable - Pointer to the init table as read from registry
  817. pCoreCallbacks - Table of core callbacks functions to filled by the CORE
  818. OUTPUT: Main Handle to the driver.
  819. RETURN: Handle to the driver on success, NOK on failure
  820. ************************************************************************/
  821. static configMgr_t *createDriver(TI_HANDLE hOs, void *pWLAN_Images, initTable_t *pInitTable)
  822. {
  823. configMgr_t *pConfigManager;
  824. /************************
  825. Create the Config Manager
  826. *************************/
  827. pConfigManager = os_memoryAlloc(hOs, sizeof(configMgr_t));
  828. if (pConfigManager == NULL)
  829. {
  830. return NULL;
  831. }
  832. os_memoryZero (hOs, pConfigManager, sizeof(configMgr_t));
  833. pConfigManager->hOs = hOs;
  834. /**************************
  835. Create all the CORE modules
  836. ***************************/
  837. if (createCore (pConfigManager ,hOs, pInitTable) != OK)
  838. {
  839. WLAN_OS_REPORT(("\n createCore() Failed!!! \n"));
  840. release_module(pConfigManager);
  841. return NULL;
  842. }
  843. WLAN_INIT_REPORT(("\n createDriver(): pConfigManager->hOs %x pConfigManager->hMemMgr %x!!! :\n\n",pConfigManager->hOs,pConfigManager->hMemMgr));
  844. /**************************
  845. Configure the Report module
  846. ***************************/
  847. if (report_config(pConfigManager->hReport, hOs, &pInitTable->TnetwDrv_InitParams.reportParams) != OK)
  848. {
  849. WLAN_OS_REPORT(("\n Report configuration failure \n"));
  850. release_module(pConfigManager);
  851. return NULL;
  852. }
  853. /**********************
  854. Create the TNETW Driver
  855. ***********************/
  856. pConfigManager->hTnetwDrv = TnetwDrv_Create(hOs);
  857. if (pConfigManager->hTnetwDrv == NULL)
  858. {
  859. WLAN_OS_REPORT(("\n createDriver() !!! TnetwDrv_Create failed !!! \n"));
  860. release_module(pConfigManager);
  861. return NULL;
  862. }
  863. WLAN_INIT_REPORT(("\n createDriver(): pConfigManager %x pConfigManager->hTnetwDrv %x!!! :\n\n",pConfigManager,pConfigManager->hTnetwDrv));
  864. /***************************************************************
  865. TEMPORARY!! - get TNETW-Driver internal modules handles untill
  866. the new TNETW-Driver architecture is completed!!
  867. ****************************************************************/
  868. TnetwDrv_TEMP_GetHandles (pConfigManager->hTnetwDrv,
  869. &pConfigManager->hHalCtrl,
  870. &pConfigManager->hMacServices);
  871. WLAN_INIT_REPORT(("\nCONFIG_MGR, INIT: ***** CREATION SUCCESS *****\n\n\n"));
  872. return pConfigManager;
  873. }
  874. /****************************************************************************************
  875. * createCore *
  876. ****************************************************************************************
  877. DESCRIPTION: Called by the CreateDriver to
  878. - Create the CORE modules
  879. - Create the CORE Adapter module
  880. - Config the CORE Adapter module by giving it CORE callbacks
  881. INPUT: TI_HANDLE hOs - Handle to OS
  882. initTable_t *pInitTable - pointer to the Init table filled by the registry
  883. coreCallbacks_t *pCoreCallbacks - pointer to the CORE callbacks to be used by each module to fll it (Scan,CtrlData ..)
  884. OUTPUT: TI_STATUS - OK on success else NOK
  885. RETURN: void
  886. ************************************************************************/
  887. static int createCore(configMgr_t *pConfigManager, TI_HANDLE hOs, initTable_t *pInitTable)
  888. {
  889. /* Report module */
  890. pConfigManager->hReport = report_create(hOs);
  891. if (pConfigManager->hReport == NULL)
  892. {
  893. return NOK;
  894. }
  895. /* SCR module */
  896. pConfigManager->hSCR = scr_create(hOs);
  897. if (pConfigManager->hSCR == NULL)
  898. {
  899. return NOK;
  900. }
  901. /* Event Handler module */
  902. pConfigManager->hEvHandler = EvHandlerInit(hOs);
  903. if (pConfigManager->hEvHandler == NULL)
  904. {
  905. return NOK;
  906. }
  907. /* Connection module */
  908. pConfigManager->hConn = conn_create(hOs);
  909. if (pConfigManager->hConn == NULL)
  910. {
  911. return NOK;
  912. }
  913. /* Scan Concentrator module */
  914. pConfigManager->hScanCncn = scanConcentrator_create(hOs);
  915. if (pConfigManager->hScanCncn == NULL)
  916. {
  917. return NOK;
  918. }
  919. /* SME state machine module */
  920. pConfigManager->hSmeSm = smeSm_create(hOs);
  921. if (pConfigManager->hSmeSm == NULL)
  922. {
  923. return NOK;
  924. }
  925. /* Site manager module */
  926. pConfigManager->hSiteMgr = siteMgr_create(hOs);
  927. if (pConfigManager->hSiteMgr == NULL)
  928. {
  929. return NOK;
  930. }
  931. /* MLME SM module */
  932. pConfigManager->hMlmeSm = mlme_create(hOs);
  933. if (pConfigManager->hMlmeSm == NULL)
  934. {
  935. return NOK;
  936. }
  937. /* AUTH module */
  938. pConfigManager->hAuth = auth_create(hOs);
  939. if (pConfigManager->hAuth == NULL)
  940. {
  941. return NOK;
  942. }
  943. /* ASSOC module */
  944. pConfigManager->hAssoc = assoc_create(hOs);
  945. if (pConfigManager->hAssoc == NULL)
  946. {
  947. return NOK;
  948. }
  949. /* Rx data module */
  950. pConfigManager->hRxData = rxData_create(hOs);
  951. if (pConfigManager->hRxData == NULL)
  952. {
  953. return NOK;
  954. }
  955. /* Tx data module */
  956. pConfigManager->hTxData = txData_create (&pInitTable->txDataInitParams, hOs);
  957. if (pConfigManager->hTxData == NULL)
  958. {
  959. return NOK;
  960. }
  961. /* Ctrl data module */
  962. pConfigManager->hCtrlData = ctrlData_create(hOs);
  963. if (pConfigManager->hCtrlData == NULL)
  964. {
  965. return NOK;
  966. }
  967. /* Traffic Monitor */
  968. pConfigManager->hTrafficMon = TrafficMonitor_create(hOs);
  969. if (pConfigManager->hTrafficMon == NULL)
  970. {
  971. return NOK;
  972. }
  973. /* Memory Manager */
  974. pConfigManager->hMemMgr = wlan_memMngrInit(hOs);
  975. if (pConfigManager->hMemMgr == NULL)
  976. {
  977. return NOK;
  978. }
  979. /* RSN create code */
  980. pConfigManager->hRsn = rsn_create(hOs);
  981. if (pConfigManager->hRsn == NULL)
  982. {
  983. return NOK;
  984. }
  985. /* Regulatory Domain module */
  986. pConfigManager->hRegulatoryDomain = regulatoryDomain_create(hOs);
  987. if (pConfigManager->hRegulatoryDomain == NULL)
  988. {
  989. return NOK;
  990. }
  991. /* MeasurementMgr module */
  992. pConfigManager->hMeasurementMgr = measurementMgr_create(hOs);
  993. if (pConfigManager->hMeasurementMgr == NULL)
  994. {
  995. return NOK;
  996. }
  997. /* Soft Gemini module */
  998. pConfigManager->hSoftGemini = SoftGemini_create(hOs);
  999. if (pConfigManager->hSoftGemini == NULL)
  1000. {
  1001. return NOK;
  1002. }
  1003. #ifdef EXC_MODULE_INCLUDED
  1004. pConfigManager->hExcMngr = excMngr_create(hOs);
  1005. if (pConfigManager->hExcMngr == NULL)
  1006. {
  1007. return NOK;
  1008. }
  1009. #else
  1010. pConfigManager->hExcMngr = NULL;
  1011. #endif
  1012. pConfigManager->hRoamingMngr = roamingMngr_create(hOs);
  1013. if (pConfigManager->hRoamingMngr == NULL)
  1014. {
  1015. return NOK;
  1016. }
  1017. pConfigManager->hAPConnection = apConn_create(hOs);
  1018. if (pConfigManager->hAPConnection == NULL)
  1019. {
  1020. return NOK;
  1021. }
  1022. pConfigManager->hCurrBss = currBSS_create(hOs);
  1023. if (pConfigManager->hCurrBss == NULL)
  1024. {
  1025. return NOK;
  1026. }
  1027. pConfigManager->hQosMngr = qosMngr_create(hOs);
  1028. if (pConfigManager->hQosMngr == NULL)
  1029. {
  1030. return NOK;
  1031. }
  1032. pConfigManager->hPowerMgr = PowerMgr_create(hOs);
  1033. if (pConfigManager->hPowerMgr == NULL)
  1034. {
  1035. return NOK;
  1036. }
  1037. pConfigManager->hSwitchChannel = switchChannel_create(hOs);
  1038. if (pConfigManager->hSwitchChannel == NULL)
  1039. {
  1040. return NOK;
  1041. }
  1042. pConfigManager->hScanMngr = scanMngr_create(hOs);
  1043. if (NULL == pConfigManager->hScanMngr)
  1044. {
  1045. return NOK;
  1046. }
  1047. pConfigManager->hHealthMonitor = healthMonitor_create(hOs);
  1048. if (NULL == pConfigManager->hHealthMonitor)
  1049. {
  1050. return NOK;
  1051. }
  1052. /* CORE ADAPTER CREATION */
  1053. /* ADD CORE ADAPTER Tx CREATION */
  1054. CORE_AdaptTx_handle = CORE_AdaptTx_Create(hOs);
  1055. if (CORE_AdaptTx_handle == NULL)
  1056. {
  1057. return NOK;
  1058. }
  1059. pConfigManager->hRecoveryMgr = recoveryMgr_create(hOs);
  1060. #ifdef USE_RECOVERY
  1061. if (NULL == pConfigManager->hRecoveryMgr)
  1062. {
  1063. return NOK;
  1064. }
  1065. #endif
  1066. WLAN_INIT_REPORT(("\nCONFIG_MGR, INIT: ***** CORE CREATION SUCCESS *****\n\n\n"));
  1067. return OK;
  1068. }
  1069. /****************************************************************************************
  1070. * configCore *
  1071. ****************************************************************************************
  1072. DESCRIPTION: Core configuration function. Performs the following:
  1073. - Calls the config Params Access function.
  1074. - Calls the config function of each module.
  1075. - Each module is configured with the following parameters:
  1076. - List of handles to other modules that supply him services
  1077. - Init table (optional).
  1078. - Callbacks to be used (in the HAL cases)
  1079. - In addition, the following parameters are read from the chip by the HAL and forwarded to the CORE:
  1080. - Chip MAC Address
  1081. - Chip regulatory domain
  1082. - Chip preamble
  1083. - Chip FW version and EEPROM version
  1084. - Radio type
  1085. INPUT: pConfigManager - Driver main handle
  1086. pInitTable - Pointer to the init table as read from registry
  1087. OUTPUT:
  1088. RETURN: OK on success, NOK on failure
  1089. ************************************************************************/
  1090. static TI_STATUS configCore (configMgr_t *pConfigManager, whalCtrl_chip_t *pChipVer)
  1091. {
  1092. /************************/
  1093. /* CONFIGURATION */
  1094. /************************/
  1095. /*radioDisableParams_t radioDisableParams;*/
  1096. Core_AdaptTx_config_t Core_AdaptTx_config;
  1097. /* we first initialize the setParamTable & getParamTable based on the moduleParam_e */
  1098. configParamsAccessTable (pConfigManager);
  1099. /*
  1100. * Retrieve FW information from HAL
  1101. */
  1102. configMgr_RetrieveFWInfo (pConfigManager, pConfigManager->pInitTable, pChipVer);
  1103. /* CORE Adapter configuration is setting callback to each module */
  1104. /* CORE ADAPTER TX module */
  1105. Core_AdaptTx_config.hMemMgr = pConfigManager->hMemMgr;
  1106. Core_AdaptTx_config.hReport = pConfigManager->hReport;
  1107. Core_AdaptTx_config.hTnetwDrv = pConfigManager->hTnetwDrv;
  1108. Core_AdaptTx_config.hTxData = pConfigManager->hTxData;
  1109. Core_AdaptTx_config.hCtrlData = pConfigManager->hCtrlData;
  1110. /* sendPacketComplete event callback */
  1111. /*Core_AdaptTx_config.TxCmplt_CB = pCoreCallbacks->ctrlData_TxCompleteStatusCB;*/
  1112. /*Core_AdaptTx_config.TxCmplt_CB_handle = pConfigManager->hCtrlData;*/
  1113. /* sendPacketTransfer event callback */
  1114. /*Core_AdaptTx_config.PacketTranfer_CB = pCoreCallbacks->txData_SendPacketTranferCB;*/
  1115. /*Core_AdaptTx_config.PacketTranfer_CB_handle = pConfigManager->hTxData;*/
  1116. /* queueFreeEvent event callback */
  1117. /*Core_AdaptTx_config.QueueFreeEvent_CB = pCoreCallbacks->txData_QueueFreeEventCB;*/
  1118. /*Core_AdaptTx_config.QueueFreeEvent_CB_handle = pConfigManager->hTxData;*/
  1119. WLAN_OS_REPORT(("Initializing Core Adapter Tx...\n"));
  1120. if (CORE_AdaptTx_Config (CORE_AdaptTx_handle,
  1121. &Core_AdaptTx_config,
  1122. &pConfigManager->pInitTable->txDataInitParams) != OK)
  1123. {
  1124. WLAN_OS_REPORT(("\n.....CORE ADAPTER TX configuration failure \n"));
  1125. return NOK;
  1126. }
  1127. /* SCR module */
  1128. WLAN_OS_REPORT(("Initializing SCR...\n"));
  1129. scr_init (pConfigManager->hSCR, pConfigManager->hReport);
  1130. /* connection module */
  1131. WLAN_OS_REPORT(("Initializing Conn...\n"));
  1132. if (conn_config (pConfigManager->hConn,
  1133. pConfigManager->hSiteMgr,
  1134. pConfigManager->hSmeSm,
  1135. pConfigManager->hMlmeSm,
  1136. pConfigManager->hRsn,
  1137. pConfigManager->hRxData,
  1138. pConfigManager->hTxData,
  1139. pConfigManager->hReport,
  1140. pConfigManager->hOs,
  1141. pConfigManager->hPowerMgr,
  1142. pConfigManager->hCtrlData,
  1143. pConfigManager->hMeasurementMgr,
  1144. pConfigManager->hTrafficMon,
  1145. pConfigManager->hSCR,
  1146. pConfigManager->hExcMngr,
  1147. pConfigManager->hQosMngr,
  1148. pConfigManager->hHalCtrl,
  1149. pConfigManager->hScanCncn,
  1150. pConfigManager->hCurrBss,
  1151. pConfigManager->hSwitchChannel,
  1152. pConfigManager->hEvHandler,
  1153. pConfigManager->hHealthMonitor,
  1154. pConfigManager->hMacServices,
  1155. pConfigManager->hRegulatoryDomain,
  1156. pConfigManager->hSoftGemini,
  1157. &pConfigManager->pInitTable->connInitParams) != OK)
  1158. {
  1159. WLAN_OS_REPORT(("\n.....Conn configuration failure \n"));
  1160. return NOK;
  1161. }
  1162. /* Ctrl data module */
  1163. WLAN_OS_REPORT(("Initializing Ctrl Data...\n"));
  1164. if (ctrlData_config (pConfigManager->hCtrlData,
  1165. pConfigManager->hHalCtrl,
  1166. pConfigManager->hSiteMgr,
  1167. pConfigManager->hTxData,
  1168. pConfigManager->hRxData,
  1169. pConfigManager->hOs,
  1170. pConfigManager->hReport,
  1171. pConfigManager->hMemMgr,
  1172. pConfigManager->hEvHandler,
  1173. pConfigManager->hAPConnection,
  1174. pConfigManager->hTrafficMon,
  1175. conn_disConnFrameSentCBFunc,
  1176. pConfigManager->hConn,
  1177. &pConfigManager->pInitTable->ctrlDataInitParams) != OK)
  1178. {
  1179. WLAN_OS_REPORT(("\n.....CTRL DATA configuration failure \n"));
  1180. return NOK;
  1181. }
  1182. /* Site manager module */
  1183. WLAN_OS_REPORT(("Initializing Site Manager...\n"));
  1184. if (siteMgr_config (pConfigManager->hSiteMgr,
  1185. pConfigManager->hConn,
  1186. pConfigManager->hSmeSm,
  1187. pConfigManager->hCtrlData,
  1188. pConfigManager->hRxData,
  1189. pConfigManager->hTxData,
  1190. pConfigManager->hRsn,
  1191. pConfigManager->hAuth,
  1192. pConfigManager->hAssoc,
  1193. pConfigManager->hHalCtrl,
  1194. pConfigManager->hMlmeSm,
  1195. pConfigManager->hRegulatoryDomain,
  1196. pConfigManager->hMeasurementMgr,
  1197. pConfigManager->hAPConnection,
  1198. pConfigManager->hCurrBss,
  1199. pConfigManager->hReport,
  1200. pConfigManager->hOs,
  1201. pConfigManager->hExcMngr,
  1202. pConfigManager->hQosMngr,
  1203. pConfigManager->hPowerMgr,
  1204. pConfigManager->hSCR,
  1205. pConfigManager->hEvHandler,
  1206. pConfigManager->hMacServices,
  1207. &pConfigManager->pInitTable->siteMgrInitParams) != OK)
  1208. {
  1209. WLAN_OS_REPORT(("\n.....Site manager configuration failure \n"));
  1210. return NOK;
  1211. }
  1212. /* Note: must be configured after Site Manager object coonfiguration */
  1213. /* regulatory Domain module */
  1214. WLAN_OS_REPORT(("Initializing Regulatory Domain...\n"));
  1215. if (regulatoryDomain_config (pConfigManager->hRegulatoryDomain,
  1216. pConfigManager->hSiteMgr,
  1217. pConfigManager->hHalCtrl,
  1218. pConfigManager->hReport,
  1219. pConfigManager->hOs,
  1220. pConfigManager->hSwitchChannel,
  1221. &pConfigManager->pInitTable->regulatoryDomainInitParams) != OK)
  1222. {
  1223. WLAN_OS_REPORT(("\n.....Regulatory Domain configuration failure \n"));
  1224. return NOK;
  1225. }
  1226. /* scan concentrator module */
  1227. /* Note: must be configured after RegulatoryDomain object coonfiguration */
  1228. WLAN_OS_REPORT(("Initializing Scan Concentrator...\n"));
  1229. scanConcentrator_init (pConfigManager->hScanCncn,
  1230. pConfigManager->hHalCtrl,
  1231. pConfigManager->hReport,
  1232. pConfigManager->hRegulatoryDomain,
  1233. pConfigManager->hSiteMgr,
  1234. pConfigManager->hSCR,
  1235. pConfigManager->hMacServices,
  1236. pConfigManager->hAPConnection,
  1237. pConfigManager->hEvHandler,
  1238. pConfigManager->hMlmeSm,
  1239. pConfigManager->hCtrlData,
  1240. pConfigManager->hHealthMonitor,
  1241. &pConfigManager->pInitTable->scanConcentratorInitParams);
  1242. /* AUTH module */
  1243. WLAN_OS_REPORT(("Initializing Auth...\n"));
  1244. if (auth_config (pConfigManager->hAuth,
  1245. pConfigManager->hMlmeSm,
  1246. pConfigManager->hRsn,
  1247. pConfigManager->hReport,
  1248. pConfigManager->hOs,
  1249. &pConfigManager->pInitTable->authInitParams) != OK)
  1250. {
  1251. WLAN_OS_REPORT(("\n.....AUTH configuration failure \n"));
  1252. return NOK;
  1253. }
  1254. /* MLME SM module */
  1255. WLAN_OS_REPORT(("Initializing MLME...\n"));
  1256. if (mlme_config (pConfigManager->hMlmeSm,
  1257. pConfigManager->hAuth,
  1258. pConfigManager->hAssoc,
  1259. pConfigManager->hSiteMgr,
  1260. pConfigManager->hCtrlData,
  1261. pConfigManager->hConn,
  1262. pConfigManager->hTxData,
  1263. pConfigManager->hHalCtrl,
  1264. pConfigManager->hMemMgr,
  1265. pConfigManager->hMeasurementMgr,
  1266. pConfigManager->hSwitchChannel,
  1267. pConfigManager->hRegulatoryDomain,
  1268. pConfigManager->hReport,
  1269. pConfigManager->hOs,
  1270. pConfigManager->hCurrBss,
  1271. pConfigManager->hAPConnection,
  1272. pConfigManager->hScanCncn,
  1273. pConfigManager->hQosMngr,
  1274. (TI_HANDLE)pConfigManager) != OK)
  1275. {
  1276. WLAN_OS_REPORT(("\n.....MLME SM configuration failure \n"));
  1277. return NOK;
  1278. }
  1279. /* ASSOC module */
  1280. WLAN_OS_REPORT(("Initializing Assoc...\n"));
  1281. if (assoc_config (pConfigManager->hAssoc,
  1282. pConfigManager->hMlmeSm,
  1283. pConfigManager->hRegulatoryDomain,
  1284. pConfigManager->hSiteMgr,
  1285. pConfigManager->hCtrlData,
  1286. pConfigManager->hTxData,
  1287. pConfigManager->hHalCtrl,
  1288. pConfigManager->hRsn,
  1289. pConfigManager->hReport,
  1290. pConfigManager->hOs,
  1291. pConfigManager->hExcMngr,
  1292. pConfigManager->hQosMngr,
  1293. pConfigManager->hMeasurementMgr,
  1294. pConfigManager->hAPConnection,
  1295. &pConfigManager->pInitTable->assocInitParams) != OK)
  1296. {
  1297. WLAN_OS_REPORT(("\n.....ASSOC configuration failure \n"));
  1298. return NOK;
  1299. }
  1300. /* Rx data module */
  1301. WLAN_OS_REPORT(("Initializing Rx Data...\n"));
  1302. if (rxData_config (pConfigManager->hRxData,
  1303. pConfigManager->hCtrlData,
  1304. pConfigManager->hTxData,
  1305. pConfigManager->hTnetwDrv,
  1306. pConfigManager->hHalCtrl,
  1307. pConfigManager->hMlmeSm,
  1308. pConfigManager->hRsn,
  1309. pConfigManager->hSiteMgr,
  1310. pConfigManager->hExcMngr,
  1311. pConfigManager->hOs,
  1312. pConfigManager->hReport,
  1313. pConfigManager->hMemMgr,
  1314. pConfigManager->hEvHandler,
  1315. &pConfigManager->pInitTable->rxDataInitParams) != OK)
  1316. {
  1317. WLAN_OS_REPORT(("\n.....RX DATA configuration failure \n"));
  1318. return NOK;
  1319. }
  1320. /* Tx data module */
  1321. WLAN_OS_REPORT(("Initializing Tx Data...\n"));
  1322. if (txData_config (pConfigManager->hTxData,
  1323. pConfigManager->hCtrlData,
  1324. pConfigManager->hTnetwDrv,
  1325. pConfigManager->hHalCtrl,
  1326. pConfigManager->hOs,
  1327. pConfigManager->hReport,
  1328. pConfigManager->hMemMgr,
  1329. pConfigManager->hSiteMgr,
  1330. pConfigManager->hEvHandler,
  1331. pConfigManager->hQosMngr,
  1332. pConfigManager->hPowerMgr) != OK)
  1333. {
  1334. WLAN_OS_REPORT(("\n.....TX DATA configuration failure \n"));
  1335. return NOK;
  1336. }
  1337. /* Traffic data module */
  1338. WLAN_OS_REPORT(("Initializing Traffic Monitor...\n"));
  1339. if (TrafficMonitor_Init(pConfigManager->hTrafficMon,
  1340. pConfigManager->hRxData,
  1341. pConfigManager->hTxData) != OK)
  1342. {
  1343. WLAN_OS_REPORT(("\n..... TRAFFIC MONITOR configuration failure \n"));
  1344. return NOK;
  1345. }
  1346. /* Memory Manager module */
  1347. WLAN_OS_REPORT(("Initializing Memory Manager...\n"));
  1348. if (wlan_memMngrConfigure (pConfigManager->hMemMgr, pConfigManager->hOs, pConfigManager->hReport) != OK)
  1349. {
  1350. WLAN_OS_REPORT(("\n.....MEM MNGR configuration failure \n"));
  1351. return NOK;
  1352. }
  1353. /* sme state machine module */
  1354. WLAN_OS_REPORT(("Initializing SME...\n"));
  1355. if (smeSm_config (pConfigManager->hSmeSm,
  1356. pConfigManager->hConn,
  1357. pConfigManager->hScanCncn,
  1358. pConfigManager->hSiteMgr,
  1359. pConfigManager->hHalCtrl,
  1360. pConfigManager->hReport,
  1361. pConfigManager->hOs,
  1362. pConfigManager->hEvHandler,
  1363. pConfigManager->hSCR,
  1364. pConfigManager->hAPConnection,
  1365. pConfigManager->hCurrBss,
  1366. pConfigManager->hPowerMgr,
  1367. pConfigManager->hRegulatoryDomain,
  1368. &pConfigManager->pInitTable->smeInitParams) != OK)
  1369. {
  1370. WLAN_OS_REPORT(("\n.....Sme state machine configuration failure \n"));
  1371. return NOK;
  1372. }
  1373. /* Rsn module */
  1374. WLAN_OS_REPORT(("Initializing RSN...\n"));
  1375. if (rsn_config (pConfigManager->hRsn,
  1376. pConfigManager->hTxData,
  1377. pConfigManager->hRxData,
  1378. pConfigManager->hConn,
  1379. pConfigManager->hMlmeSm,
  1380. pConfigManager->hCtrlData,
  1381. pConfigManager->hHalCtrl,
  1382. pConfigManager->hMemMgr,
  1383. pConfigManager->hSiteMgr,
  1384. pConfigManager->hReport,
  1385. pConfigManager->hOs,
  1386. pConfigManager->hExcMngr,
  1387. pConfigManager->hPowerMgr,
  1388. pConfigManager->hEvHandler,
  1389. pConfigManager->hSmeSm,
  1390. pConfigManager->hAPConnection,
  1391. &pConfigManager->pInitTable->rsnInitParams) != OK)
  1392. {
  1393. WLAN_OS_REPORT(("\n.....RSN configuration failure \n"));
  1394. return NOK;
  1395. }
  1396. /* MeasurementMgr module */
  1397. /* Note: must be configured after RegulatoryDomain object coonfiguration */
  1398. WLAN_OS_REPORT(("Initializing Measurement Manager...\n"));
  1399. if (measurementMgr_config (pConfigManager->hMeasurementMgr,
  1400. pConfigManager->hMacServices,
  1401. pConfigManager->hRegulatoryDomain,
  1402. pConfigManager->hExcMngr,
  1403. pConfigManager->hSiteMgr,
  1404. pConfigManager->hHalCtrl,
  1405. pConfigManager->hMlmeSm,
  1406. pConfigManager->hTrafficMon,
  1407. pConfigManager->hReport,
  1408. pConfigManager->hOs,
  1409. pConfigManager->hSCR,
  1410. pConfigManager->hHealthMonitor,
  1411. pConfigManager->hAPConnection,
  1412. pConfigManager->hTxData,
  1413. &pConfigManager->pInitTable->measurementInitParams) != OK)
  1414. {
  1415. WLAN_OS_REPORT(("\n.....MeasurementMgr configuration failure \n"));
  1416. return NOK;
  1417. }
  1418. #ifdef EXC_MODULE_INCLUDED
  1419. WLAN_OS_REPORT(("Initializing EXC Manager...\n"));
  1420. if (excMngr_config (pConfigManager->hExcMngr,
  1421. pConfigManager->hReport,
  1422. pConfigManager->hOs,
  1423. pConfigManager->hRsn,
  1424. pConfigManager->hMemMgr,
  1425. pConfigManager->hCtrlData,
  1426. pConfigManager->hTxData,
  1427. pConfigManager->hSiteMgr,
  1428. pConfigManager->hAPConnection,
  1429. pConfigManager->hEvHandler,
  1430. (TI_HANDLE)pConfigManager,
  1431. pConfigManager->hMeasurementMgr,
  1432. pConfigManager->hQosMngr,
  1433. &pConfigManager->pInitTable->excMngrParams) != OK)
  1434. {
  1435. WLAN_OS_REPORT(("\n.....excMngr_config configuration failure \n"));
  1436. return NOK;
  1437. }
  1438. #endif
  1439. /* Scan manager */
  1440. WLAN_OS_REPORT(("Initializing Scan Manager...\n"));
  1441. scanMngr_init (pConfigManager->hScanMngr,
  1442. pConfigManager->hReport,
  1443. pConfigManager->hRegulatoryDomain,
  1444. pConfigManager->hScanCncn,
  1445. pConfigManager->hRoamingMngr,
  1446. pConfigManager->hSiteMgr,
  1447. pConfigManager->hHalCtrl);
  1448. WLAN_OS_REPORT(("Initializing CurrBSS...\n"));
  1449. if (currBSS_init (pConfigManager->hCurrBss,
  1450. pConfigManager->hMlmeSm,
  1451. pConfigManager->hPowerMgr,
  1452. pConfigManager->hAPConnection,
  1453. pConfigManager->hSmeSm,
  1454. pConfigManager->hHalCtrl,
  1455. pConfigManager->hReport,
  1456. pConfigManager->hMemMgr,
  1457. pConfigManager->hTxData,
  1458. pConfigManager->hSiteMgr,
  1459. pConfigManager->hScanMngr,
  1460. pConfigManager->hMacServices) != OK)
  1461. {
  1462. WLAN_OS_REPORT(("\n.....currBSS_init configuration failure \n"));
  1463. return NOK;
  1464. }
  1465. WLAN_OS_REPORT(("Initializing AP Conn...\n"));
  1466. if (apConn_config (pConfigManager->hAPConnection,
  1467. pConfigManager->hReport,
  1468. pConfigManager->hCurrBss,
  1469. pConfigManager->hRoamingMngr,
  1470. pConfigManager->hSmeSm,
  1471. pConfigManager->hSiteMgr,
  1472. pConfigManager->hExcMngr,
  1473. pConfigManager->hConn,
  1474. pConfigManager->hRsn,
  1475. pConfigManager->hQosMngr,
  1476. pConfigManager->hCtrlData,
  1477. pConfigManager->hEvHandler,
  1478. pConfigManager->hSCR,
  1479. pConfigManager->hAssoc,
  1480. pConfigManager->hRegulatoryDomain,
  1481. &pConfigManager->pInitTable->apConnParams) != OK)
  1482. {
  1483. WLAN_OS_REPORT(("\n.....apConn_config configuration failure \n"));
  1484. return NOK;
  1485. }
  1486. WLAN_OS_REPORT(("Initializing Roaming Manager...\n"));
  1487. if (roamingMngr_init (pConfigManager->hRoamingMngr,
  1488. pConfigManager->hReport,
  1489. pConfigManager->hScanMngr,
  1490. pConfigManager->hAPConnection) != OK)
  1491. {
  1492. WLAN_OS_REPORT(("\n.....roamingMngr_config configuration failure \n"));
  1493. return NOK;
  1494. }
  1495. /* NOTE: must be after siteMgr & whalCtrl configurations !!!! */
  1496. WLAN_OS_REPORT(("Initializing QoS Manager...\n"));
  1497. if (qosMngr_config (pConfigManager->hQosMngr,
  1498. pConfigManager->hHalCtrl,
  1499. pConfigManager->hSiteMgr,
  1500. pConfigManager->hReport,
  1501. pConfigManager->hOs,
  1502. pConfigManager->hTxData,
  1503. pConfigManager->hMeasurementMgr,
  1504. pConfigManager->hSmeSm,
  1505. pConfigManager->hMemMgr,
  1506. pConfigManager->hCtrlData,
  1507. pConfigManager->hEvHandler,
  1508. pConfigManager->hExcMngr,
  1509. &pConfigManager->pInitTable->qosMngrInitParams) != OK)
  1510. {
  1511. WLAN_OS_REPORT(("\n.....Qos Mngr configuration failure \n"));
  1512. return NOK;
  1513. }
  1514. WLAN_OS_REPORT(("Initializing Switch Channel...\n"));
  1515. if (switchChannel_config (pConfigManager->hSwitchChannel,
  1516. pConfigManager->hHalCtrl,
  1517. pConfigManager->hSiteMgr,
  1518. pConfigManager->hSCR,
  1519. pConfigManager->hRegulatoryDomain,
  1520. pConfigManager->hAPConnection,
  1521. pConfigManager->hReport,
  1522. pConfigManager->hOs,
  1523. pConfigManager->hHealthMonitor,
  1524. &pConfigManager->pInitTable->SwitchChannelInitParams) != OK)
  1525. {
  1526. WLAN_OS_REPORT(("\n.....SwitchChannel_config configuration failure \n"));
  1527. return NOK;
  1528. }
  1529. WLAN_OS_REPORT(("Initializing Health Monitor...\n"));
  1530. if (healthMonitor_config (pConfigManager->hHealthMonitor,
  1531. pConfigManager->hReport,
  1532. pConfigManager->hHalCtrl,
  1533. pConfigManager->hSiteMgr,
  1534. pConfigManager->hSCR,
  1535. pConfigManager->hSoftGemini,
  1536. pConfigManager->hTnetwDrv,
  1537. pConfigManager->hMemMgr,
  1538. (TI_HANDLE)pConfigManager,
  1539. pConfigManager->hTxData,
  1540. pConfigManager->hCurrBss,
  1541. pConfigManager->hRsn,
  1542. &pConfigManager->pInitTable->healthMonitorInitParams,
  1543. pConfigManager->hRecoveryMgr) != OK)
  1544. {
  1545. WLAN_OS_REPORT(("\n.....healthMonitor_config configuration failure \n"));
  1546. return NOK;
  1547. }
  1548. WLAN_OS_REPORT(("Initializing Power Manager...\n"));
  1549. if (PowerMgr_init (pConfigManager->hPowerMgr,
  1550. pConfigManager->hMacServices,
  1551. pConfigManager->hReport,
  1552. pConfigManager->hSiteMgr,
  1553. pConfigManager->hHalCtrl,
  1554. pConfigManager->hTrafficMon,
  1555. pConfigManager->hSoftGemini,
  1556. &pConfigManager->pInitTable->PowerMgrInitParams) != OK)
  1557. {
  1558. WLAN_OS_REPORT(("\n.....PowerMgr_init configuration failure \n"));
  1559. return NOK;
  1560. }
  1561. WLAN_OS_REPORT(("Initializing Recovery Mgr...\n"));
  1562. if (recoveryMgr_config(pConfigManager->hRecoveryMgr,
  1563. pConfigManager->hReport,
  1564. pConfigManager->hTxData,
  1565. pConfigManager->hTnetwDrv,
  1566. pConfigManager->hSCR,
  1567. pConfigManager->hCurrBss,
  1568. pConfigManager->hPowerMgr,
  1569. pConfigManager->hHealthMonitor,
  1570. pConfigManager->hSoftGemini) != OK)
  1571. {
  1572. WLAN_OS_REPORT(("\n.....RecoveryMgr configuration failure \n"));
  1573. return NOK;
  1574. }
  1575. /* This must be called before calling SoftGemini_config, as the SG may trigger events from FW
  1576. which are enabled in this fucntion */
  1577. whalCtrl_exitFromInitModePart1(pConfigManager->hHalCtrl);
  1578. /* Soft Gemini module , should be configured after all the modules it uses */
  1579. WLAN_OS_REPORT(("Initializing Soft Gemini...\n"));
  1580. if (SoftGemini_config (pConfigManager->hSoftGemini,
  1581. pConfigManager->hCtrlData,
  1582. pConfigManager->hHalCtrl,
  1583. pConfigManager->hReport,
  1584. pConfigManager->hSCR,
  1585. pConfigManager->hPowerMgr,
  1586. (TI_HANDLE)pConfigManager,
  1587. pConfigManager->hScanCncn,
  1588. pConfigManager->hCurrBss,
  1589. pConfigManager->hEvHandler,
  1590. &pConfigManager->pInitTable->SoftGeminiInitParams) != OK)
  1591. {
  1592. WLAN_OS_REPORT(("\n.....SoftGemini configuration failure \n"));
  1593. return NOK;
  1594. }
  1595. /* Notify the power authorization so the first min power level will be sent to the FW */
  1596. /* This will update the FW Power Level according to the defaultPowerLevel configured in Registry */
  1597. MacServices_powerAutho_ExitFromInit(pConfigManager->hMacServices);
  1598. /*
  1599. * Exit from init mode should be before smeSM starts. this enable us to send
  1600. * command to the MboxQueue(that store the command) while the interrupts are masked.
  1601. * the interrupt would be enable at the end of the init process.
  1602. */
  1603. whalCtrl_exitFromInitModePart2(pConfigManager->hHalCtrl);
  1604. WLAN_OS_REPORT(("Finished initializing modules.\n"));
  1605. WLAN_REPORT_INIT(pConfigManager->hReport, CONFIG_MGR_MODULE_LOG,
  1606. ("EXIT FROM INIT\n"));
  1607. return OK;
  1608. }
  1609. /*
  1610. * configMgr_RetrieveFWInfo:
  1611. * Retrieve FW information from HAL which the SNWSASettings returned
  1612. * by GWSI_Configure does not contained
  1613. */
  1614. static void configMgr_RetrieveFWInfo(configMgr_t *pConfigManager, initTable_t *pInitTable, whalCtrl_chip_t *pChip_Version)
  1615. {
  1616. /*
  1617. * Retrieve FW information from HAL
  1618. */
  1619. whalCtrl_GetFWInfo(pConfigManager->hHalCtrl, pChip_Version);
  1620. /*
  1621. * Update complete the init table update
  1622. * with the chip information received from the HAL
  1623. */
  1624. os_memoryCopy(pConfigManager->hOs, (void *)pInitTable->ctrlDataInitParams.ctrlDataDeviceMacAddress.addr, (void *)pChip_Version->macAddress.addr, MAC_ADDR_LEN);
  1625. os_memoryCopy(pConfigManager->hOs, pInitTable->siteMgrInitParams.siteMgrFwVersion, pChip_Version->fwVer, FW_VERSION_LEN);
  1626. os_memoryCopy(pConfigManager->hOs, &(pInitTable->siteMgrInitParams.siteMgrEEpromVersion), &(pChip_Version->e2Ver), sizeof(e2Version_t));
  1627. pInitTable->siteMgrInitParams.siteMgrRadioValues.siteMgr_radioType = pChip_Version->radioType;
  1628. }
  1629. /****************************************************************************************
  1630. * configMgr_GetInitParams *
  1631. ****************************************************************************************
  1632. DESCRIPTION: Retreive init table
  1633. INPUT: pConfigManager - driver main handle
  1634. OUTPUT: ioBuffer - init table
  1635. outBufLen - init table length
  1636. RETURN: none
  1637. ************************************************************************/
  1638. void configMgr_GetInitParams (TI_HANDLE hConfigManager, UINT8* ioBuffer, UINT16 *outBufLen)
  1639. {
  1640. configMgr_t *pConfigManager = (configMgr_t *)hConfigManager;
  1641. TnetwDrv_GetInitParams (pConfigManager->hTnetwDrv, ioBuffer, outBufLen);
  1642. }
  1643. /****************************************************************************************
  1644. * release_module *
  1645. ****************************************************************************************
  1646. DESCRIPTION: Driver free function. Performs the following:
  1647. - Go over the vector, for each bit that is set, release the corresponding module.
  1648. INPUT: pConfigManager - Driver main handle
  1649. initVec - Vector that contains the bits of the modules which have to be free
  1650. OUTPUT:
  1651. RETURN: OK on success, NOK on failure
  1652. ************************************************************************/
  1653. static void release_module(configMgr_t *pConfigManager)
  1654. {
  1655. if (pConfigManager->hScanMngr != NULL)
  1656. {
  1657. scanMngr_unload( pConfigManager->hScanMngr);
  1658. }
  1659. if (pConfigManager->hSiteMgr != NULL)
  1660. {
  1661. siteMgr_unLoad(pConfigManager->hSiteMgr);
  1662. }
  1663. if (pConfigManager->hSmeSm != NULL)
  1664. {
  1665. smeSm_unLoad(pConfigManager->hSmeSm);
  1666. }
  1667. if (pConfigManager->hConn != NULL)
  1668. {
  1669. conn_unLoad(pConfigManager->hConn);
  1670. }
  1671. if (pConfigManager->hTnetwDrv != NULL)
  1672. {
  1673. TnetwDrv_Destroy(pConfigManager->hTnetwDrv);
  1674. }
  1675. if (pConfigManager->hScanCncn != NULL)
  1676. {
  1677. scanConcentrator_release(pConfigManager->hScanCncn);
  1678. }
  1679. if (pConfigManager->hTrafficMon != NULL)
  1680. {
  1681. TrafficMonitor_Destroy(pConfigManager->hTrafficMon);
  1682. }
  1683. if (pConfigManager->hCtrlData != NULL)
  1684. {
  1685. ctrlData_unLoad(pConfigManager->hCtrlData);
  1686. }
  1687. if (pConfigManager->hTxData != NULL)
  1688. {
  1689. txData_unLoad(pConfigManager->hTxData);
  1690. }
  1691. if (pConfigManager->hRxData != NULL)
  1692. {
  1693. rxData_unLoad(pConfigManager->hRxData);
  1694. }
  1695. if (pConfigManager->hAssoc != NULL)
  1696. {
  1697. assoc_unload(pConfigManager->hAssoc);
  1698. }
  1699. if (pConfigManager->hAuth != NULL)
  1700. {
  1701. auth_unload(pConfigManager->hAuth);
  1702. }
  1703. if (pConfigManager->hMlmeSm != NULL)
  1704. {
  1705. mlme_unload(pConfigManager->hMlmeSm);
  1706. }
  1707. if (pConfigManager->hSCR != NULL)
  1708. {
  1709. scr_release(pConfigManager->hSCR);
  1710. }
  1711. if (pConfigManager->hEvHandler != NULL)
  1712. {
  1713. EvHandlerUnload(pConfigManager->hEvHandler);
  1714. }
  1715. if (pConfigManager->hMemMgr != NULL)
  1716. {
  1717. wlan_memMngrDestroy(pConfigManager->hMemMgr);
  1718. }
  1719. if (pConfigManager->hRsn != NULL)
  1720. {
  1721. rsn_unload(pConfigManager->hRsn);
  1722. }
  1723. if (pConfigManager->hRegulatoryDomain != NULL)
  1724. {
  1725. regulatoryDomain_destroy(pConfigManager->hRegulatoryDomain);
  1726. }
  1727. if (pConfigManager->hMeasurementMgr != NULL)
  1728. {
  1729. measurementMgr_destroy(pConfigManager->hMeasurementMgr);
  1730. }
  1731. if (pConfigManager->hSoftGemini != NULL)
  1732. {
  1733. SoftGemini_destroy(pConfigManager->hSoftGemini);
  1734. }
  1735. #ifdef EXC_MODULE_INCLUDED
  1736. if (pConfigManager->hExcMngr != NULL)
  1737. {
  1738. excMngr_unload(pConfigManager->hExcMngr);
  1739. }
  1740. #endif
  1741. if (pConfigManager->hRoamingMngr != NULL)
  1742. {
  1743. roamingMngr_unload(pConfigManager->hRoamingMngr);
  1744. }
  1745. if (pConfigManager->hQosMngr != NULL)
  1746. {
  1747. qosMngr_destroy(pConfigManager->hQosMngr);
  1748. }
  1749. if (pConfigManager->hPowerMgr != NULL)
  1750. {
  1751. PowerMgr_destroy(pConfigManager->hPowerMgr);
  1752. }
  1753. if (pConfigManager->hAPConnection != NULL)
  1754. {
  1755. apConn_unload(pConfigManager->hAPConnection);
  1756. }
  1757. if (pConfigManager->hCurrBss != NULL)
  1758. {
  1759. currBSS_unload(pConfigManager->hCurrBss);
  1760. }
  1761. if (pConfigManager->hSwitchChannel != NULL)
  1762. {
  1763. switchChannel_unload(pConfigManager->hSwitchChannel);
  1764. }
  1765. if (pConfigManager->hHealthMonitor != NULL)
  1766. {
  1767. healthMonitor_unload(pConfigManager->hHealthMonitor);
  1768. }
  1769. if (pConfigManager->hRecoveryMgr != NULL)
  1770. {
  1771. recoveryMgr_destroy(pConfigManager->hRecoveryMgr);
  1772. }
  1773. if (pConfigManager->hReport != NULL)
  1774. {
  1775. report_unLoad(pConfigManager->hReport);
  1776. }
  1777. /***************************************************************
  1778. This is the config manager, it should be always the last module
  1779. to release
  1780. ****************************************************************/
  1781. utils_nullMemoryFree(pConfigManager->hOs, pConfigManager, sizeof(configMgr_t));
  1782. }
  1783. /****************************************************************************************
  1784. * configParamsAccessTable *
  1785. ****************************************************************************************
  1786. DESCRIPTION: Called in the configuration phase by the driver, performs the following:
  1787. - For each module that supply a Get/Set services to his parameters, fill the corresponding entry
  1788. in the params access table with the following:
  1789. - Get function
  1790. - Set function
  1791. - Handle to the module
  1792. This table is used when Getting/Setting a parameter from the OS abstraction layer.
  1793. INPUT: pConfigManager - Driver main handle
  1794. OUTPUT:
  1795. RETURN: OK on success, NOK on failure
  1796. ************************************************************************/
  1797. static void configParamsAccessTable(configMgr_t *pConfigManager)
  1798. {
  1799. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(AUTH_MODULE_PARAM) - 1].set = auth_setParam;
  1800. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(AUTH_MODULE_PARAM) - 1].get = auth_getParam;
  1801. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(AUTH_MODULE_PARAM) - 1].handle = pConfigManager->hAuth;
  1802. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(ASSOC_MODULE_PARAM) - 1].set = assoc_setParam;
  1803. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(ASSOC_MODULE_PARAM) - 1].get = assoc_getParam;
  1804. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(ASSOC_MODULE_PARAM) - 1].handle = pConfigManager->hAssoc;
  1805. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(RX_DATA_MODULE_PARAM) - 1].set = rxData_setParam;
  1806. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(RX_DATA_MODULE_PARAM) - 1].get = rxData_getParam;
  1807. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(RX_DATA_MODULE_PARAM) - 1].handle = pConfigManager->hRxData;
  1808. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(TX_DATA_MODULE_PARAM) - 1].set = txData_setParam;
  1809. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(TX_DATA_MODULE_PARAM) - 1].get = txData_getParam;
  1810. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(TX_DATA_MODULE_PARAM) - 1].handle = pConfigManager->hTxData;
  1811. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(CTRL_DATA_MODULE_PARAM) - 1].set = ctrlData_setParam;
  1812. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(CTRL_DATA_MODULE_PARAM) - 1].get = ctrlData_getParam;
  1813. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(CTRL_DATA_MODULE_PARAM) - 1].handle = pConfigManager->hCtrlData;
  1814. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(SITE_MGR_MODULE_PARAM) - 1].set = siteMgr_setParam;
  1815. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(SITE_MGR_MODULE_PARAM) - 1].get = siteMgr_getParam;
  1816. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(SITE_MGR_MODULE_PARAM) - 1].handle = pConfigManager->hSiteMgr;
  1817. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(CONN_MODULE_PARAM) - 1].set = conn_setParam;
  1818. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(CONN_MODULE_PARAM) - 1].get = conn_getParam;
  1819. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(CONN_MODULE_PARAM) - 1].handle = pConfigManager->hConn;
  1820. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(RSN_MODULE_PARAM) - 1].set = rsn_setParam;
  1821. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(RSN_MODULE_PARAM) - 1].get = rsn_getParam;
  1822. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(RSN_MODULE_PARAM) - 1].handle= pConfigManager->hRsn;
  1823. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(HAL_CTRL_MODULE_PARAM) - 1].set = (paramFunc_t)whalCtrl_SetParam;
  1824. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(HAL_CTRL_MODULE_PARAM) - 1].get = (paramFunc_t)whalCtrl_GetParam;
  1825. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(HAL_CTRL_MODULE_PARAM) - 1].handle = pConfigManager->hHalCtrl;
  1826. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(REPORT_MODULE_PARAM) - 1].set = (paramFunc_t)report_setParam;
  1827. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(REPORT_MODULE_PARAM) - 1].get = (paramFunc_t)report_getParam;
  1828. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(REPORT_MODULE_PARAM) - 1].handle = pConfigManager->hReport;
  1829. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(SME_SM_MODULE_PARAM) - 1].set = smeSm_setParam;
  1830. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(SME_SM_MODULE_PARAM) - 1].get = smeSm_getParam;
  1831. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(SME_SM_MODULE_PARAM) - 1].handle = pConfigManager->hSmeSm;
  1832. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(SCAN_CNCN_PARAM) - 1].set = scanConcentrator_setParam;
  1833. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(SCAN_CNCN_PARAM) - 1].get = scanConcentrator_getParam;
  1834. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(SCAN_CNCN_PARAM) - 1].handle = pConfigManager->hScanCncn;
  1835. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(SCAN_MNGR_PARAM) - 1].set = scanMngr_setParam;
  1836. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(SCAN_MNGR_PARAM) - 1].get = scanMngr_getParam;
  1837. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(SCAN_MNGR_PARAM) - 1].handle = pConfigManager->hScanMngr;
  1838. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(MLME_SM_MODULE_PARAM) - 1].set = mlme_setParam;
  1839. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(MLME_SM_MODULE_PARAM) - 1].get = mlme_getParam;
  1840. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(MLME_SM_MODULE_PARAM) - 1].handle = pConfigManager->hMlmeSm;
  1841. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(REGULATORY_DOMAIN_MODULE_PARAM) - 1].set = regulatoryDomain_setParam;
  1842. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(REGULATORY_DOMAIN_MODULE_PARAM) - 1].get = regulatoryDomain_getParam;
  1843. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(REGULATORY_DOMAIN_MODULE_PARAM) - 1].handle = pConfigManager->hRegulatoryDomain;
  1844. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(MEASUREMENT_MODULE_PARAM) - 1].set = measurementMgr_setParam;
  1845. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(MEASUREMENT_MODULE_PARAM) - 1].get = measurementMgr_getParam;
  1846. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(MEASUREMENT_MODULE_PARAM) - 1].handle = pConfigManager->hMeasurementMgr;
  1847. #ifdef EXC_MODULE_INCLUDED
  1848. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(EXC_MANAGER_MODULE_PARAM) - 1].set = excMngr_setParam;
  1849. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(EXC_MANAGER_MODULE_PARAM) - 1].get = excMngr_getParam;
  1850. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(EXC_MANAGER_MODULE_PARAM) - 1].handle = pConfigManager->hExcMngr;
  1851. #endif
  1852. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(ROAMING_MANAGER_MODULE_PARAM) - 1].set = roamingMngr_setParam;
  1853. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(ROAMING_MANAGER_MODULE_PARAM) - 1].get = roamingMngr_getParam;
  1854. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(ROAMING_MANAGER_MODULE_PARAM) - 1].handle = pConfigManager->hRoamingMngr;
  1855. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(SOFT_GEMINI_PARAM) - 1].set = SoftGemini_setParam;
  1856. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(SOFT_GEMINI_PARAM) - 1].get = SoftGemini_getParam;
  1857. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(SOFT_GEMINI_PARAM) - 1].handle = pConfigManager->hSoftGemini;
  1858. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(QOS_MANAGER_PARAM) - 1].set = qosMngr_setParams;
  1859. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(QOS_MANAGER_PARAM) - 1].get = qosMngr_getParams;
  1860. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(QOS_MANAGER_PARAM) - 1].handle = pConfigManager->hQosMngr;
  1861. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(POWER_MANAGER_PARAM) - 1].set = powerMgr_setParam;
  1862. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(POWER_MANAGER_PARAM) - 1].get = powerMgr_getParam;
  1863. pConfigManager->paramAccessTable[GET_PARAM_MODULE_NUMBER(POWER_MANAGER_PARAM) - 1].handle = pConfigManager->hPowerMgr;
  1864. }