summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Seto <wseto@qti.qualcomm.com>2014-07-25 12:07:30 -0700
committerAkash Patel <c_akashp@qca.qualcomm.com>2014-07-28 19:45:27 -0700
commitc29a7c0ec6e14b9abddeb13150a5240c2b5e5637 (patch)
treeb6bbe5d81d47345f6737fa8827f9bb6b65854c93
parentde2929037a1a5db63b44e9a2095c7a8614bcf880 (diff)
wlan: Remove obsolete WDI CP layer
Removing unused WDI CP source files. Note: header files are still retained since there are still references Change-Id: I3f3460fc6a9172e90914416dda0a26185622e1d3 CRs-Fixed: 700149
-rw-r--r--CORE/WDI/CP/src/wlan_qct_wdi.c29215
-rw-r--r--CORE/WDI/CP/src/wlan_qct_wdi_dp.c1054
-rw-r--r--CORE/WDI/CP/src/wlan_qct_wdi_sta.c716
-rw-r--r--Kbuild8
4 files changed, 1 insertions, 30992 deletions
diff --git a/CORE/WDI/CP/src/wlan_qct_wdi.c b/CORE/WDI/CP/src/wlan_qct_wdi.c
deleted file mode 100644
index 88785c1dea78..000000000000
--- a/CORE/WDI/CP/src/wlan_qct_wdi.c
+++ /dev/null
@@ -1,29215 +0,0 @@
-/*
- * Copyright (c) 2012-2014 The Linux Foundation. All rights reserved.
- *
- * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
- *
- *
- * Permission to use, copy, modify, and/or distribute this software for
- * any purpose with or without fee is hereby granted, provided that the
- * above copyright notice and this permission notice appear in all
- * copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
- * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
- * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
- * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
- * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-/*
- * This file was originally distributed by Qualcomm Atheros, Inc.
- * under proprietary terms before Copyright ownership was assigned
- * to the Linux Foundation.
- */
-
-
-/*===========================================================================
-
- W L A N _ Q C T _ W D I. C
-
- OVERVIEW:
-
- This software unit holds the implementation of the WLAN Device Abstraction
- Layer Interface.
-
- The functions externalized by this module are to be called by any upper
- MAC implementation that wishes to use the WLAN Device.
-
- DEPENDENCIES:
-
- Are listed for each API below.
-===========================================================================*/
-
-/*===========================================================================
-
- EDIT HISTORY FOR FILE
-
-
- This section contains comments describing changes made to the module.
- Notice that changes are listed in reverse chronological order.
-
-
- $Header$$DateTime$$Author$
-
-
- when who what, where, why
----------- --- --------------------------------------------------------
-10/05/11 hap Adding support for Keep Alive
-2010-08-09 lti Created module
-
-===========================================================================*/
-
-/*----------------------------------------------------------------------------
- * Include Files
- * -------------------------------------------------------------------------*/
-#include "wlan_qct_wdi.h"
-#include "wlan_qct_wdi_i.h"
-#include "wlan_qct_wdi_sta.h"
-#include "wlan_qct_wdi_dp.h"
-
-#include "wlan_qct_wdi_cts.h"
-
-#include "wlan_qct_pal_api.h"
-#include "wlan_qct_pal_type.h"
-#include "wlan_qct_pal_status.h"
-#include "wlan_qct_pal_sync.h"
-#include "wlan_qct_pal_msg.h"
-#include "wlan_qct_pal_trace.h"
-#include "wlan_qct_pal_packet.h"
-
-#include "wlan_qct_wdi_dts.h"
-
-#include "wlan_hal_msg.h"
-
-#include "pttMsgApi.h"
-#include "vos_trace.h"
-
-/*===========================================================================
- WLAN DAL Control Path Internal Data Definitions and Declarations
- ===========================================================================*/
-#define WDI_WCTS_ACTION_TIMEOUT 2000 /* in msec a very high upper limit */
-
-#define MAC_ADDR_ARRAY(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
-#define MAC_ADDRESS_STR "%02x:%02x:%02x:%02x:%02x:%02x"
-
-#define FEATURE_NOT_SUPPORTED 127
-
-#ifdef FEATURE_WLAN_SCAN_PNO
-#define WDI_PNO_VERSION_MASK 0x8000
-#endif
-
-/* host capability bitmap global */
-static tWlanFeatCaps *gpHostWlanFeatCaps;
-/* FW capability bitmap global */
-static tWlanFeatCaps *gpFwWlanFeatCaps;
-/* array of features supported. Need to add a new feature
- * and other two places - wlan_hal_msg.h and halMsg.c (FW file)
- */
-static placeHolderInCapBitmap supportEnabledFeatures[] =
- {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE
-#ifdef WLAN_SOFTAP_VSTA_FEATURE
- ,SAP32STA //5
-#else
- ,FEATURE_NOT_SUPPORTED
-#endif
-#ifdef FEATURE_WLAN_TDLS
- ,TDLS //6
-#else
- ,FEATURE_NOT_SUPPORTED
-#endif
- ,P2P_GO_NOA_DECOUPLE_INIT_SCAN //7
-#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
- ,WLANACTIVE_OFFLOAD //8
-#else
- ,FEATURE_NOT_SUPPORTED
-#endif
- ,FEATURE_NOT_SUPPORTED //9
- ,FEATURE_NOT_SUPPORTED //10
- ,FEATURE_NOT_SUPPORTED //11
- ,FEATURE_NOT_SUPPORTED //12
- ,FEATURE_NOT_SUPPORTED //13
- ,FEATURE_NOT_SUPPORTED //14
- ,FEATURE_NOT_SUPPORTED //15
- ,FEATURE_NOT_SUPPORTED //16
- ,FEATURE_NOT_SUPPORTED //17
- ,FEATURE_NOT_SUPPORTED //18
- ,FEATURE_NOT_SUPPORTED //19
- ,FEATURE_NOT_SUPPORTED //20
- ,FEATURE_NOT_SUPPORTED //21
- ,WOW //22
-#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
- ,WLAN_ROAM_SCAN_OFFLOAD //23
-#else
- ,FEATURE_NOT_SUPPORTED
-#endif
- ,FEATURE_NOT_SUPPORTED //24
- ,FEATURE_NOT_SUPPORTED //25
- ,IBSS_HEARTBEAT_OFFLOAD //26
- ,FEATURE_NOT_SUPPORTED //27
- ,WLAN_PERIODIC_TX_PTRN //28
-#ifdef FEATURE_WLAN_TDLS
- ,ADVANCE_TDLS //29
-#else
- ,FEATURE_NOT_SUPPORTED //29
-#endif
- };
-
-/*--------------------------------------------------------------------------
- WLAN DAL State Machine
- --------------------------------------------------------------------------*/
-WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
-{
- /*WDI_INIT_ST*/
- {{
- WDI_MainStart, /*WDI_START_EVENT*/
- NULL, /*WDI_STOP_EVENT*/
- WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
- WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
- WDI_MainClose, /*WDI_CLOSE_EVENT*/
- WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
- }},
-
- /*WDI_STARTED_ST*/
- {{
- WDI_MainStartStarted, /*WDI_START_EVENT*/
- WDI_MainStopStarted, /*WDI_STOP_EVENT*/
- WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
- WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
- NULL, /*WDI_CLOSE_EVENT*/
- WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
- }},
-
- /*WDI_STOPPED_ST*/
- {{
- WDI_MainStart, /*WDI_START_EVENT*/
- WDI_MainStopStopped, /*WDI_STOP_EVENT*/
- NULL, /*WDI_REQUEST_EVENT*/
- WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
- WDI_MainClose, /*WDI_CLOSE_EVENT*/
- WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
- }},
-
- /*WDI_BUSY_ST*/
- {{
- WDI_MainStartBusy, /*WDI_START_EVENT*/
- WDI_MainStopBusy, /*WDI_STOP_EVENT*/
- WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
- WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
- WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
- WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
- }}
-};
-
-/*---------------------------------------------------------------------------
- DAL Request Processing Array - the functions in this table will only be
- called when the processing of the specific request is allowed by the
- Main FSM
- ---------------------------------------------------------------------------*/
-WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
-{
- /*INIT*/
- WDI_ProcessStartReq, /* WDI_START_REQ */
- WDI_ProcessStopReq, /* WDI_STOP_REQ */
- WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
-
- /*SCAN*/
- WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
- WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
- WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
- WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
-
- /*ASSOCIATION*/
- WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
- WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
- WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
- WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
- WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
-
- /* Security */
- WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
- WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
- WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
- WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
-
- /* QoS and BA APIs */
- WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
- WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
- WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
- WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
- WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
-
- /* Miscellaneous Control APIs */
- WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
- WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
- WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
- WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
- WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
-
- /*BA APIs*/
- WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
- WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
-
- /*Beacon processing APIs*/
- WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
- WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
-
- WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
- WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
- WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
- WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
- WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
- /* PowerSave APIs */
- WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
- WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
- WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
- WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
- WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
- WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
- WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
- WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
- WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
- WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
- WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
- WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
- WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
- WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
- WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
- WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
- WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
- WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
- /*NV Download APIs*/
- WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
- WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
- WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
-#ifdef WLAN_FEATURE_VOWIFI_11R
- WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
-#else
- NULL,
-#endif /* WLAN_FEATURE_VOWIFI_11R */
- WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
- WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
- WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
-
-#ifdef FEATURE_OEM_DATA_SUPPORT
- WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
-#else
- NULL,
-#endif /*FEATURE_OEM_DATA_SUPPORT*/
- WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
-
- WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
-
-#ifdef FEATURE_WLAN_SCAN_PNO
- WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
- WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
- WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
-#else
- NULL,
- NULL,
- NULL,
-#endif /* FEATURE_WLAN_SCAN_PNO */
-
- WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
-
-#ifdef WLAN_FEATURE_PACKET_FILTERING
- /* WDI_8023_MULTICAST_LIST_REQ */
- WDI_Process8023MulticastListReq,
- /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
- WDI_ProcessReceiveFilterSetFilterReq,
- /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
- WDI_ProcessFilterMatchCountReq,
- /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
- WDI_ProcessReceiveFilterClearFilterReq,
-#else
- NULL,
- NULL,
- NULL,
- NULL,
-#endif // WLAN_FEATURE_PACKET_FILTERING
- WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
- WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
- WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
-
- WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
-#ifdef FEATURE_WLAN_ESE
- WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
-#else
- NULL,
-#endif
-
-#ifdef WLAN_FEATURE_GTK_OFFLOAD
- WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
- WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
-#else
- NULL,
- NULL,
-#endif // WLAN_FEATURE_GTK_OFFLOAD
-
- WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
- WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
-#ifdef WLAN_FEATURE_11AC
- WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
-#else
- NULL,
-#endif
-#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
- WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
-#else
- NULL,
-#endif
- WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
-#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
- WDI_ProcessRoamScanOffloadReq, /* WDI_ROAM_SCAN_OFFLOAD_REQ */
-#else
- NULL,
-#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
-#ifdef FEATURE_WLAN_TDLS
- WDI_ProcessTdlsLinkEstablishReq, /* WDI_TDLS_LINK_ESTABLISH_REQ */
-#else
- NULL,
-#endif
-#ifdef FEATURE_WLAN_LPHB
- WDI_ProcessLPHBConfReq, /* WDI_LPHB_CFG_REQ */
-#else
- NULL,
-#endif /* FEATURE_WLAN_LPHB */
-
-#ifdef FEATURE_WLAN_BATCH_SCAN
- WDI_ProcessSetBatchScanReq, /* WDI_SET_BATCH_SCAN_REQ */
-#else
- NULL,
-#endif /* FEATURE_WLAN_BATCH_SCAN */
-
- WDI_ProcessSetMaxTxPowerPerBandReq, /* WDI_SET_MAX_TX_POWER_PER_BAND_REQ*/
- /*-------------------------------------------------------------------------
- Indications
- -------------------------------------------------------------------------*/
- WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
- WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
- WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
- WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
-#ifdef WLAN_FEATURE_11W
- WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
-#else
- NULL,
-#endif
- WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
- WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
- WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
-#ifdef FEATURE_WLAN_BATCH_SCAN
- WDI_ProcessStopBatchScanInd, /* WDI_STOP_BATCH_SCAN_IND */
- WDI_ProcessTriggerBatchScanResultInd, /* WDI_TRIGGER_BATCH_SCAN_RESULT_IND */
-#else
- NULL,
- NULL,
-#endif /* FEATURE_WLAN_BATCH_SCAN */
-};
-
-
-/*---------------------------------------------------------------------------
- DAL Request Processing Array - the functions in this table will only be
- called when the processing of the specific request is allowed by the
- Main FSM
- ---------------------------------------------------------------------------*/
-WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
-{
- /*INIT*/
- WDI_ProcessStartRsp, /* WDI_START_RESP */
- WDI_ProcessStopRsp, /* WDI_STOP_RESP */
- WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
-
- /*SCAN*/
- WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
- WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
- WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
- WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
-
- /* ASSOCIATION*/
- WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
- WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
- WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
- WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
- WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
-
- /* Security */
- WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
- WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
- WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
- WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
-
- /* QoS and BA APIs */
- WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
- WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
- WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
- WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
- WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
-
- /* Miscellaneous Control APIs */
- WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
- WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
- WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
- WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
- WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
-
- /* BA APIs*/
- WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
- WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
-
- /* IBSS APIs*/
- WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
- WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
-
- /*Soft AP APIs*/
- WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
- WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
- WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
- WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
-
- /* PowerSave APIs */
- WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
- WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
- WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
- WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
- WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
- WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
- WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
- WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
- WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
- WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
- WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
- WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
- WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
- WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
- WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
- WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
- WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
- WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
-
-
- WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
-
- WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
- WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
-#ifdef WLAN_FEATURE_VOWIFI_11R
- WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
-#else
- NULL,
-#endif /* WLAN_FEATURE_VOWIFI_11R */
- WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
- WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
-#ifdef FEATURE_OEM_DATA_SUPPORT
- WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
-#else
- NULL,
-#endif /*FEATURE_OEM_DATA_SUPPORT*/
- WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
-
- WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
-
- WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
-
- WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
-
-#ifdef FEATURE_WLAN_SCAN_PNO
- WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
- WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
- WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
-#else
- NULL,
- NULL,
- NULL,
-#endif // FEATURE_WLAN_SCAN_PNO
-
- WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
-
- /*---------------------------------------------------------------------
- Indications
- ---------------------------------------------------------------------*/
-#ifdef WLAN_FEATURE_PACKET_FILTERING
- /* WDI_8023_MULTICAST_LIST_RESP */
- WDI_Process8023MulticastListRsp,
- /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
- WDI_ProcessReceiveFilterSetFilterRsp,
- /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
- WDI_ProcessFilterMatchCountRsp,
- /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
- WDI_ProcessReceiveFilterClearFilterRsp,
-#else
- NULL,
- NULL,
- NULL,
- NULL,
-#endif // WLAN_FEATURE_PACKET_FILTERING
-
- WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
- WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
-
- WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
-#ifdef FEATURE_WLAN_ESE
- WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
-#else
- NULL,
-#endif
-
-#ifdef WLAN_FEATURE_GTK_OFFLOAD
- WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
- WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
-#else
- NULL,
- NULL,
-#endif // WLAN_FEATURE_GTK_OFFLOAD
- WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
- WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
-#ifdef WLAN_FEATURE_11AC
- WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
-#else
- NULL,
-#endif
-#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
- WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
-#else
- NULL,
-#endif
- WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
-#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
- WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
-#else
- NULL,
-#endif
-#ifdef FEATURE_WLAN_TDLS
- WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
-#else
- NULL,
-#endif
-#ifdef FEATURE_WLAN_LPHB
- WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
-#else
- NULL,
-#endif /* FEATURE_WLAN_LPHB */
-
-#ifdef FEATURE_WLAN_BATCH_SCAN
- WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
-#else
- NULL,
-#endif /*FEATURE_WLAN_BATCH_SCAN*/
- WDI_ProcessSetMaxTxPowerPerBandRsp, /* WDI_SET_MAX_TX_POWER_PER_BAND_RSP */
-
- /*---------------------------------------------------------------------
- Indications
- ---------------------------------------------------------------------*/
- WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
- WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
- WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
- WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
- WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
- WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
-
- WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
-
- WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
-
- WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
-
-#ifdef FEATURE_WLAN_SCAN_PNO
- WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
-#else
- NULL,
-#endif // FEATURE_WLAN_SCAN_PNO
-
-#ifdef WLAN_WAKEUP_EVENTS
- WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
-#else // WLAN_WAKEUP_EVENTS
- NULL,
-#endif // WLAN_WAKEUP_EVENTS
-
- WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
-
- WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
-#ifdef FEATURE_WLAN_TDLS
- WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
-#else
- NULL,
-#endif
-
-#ifdef FEATURE_WLAN_LPHB
- WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
-#else
- NULL,
-#endif /* FEATURE_WLAN_LPHB */
-
- WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
-
- WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
-
-#ifdef FEATURE_WLAN_BATCH_SCAN
- WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
-#else
- NULL,
-#endif
-
-};
-
-
-/*---------------------------------------------------------------------------
- WLAN DAL Global Control Block
- ---------------------------------------------------------------------------*/
-WDI_ControlBlockType gWDICb;
-static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
-
-const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
-
-/*Helper routine for retrieving the PAL Context from WDI*/
-WPT_INLINE
-void* WDI_GET_PAL_CTX( void )
-{
- return gWDICb.pPALContext;
-}/*WDI_GET_PAL_CTX*/
-
-/*============================================================================
- Helper inline converters
- ============================================================================*/
-/*Convert WDI driver type into HAL driver type*/
-WPT_STATIC WPT_INLINE WDI_Status
-WDI_HAL_2_WDI_STATUS
-(
- eHalStatus halStatus
-);
-
-/*Convert WDI request type into HAL request type*/
-WPT_STATIC WPT_INLINE tHalHostMsgType
-WDI_2_HAL_REQ_TYPE
-(
- WDI_RequestEnumType wdiReqType
-);
-
-/*Convert WDI response type into HAL response type*/
-WPT_STATIC WPT_INLINE WDI_ResponseEnumType
-HAL_2_WDI_RSP_TYPE
-(
- tHalHostMsgType halMsg
-);
-
-/*Convert WDI driver type into HAL driver type*/
-WPT_STATIC WPT_INLINE tDriverType
-WDI_2_HAL_DRV_TYPE
-(
- WDI_DriverType wdiDriverType
-);
-
-/*Convert WDI stop reason into HAL stop reason*/
-WPT_STATIC WPT_INLINE tHalStopType
-WDI_2_HAL_STOP_REASON
-(
- WDI_StopType wdiStopType
-);
-
-/*Convert WDI scan mode type into HAL scan mode type*/
-WPT_STATIC WPT_INLINE eHalSysMode
-WDI_2_HAL_SCAN_MODE
-(
- WDI_ScanMode wdiScanMode
-);
-
-/*Convert WDI sec ch offset into HAL sec ch offset type*/
-WPT_STATIC WPT_INLINE ePhyChanBondState
-WDI_2_HAL_SEC_CH_OFFSET
-(
- WDI_HTSecondaryChannelOffset wdiSecChOffset
-);
-
-/*Convert WDI BSS type into HAL BSS type*/
-WPT_STATIC WPT_INLINE tSirBssType
-WDI_2_HAL_BSS_TYPE
-(
- WDI_BssType wdiBSSType
-);
-
-/*Convert WDI NW type into HAL NW type*/
-WPT_STATIC WPT_INLINE tSirNwType
-WDI_2_HAL_NW_TYPE
-(
- WDI_NwType wdiNWType
-);
-
-/*Convert WDI chanel bonding type into HAL cb type*/
-WPT_STATIC WPT_INLINE ePhyChanBondState
-WDI_2_HAL_CB_STATE
-(
- WDI_PhyChanBondState wdiCbState
-);
-
-/*Convert WDI chanel bonding type into HAL cb type*/
-WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
-WDI_2_HAL_HT_OPER_MODE
-(
- WDI_HTOperatingMode wdiHTOperMode
-);
-
-/*Convert WDI mimo PS type into HAL mimo PS type*/
-WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
-WDI_2_HAL_MIMO_PS
-(
- WDI_HTMIMOPowerSaveState wdiHTOperMode
-);
-
-/*Convert WDI ENC type into HAL ENC type*/
-WPT_STATIC WPT_INLINE tAniEdType
-WDI_2_HAL_ENC_TYPE
-(
- WDI_EncryptType wdiEncType
-);
-
-/*Convert WDI WEP type into HAL WEP type*/
-WPT_STATIC WPT_INLINE tAniWepType
-WDI_2_HAL_WEP_TYPE
-(
- WDI_WepType wdiWEPType
-);
-
-/*Convert WDI Link State into HAL Link State*/
-WPT_STATIC WPT_INLINE tSirLinkState
-WDI_2_HAL_LINK_STATE
-(
- WDI_LinkStateType wdiLinkState
-);
-
-/*Translate a STA Context from WDI into HAL*/
-WPT_STATIC WPT_INLINE
-void
-WDI_CopyWDIStaCtxToHALStaCtx
-(
- tConfigStaParams* phalConfigSta,
- WDI_ConfigStaReqInfoType* pwdiConfigSta
-);
-
-/*Translate a Rate set info from WDI into HAL*/
-WPT_STATIC WPT_INLINE void
-WDI_CopyWDIRateSetToHALRateSet
-(
- tSirMacRateSet* pHalRateSet,
- WDI_RateSet* pwdiRateSet
-);
-
-/*Translate an EDCA Parameter Record from WDI into HAL*/
-WPT_STATIC WPT_INLINE void
-WDI_CopyWDIEDCAParamsToHALEDCAParams
-(
- tSirMacEdcaParamRecord* phalEdcaParam,
- WDI_EdcaParamRecord* pWDIEdcaParam
-);
-
-/*Copy a management frame header from WDI fmt into HAL fmt*/
-WPT_STATIC WPT_INLINE void
-WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
-(
- tSirMacMgmtHdr* pmacMgmtHdr,
- WDI_MacMgmtHdr* pwdiMacMgmtHdr
-);
-
-/*Copy config bss parameters from WDI fmt into HAL fmt*/
-WPT_STATIC WPT_INLINE void
-WDI_CopyWDIConfigBSSToHALConfigBSS
-(
- tConfigBssParams* phalConfigBSS,
- WDI_ConfigBSSReqInfoType* pwdiConfigBSS
-);
-
-/*Extract the request CB function and user data from a request structure
- pointed to by user data */
-WPT_STATIC WPT_INLINE void
-WDI_ExtractRequestCBFromEvent
-(
- WDI_EventInfoType* pEvent,
- WDI_ReqStatusCb* ppfnReqCB,
- void** ppUserData
-);
-
-wpt_uint8
-WDI_FindEmptySession
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_BSSSessionType** ppSession
-);
-
-void
-WDI_AddBcastSTAtoSTATable
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_AddStaParams * staParams,
- wpt_uint16 usBcastStaIdx
-);
-
-WDI_Status WDI_SendNvBlobReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-);
-
-void
-WDI_SetPowerStateCb
-(
- wpt_status status,
- unsigned int dxePhyAddr,
- void *pContext
-);
-
-/**
- @brief WDI_getReqMsgString prints the WDI request message in string.
-
- @param wdiReqMsgId: WDI Message request Id
-
- @see
- @return Result of the function call
-*/
-static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
-{
- switch (wdiReqMsgId)
- {
- CASE_RETURN_STRING( WDI_START_REQ );
- CASE_RETURN_STRING( WDI_STOP_REQ );
- CASE_RETURN_STRING( WDI_CLOSE_REQ );
- CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
- CASE_RETURN_STRING( WDI_START_SCAN_REQ );
- CASE_RETURN_STRING( WDI_END_SCAN_REQ );
- CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
- CASE_RETURN_STRING( WDI_JOIN_REQ );
- CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
- CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
- CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
- CASE_RETURN_STRING( WDI_DEL_STA_REQ );
- CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
- CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
- CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
- CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
- CASE_RETURN_STRING( WDI_ADD_TS_REQ );
- CASE_RETURN_STRING( WDI_DEL_TS_REQ );
- CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
- CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
- CASE_RETURN_STRING( WDI_DEL_BA_REQ );
- CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
- CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
- CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
- CASE_RETURN_STRING( WDI_GET_STATS_REQ );
- CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
- CASE_RETURN_STRING( WDI_ADD_BA_REQ );
- CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
- CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
- CASE_RETURN_STRING( WDI_SND_BCON_REQ );
- CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
- CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
- CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
- CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
- CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
- CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
-#ifdef FEATURE_WLAN_TDLS
- CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
-#endif
- CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
- CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
- CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
- CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
- CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
- CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
- CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
- CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
- CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
- CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
- CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
- CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
- CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
- CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
- CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
- CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
- CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
- CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
- CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
- CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
- CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
- CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
- CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
- CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
- CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
- CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
- CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
- CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
- #ifdef FEATURE_WLAN_SCAN_PNO
- CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
- CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
- CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
- #endif
-#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
- CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
-#endif
- CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
- CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
- CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
- CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
- CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
- CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
- CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
- CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
- CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
- CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
- CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
-#ifdef WLAN_FEATURE_11W
- CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
-#endif
-#ifdef FEATURE_WLAN_BATCH_SCAN
- CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
- CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
- CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
-#endif
- default:
- return "Unknown WDI MessageId";
- }
-}
-
-
-
-/**
- @brief WDI_getRespMsgString prints the WDI resonse message in string.
-
- @param wdiRespMsgId: WDI Message response Id
-
- @see
- @return Result of the function call
-*/
-static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
-{
- switch (wdiRespMsgId)
- {
- CASE_RETURN_STRING( WDI_START_RESP );
- CASE_RETURN_STRING( WDI_STOP_RESP );
- CASE_RETURN_STRING( WDI_CLOSE_RESP );
- CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
- CASE_RETURN_STRING( WDI_START_SCAN_RESP );
- CASE_RETURN_STRING( WDI_END_SCAN_RESP );
- CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
- CASE_RETURN_STRING( WDI_JOIN_RESP );
- CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
- CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
- CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
- CASE_RETURN_STRING( WDI_DEL_STA_RESP );
- CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
- CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
- CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
- CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
- CASE_RETURN_STRING( WDI_ADD_TS_RESP );
- CASE_RETURN_STRING( WDI_DEL_TS_RESP );
- CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
- CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
- CASE_RETURN_STRING( WDI_DEL_BA_RESP );
- CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
- CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
- CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
- CASE_RETURN_STRING( WDI_GET_STATS_RESP );
- CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
- CASE_RETURN_STRING( WDI_ADD_BA_RESP );
- CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
- CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
- CASE_RETURN_STRING( WDI_SND_BCON_RESP );
- CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
- CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
- CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
- CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
- CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
-#ifdef FEATURE_WLAN_TDLS
- CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
- CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
-#endif
- CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
- CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
- CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
- CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
- CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
- CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
- CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
- CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
- CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
- CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
- CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
- CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
- CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
- CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
- CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
- CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
- CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
- CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
- CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
- CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
- CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
- CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
- CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
- CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
- CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
- CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
- CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
- CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
- #ifdef FEATURE_WLAN_SCAN_PNO
- CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
- CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
- CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
- #endif
-#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
- CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
-#endif
- CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
- CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
- CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
- CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
- CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
- CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
- CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
- CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
- CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
-
-#ifdef FEATURE_WLAN_BATCH_SCAN
- CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
-#endif
- default:
- return "Unknown WDI MessageId";
- }
-}
-
-/**
- @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
- Capability bitmap array.
- @param capabilityBitmap - Base address of Bitmap array
- @see
- @returns None
- */
-void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
-{
- int i;
- char capStr[512];
- char *pCapStr = capStr;
- for (i = 0; i < 32; i++) {
- if ((*(capabilityBitmap + 0) & (1 << i))) {
- switch(i) {
- case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
- pCapStr += strlen("MCC");
- break;
- case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
- pCapStr += strlen("P2P");
- break;
- case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
- pCapStr += strlen("DOT11AC");
- break;
- case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
- pCapStr += strlen("SLM_SESSIONIZATION");
- break;
- case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
- pCapStr += strlen("DOT11AC_OPMODE");
- break;
- case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
- pCapStr += strlen("SAP32STA");
- break;
- case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
- pCapStr += strlen("TDLS");
- break;
- case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
- pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
- break;
- case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
- pCapStr += strlen("WLANACTIVE_OFFLOAD");
- break;
- case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
- pCapStr += strlen("BEACON_OFFLOAD");
- break;
- case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
- pCapStr += strlen("SCAN_OFFLOAD");
- break;
- case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
- pCapStr += strlen("ROAM_OFFLOAD");
- break;
- case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
- pCapStr += strlen("BCN_MISS_OFFLOAD");
- break;
- case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
- pCapStr += strlen("STA_POWERSAVE");
- break;
- case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
- pCapStr += strlen("AP_UAPSD");
- break;
- case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
- pCapStr += strlen("AP_DFS");
- break;
- case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
- pCapStr += strlen("BLOCKACK");
- break;
- case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
- pCapStr += strlen("PHY_ERR");
- break;
- case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
- pCapStr += strlen("BCN_FILTER");
- break;
- case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
- pCapStr += strlen("RTT");
- break;
- case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
- pCapStr += strlen("RATECTRL");
- break;
- case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
- pCapStr += strlen("WOW");
- break;
- case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
- pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
- break;
- }
- *pCapStr++ = ',';
- *pCapStr++ = ' ';
- }
- }
- pCapStr -= 2;
- *pCapStr = '\0';
- pCapStr = capStr;
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t%s", pCapStr);
-}
-
-/**
- @brief WDI_getHALStatusMsgString prints the HAL status in string.
-
- @param halStatusId: HAL status Id
-
- @see
- @return Result of the function call
-*/
-static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
-{
- switch (halStatusId)
- {
- CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
- CASE_RETURN_STRING( PAL_STATUS_INVAL );
- CASE_RETURN_STRING( PAL_STATUS_ALREADY );
- CASE_RETURN_STRING( PAL_STATUS_EMPTY );
- CASE_RETURN_STRING( PAL_STATUS_FAILURE );
- CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
- CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
- CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
- CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
- CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
- CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
- CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
- CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
- CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
- CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
- CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
- CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
- CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
- CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
- CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
- CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
- CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
- CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
- CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
- CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
- CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
- CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
- CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
- CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
- CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
- CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
- CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
- CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
- default:
- return "Unknown HAL status";
- }
-}
-
-/*========================================================================
-
- INITIALIZATION APIs
-
-==========================================================================*/
-
-/**
- @brief WDI_Init is used to initialize the DAL.
-
- DAL will allocate all the resources it needs. It will open PAL, it will also
- open both the data and the control transport which in their turn will open
- DXE/SMD or any other drivers that they need.
-
- @param pOSContext: pointer to the OS context provided by the UMAC
- will be passed on to PAL on Open
- ppWDIGlobalCtx: output pointer of Global Context
- pWdiDevCapability: output pointer of device capability
-
- @return Result of the function call
-*/
-WDI_Status
-WDI_Init
-(
- void* pOSContext,
- void** ppWDIGlobalCtx,
- WDI_DeviceCapabilityType* pWdiDevCapability,
- unsigned int driverType
-)
-{
- wpt_uint8 i;
- wpt_status wptStatus;
- WDI_Status wdiStatus;
- WCTS_TransportCBsType wctsCBs;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
-
- /*---------------------------------------------------------------------
- Sanity check
- ---------------------------------------------------------------------*/
- if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Invalid input parameters in WDI_Init");
-
- return WDI_STATUS_E_FAILURE;
- }
-
- /*---------------------------------------------------------------------
- Check to see if the module has already been initialized or not
- ---------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE != gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "WDI module already initialized - return");
-
- return WDI_STATUS_SUCCESS;
- }
-
- /*Module is now initialized - this flag is to ensure the fact that multiple
- init will not happen on WDI
- !! - potential race does exist because read and set are not atomic,
- however an atomic operation would be closely here - reanalyze if necessary*/
- gWDIInitialized = eWLAN_PAL_TRUE;
-
- /*Setup the control block */
- WDI_CleanCB(&gWDICb);
- gWDICb.pOSContext = pOSContext;
-
- /*Setup the STA Table*/
- wdiStatus = WDI_STATableInit(&gWDICb);
- if ( WDI_STATUS_SUCCESS != wdiStatus )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "%s: Failure while initializing STA Table, status %d",
- __func__, wdiStatus);
- goto fail_STATableInit;
- }
-
- /*------------------------------------------------------------------------
- Open the PAL
- ------------------------------------------------------------------------*/
- wptStatus = wpalOpen(&gWDICb.pPALContext, pOSContext);
- if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "%s: Failed to open PAL, status %d",
- __func__, wptStatus);
- goto fail_wpalOpen;
- }
-
- /*Initialize main synchro mutex - it will be used to ensure integrity of
- the main WDI Control Block*/
- wptStatus = wpalMutexInit(&gWDICb.wptMutex);
- if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "%s: Failed to init mutex, status %d",
- __func__, wptStatus);
- goto fail_mutex;
- }
-
- /*Initialize the response timer - it will be used to time all messages
- expected as response from device*/
- wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
- WDI_ResponseTimerCB,
- &gWDICb);
- if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "%s: Failed to init response timer, status %d",
- __func__, wptStatus);
- goto fail_timer;
- }
-
- wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
- WDI_SsrTimerCB,
- &gWDICb);
- if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "%s: Failed to init SSR timer, status %d",
- __func__, wptStatus);
- goto fail_timer2;
- }
- /* Initialize the WDI Pending Request Queue*/
- wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
- if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "%s: Failed to init pending request queue, status %d",
- __func__, wptStatus);
- goto fail_pend_queue;
- }
-
- /*Init WDI Pending Assoc Id Queue */
- wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
- if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "%s: Failed to init assoc session queue, status %d",
- __func__, wptStatus);
- goto fail_assoc_queue;
- }
-
- /*Initialize the BSS sessions pending Queue */
- for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
- {
- wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
- if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "%s: Failed to init BSS %d pending queue, status %d",
- __func__, i, wptStatus);
- goto fail_bss_queue;
- }
- }
-
- /*Indicate the control block is sufficiently initialized for callbacks*/
- gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
-
- /*------------------------------------------------------------------------
- Initialize the Data Path Utility Module
- ------------------------------------------------------------------------*/
- wdiStatus = WDI_DP_UtilsInit(&gWDICb);
- if ( WDI_STATUS_SUCCESS != wdiStatus )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "%s: Failed to initialize the DP Util Module, status %d",
- __func__, wdiStatus);
- goto fail_dp_util_init;
- }
-
- /* Init Set power state event */
- wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
- if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "%s: Failed to initialize power state event, status %d",
- __func__, wptStatus);
- goto fail_power_event;
- }
-
- /* Init WCTS action event */
- wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
- if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "%s: Failed to initialize WCTS action event, status %d",
- __func__, wptStatus);
- goto fail_wcts_event;
- }
-
- /*------------------------------------------------------------------------
- Open the Transport Services for Control and Data
- ------------------------------------------------------------------------*/
- wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
- wctsCBs.wctsNotifyCBData = &gWDICb;
- wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
- wctsCBs.wctsRxMsgCBData = &gWDICb;
-
- gWDICb.bCTOpened = eWLAN_PAL_FALSE;
- gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
- WDI_CT_CHANNEL_SIZE,
- &wctsCBs );
-
- if ( NULL == gWDICb.wctsHandle )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "%s: Failed to open WCTS transport", __func__);
- goto fail_wcts_open;
- }
-
- gWDICb.driverMode = (tDriverType)driverType;
- /* FTM mode not need to open Transport Driver */
- if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
- {
- /*------------------------------------------------------------------------
- Open the Data Transport
- ------------------------------------------------------------------------*/
- if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "%s: Failed to open the DT Transport", __func__);
- goto fail_wdts_open;
- }
- }
-
- /*The WDI is initialized - set state to init */
- gWDICb.uGlobalState = WDI_INIT_ST;
-
- /*Send the context as a ptr to the global WDI Control Block*/
- *ppWDIGlobalCtx = &gWDICb;
-
- /*Fill in the device capabilities*/
- pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
- pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
- pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
- return WDI_STATUS_SUCCESS;
-
- /* ERROR handlers
- Undo everything that completed successfully */
-
- fail_wdts_open:
- {
- wpt_status eventStatus;
-
- /* Closing WCTS in this scenario is tricky since it has to close
- the SMD channel and then we get notified asynchronously when
- the channel has been closed. So we take some of the logic from
- the "normal" close procedure in WDI_Close()
- */
-
- eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
- if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Failed to reset WCTS action event", __func__);
- }
-
- WCTS_CloseTransport(gWDICb.wctsHandle);
-
- /* Wait for WCTS to close the control transport. If we were able
- to reset the event flag, then we'll wait for the event,
- otherwise we'll wait for a maximum amount of time required for
- the channel to be closed */
- if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
- {
- eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
- WDI_WCTS_ACTION_TIMEOUT);
- if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Failed to wait on WCTS action event", __func__);
- }
- }
- else
- {
- wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
- }
- }
- fail_wcts_open:
- wpalEventDelete(&gWDICb.wctsActionEvent);
- fail_wcts_event:
- wpalEventDelete(&gWDICb.setPowerStateEvent);
- fail_power_event:
- WDI_DP_UtilsExit(&gWDICb);
- fail_dp_util_init:
- gWDICb.magic = 0;
- fail_bss_queue:
- /* entries 0 thru i-1 were successfully initialized */
- while (0 < i)
- {
- i--;
- wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
- }
- wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
- fail_assoc_queue:
- wpal_list_destroy(&(gWDICb.wptPendingQueue));
- fail_pend_queue:
- wpalTimerDelete(&gWDICb.ssrTimer);
- fail_timer2:
- wpalTimerDelete(&gWDICb.wptResponseTimer);
- fail_timer:
- wpalMutexDelete(&gWDICb.wptMutex);
- fail_mutex:
- wpalClose(gWDICb.pPALContext);
- fail_wpalOpen:
- WDI_STATableClose(&gWDICb);
- fail_STATableInit:
- gWDIInitialized = eWLAN_PAL_FALSE;
-
- return WDI_STATUS_E_FAILURE;
-
-}/*WDI_Init*/;
-
-/**
- @brief WDI_Start will be called when the upper MAC is ready to
- commence operation with the WLAN Device. Upon the call
- of this API the WLAN DAL will pack and send a HAL Start
- message to the lower RIVA sub-system if the SMD channel
- has been fully opened and the RIVA subsystem is up.
-
- If the RIVA sub-system is not yet up and running DAL
- will queue the request for Open and will wait for the
- SMD notification before attempting to send down the
- message to HAL.
-
- WDI_Init must have been called.
-
- @param wdiStartParams: the start parameters as specified by
- the Device Interface
-
- wdiStartRspCb: callback for passing back the response of
- the start operation received from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_Start
- @return Result of the function call
-*/
-WDI_Status
-WDI_Start
-(
- WDI_StartReqParamsType* pwdiStartParams,
- WDI_StartRspCb wdiStartRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_START_REQ;
- wdiEventData.pEventData = pwdiStartParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
- wdiEventData.pCBfnc = wdiStartRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_Start*/
-
-/**
- @brief WDI_Stop will be called when the upper MAC is ready to
- stop any operation with the WLAN Device. Upon the call
- of this API the WLAN DAL will pack and send a HAL Stop
- message to the lower RIVA sub-system if the DAL Core is
- in started state.
-
- In state BUSY this request will be queued.
-
- Request will not be accepted in any other state.
-
- WDI_Start must have been called.
-
- @param wdiStopParams: the stop parameters as specified by
- the Device Interface
-
- wdiStopRspCb: callback for passing back the response of
- the stop operation received from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_Start
- @return Result of the function call
-*/
-WDI_Status
-WDI_Stop
-(
- WDI_StopReqParamsType* pwdiStopParams,
- WDI_StopRspCb wdiStopRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- WDI_ControlBlockType* pWDICtx = &gWDICb;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*Access to the global state must be locked before cleaning */
- wpalMutexAcquire(&pWDICtx->wptMutex);
-
- /*Clear all pending request*/
- WDI_ClearPendingRequests(pWDICtx);
-
- /*We have completed cleaning unlock now*/
- wpalMutexRelease(&pWDICtx->wptMutex);
-
- /* Free the global variables */
- wpalMemoryFree(gpHostWlanFeatCaps);
- wpalMemoryFree(gpFwWlanFeatCaps);
- gpHostWlanFeatCaps = NULL;
- gpFwWlanFeatCaps = NULL;
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_STOP_REQ;
- wdiEventData.pEventData = pwdiStopParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
- wdiEventData.pCBfnc = wdiStopRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
-
-}/*WDI_Stop*/
-
-
-
-/**
- @brief WDI_Close will be called when the upper MAC no longer
- needs to interact with DAL. DAL will free its control
- block.
-
- It is only accepted in state STOPPED.
-
- WDI_Stop must have been called.
-
- @param none
-
- @see WDI_Stop
- @return Result of the function call
-*/
-WDI_Status
-WDI_Close
-(
- void
-)
-{
- wpt_uint8 i;
- WDI_EventInfoType wdiEventData;
- wpt_status wptStatus;
- wpt_status eventStatus;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
- (the control transport will be closed by the FSM and we'll want
- to wait until that completes)*/
- eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
- if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Failed to reset WCTS action event", __func__);
- /* fall through and try to finish closing via the FSM */
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_CLOSE_REQ;
- wdiEventData.pEventData = NULL;
- wdiEventData.uEventDataSize = 0;
- wdiEventData.pCBfnc = NULL;
- wdiEventData.pUserData = NULL;
-
- gWDIInitialized = eWLAN_PAL_FALSE;
-
- wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
-
- /*Wait for WCTS to close the control transport
- (but only if we were able to reset the event flag*/
- if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
- {
- eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
- WDI_WCTS_ACTION_TIMEOUT);
- if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Failed to wait on WCTS action event", __func__);
- }
- }
-
- /* Destroy the WCTS action event */
- wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
- if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "WDI Close failed to destroy an event");
- WDI_ASSERT(0);
- }
-
- /* Destroy the Set Power State event */
- wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
- if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "WDI Close failed to destroy an event");
-
- WDI_ASSERT(0);
- }
-
- /*------------------------------------------------------------------------
- Closes the Data Path Utility Module
- ------------------------------------------------------------------------*/
- if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "WDI Init failed to close the DP Util Module");
-
- WDI_ASSERT(0);
- }
-
- /*destroy the BSS sessions pending Queue */
- for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
- {
- wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
- }
-
- /* destroy the WDI Pending Assoc Id Request Queue*/
- wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
-
- /* destroy the WDI Pending Request Queue*/
- wpal_list_destroy(&(gWDICb.wptPendingQueue));
-
- /*destroy the response timer */
- wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
-
- /*destroy the SSR timer */
- wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
-
- /*invalidate the main synchro mutex */
- wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
- if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Failed to delete mutex %d", wptStatus);
- WDI_ASSERT(0);
- }
-
- /*Clear control block. note that this will clear the "magic"
- which will inhibit all asynchronous callbacks*/
- WDI_CleanCB(&gWDICb);
-
- return wptStatus;
-
-}/*WDI_Close*/
-
-/**
- @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
- This will do most of the WDI stop & close
- operations without doing any handshake with Riva
-
- This will also make sure that the control transport
- will NOT be closed.
-
- This request will not be queued.
-
-
- WDI_Start must have been called.
-
- @param closeTransport: Close control channel if this is set
-
- @return Result of the function call
-*/
-WDI_Status
-WDI_Shutdown
-(
- wpt_boolean closeTransport
-)
-{
- WDI_EventInfoType wdiEventData;
- wpt_status wptStatus;
- int i = 0;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
- wdiEventData.pEventData = NULL;
- wdiEventData.uEventDataSize = 0;
-
- /* Shutdown will not be queued, if the state is busy timer will be
- * stopped & this message will be processed.*/
- wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
- if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "%s: Failed to process shutdown event", __func__);
- }
- /* Destroy the Set Power State event */
- wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
- if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "WDI Close failed to destroy an event");
-
- WDI_ASSERT(0);
- }
- /*------------------------------------------------------------------------
- Closes the Data Path Utility Module
- ------------------------------------------------------------------------*/
- if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "WDI Init failed to close the DP Util Module");
-
- WDI_ASSERT(0);
- }
- if ( closeTransport )
- {
- /* Close control transport, called from module unload */
- WCTS_CloseTransport(gWDICb.wctsHandle);
- }
- else
- {
- /* Riva is crashed then SMD is already closed so cleaning all
- the pending messages in the transport queue */
- WCTS_ClearPendingQueue(gWDICb.wctsHandle);
- }
- /*destroy the BSS sessions pending Queue */
- for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
- {
- wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
- }
-
- /* destroy the WDI Pending Assoc Id Request Queue*/
- wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
- /* destroy the WDI Pending Request Queue*/
- wpal_list_destroy(&(gWDICb.wptPendingQueue));
- /*destroy the response timer */
- wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
- /*destroy the SSR timer */
- wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
-
- /*invalidate the main synchro mutex */
- wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
- if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: Failed to delete mutex %d", __func__, wptStatus);
- WDI_ASSERT(0);
- }
- /* Free the global variables */
- wpalMemoryFree(gpHostWlanFeatCaps);
- wpalMemoryFree(gpFwWlanFeatCaps);
- gpHostWlanFeatCaps = NULL;
- gpFwWlanFeatCaps = NULL;
- /*Clear control block. note that this will clear the "magic"
- which will inhibit all asynchronous callbacks*/
- WDI_CleanCB(&gWDICb);
- return wptStatus;
-
-}/*WDI_Shutdown*/
-
-
-/*========================================================================
-
- SCAN APIs
-
-==========================================================================*/
-
-/**
- @brief WDI_InitScanReq will be called when the upper MAC wants
- the WLAN Device to get ready for a scan procedure. Upon
- the call of this API the WLAN DAL will pack and send a
- HAL Init Scan request message to the lower RIVA
- sub-system if DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_Start must have been called.
-
- @param wdiInitScanParams: the init scan parameters as specified
- by the Device Interface
-
- wdiInitScanRspCb: callback for passing back the response
- of the init scan operation received from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_Start
- @return Result of the function call
-*/
-WDI_Status
-WDI_InitScanReq
-(
- WDI_InitScanReqParamsType* pwdiInitScanParams,
- WDI_InitScanRspCb wdiInitScanRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
- wdiEventData.pEventData = pwdiInitScanParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
- wdiEventData.pCBfnc = wdiInitScanRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_InitScanReq*/
-
-/**
- @brief WDI_StartScanReq will be called when the upper MAC
- wishes to change the Scan channel on the WLAN Device.
- Upon the call of this API the WLAN DAL will pack and
- send a HAL Start Scan request message to the lower RIVA
- sub-system if DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_InitScanReq must have been called.
-
- @param wdiStartScanParams: the start scan parameters as
- specified by the Device Interface
-
- wdiStartScanRspCb: callback for passing back the
- response of the start scan operation received from the
- device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_InitScanReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_StartScanReq
-(
- WDI_StartScanReqParamsType* pwdiStartScanParams,
- WDI_StartScanRspCb wdiStartScanRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
- wdiEventData.pEventData = pwdiStartScanParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
- wdiEventData.pCBfnc = wdiStartScanRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_StartScanReq*/
-
-
-/**
- @brief WDI_EndScanReq will be called when the upper MAC is
- wants to end scanning for a particular channel that it
- had set before by calling Scan Start on the WLAN Device.
- Upon the call of this API the WLAN DAL will pack and
- send a HAL End Scan request message to the lower RIVA
- sub-system if DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_StartScanReq must have been called.
-
- @param wdiEndScanParams: the end scan parameters as specified
- by the Device Interface
-
- wdiEndScanRspCb: callback for passing back the response
- of the end scan operation received from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_StartScanReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_EndScanReq
-(
- WDI_EndScanReqParamsType* pwdiEndScanParams,
- WDI_EndScanRspCb wdiEndScanRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
- wdiEventData.pEventData = pwdiEndScanParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
- wdiEventData.pCBfnc = wdiEndScanRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_EndScanReq*/
-
-
-/**
- @brief WDI_FinishScanReq will be called when the upper MAC has
- completed the scan process on the WLAN Device. Upon the
- call of this API the WLAN DAL will pack and send a HAL
- Finish Scan Request request message to the lower RIVA
- sub-system if DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_InitScanReq must have been called.
-
- @param wdiFinishScanParams: the finish scan parameters as
- specified by the Device Interface
-
- wdiFinishScanRspCb: callback for passing back the
- response of the finish scan operation received from the
- device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_InitScanReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_FinishScanReq
-(
- WDI_FinishScanReqParamsType* pwdiFinishScanParams,
- WDI_FinishScanRspCb wdiFinishScanRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
- wdiEventData.pEventData = pwdiFinishScanParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
- wdiEventData.pCBfnc = wdiFinishScanRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_FinishScanReq*/
-
-/*========================================================================
-
- ASSOCIATION APIs
-
-==========================================================================*/
-
-/**
- @brief WDI_JoinReq will be called when the upper MAC is ready
- to start an association procedure to a BSS. Upon the
- call of this API the WLAN DAL will pack and send a HAL
- Join request message to the lower RIVA sub-system if
- DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_Start must have been called.
-
- @param wdiJoinParams: the join parameters as specified by
- the Device Interface
-
- wdiJoinRspCb: callback for passing back the response of
- the join operation received from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_Start
- @return Result of the function call
-*/
-WDI_Status
-WDI_JoinReq
-(
- WDI_JoinReqParamsType* pwdiJoinParams,
- WDI_JoinRspCb wdiJoinRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_JOIN_REQ;
- wdiEventData.pEventData = pwdiJoinParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
- wdiEventData.pCBfnc = wdiJoinRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_JoinReq*/
-
-/**
- @brief WDI_ConfigBSSReq will be called when the upper MAC
- wishes to configure the newly acquired or in process of
- being acquired BSS to the HW . Upon the call of this API
- the WLAN DAL will pack and send a HAL Config BSS request
- message to the lower RIVA sub-system if DAL is in state
- STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_JoinReq must have been called.
-
- @param wdiConfigBSSParams: the config BSS parameters as
- specified by the Device Interface
-
- wdiConfigBSSRspCb: callback for passing back the
- response of the config BSS operation received from the
- device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_JoinReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_ConfigBSSReq
-(
- WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
- WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
- wdiEventData.pEventData = pwdiConfigBSSParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
- wdiEventData.pCBfnc = wdiConfigBSSRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_ConfigBSSReq*/
-
-/**
- @brief WDI_DelBSSReq will be called when the upper MAC is
- disassociating from the BSS and wishes to notify HW.
- Upon the call of this API the WLAN DAL will pack and
- send a HAL Del BSS request message to the lower RIVA
- sub-system if DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
-
- @param wdiDelBSSParams: the del BSS parameters as specified by
- the Device Interface
-
- wdiDelBSSRspCb: callback for passing back the response
- of the del bss operation received from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_ConfigBSSReq, WDI_PostAssocReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_DelBSSReq
-(
- WDI_DelBSSReqParamsType* pwdiDelBSSParams,
- WDI_DelBSSRspCb wdiDelBSSRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
- wdiEventData.pEventData = pwdiDelBSSParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
- wdiEventData.pCBfnc = wdiDelBSSRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_DelBSSReq*/
-
-/**
- @brief WDI_PostAssocReq will be called when the upper MAC has
- associated to a BSS and wishes to configure HW for
- associated state. Upon the call of this API the WLAN DAL
- will pack and send a HAL Post Assoc request message to
- the lower RIVA sub-system if DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_JoinReq must have been called.
-
- @param wdiPostAssocReqParams: the assoc parameters as specified
- by the Device Interface
-
- wdiPostAssocRspCb: callback for passing back the
- response of the post assoc operation received from the
- device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_JoinReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_PostAssocReq
-(
- WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
- WDI_PostAssocRspCb wdiPostAssocRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
- wdiEventData.pEventData = pwdiPostAssocReqParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
- wdiEventData.pCBfnc = wdiPostAssocRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_PostAssocReq*/
-
-/**
- @brief WDI_DelSTAReq will be called when the upper MAC when an
- association with another STA has ended and the station
- must be deleted from HW. Upon the call of this API the
- WLAN DAL will pack and send a HAL Del STA request
- message to the lower RIVA sub-system if DAL is in state
- STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_PostAssocReq must have been called.
-
- @param wdiDelSTAParams: the Del STA parameters as specified by
- the Device Interface
-
- wdiDelSTARspCb: callback for passing back the response
- of the del STA operation received from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_PostAssocReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_DelSTAReq
-(
- WDI_DelSTAReqParamsType* pwdiDelSTAParams,
- WDI_DelSTARspCb wdiDelSTARspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
- wdiEventData.pEventData = pwdiDelSTAParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
- wdiEventData.pCBfnc = wdiDelSTARspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_DelSTAReq*/
-
-/*========================================================================
-
- SECURITY APIs
-
-==========================================================================*/
-
-/**
- @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
- install a BSS encryption key on the HW. Upon the call of this
- API the WLAN DAL will pack and send a Set BSS Key request
- message to the lower RIVA sub-system if DAL is in state
- STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_PostAssocReq must have been called.
-
- @param wdiSetBSSKeyParams: the BSS Key set parameters as
- specified by the Device Interface
-
- wdiSetBSSKeyRspCb: callback for passing back the
- response of the set BSS Key operation received from the
- device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_PostAssocReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_SetBSSKeyReq
-(
- WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
- WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
- wdiEventData.pEventData = pwdiSetBSSKeyParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
- wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_SetBSSKeyReq*/
-
-/**
- @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
- uninstall a BSS key from HW. Upon the call of this API the
- WLAN DAL will pack and send a HAL Remove BSS Key request
- message to the lower RIVA sub-system if DAL is in state
- STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_SetBSSKeyReq must have been called.
-
- @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
- specified by the Device Interface
-
- wdiRemoveBSSKeyRspCb: callback for passing back the
- response of the remove BSS key operation received from
- the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_SetBSSKeyReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_RemoveBSSKeyReq
-(
- WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
- WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
- wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
- wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_RemoveBSSKeyReq*/
-
-
-/**
- @brief WDI_SetSTAKeyReq will be called when the upper MAC is
- ready to install a STA(ast) encryption key in HW. Upon
- the call of this API the WLAN DAL will pack and send a
- HAL Set STA Key request message to the lower RIVA
- sub-system if DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_PostAssocReq must have been called.
-
- @param wdiSetSTAKeyParams: the set STA key parameters as
- specified by the Device Interface
-
- wdiSetSTAKeyRspCb: callback for passing back the
- response of the set STA key operation received from the
- device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_PostAssocReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_SetSTAKeyReq
-(
- WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
- WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
- wdiEventData.pEventData = pwdiSetSTAKeyParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
- wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_SetSTAKeyReq*/
-
-
-/**
- @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
- wants to uninstall a previously set STA key in HW. Upon
- the call of this API the WLAN DAL will pack and send a
- HAL Remove STA Key request message to the lower RIVA
- sub-system if DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_SetSTAKeyReq must have been called.
-
- @param wdiRemoveSTAKeyParams: the remove STA key parameters as
- specified by the Device Interface
-
- wdiRemoveSTAKeyRspCb: callback for passing back the
- response of the remove STA key operation received from
- the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_SetSTAKeyReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_RemoveSTAKeyReq
-(
- WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
- WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
- wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
- wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_RemoveSTAKeyReq*/
-
-
-/**
- @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
- wants to install a STA Bcast encryption key on the HW.
- Upon the call of this API the WLAN DAL will pack and
- send a HAL Start request message to the lower RIVA
- sub-system if DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_PostAssocReq must have been called.
-
- @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
- specified by the Device Interface
-
- wdiSetSTABcastKeyRspCb: callback for passing back the
- response of the set BSS Key operation received from the
- device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_PostAssocReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_SetSTABcastKeyReq
-(
- WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
- WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
- void* pUserData
-)
-
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
- wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
- wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_SetSTABcastKeyReq*/
-
-/**
- @brief WDI_RemoveSTABcastKeyReq will be called when the upper
- MAC wants to uninstall a STA Bcast key from HW. Upon the
- call of this API the WLAN DAL will pack and send a HAL
- Remove STA Bcast Key request message to the lower RIVA
- sub-system if DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_SetSTABcastKeyReq must have been called.
-
- @param pwdiRemoveSTABcastKeyParams: the remove BSS key
- parameters as specified by the Device
- Interface
-
- wdiRemoveSTABcastKeyRspCb: callback for passing back the
- response of the remove STA Bcast key operation received
- from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_SetSTABcastKeyReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_RemoveSTABcastKeyReq
-(
- WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
- WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
- wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
- wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_RemoveSTABcastKeyReq*/
-
-/**
- @brief WDI_SetMaxTxPowerReq will be called when the upper
- MAC wants to set Max Tx Power to HW. Upon the
- call of this API the WLAN DAL will pack and send a HAL
- Remove STA Bcast Key request message to the lower RIVA
- sub-system if DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_SetSTABcastKeyReq must have been called.
-
- @param pwdiRemoveSTABcastKeyParams: the remove BSS key
- parameters as specified by the Device
- Interface
-
- wdiRemoveSTABcastKeyRspCb: callback for passing back the
- response of the remove STA Bcast key operation received
- from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_SetMaxTxPowerReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_SetMaxTxPowerReq
-(
- WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
- WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
- wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
- wdiEventData.pCBfnc = wdiReqStatusCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-}
-
-/**
- @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
- MAC wants to set Max Tx Power to HW for specific band.
-
- @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
-
- wdiReqStatusCb: callback for passing back the
- response msg from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_SetMaxTxPowerPerBandReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_SetMaxTxPowerPerBandReq
-(
- WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
- WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
- wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
- wdiEventData.pCBfnc = wdiReqStatusCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-}
-
-/**
- @brief WDI_SetTxPowerReq will be called when the upper
- MAC wants to set Tx Power to HW.
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
-
- @param pwdiSetTxPowerParams: set TS Power parameters
- BSSID and target TX Power with dbm included
-
- wdiReqStatusCb: callback for passing back the response
-
- pUserData: user data will be passed back with the
- callback
-
- @return Result of the function call
-*/
-WDI_Status
-WDI_SetTxPowerReq
-(
- WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
- WDA_SetTxPowerRspCb wdiReqStatusCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
- wdiEventData.pEventData = pwdiSetTxPowerParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
- wdiEventData.pCBfnc = wdiReqStatusCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-}
-
-#ifdef FEATURE_WLAN_ESE
-WDI_Status
-WDI_TSMStatsReq
-(
- WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
- WDI_TsmRspCb wdiReqStatusCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
- wdiEventData.pEventData = pwdiTsmReqParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
- wdiEventData.pCBfnc = wdiReqStatusCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}
-#endif
-
-/*========================================================================
-
- QoS and BA APIs
-
-==========================================================================*/
-
-/**
- @brief WDI_AddTSReq will be called when the upper MAC to inform
- the device of a successful add TSpec negotiation. HW
- needs to receive the TSpec Info from the UMAC in order
- to configure properly the QoS data traffic. Upon the
- call of this API the WLAN DAL will pack and send a HAL
- Add TS request message to the lower RIVA sub-system if
- DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_PostAssocReq must have been called.
-
- @param wdiAddTsReqParams: the add TS parameters as specified by
- the Device Interface
-
- wdiAddTsRspCb: callback for passing back the response of
- the add TS operation received from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_PostAssocReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_AddTSReq
-(
- WDI_AddTSReqParamsType* pwdiAddTsReqParams,
- WDI_AddTsRspCb wdiAddTsRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
- wdiEventData.pEventData = pwdiAddTsReqParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
- wdiEventData.pCBfnc = wdiAddTsRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_AddTSReq*/
-
-
-
-/**
- @brief WDI_DelTSReq will be called when the upper MAC has ended
- admission on a specific AC. This is to inform HW that
- QoS traffic parameters must be rest. Upon the call of
- this API the WLAN DAL will pack and send a HAL Del TS
- request message to the lower RIVA sub-system if DAL is
- in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_AddTSReq must have been called.
-
- @param wdiDelTsReqParams: the del TS parameters as specified by
- the Device Interface
-
- wdiDelTsRspCb: callback for passing back the response of
- the del TS operation received from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_AddTSReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_DelTSReq
-(
- WDI_DelTSReqParamsType* pwdiDelTsReqParams,
- WDI_DelTsRspCb wdiDelTsRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
- wdiEventData.pEventData = pwdiDelTsReqParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
- wdiEventData.pCBfnc = wdiDelTsRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_DelTSReq*/
-
-
-
-/**
- @brief WDI_UpdateEDCAParams will be called when the upper MAC
- wishes to update the EDCA parameters used by HW for QoS
- data traffic. Upon the call of this API the WLAN DAL
- will pack and send a HAL Update EDCA Params request
- message to the lower RIVA sub-system if DAL is in state
- STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_PostAssocReq must have been called.
-
- @param wdiUpdateEDCAParams: the start parameters as specified
- by the Device Interface
-
- wdiUpdateEDCAParamsRspCb: callback for passing back the
- response of the start operation received from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_PostAssocReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_UpdateEDCAParams
-(
- WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
- WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
- wdiEventData.pEventData = pwdiUpdateEDCAParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
- wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_UpdateEDCAParams*/
-
-
-/**
- @brief WDI_AddBASessionReq will be called when the upper MAC has setup
- successfully a BA session and needs to notify the HW for
- the appropriate settings to take place. Upon the call of
- this API the WLAN DAL will pack and send a HAL Add BA
- request message to the lower RIVA sub-system if DAL is
- in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_PostAssocReq must have been called.
-
- @param wdiAddBAReqParams: the add BA parameters as specified by
- the Device Interface
-
- wdiAddBARspCb: callback for passing back the response of
- the add BA operation received from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_PostAssocReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_AddBASessionReq
-(
- WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
- WDI_AddBASessionRspCb wdiAddBASessionRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
- wdiEventData.pEventData = pwdiAddBASessionReqParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
- wdiEventData.pCBfnc = wdiAddBASessionRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_AddBASessionReq*/
-
-/**
- @brief WDI_DelBAReq will be called when the upper MAC wants to
- inform HW that it has deleted a previously created BA
- session. Upon the call of this API the WLAN DAL will
- pack and send a HAL Del BA request message to the lower
- RIVA sub-system if DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_AddBAReq must have been called.
-
- @param wdiDelBAReqParams: the del BA parameters as specified by
- the Device Interface
-
- wdiDelBARspCb: callback for passing back the response of
- the del BA operation received from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_AddBAReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_DelBAReq
-(
- WDI_DelBAReqParamsType* pwdiDelBAReqParams,
- WDI_DelBARspCb wdiDelBARspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
- wdiEventData.pEventData = pwdiDelBAReqParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
- wdiEventData.pCBfnc = wdiDelBARspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_DelBAReq*/
-
-/*========================================================================
-
- Power Save APIs
-
-==========================================================================*/
-
-/**
- @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
- wants to set the power save related configurations of
- the WLAN Device. Upon the call of this API the WLAN DAL
- will pack and send a HAL Update CFG request message to
- the lower RIVA sub-system if DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_Start must have been called.
-
- @param pwdiPowerSaveCfg: the power save cfg parameters as
- specified by the Device Interface
-
- wdiSetPwrSaveCfgCb: callback for passing back the
- response of the set power save cfg operation received
- from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_Start
- @return Result of the function call
-*/
-WDI_Status
-WDI_SetPwrSaveCfgReq
-(
- WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
- WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
- wdiEventData.pEventData = pwdiPowerSaveCfg;
- wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
- wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_SetPwrSaveCfgReq*/
-
-/**
- @brief WDI_EnterImpsReq will be called when the upper MAC to
- request the device to get into IMPS power state. Upon
- the call of this API the WLAN DAL will send a HAL Enter
- IMPS request message to the lower RIVA sub-system if DAL
- is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
-
- @param wdiEnterImpsRspCb: callback for passing back the
- response of the Enter IMPS operation received from the
- device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_Start
- @return Result of the function call
-*/
-WDI_Status
-WDI_EnterImpsReq
-(
- WDI_EnterImpsRspCb wdiEnterImpsRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
- wdiEventData.pEventData = NULL;
- wdiEventData.uEventDataSize = 0;
- wdiEventData.pCBfnc = wdiEnterImpsRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_EnterImpsReq*/
-
-/**
- @brief WDI_ExitImpsReq will be called when the upper MAC to
- request the device to get out of IMPS power state. Upon
- the call of this API the WLAN DAL will send a HAL Exit
- IMPS request message to the lower RIVA sub-system if DAL
- is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
-
-
- @param wdiExitImpsRspCb: callback for passing back the response
- of the Exit IMPS operation received from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_Start
- @return Result of the function call
-*/
-WDI_Status
-WDI_ExitImpsReq
-(
- WDI_ExitImpsRspCb wdiExitImpsRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
- wdiEventData.pEventData = NULL;
- wdiEventData.uEventDataSize = 0;
- wdiEventData.pCBfnc = wdiExitImpsRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_ExitImpsReq*/
-
-/**
- @brief WDI_EnterBmpsReq will be called when the upper MAC to
- request the device to get into BMPS power state. Upon
- the call of this API the WLAN DAL will pack and send a
- HAL Enter BMPS request message to the lower RIVA
- sub-system if DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_PostAssocReq must have been called.
-
- @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
- specified by the Device Interface
-
- wdiEnterBmpsRspCb: callback for passing back the
- response of the Enter BMPS operation received from the
- device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_PostAssocReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_EnterBmpsReq
-(
- WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
- WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
- wdiEventData.pEventData = pwdiEnterBmpsReqParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
- wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_EnterBmpsReq*/
-
-/**
- @brief WDI_ExitBmpsReq will be called when the upper MAC to
- request the device to get out of BMPS power state. Upon
- the call of this API the WLAN DAL will pack and send a
- HAL Exit BMPS request message to the lower RIVA
- sub-system if DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_PostAssocReq must have been called.
-
- @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
- specified by the Device Interface
-
- wdiExitBmpsRspCb: callback for passing back the response
- of the Exit BMPS operation received from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_PostAssocReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_ExitBmpsReq
-(
- WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
- WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
- wdiEventData.pEventData = pwdiExitBmpsReqParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
- wdiEventData.pCBfnc = wdiExitBmpsRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_ExitBmpsReq*/
-
-/**
- @brief WDI_EnterUapsdReq will be called when the upper MAC to
- request the device to get into UAPSD power state. Upon
- the call of this API the WLAN DAL will pack and send a
- HAL Enter UAPSD request message to the lower RIVA
- sub-system if DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_PostAssocReq must have been called.
- WDI_SetUapsdAcParamsReq must have been called.
-
- @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
- specified by the Device Interface
-
- wdiEnterUapsdRspCb: callback for passing back the
- response of the Enter UAPSD operation received from the
- device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_EnterUapsdReq
-(
- WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
- WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
- wdiEventData.pEventData = pwdiEnterUapsdReqParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
- wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_EnterUapsdReq*/
-
-/**
- @brief WDI_ExitUapsdReq will be called when the upper MAC to
- request the device to get out of UAPSD power state. Upon
- the call of this API the WLAN DAL will send a HAL Exit
- UAPSD request message to the lower RIVA sub-system if
- DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_PostAssocReq must have been called.
-
- @param wdiExitUapsdRspCb: callback for passing back the
- response of the Exit UAPSD operation received from the
- device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_PostAssocReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_ExitUapsdReq
-(
- WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
- WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
- wdiEventData.pEventData = pwdiExitUapsdReqParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
- wdiEventData.pCBfnc = wdiExitUapsdRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_ExitUapsdReq*/
-
-/**
- @brief WDI_UpdateUapsdParamsReq will be called when the upper
- MAC wants to set the UAPSD related configurations
- of an associated STA (while acting as an AP) to the WLAN
- Device. Upon the call of this API the WLAN DAL will pack
- and send a HAL Update UAPSD params request message to
- the lower RIVA sub-system if DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_ConfigBSSReq must have been called.
-
- @param pwdiUpdateUapsdReqParams: the UAPSD parameters
- as specified by the Device Interface
-
- wdiUpdateUapsdParamsCb: callback for passing back the
- response of the update UAPSD params operation received
- from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_ConfigBSSReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_UpdateUapsdParamsReq
-(
- WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
- WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
- wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
- wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_UpdateUapsdParamsReq*/
-
-/**
- @brief WDI_SetUapsdAcParamsReq will be called when the upper
- MAC wants to set the UAPSD related configurations before
- requesting for enter UAPSD power state to the WLAN
- Device. Upon the call of this API the WLAN DAL will pack
- and send a HAL Set UAPSD params request message to
- the lower RIVA sub-system if DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_PostAssocReq must have been called.
-
- @param pwdiUapsdInfo: the UAPSD parameters as specified by
- the Device Interface
-
- wdiSetUapsdAcParamsCb: callback for passing back the
- response of the set UAPSD params operation received from
- the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_PostAssocReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_SetUapsdAcParamsReq
-(
- WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
- WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
- wdiEventData.pEventData = pwdiUapsdInfo;
- wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
- wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_SetUapsdAcParamsReq*/
-
-/**
- @brief WDI_ConfigureRxpFilterReq will be called when the upper
- MAC wants to set/reset the RXP filters for received pkts
- (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
- and send a HAL configure RXP filter request message to
- the lower RIVA sub-system.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
-
- @param pwdiConfigureRxpFilterReqParams: the RXP
- filter as specified by the Device
- Interface
-
- wdiConfigureRxpFilterCb: callback for passing back the
- response of the configure RXP filter operation received
- from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @return Result of the function call
-*/
-WDI_Status
-WDI_ConfigureRxpFilterReq
-(
- WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
- WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
- wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
- wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-}/*WDI_ConfigureRxpFilterReq*/
-
-/**
- @brief WDI_SetBeaconFilterReq will be called when the upper MAC
- wants to set the beacon filters while in power save.
- Upon the call of this API the WLAN DAL will pack and
- send a Beacon filter request message to the
- lower RIVA sub-system.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
-
- @param pwdiBeaconFilterReqParams: the beacon
- filter as specified by the Device
- Interface
-
- wdiBeaconFilterCb: callback for passing back the
- response of the set beacon filter operation received
- from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @return Result of the function call
-*/
-WDI_Status
-WDI_SetBeaconFilterReq
-(
- WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
- WDI_SetBeaconFilterCb wdiBeaconFilterCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
- wdiEventData.pEventData = pwdiBeaconFilterReqParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
- wdiEventData.pCBfnc = wdiBeaconFilterCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-}/*WDI_SetBeaconFilterReq*/
-
-/**
- @brief WDI_RemBeaconFilterReq will be called when the upper MAC
- wants to remove the beacon filter for particular IE
- while in power save. Upon the call of this API the WLAN
- DAL will pack and send a remove Beacon filter request
- message to the lower RIVA sub-system.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
-
- @param pwdiBeaconFilterReqParams: the beacon
- filter as specified by the Device
- Interface
-
- wdiBeaconFilterCb: callback for passing back the
- response of the remove beacon filter operation received
- from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @return Result of the function call
-*/
-WDI_Status
-WDI_RemBeaconFilterReq
-(
- WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
- WDI_RemBeaconFilterCb wdiBeaconFilterCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
- wdiEventData.pEventData = pwdiBeaconFilterReqParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
- wdiEventData.pCBfnc = wdiBeaconFilterCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-}/*WDI_RemBeaconFilterReq*/
-
-/**
- @brief WDI_SetRSSIThresholdsReq will be called when the upper
- MAC wants to set the RSSI thresholds related
- configurations while in power save. Upon the call of
- this API the WLAN DAL will pack and send a HAL Set RSSI
- thresholds request message to the lower RIVA
- sub-system if DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_PostAssocReq must have been called.
-
- @param pwdiUapsdInfo: the UAPSD parameters as specified by
- the Device Interface
-
- wdiSetUapsdAcParamsCb: callback for passing back the
- response of the set UAPSD params operation received from
- the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_PostAssocReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_SetRSSIThresholdsReq
-(
- WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
- WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
- wdiEventData.pEventData = pwdiRSSIThresholdsParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
- wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-}/* WDI_SetRSSIThresholdsReq*/
-
-/**
- @brief WDI_HostOffloadReq will be called when the upper MAC
- wants to set the filter to minimize unnecessary host
- wakeup due to broadcast traffic while in power save.
- Upon the call of this API the WLAN DAL will pack and
- send a HAL host offload request message to the
- lower RIVA sub-system if DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_PostAssocReq must have been called.
-
- @param pwdiHostOffloadParams: the host offload as specified
- by the Device Interface
-
- wdiHostOffloadCb: callback for passing back the response
- of the host offload operation received from the
- device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_PostAssocReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_HostOffloadReq
-(
- WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
- WDI_HostOffloadCb wdiHostOffloadCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
- wdiEventData.pEventData = pwdiHostOffloadParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
- wdiEventData.pCBfnc = wdiHostOffloadCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-}/*WDI_HostOffloadReq*/
-
-/**
- @brief WDI_KeepAliveReq will be called when the upper MAC
- wants to set the filter to send NULL or unsolicited ARP responses
- and minimize unnecessary host wakeups due to while in power save.
- Upon the call of this API the WLAN DAL will pack and
- send a HAL Keep Alive request message to the
- lower RIVA sub-system if DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_PostAssocReq must have been called.
-
- @param pwdiKeepAliveParams: the Keep Alive as specified
- by the Device Interface
-
- wdiKeepAliveCb: callback for passing back the response
- of the Keep Alive operation received from the
- device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_PostAssocReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_KeepAliveReq
-(
- WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
- WDI_KeepAliveCb wdiKeepAliveCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI_KeepAliveReq: WDI API call before module "
- "is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
- wdiEventData.pEventData = pwdiKeepAliveParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
- wdiEventData.pCBfnc = wdiKeepAliveCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-}/*WDI_KeepAliveReq*/
-
-/**
- @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
- wants to set the Wowl Bcast ptrn to minimize unnecessary
- host wakeup due to broadcast traffic while in power
- save. Upon the call of this API the WLAN DAL will pack
- and send a HAL Wowl Bcast ptrn request message to the
- lower RIVA sub-system if DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_PostAssocReq must have been called.
-
- @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
- specified by the Device Interface
-
- wdiWowlAddBcPtrnCb: callback for passing back the
- response of the add Wowl bcast ptrn operation received
- from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_PostAssocReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_WowlAddBcPtrnReq
-(
- WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
- WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
- wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
- wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-}/*WDI_WowlAddBcPtrnReq*/
-
-/**
- @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
- wants to clear the Wowl Bcast ptrn. Upon the call of
- this API the WLAN DAL will pack and send a HAL delete
- Wowl Bcast ptrn request message to the lower RIVA
- sub-system if DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_WowlAddBcPtrnReq must have been called.
-
- @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
- specified by the Device Interface
-
- wdiWowlDelBcPtrnCb: callback for passing back the
- response of the del Wowl bcast ptrn operation received
- from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_WowlAddBcPtrnReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_WowlDelBcPtrnReq
-(
- WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
- WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
- wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
- wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-}/*WDI_WowlDelBcPtrnReq*/
-
-/**
- @brief WDI_WowlEnterReq will be called when the upper MAC
- wants to enter the Wowl state to minimize unnecessary
- host wakeup while in power save. Upon the call of this
- API the WLAN DAL will pack and send a HAL Wowl enter
- request message to the lower RIVA sub-system if DAL is
- in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_PostAssocReq must have been called.
-
- @param pwdiWowlEnterReqParams: the Wowl enter info as
- specified by the Device Interface
-
- wdiWowlEnterReqCb: callback for passing back the
- response of the enter Wowl operation received from the
- device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_PostAssocReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_WowlEnterReq
-(
- WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
- WDI_WowlEnterReqCb wdiWowlEnterCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
- wdiEventData.pEventData = pwdiWowlEnterParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
- wdiEventData.pCBfnc = wdiWowlEnterCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-}/*WDI_WowlEnterReq*/
-
-/**
- @brief WDI_WowlExitReq will be called when the upper MAC
- wants to exit the Wowl state. Upon the call of this API
- the WLAN DAL will pack and send a HAL Wowl exit request
- message to the lower RIVA sub-system if DAL is in state
- STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_WowlEnterReq must have been called.
-
- @param pwdiWowlExitReqParams: the Wowl exit info as
- specified by the Device Interface
-
- wdiWowlExitReqCb: callback for passing back the response
- of the exit Wowl operation received from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_WowlEnterReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_WowlExitReq
-(
- WDI_WowlExitReqParamsType* pwdiWowlExitParams,
- WDI_WowlExitReqCb wdiWowlExitCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
- wdiEventData.pEventData = pwdiWowlExitParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
- wdiEventData.pCBfnc = wdiWowlExitCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-}/*WDI_WowlExitReq*/
-
-/**
- @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
- the upper MAC wants to dynamically adjusts the listen
- interval based on the WLAN/MSM activity. Upon the call
- of this API the WLAN DAL will pack and send a HAL
- configure Apps Cpu Wakeup State request message to the
- lower RIVA sub-system.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
-
- @param pwdiConfigureAppsCpuWakeupStateReqParams: the
- Apps Cpu Wakeup State as specified by the
- Device Interface
-
- wdiConfigureAppsCpuWakeupStateCb: callback for passing
- back the response of the configure Apps Cpu Wakeup State
- operation received from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @return Result of the function call
-*/
-WDI_Status
-WDI_ConfigureAppsCpuWakeupStateReq
-(
- WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
- WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
- wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
- wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-}/*WDI_ConfigureAppsCpuWakeupStateReq*/
-/**
- @brief WDI_FlushAcReq will be called when the upper MAC wants
- to to perform a flush operation on a given AC. Upon the
- call of this API the WLAN DAL will pack and send a HAL
- Flush AC request message to the lower RIVA sub-system if
- DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_AddBAReq must have been called.
-
- @param pwdiFlushAcReqParams: the Flush AC parameters as
- specified by the Device Interface
-
- wdiFlushAcRspCb: callback for passing back the response
- of the Flush AC operation received from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_AddBAReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_FlushAcReq
-(
- WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
- WDI_FlushAcRspCb wdiFlushAcRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
- wdiEventData.pEventData = pwdiFlushAcReqParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
- wdiEventData.pCBfnc = wdiFlushAcRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_FlushAcReq*/
-
-/**
- @brief WDI_BtAmpEventReq will be called when the upper MAC
- wants to notify the lower mac on a BT AMP event. This is
- to inform BTC-SLM that some BT AMP event occurred. Upon
- the call of this API the WLAN DAL will pack and send a
- HAL BT AMP event request message to the lower RIVA
- sub-system if DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
-
- @param wdiBtAmpEventReqParams: the BT AMP event parameters as
- specified by the Device Interface
-
- wdiBtAmpEventRspCb: callback for passing back the
- response of the BT AMP event operation received from the
- device
-
- pUserData: user data will be passed back with the
- callback
-
- @return Result of the function call
-*/
-WDI_Status
-WDI_BtAmpEventReq
-(
- WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
- WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
- wdiEventData.pEventData = pwdiBtAmpEventReqParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
- wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_BtAmpEventReq*/
-
-#ifdef FEATURE_OEM_DATA_SUPPORT
-/**
- @brief WDI_Start Oem Data Req will be called when the upper MAC
- wants to notify the lower mac on a oem data Req event.Upon
- the call of this API the WLAN DAL will pack and send a
- HAL OEM Data Req event request message to the lower RIVA
- sub-system if DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
-
-
- @param pwdiOemDataReqParams: the Oem Data Req as
- specified by the Device Interface
-
- wdiStartOemDataRspCb: callback for passing back the
- response of the Oem Data Req received from the
- device
-
- pUserData: user data will be passed back with the
- callback
-
- @return Result of the function call
-*/
-WDI_Status
-WDI_StartOemDataReq
-(
- WDI_oemDataReqParamsType* pwdiOemDataReqParams,
- WDI_oemDataRspCb wdiOemDataRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
- wdiEventData.pEventData = pwdiOemDataReqParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
- wdiEventData.pCBfnc = wdiOemDataRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-
-}
-
-#endif
-
-
-/*========================================================================
-
- CONTROL APIs
-
-==========================================================================*/
-/**
- @brief WDI_SwitchChReq will be called when the upper MAC wants
- the WLAN HW to change the current channel of operation.
- Upon the call of this API the WLAN DAL will pack and
- send a HAL Start request message to the lower RIVA
- sub-system if DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_Start must have been called.
-
- @param wdiSwitchChReqParams: the switch ch parameters as
- specified by the Device Interface
-
- wdiSwitchChRspCb: callback for passing back the response
- of the switch ch operation received from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_Start
- @return Result of the function call
-*/
-WDI_Status
-WDI_SwitchChReq
-(
- WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
- WDI_SwitchChRspCb wdiSwitchChRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
- wdiEventData.pEventData = pwdiSwitchChReqParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
- wdiEventData.pCBfnc = wdiSwitchChRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_SwitchChReq*/
-
-
-/**
- @brief WDI_ConfigSTAReq will be called when the upper MAC
- wishes to add or update a STA in HW. Upon the call of
- this API the WLAN DAL will pack and send a HAL Start
- message request message to the lower RIVA sub-system if
- DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_Start must have been called.
-
- @param wdiConfigSTAReqParams: the config STA parameters as
- specified by the Device Interface
-
- wdiConfigSTARspCb: callback for passing back the
- response of the config STA operation received from the
- device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_Start
- @return Result of the function call
-*/
-WDI_Status
-WDI_ConfigSTAReq
-(
- WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
- WDI_ConfigSTARspCb wdiConfigSTARspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
- wdiEventData.pEventData = pwdiConfigSTAReqParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
- wdiEventData.pCBfnc = wdiConfigSTARspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_ConfigSTAReq*/
-
-/**
- @brief WDI_SetLinkStateReq will be called when the upper MAC
- wants to change the state of an ongoing link. Upon the
- call of this API the WLAN DAL will pack and send a HAL
- Start message request message to the lower RIVA
- sub-system if DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_JoinStartReq must have been called.
-
- @param wdiSetLinkStateReqParams: the set link state parameters
- as specified by the Device Interface
-
- wdiSetLinkStateRspCb: callback for passing back the
- response of the set link state operation received from
- the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_JoinStartReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_SetLinkStateReq
-(
- WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
- WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
- wdiEventData.pEventData = pwdiSetLinkStateReqParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
- wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_SetLinkStateReq*/
-
-
-/**
- @brief WDI_GetStatsReq will be called when the upper MAC wants
- to get statistics (MIB counters) from the device. Upon
- the call of this API the WLAN DAL will pack and send a
- HAL Start request message to the lower RIVA sub-system
- if DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_Start must have been called.
-
- @param wdiGetStatsReqParams: the stats parameters to get as
- specified by the Device Interface
-
- wdiGetStatsRspCb: callback for passing back the response
- of the get stats operation received from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_Start
- @return Result of the function call
-*/
-WDI_Status
-WDI_GetStatsReq
-(
- WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
- WDI_GetStatsRspCb wdiGetStatsRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
- wdiEventData.pEventData = pwdiGetStatsReqParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
- wdiEventData.pCBfnc = wdiGetStatsRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_GetStatsReq*/
-
-#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
-/**
- @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
- to get roam rssi from the device. Upon
- the call of this API the WLAN DAL will pack and send a
- HAL Start request message to the lower RIVA sub-system
- if DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_Start must have been called.
-
- @param wdiGetRoamRssiReqParams: the stats parameters to get as
- specified by the Device Interface
-
- wdiGetRoamRssiRspCb: callback for passing back the response
- of the get stats operation received from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_Start
- @return Result of the function call
-*/
-WDI_Status
-WDI_GetRoamRssiReq
-(
- WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
- WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
- wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
- wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_GetRoamRssiReq*/
-#endif
-
-
-/**
- @brief WDI_UpdateCfgReq will be called when the upper MAC when
- it wishes to change the configuration of the WLAN
- Device. Upon the call of this API the WLAN DAL will pack
- and send a HAL Update CFG request message to the lower
- RIVA sub-system if DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_Start must have been called.
-
- @param wdiUpdateCfgReqParams: the update cfg parameters as
- specified by the Device Interface
-
- wdiUpdateCfgsRspCb: callback for passing back the
- response of the update cfg operation received from the
- device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_Start
- @return Result of the function call
-*/
-WDI_Status
-WDI_UpdateCfgReq
-(
- WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
- WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
- wdiEventData.pEventData = pwdiUpdateCfgReqParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
- wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_UpdateCfgReq*/
-
-
-
-/**
- @brief WDI_AddBAReq will be called when the upper MAC has setup
- successfully a BA session and needs to notify the HW for
- the appropriate settings to take place. Upon the call of
- this API the WLAN DAL will pack and send a HAL Add BA
- request message to the lower RIVA sub-system if DAL is
- in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_PostAssocReq must have been called.
-
- @param wdiAddBAReqParams: the add BA parameters as specified by
- the Device Interface
-
- wdiAddBARspCb: callback for passing back the response of
- the add BA operation received from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_PostAssocReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_AddBAReq
-(
- WDI_AddBAReqParamsType* pwdiAddBAReqParams,
- WDI_AddBARspCb wdiAddBARspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
- wdiEventData.pEventData = pwdiAddBAReqParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
- wdiEventData.pCBfnc = wdiAddBARspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_AddBAReq*/
-
-
-/**
- @brief WDI_TriggerBAReq will be called when the upper MAC has setup
- successfully a BA session and needs to notify the HW for
- the appropriate settings to take place. Upon the call of
- this API the WLAN DAL will pack and send a HAL Add BA
- request message to the lower RIVA sub-system if DAL is
- in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_PostAssocReq must have been called.
-
- @param wdiAddBAReqParams: the add BA parameters as specified by
- the Device Interface
-
- wdiAddBARspCb: callback for passing back the response of
- the add BA operation received from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_PostAssocReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_TriggerBAReq
-(
- WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
- WDI_TriggerBARspCb wdiTriggerBARspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
- wdiEventData.pEventData = pwdiTriggerBAReqParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
- wdiEventData.pCBfnc = wdiTriggerBARspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_AddBAReq*/
-
-/**
- @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
- wishes to update any of the Beacon parameters used by HW.
- Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
- message to the lower RIVA sub-system if DAL is in state
- STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_PostAssocReq must have been called.
-
- @param wdiUpdateBeaconParams: the Beacon parameters as specified
- by the Device Interface
-
- wdiUpdateBeaconParamsRspCb: callback for passing back the
- response of the start operation received from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_PostAssocReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_UpdateBeaconParamsReq
-(
- WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
- WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
- wdiEventData.pEventData = pwdiUpdateBeaconParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
- wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_UpdateBeaconParamsReq*/
-
-/**
- @brief WDI_SendBeaconParamsReq will be called when the upper MAC
- wishes to update the Beacon template used by HW.
- Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
- message to the lower RIVA sub-system if DAL is in state
- STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_PostAssocReq must have been called.
-
- @param wdiSendBeaconParams: the Beacon parameters as specified
- by the Device Interface
-
- wdiSendBeaconParamsRspCb: callback for passing back the
- response of the start operation received from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_PostAssocReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_SendBeaconParamsReq
-(
- WDI_SendBeaconParamsType* pwdiSendBeaconParams,
- WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
- wdiEventData.pEventData = pwdiSendBeaconParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
- wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_SendBeaconParamsReq*/
-
-/**
- @brief WDI_UpdateProbeRspTemplateReq will be called when the
- upper MAC wants to update the probe response template to
- be transmitted as Soft AP
- Upon the call of this API the WLAN DAL will
- pack and send the probe rsp template message to the
- lower RIVA sub-system if DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
-
- @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
- specified by the Device Interface
-
- wdiSendBeaconParamsRspCb: callback for passing back the
- response of the Send Beacon Params operation received
- from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_AddBAReq
- @return Result of the function call
-*/
-
-WDI_Status
-WDI_UpdateProbeRspTemplateReq
-(
- WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
- WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
- wdiEventData.pEventData = pwdiUpdateProbeRspParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
- wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_UpdateProbeRspTemplateReq*/
-
-/**
- @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
- to the NV memory.
-
-
- @param wdiNvDownloadReqParams: the NV Download parameters as specified by
- the Device Interface
-
- wdiNvDownloadRspCb: callback for passing back the response of
- the NV Download operation received from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_PostAssocReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_NvDownloadReq
-(
- WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
- WDI_NvDownloadRspCb wdiNvDownloadRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
- wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
- wdiEventData.pCBfnc = wdiNvDownloadRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
-
-}/*WDI_NVDownloadReq*/
-
-/**
- @brief WDI_SetP2PGONOAReq will be called when the
- upper MAC wants to send Notice of Absence
- Upon the call of this API the WLAN DAL will
- pack and send the probe rsp template message to the
- lower RIVA sub-system if DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
-
- @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
- specified by the Device Interface
-
- wdiSendBeaconParamsRspCb: callback for passing back the
- response of the Send Beacon Params operation received
- from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_AddBAReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_SetP2PGONOAReq
-(
- WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
- WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
- wdiEventData.pEventData = pwdiP2PGONOAReqParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
- wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_SetP2PGONOAReq*/
-
-#ifdef FEATURE_WLAN_TDLS
-/**
- @brief WDI_SetTDLSLinkEstablishReq will be called when the
- upper MAC wants to send TDLS Link Establish Request Parameters
- Upon the call of this API the WLAN DAL will
- pack and send the TDLS Link Establish Request message to the
- lower RIVA sub-system if DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
-
- @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
- for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
-
- wdiTDLSLinkEstablishReqRspCb: callback for passing back the
- response of the TDLS Link Establish request received
- from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_SetTDLSLinkEstablishReq
-(
- WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
- WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
- wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
- wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_SetTDLSLinkEstablishReq*/
-#endif
-
-/**
- @brief WDI_AddSTASelfReq will be called when the
- UMAC wanted to add STA self while opening any new session
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
-
- @param pwdiAddSTASelfParams: the add sta self parameters as
- specified by the Device Interface
-
- pUserData: user data will be passed back with the
- callback
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_AddSTASelfReq
-(
- WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
- WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
- wdiEventData.pEventData = pwdiAddSTASelfReqParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
- wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_AddSTASelfReq*/
-
-
-#ifdef WLAN_FEATURE_VOWIFI_11R
-/**
- @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
- the device of a successful add TSpec negotiation. HW
- needs to receive the TSpec Info from the UMAC in order
- to configure properly the QoS data traffic. Upon the
- call of this API the WLAN DAL will pack and send a HAL
- Add TS request message to the lower RIVA sub-system if
- DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_PostAssocReq must have been called.
-
- @param wdiAddTsReqParams: the add TS parameters as specified by
- the Device Interface
-
- wdiAddTsRspCb: callback for passing back the response of
- the add TS operation received from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_PostAssocReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_AggrAddTSReq
-(
- WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
- WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
- wdiEventData.pEventData = pwdiAggrAddTsReqParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
- wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_AggrAddTSReq*/
-
-#endif /* WLAN_FEATURE_VOWIFI_11R */
-
-/**
- @brief WDI_FTMCommandReq
- Post FTM Command Event
-
- @param ftmCommandReq: FTM Command Body
- @param ftmCommandRspCb: FTM Response from HAL CB
- @param pUserData: Client Data
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_FTMCommandReq
-(
- WDI_FTMCommandReqType *ftmCommandReq,
- WDI_FTMCommandRspCb ftmCommandRspCb,
- void *pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
- wdiEventData.pEventData = (void *)ftmCommandReq;
- wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
- wdiEventData.pCBfnc = ftmCommandRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-}
-/**
- @brief WDI_HostResumeReq will be called
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
-
- @param pwdiResumeReqParams: as specified by
- the Device Interface
-
- wdiResumeReqRspCb: callback for passing back the response of
- the Resume Req received from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_HostResumeReq
-(
- WDI_ResumeParamsType* pwdiResumeReqParams,
- WDI_HostResumeEventRspCb wdiResumeReqRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
- wdiEventData.pEventData = pwdiResumeReqParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
- wdiEventData.pCBfnc = wdiResumeReqRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_HostResumeReq*/
-
-/**
- @brief WDI_DelSTASelfReq will be called
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
-
- @param pwdiDelStaSelfReqParams: as specified by
- the Device Interface
-
- wdiDelStaSelfRspCb: callback for passing back the response of
- the add TS operation received from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_PostAssocReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_DelSTASelfReq
-(
- WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
- WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
- wdiEventData.pEventData = pwdiDelStaSelfReqParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
- wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_AggrAddTSReq*/
-
-/**
- @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
- wants to set the Tx Per Tracking configurations.
- Upon the call of this API the WLAN DAL will pack
- and send a HAL Set Tx Per Tracking request message to the
- lower RIVA sub-system if DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
- specified by the Device Interface
-
- pwdiSetTxPerTrackingRspCb: callback for passing back the
- response of the set Tx PER Tracking configurations operation received
- from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @return Result of the function call
-*/
-WDI_Status
-WDI_SetTxPerTrackingReq
-(
- WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
- WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
- wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
- wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_SetTxPerTrackingReq*/
-
-/**
- @brief WDI_SetTmLevelReq
- If HW Thermal condition changed, driver should react based on new
- HW thermal condition.
-
- @param pwdiSetTmLevelReq: New thermal condition information
-
- pwdiSetTmLevelRspCb: callback
-
- usrData: user data will be passed back with the
- callback
-
- @return Result of the function call
-*/
-WDI_Status
-WDI_SetTmLevelReq
-(
- WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
- WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
- void *usrData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
- wdiEventData.pEventData = pwdiSetTmLevelReq;
- wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
- wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
- wdiEventData.pUserData = usrData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-}
-
-/**
- @brief WDI_HostSuspendInd
-
- Suspend Indication from the upper layer will be sent
- down to HAL
-
- @param WDI_SuspendResumeIndParamsType
-
- @see
-
- @return Status of the request
-*/
-WDI_Status
-WDI_HostSuspendInd
-(
- WDI_SuspendParamsType* pwdiSuspendIndParams
-)
-{
-
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
- wdiEventData.pEventData = pwdiSuspendIndParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
- wdiEventData.pCBfnc = NULL;
- wdiEventData.pUserData = NULL;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_HostSuspendInd*/
-
-/**
- @brief WDI_TrafficStatsInd
- Traffic Stats from the upper layer will be sent
- down to HAL
-
- @param WDI_TrafficStatsIndType
-
- @see
-
- @return Status of the request
-*/
-WDI_Status
-WDI_TrafficStatsInd
-(
- WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
-)
-{
-
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
- wdiEventData.pEventData = pWdiTrafficStatsIndParams;
- wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
- wdiEventData.pCBfnc = NULL;
- wdiEventData.pUserData = NULL;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_TrafficStatsInd*/
-
-#ifdef WLAN_FEATURE_11W
-/**
- @brief WDI_ExcludeUnencryptedInd
- Register with HAL to receive/drop unencrypted frames
-
- @param WDI_ExcludeUnencryptIndType
-
- @see
-
- @return Status of the request
-*/
-WDI_Status
-WDI_ExcludeUnencryptedInd
-(
- WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
-)
-{
-
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
- wdiEventData.pEventData = pWdiExcUnencParams;
- wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
- wdiEventData.pCBfnc = NULL;
- wdiEventData.pUserData = NULL;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/*WDI_TrafficStatsInd*/
-#endif
-
-/**
- @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
-
- @param addPeriodicTxPtrnParams: Add Pattern parameters
-
- @see
-
- @return Status of the request
-*/
-WDI_Status
-WDI_AddPeriodicTxPtrnInd
-(
- WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
-)
-{
- WDI_EventInfoType wdiEventData;
-
- /*-------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if (eWLAN_PAL_FALSE == gWDIInitialized)
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request!");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*-------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
- wdiEventData.pEventData = addPeriodicTxPtrnParams;
- wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
- wdiEventData.pCBfnc = NULL;
- wdiEventData.pUserData = NULL;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-}
-
-/**
- @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
-
- @param delPeriodicTxPtrnParams: Delete Pattern parameters
-
- @see
-
- @return Status of the request
-*/
-WDI_Status
-WDI_DelPeriodicTxPtrnInd
-(
- WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
-)
-{
- WDI_EventInfoType wdiEventData;
-
- /*-------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if (eWLAN_PAL_FALSE == gWDIInitialized)
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request!");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*-------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
- wdiEventData.pEventData = delPeriodicTxPtrnParams;
- wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
- wdiEventData.pCBfnc = NULL;
- wdiEventData.pUserData = NULL;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-}
-
-/**
- @brief WDI_HALDumpCmdReq
- Post HAL DUMP Command Event
-
- @param halDumpCmdReqParams: Hal Dump Command Body
- @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
- @param pUserData: Client Data
-
- @see
- @return Result of the function call
-*/
-WDI_Status WDI_HALDumpCmdReq
-(
- WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
- WDI_HALDumpCmdRspCb halDumpCmdRspCb,
- void *pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
- wdiEventData.pEventData = (void *)halDumpCmdReqParams;
- wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
- wdiEventData.pCBfnc = halDumpCmdRspCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-}
-
-/*============================================================================
-
- DAL Control Path Main FSM Function Implementation
-
- ============================================================================*/
-
-/**
- @brief Main FSM Start function for all states except BUSY
-
-
- @param pWDICtx: pointer to the WLAN DAL context
- wdiEV: event posted to the main DAL FSM
- pEventData: pointer to the event information
- structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_PostMainEvent
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_MainEventType wdiEV,
- WDI_EventInfoType* pEventData
-
-)
-{
- WDI_Status wdiStatus;
- WDI_MainFuncType pfnWDIMainEvHdlr;
- WDI_MainStateType wdiOldState;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
- ( wdiEV >= WDI_MAX_EVENT ))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Invalid state or event in Post Main Ev function ST: %d EV: %d",
- pWDICtx->uGlobalState, wdiEV);
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*Access to the global state must be locked */
- wpalMutexAcquire(&pWDICtx->wptMutex);
-
- /*Fetch event handler for state*/
- pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
-
- wdiOldState = pWDICtx->uGlobalState;
-
- /*
- --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
- response comes from CCPU for the request sent by host:
- the WDI global state will be in WDI_BUSY_ST already, so do not set it to BUSY again.
- This state will be set to WDI_STARTED_ST in WDI_MainRsp, if it is a expected response.
- --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
- CCPU:
- don't change the state */
- if ( WDI_RESPONSE_EVENT != wdiEV)
- {
- /*Transition to BUSY State - the request is now being processed by the FSM,
- if the request fails we shall transition back to the old state, if not
- the request will manage its own state transition*/
- WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
- }
- /* If the state function associated with the EV is NULL it means that this
- event is not allowed in this state*/
- if ( NULL != pfnWDIMainEvHdlr )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Posting event %d in state: %d to the Main FSM",
- wdiEV, wdiOldState);
- wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
- }
- else
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Unexpected event %d in state: %d",
- wdiEV, wdiOldState);
- wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /* If a request handles itself well it will end up in a success or in a
- pending
- Success - means that the request was processed and the proper state
- transition already occurred or will occur when the resp is received
- - NO other state transition or dequeueing is required
-
- Pending - means the request could not be processed at this moment in time
- because the FSM was already busy so no state transition or dequeueing
- is necessary anymore
-
- Success for synchronous case means that the transition may occur and
- processing of pending requests may continue - so it should go through
- and restores the state and continue processing queued requests*/
- if (( WDI_STATUS_SUCCESS != wdiStatus )&&
- ( WDI_STATUS_PENDING != wdiStatus ))
- {
- if ( WDI_RESPONSE_EVENT != wdiEV)
- {
- /*The request has failed or could not be processed - transition back to
- the old state - check to see if anything was queued and try to execute
- The dequeue logic should post a message to a thread and return - no
- actual processing can occur */
- WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
- }
- WDI_DequeuePendingReq(pWDICtx);
-
- }
-
- /* we have completed processing the event */
- wpalMutexRelease(&pWDICtx->wptMutex);
-
- return wdiStatus;
-
-}/*WDI_PostMainEvent*/
-
-
-/*--------------------------------------------------------------------------
- INIT State Functions
---------------------------------------------------------------------------*/
-/**
- @brief Main FSM Start function for all states except BUSY
-
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_MainStart
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
-
- /*--------------------------------------------------------------------
- Sanity Check
- ----------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Invalid parameters on Main Start Started %p %p",
- pWDICtx, pEventData);
- return WDI_STATUS_E_FAILURE;
- }
-
- wpalMutexAcquire(&pWDICtx->wptMutex);
-
- /*--------------------------------------------------------------------
- Check if the Control Transport has been opened
- ----------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Control Transport not yet Open - queueing the request");
-
- WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
- WDI_QueuePendingReq( pWDICtx, pEventData);
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_PENDING;
- }
-
- wpalMutexRelease(&pWDICtx->wptMutex);
-
- /*Return Success*/
- return WDI_ProcessRequest( pWDICtx, pEventData );
-
-}/*WDI_MainStart*/
-
-/**
- @brief Main FSM Response function for state INIT
-
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_MainRspInit
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- /*------------------------------------------------------------------------
- Not expecting a response from the device before it is started
- ------------------------------------------------------------------------*/
- WDI_ASSERT(0);
-
- /*Return Success*/
- return WDI_STATUS_E_NOT_ALLOWED;
-}/* WDI_MainRspInit */
-
-/**
- @brief Main FSM Close function for all states except BUSY
-
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_MainClose
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
-
- /*--------------------------------------------------------------------
- Sanity Check
- ----------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Invalid parameters on Main Close %p %p",
- pWDICtx, pEventData);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*Return Success*/
- return WDI_ProcessRequest( pWDICtx, pEventData );
-
-}/*WDI_MainClose*/
-/*--------------------------------------------------------------------------
- STARTED State Functions
---------------------------------------------------------------------------*/
-/**
- @brief Main FSM Start function for state STARTED
-
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_MainStartStarted
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_StartRspCb wdiStartRspCb = NULL;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*--------------------------------------------------------------------
- Sanity Check
- ----------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Invalid parameters on Main Start %p %p",
- pWDICtx, pEventData);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*--------------------------------------------------------------------
- Nothing to do transport was already started
- ----------------------------------------------------------------------*/
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Received start while transport was already started - nothing to do");
-
- wpalMutexAcquire(&pWDICtx->wptMutex);
-
- /*Transition back to started because the post function transitioned us to
- busy*/
- WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
-
- /*Check to see if any request is pending*/
- WDI_DequeuePendingReq(pWDICtx);
-
- wpalMutexRelease(&pWDICtx->wptMutex);
-
- /*Tell UMAC Success*/
- wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
-
- /*Notify UMAC*/
- wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
-
- /*Return Success*/
- return WDI_STATUS_SUCCESS;
-
-}/*WDI_MainStartStarted*/
-
-/**
- @brief Main FSM Stop function for state STARTED
-
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_MainStopStarted
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- /*--------------------------------------------------------------------
- Sanity Check
- ----------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Invalid parameters on Main Stop Started %p %p",
- pWDICtx, pEventData);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*State at this point is BUSY - because we enter this state before posting
- an event to the FSM in order to prevent potential race conditions*/
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "Processing stop request in FSM");
-
- /*Return Success*/
- return WDI_ProcessRequest( pWDICtx, pEventData );
-
-}/*WDI_MainStopStarted*/
-/**
- @brief Main FSM Request function for state started
-
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_MainReqStarted
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
-
- /*--------------------------------------------------------------------
- Sanity Check
- ----------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Invalid parameters on Main Req Started %p %p",
- pWDICtx, pEventData);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*State at this point is BUSY - because we enter this state before posting
- an event to the FSM in order to prevent potential race conditions*/
-
- /*Return Success*/
- return WDI_ProcessRequest( pWDICtx, pEventData );
-
-}/*WDI_MainReqStarted*/
-
-/**
- @brief Main FSM Response function for all states except INIT
-
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_MainRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- wpt_boolean expectedResponse;
-
- /*--------------------------------------------------------------------
- Sanity Check
- ----------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Invalid parameters on Main Response %p %p",
- pWDICtx, pEventData);
- return WDI_STATUS_E_FAILURE;
- }
-
- if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
- {
- /* we received an expected response */
- expectedResponse = eWLAN_PAL_TRUE;
-
- /*We expect that we will transition to started after this processing*/
- pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
-
- /* we are no longer expecting a response */
- pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
- }
- else
- {
- /* we received an indication or unexpected response */
- expectedResponse = eWLAN_PAL_FALSE;
- /* for indications no need to update state from what it is right
- now, unless it explicitly does it in the indication handler (say
- for device failure ind) */
- pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
- }
-
- /*Process the response and indication */
- wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
-
- /*Lock the CB as we are about to do a state transition*/
- wpalMutexAcquire(&pWDICtx->wptMutex);
-
- /*Transition to the expected state after the response processing
- - this should always be started state with the following exceptions:
- 1. processing of a failed start response
- 2. device failure detected while processing response
- 3. stop response received*/
- WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
-
- /*Dequeue request that may have been queued while we were waiting for the
- response */
- if ( expectedResponse )
- {
- WDI_DequeuePendingReq(pWDICtx);
- }
-
- wpalMutexRelease(&pWDICtx->wptMutex);
-
- /*Return Success - always */
- return WDI_STATUS_SUCCESS;
-
-}/*WDI_MainRsp*/
-
-/*--------------------------------------------------------------------------
- STOPPED State Functions
---------------------------------------------------------------------------*/
-/**
- @brief Main FSM Stop function for state STOPPED
-
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_MainStopStopped
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- /*--------------------------------------------------------------------
- Sanity Check
- ----------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Invalid parameters on Main Stop Stopped %p %p",
- pWDICtx, pEventData);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*We should normally not get a STOP request if we are already stopped
- since we should normally be stopped by the UMAC. However in some
- error situations we put ourselves in the stopped state without the
- UMAC knowing, so when we get a STOP request in this state we still
- process it since we need to clean up the underlying state */
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Processing stop request while stopped in FSM");
-
- /*Return Success*/
- return WDI_ProcessRequest( pWDICtx, pEventData );
-
-}/*WDI_MainStopStopped*/
-
-/*--------------------------------------------------------------------------
- BUSY State Functions
---------------------------------------------------------------------------*/
-/**
- @brief Main FSM Start function for state BUSY
-
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_MainStartBusy
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- /*--------------------------------------------------------------------
- Sanity Check
- ----------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Invalid parameters on Main Start in BUSY %p %p",
- pWDICtx, pEventData);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*--------------------------------------------------------------------
- Check if the Control Transport has been opened
- ----------------------------------------------------------------------*/
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "WDI Busy state - queue start request");
-
- /*Queue the start request*/
- WDI_QueuePendingReq( pWDICtx, pEventData);
-
- /*Return Success*/
- return WDI_STATUS_PENDING;
-}/*WDI_MainStartBusy*/
-
-/**
- @brief Main FSM Stop function for state BUSY
-
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_MainStopBusy
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- /*--------------------------------------------------------------------
- Sanity Check
- ----------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Invalid parameters on Main Stop in BUSY %p %p",
- pWDICtx, pEventData);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*--------------------------------------------------------------------
- Check if the Control Transport has been opened
- ----------------------------------------------------------------------*/
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "WDI Busy state - queue stop request");
-
- WDI_QueuePendingReq( pWDICtx, pEventData);
- return WDI_STATUS_PENDING;
-
-}/*WDI_MainStopBusy*/
-
-/**
- @brief Main FSM Request function for state BUSY
-
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_MainReqBusy
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- /*--------------------------------------------------------------------
- Sanity Check
- ----------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Invalid parameters on Main Request in BUSY %p %p",
- pWDICtx, pEventData);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*--------------------------------------------------------------------
- Check if the Control Transport has been opened
- ----------------------------------------------------------------------*/
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "WDI Busy state - queue request %d because waiting for response %d",
- pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
-
- WDI_QueuePendingReq( pWDICtx, pEventData);
- return WDI_STATUS_PENDING;
-
-}/*WDI_MainReqBusy*/
-/**
- @brief Main FSM Close function for state BUSY
-
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_MainCloseBusy
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- /*--------------------------------------------------------------------
- Sanity Check
- ----------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Invalid parameters on Main Close in BUSY %p %p",
- pWDICtx, pEventData);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*--------------------------------------------------------------------
- Check if the Control Transport has been opened
- ----------------------------------------------------------------------*/
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "WDI Busy state - queue close request");
-
- WDI_QueuePendingReq( pWDICtx, pEventData);
- return WDI_STATUS_PENDING;
-
-}/*WDI_MainCloseBusy*/
-
-/**
- @brief Main FSM Shutdown function for INIT & STARTED states
-
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_MainShutdown
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- /*--------------------------------------------------------------------
- Sanity Check
- ----------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Invalid parameters on Main Start %p %p",
- pWDICtx, pEventData);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*State at this point is BUSY - because we enter this state before posting
- an event to the FSM in order to prevent potential race conditions*/
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "Processing shutdown request in FSM");
-
- /*Return Success*/
- return WDI_ProcessRequest( pWDICtx, pEventData );
-
-}/*WDI_MainShutdown*/
-
-/**
- @brief Main FSM Shutdown function for BUSY state
-
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_MainShutdownBusy
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- /*--------------------------------------------------------------------
- Sanity Check
- ----------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Invalid parameters on Main Start %p %p",
- pWDICtx, pEventData);
- return WDI_STATUS_E_FAILURE;
- }
-
- /* If you are waiting for a HAL response at this stage, you are not
- * going to get it. Riva is already shutdown/crashed.
- */
- wpalTimerStop(&gWDICb.wptResponseTimer);
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "Processing shutdown request in FSM: Busy state ");
-
- return WDI_ProcessRequest( pWDICtx, pEventData );
-
-}/*WDI_MainShutdownBusy*/
-
-
-/*=======================================================================
-
- WLAN DAL Control Path Main Processing Functions
-
-*=======================================================================*/
-
-/*========================================================================
- Main DAL Control Path Request Processing API
-========================================================================*/
-/**
- @brief Process Start Request function (called when Main FSM
- allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessStartReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_StartReqParamsType* pwdiStartParams = NULL;
- WDI_StartRspCb wdiStartRspCb = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
-
- tHalMacStartReqMsg halStartReq;
- wpt_uint16 usLen = 0;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
- ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- usLen = sizeof(halStartReq.startReqParams) +
- pwdiStartParams->usConfigBufferLen;
-
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
- usLen,
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + usLen )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "Unable to get send buffer in start req %p %p %p",
- pEventData, pwdiStartParams, wdiStartRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-----------------------------------------------------------------------
- Fill in the message
- -----------------------------------------------------------------------*/
- halStartReq.startReqParams.driverType =
- WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
-
- halStartReq.startReqParams.uConfigBufferLen =
- pwdiStartParams->usConfigBufferLen;
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halStartReq.startReqParams,
- sizeof(halStartReq.startReqParams));
-
- usDataOffset += sizeof(halStartReq.startReqParams);
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- pwdiStartParams->pConfigBuffer,
- pwdiStartParams->usConfigBufferLen);
-
- pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
-
- /*Save Low Level Ind CB and associated user data - it will be used further
- on when an indication is coming from the lower MAC*/
- pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
- pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
-
- pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
- /*-------------------------------------------------------------------------
- Send Start Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
-
-
-}/*WDI_ProcessStartReq*/
-
-/**
- @brief Process Stop Request function (called when Main FSM
- allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessStopReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_StopReqParamsType* pwdiStopParams = NULL;
- WDI_StopRspCb wdiStopRspCb = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- wpt_status status;
- tHalMacStopReqMsg halStopReq;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
- ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- goto failRequest;
- }
-
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
- sizeof(halStopReq.stopReqParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in stop req %p %p %p",
- pEventData, pwdiStopParams, wdiStopRspCb);
- WDI_ASSERT(0);
- goto failRequest;
- }
-
- /*-----------------------------------------------------------------------
- Fill in the message
- -----------------------------------------------------------------------*/
- halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
- pwdiStopParams->wdiStopReason);
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halStopReq.stopReqParams,
- sizeof(halStopReq.stopReqParams));
-
- pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
-
- /*! TO DO: stop the data services */
- if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
- {
- /*Stop the STA Table !UT- check this logic again
- It is safer to do it here than on the response - because a stop is imminent*/
- WDI_STATableStop(pWDICtx);
-
- /* Reset the event to be not signalled */
- status = wpalEventReset(&pWDICtx->setPowerStateEvent);
- if (eWLAN_PAL_STATUS_SUCCESS != status)
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "WDI Init failed to reset power state event");
-
- WDI_ASSERT(0);
- goto fail;
- }
- /* Stop Transport Driver, DXE */
- status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
- if( eWLAN_PAL_STATUS_SUCCESS != status )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Power Down state", status);
- WDI_ASSERT(0);
- goto fail;
- }
- /*
- * Wait for the event to be set once the ACK comes back from DXE
- */
- status = wpalEventWait(&pWDICtx->setPowerStateEvent,
- WDI_SET_POWER_STATE_TIMEOUT);
- if (eWLAN_PAL_STATUS_SUCCESS != status)
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "WDI Init failed to wait on an event");
-
- WDI_ASSERT(0);
- goto fail;
- }
- }
-
- /*-------------------------------------------------------------------------
- Send Stop Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
-
-fail:
- // Release the message buffer so we don't leak
- wpalMemoryFree(pSendBuffer);
-
-failRequest:
- //WDA should have failure check to avoid the memory leak
- return WDI_STATUS_E_FAILURE;
-
-}/*WDI_ProcessStopReq*/
-
-/**
- @brief Process Close Request function (called when Main FSM
- allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessCloseReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- wpt_status wptStatus;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*Lock control block for cleanup*/
- wpalMutexAcquire(&pWDICtx->wptMutex);
-
- /*Clear all pending request*/
- WDI_ClearPendingRequests(pWDICtx);
-
- /* Close Control transport*/
- WCTS_CloseTransport(pWDICtx->wctsHandle);
-
- /* Close Data transport*/
- /* FTM mode does not open Data Path */
- if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
- {
- WDTS_Close(pWDICtx);
- }
-
- /*Close the STA Table !UT- check this logic again*/
- WDI_STATableClose(pWDICtx);
-
- /*close the PAL */
- wptStatus = wpalClose(pWDICtx->pPALContext);
- if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Failed to wpal Close %d", wptStatus);
- WDI_ASSERT(0);
- }
-
- /*Transition back to init state*/
- WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
-
- wpalMutexRelease(&pWDICtx->wptMutex);
-
- /*Make sure the expected state is properly defaulted to Init*/
- pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessCloseReq*/
-
-
-/*===========================================================================
- SCANING REQUEST PROCESSING API
-===========================================================================*/
-
-/**
- @brief Process Init Scan Request function (called when Main FSM
- allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessInitScanReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
- WDI_InitScanRspCb wdiInitScanRspCb = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- wpt_uint8 i = 0;
-
- tHalInitScanReqMsg halInitScanReqMsg;
-
- /*This is temporary fix.
- * It shold be removed once host and riva changes are in sync*/
- tHalInitScanConReqMsg halInitScanConReqMsg;
-
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
- ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
-#if 0
- wpalMutexAcquire(&pWDICtx->wptMutex);
- /*-----------------------------------------------------------------------
- Check to see if SCAN is already in progress - if so reject the req
- We only allow one scan at a time
- ! TO DO: - revisit this constraint
- -----------------------------------------------------------------------*/
- if ( pWDICtx->bScanInProgress )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Scan is already in progress - subsequent scan is not allowed"
- " until the first scan completes");
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
- pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
-
- wpalMutexRelease(&pWDICtx->wptMutex);
-#endif
- if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
- {
- /*This is temporary fix.
- * It shold be removed once host and riva changes are in sync*/
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
- sizeof(halInitScanConReqMsg.initScanParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in init scan req %p %p %p",
- pEventData, pwdiInitScanParams, wdiInitScanRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
-
- /*-----------------------------------------------------------------------
- Fill in the message
- -----------------------------------------------------------------------*/
- halInitScanConReqMsg.initScanParams.scanMode =
- WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
-
- wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
- pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
-
- halInitScanConReqMsg.initScanParams.notifyBss =
- pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
- halInitScanConReqMsg.initScanParams.frameType =
- pwdiInitScanParams->wdiReqInfo.ucFrameType;
- halInitScanConReqMsg.initScanParams.frameLength =
- pwdiInitScanParams->wdiReqInfo.ucFrameLength;
-
- WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
- &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
-
- halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
- halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
-
- halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
- pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
-
- for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
- {
- halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
- pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
- }
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halInitScanConReqMsg.initScanParams,
- sizeof(halInitScanConReqMsg.initScanParams));
- }
- else
- {
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
- sizeof(halInitScanReqMsg.initScanParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in init scan req %p %p %p",
- pEventData, pwdiInitScanParams, wdiInitScanRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
-
- /*-----------------------------------------------------------------------
- Fill in the message
- -----------------------------------------------------------------------*/
- halInitScanReqMsg.initScanParams.scanMode =
- WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
-
- wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
- pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
-
- halInitScanReqMsg.initScanParams.notifyBss =
- pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
- halInitScanReqMsg.initScanParams.frameType =
- pwdiInitScanParams->wdiReqInfo.ucFrameType;
- halInitScanReqMsg.initScanParams.frameLength =
- pwdiInitScanParams->wdiReqInfo.ucFrameLength;
-
- WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
- &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
-
- halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
- pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
-
- for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
- {
- halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
- pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
- }
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halInitScanReqMsg.initScanParams,
- sizeof(halInitScanReqMsg.initScanParams));
- }
-
- pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Init Scan Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
-
-}/*WDI_ProcessInitScanReq*/
-
-/**
- @brief Process Start Scan Request function (called when Main
- FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessStartScanReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
- WDI_StartScanRspCb wdiStartScanRspCb = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
-
- tHalStartScanReqMsg halStartScanReqMsg;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
- ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
-#if 0
- wpalMutexAcquire(&pWDICtx->wptMutex);
- /*-----------------------------------------------------------------------
- Check to see if SCAN is already in progress - start scan is only
- allowed when a scan is ongoing and the state of the scan procedure
- is either init or end
- -----------------------------------------------------------------------*/
- if (( !pWDICtx->bScanInProgress ) ||
- (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
- ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Scan start not allowed in this state %d %d",
- pWDICtx->bScanInProgress, pWDICtx->uScanState);
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
-
- wpalMutexRelease(&pWDICtx->wptMutex);
-#endif
-
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
- sizeof(halStartScanReqMsg.startScanParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in start scan req %p %p %p",
- pEventData, pwdiStartScanParams, wdiStartScanRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- halStartScanReqMsg.startScanParams.scanChannel =
- pwdiStartScanParams->ucChannel;
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halStartScanReqMsg.startScanParams,
- sizeof(halStartScanReqMsg.startScanParams));
-
- pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Start Scan Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
-}/*WDI_ProcessStartScanReq*/
-
-
-/**
- @brief Process End Scan Request function (called when Main FSM
- allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessEndScanReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
- WDI_EndScanRspCb wdiEndScanRspCb = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
-
- tHalEndScanReqMsg halEndScanReqMsg;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
- ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
- * sometimes because of this check the scan request is not being
- * forwarded to HAL and result in hang*/
-#if 0
- wpalMutexAcquire(&pWDICtx->wptMutex);
- /*-----------------------------------------------------------------------
- Check to see if SCAN is already in progress - end scan is only
- allowed when a scan is ongoing and the state of the scan procedure
- is started
- -----------------------------------------------------------------------*/
- if (( !pWDICtx->bScanInProgress ) ||
- ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "End start not allowed in this state %d %d",
- pWDICtx->bScanInProgress, pWDICtx->uScanState);
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
-
- wpalMutexRelease(&pWDICtx->wptMutex);
-#endif
-
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
- sizeof(halEndScanReqMsg.endScanParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in start scan req %p %p %p",
- pEventData, pwdiEndScanParams, wdiEndScanRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halEndScanReqMsg.endScanParams,
- sizeof(halEndScanReqMsg.endScanParams));
-
- pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send End Scan Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
-}/*WDI_ProcessEndScanReq*/
-
-
-/**
- @brief Process Finish Scan Request function (called when Main
- FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessFinishScanReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_FinishScanReqParamsType* pwdiFinishScanParams;
- WDI_FinishScanRspCb wdiFinishScanRspCb;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- wpt_uint8 i = 0;
- wpt_status wptStatus;
- tHalFinishScanReqMsg halFinishScanReqMsg;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData) ||
- ( NULL == pEventData->pCBfnc))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
- wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
- /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
- * sometimes because of this check the scan request is not being
- * forwarded to HAL and result in hang*/
-#if 0
- wpalMutexAcquire(&pWDICtx->wptMutex);
- /*-----------------------------------------------------------------------
- Check to see if SCAN is already in progress
- Finish scan gets invoked any scan states. ie. abort scan
- It should be allowed in any states.
- -----------------------------------------------------------------------*/
- if ( !pWDICtx->bScanInProgress )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Finish start not allowed in this state %d",
- pWDICtx->bScanInProgress );
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*-----------------------------------------------------------------------
- It is safe to reset the scan flags here because until the response comes
- back all subsequent requests will be blocked at BUSY state
- -----------------------------------------------------------------------*/
- pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
- pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
- wpalMutexRelease(&pWDICtx->wptMutex);
-#endif
-
- if ( pWDICtx->bInBmps )
- {
- // notify DTS that we are entering BMPS
- wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
- if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
- WDI_ASSERT(0);
- }
- }
-
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
- sizeof(halFinishScanReqMsg.finishScanParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in start scan req %p %p %p",
- pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- halFinishScanReqMsg.finishScanParams.scanMode =
- WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
-
- halFinishScanReqMsg.finishScanParams.currentOperChannel =
- pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
-
- halFinishScanReqMsg.finishScanParams.cbState =
- WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
-
- wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
- pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
-
- halFinishScanReqMsg.finishScanParams.notifyBss =
- pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
- halFinishScanReqMsg.finishScanParams.frameType =
- pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
- halFinishScanReqMsg.finishScanParams.frameLength =
- pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
-
- halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
- pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
-
- for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
- {
- halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
- pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
- }
-
- WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
- &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halFinishScanReqMsg.finishScanParams,
- sizeof(halFinishScanReqMsg.finishScanParams));
-
- pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Finish Scan Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
-}/*WDI_ProcessFinishScanReq*/
-
-
-/*==========================================================================
- ASSOCIATION REQUEST API
-==========================================================================*/
-/**
- @brief Process BSS Join for a given Session
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessBSSSessionJoinReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_JoinReqParamsType* pwdiJoinParams,
- WDI_JoinRspCb wdiJoinRspCb,
- void* pUserData
-)
-{
- WDI_BSSSessionType* pBSSSes = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- wpt_uint8 ucCurrentBSSSesIdx = 0;
-
- tHalJoinReqMsg halJoinReqMsg;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- wpalMutexAcquire(&pWDICtx->wptMutex);
-
- /*------------------------------------------------------------------------
- Check to see if we have any session with this BSSID already stored, we
- should not
- ------------------------------------------------------------------------*/
- ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
- pwdiJoinParams->wdiReqInfo.macBSSID,
- &pBSSSes);
-
- if ( NULL != pBSSSes )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
- MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
-
- /*reset the bAssociationInProgress otherwise the next
- *join request will be queued*/
- pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fetch an empty session block
- ------------------------------------------------------------------------*/
- ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
- if ( NULL == pBSSSes )
- {
-
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "DAL has no free sessions - cannot run another join");
-
- /*reset the bAssociationInProgress otherwise the next
- *join request will be queued*/
- pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_RES_FAILURE;
- }
-
- /*Save BSS Session Info*/
- pBSSSes->bInUse = eWLAN_PAL_TRUE;
- wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
- WDI_MAC_ADDR_LEN);
-
- /*Transition to state Joining*/
- pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
- pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
-
- wpalMutexRelease(&pWDICtx->wptMutex);
-
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
- sizeof(halJoinReqMsg.joinReqParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in join req %p %p %p",
- pUserData, pwdiJoinParams, wdiJoinRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
- pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
-
- wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
- pwdiJoinParams->wdiReqInfo.macSTASelf,
- WDI_MAC_ADDR_LEN);
-
- halJoinReqMsg.joinReqParams.ucChannel =
- pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
-
- halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
-
-#ifdef WLAN_FEATURE_VOWIFI
- halJoinReqMsg.joinReqParams.maxTxPower =
- pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
-#else
- halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
- pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
-#endif
-
- halJoinReqMsg.joinReqParams.secondaryChannelOffset =
- WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
- wdiSecondaryChannelOffset);
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halJoinReqMsg.joinReqParams,
- sizeof(halJoinReqMsg.joinReqParams));
-
- pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Join Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
-
-}/*WDI_ProcessBSSSessionJoinReq*/
-
-/**
- @brief Process Join Request function (called when Main FSM
- allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessJoinReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
- WDI_JoinReqParamsType* pwdiJoinParams = NULL;
- WDI_JoinRspCb wdiJoinRspCb = NULL;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
- ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-------------------------------------------------------------------------
- Check to see if we are in the middle of an association, if so queue, if
- not it means it is free to process request
- -------------------------------------------------------------------------*/
- wpalMutexAcquire(&pWDICtx->wptMutex);
-
- if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Association is currently in progress, queueing new join req");
-
- /*Association is in progress - queue current one*/
- wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
- pwdiJoinParams->wdiReqInfo.macBSSID);
-
- wpalMutexRelease(&pWDICtx->wptMutex);
-
- return wdiStatus;
- }
-
- /*Starting a new association */
- pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
- wpalMutexRelease(&pWDICtx->wptMutex);
-
- /*Process the Join Request*/
- return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
- wdiJoinRspCb,pEventData->pUserData);
-
-}/*WDI_ProcessJoinReq*/
-
-
-/**
- @brief Process Config BSS Request function (called when Main
- FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessConfigBSSReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
- WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
- wpt_uint8 ucCurrentBSSSesIdx = 0;
- WDI_BSSSessionType* pBSSSes = NULL;
- wpt_uint16 uMsgSize = 0;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
-
- tConfigBssReqMsg halConfigBssReqMsg;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData ) ||
- ( NULL == pEventData->pCBfnc ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
- wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
- /*-------------------------------------------------------------------------
- Check to see if we are in the middle of an association, if so queue, if
- not it means it is free to process request
- -------------------------------------------------------------------------*/
- wpalMutexAcquire(&pWDICtx->wptMutex);
-
- /*------------------------------------------------------------------------
- Find the BSS for which the request is made
- ------------------------------------------------------------------------*/
- ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
- pwdiConfigBSSParams->wdiReqInfo.macBSSID,
- &pBSSSes);
-
- if ( NULL == pBSSSes )
- {
-#ifdef WLAN_FEATURE_VOWIFI_11R
- /*------------------------------------------------------------------------
- Fetch an empty session block
- ------------------------------------------------------------------------*/
- ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
- if ( NULL == pBSSSes )
- {
-
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "DAL has no free sessions - cannot run another join");
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_RES_FAILURE;
- }
-
- /*Save BSS Session Info*/
- pBSSSes->bInUse = eWLAN_PAL_TRUE;
- wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
- WDI_MAC_ADDR_LEN);
-
- /*Transition to state Joining*/
- pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
- pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
-#else
- /* If the BSS type is IBSS create the session here as there is no Join
- * Request in case of IBSS*/
- if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
- (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
- (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
- (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
- {
- /*------------------------------------------------------------------------
- Fetch an empty session block
- ------------------------------------------------------------------------*/
- ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
- if ( NULL == pBSSSes )
- {
-
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "DAL has no free sessions - cannot run another join");
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_RES_FAILURE;
- }
-
- /*Save BSS Session Info*/
- pBSSSes->bInUse = eWLAN_PAL_TRUE;
- wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
- WDI_MAC_ADDR_LEN);
-
- /*Transition to state Joining*/
- pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
- pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
- }
- else
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
- __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
- pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
-
- /* for IBSS testing */
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-#endif
- }
-
- /*------------------------------------------------------------------------
- Check if this BSS is being currently processed or queued,
- if queued - queue the new request as well
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
- __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
- ucCurrentBSSSesIdx);
-
- wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
-
- wpalMutexRelease(&pWDICtx->wptMutex);
-
- return wdiStatus;
- }
-
- /* Cache the request for response processing */
- wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
- pwdiConfigBSSParams,
- sizeof(pWDICtx->wdiCachedConfigBssReq));
-
- wpalMutexRelease(&pWDICtx->wptMutex);
-
- /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
-#ifdef WLAN_FEATURE_11AC
- if (WDI_getFwWlanFeatCaps(DOT11AC))
- uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
- else
-#endif
- uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
-
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
- uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + uMsgSize )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in config bss req %p %p %p",
- pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*Copy the BSS request */
-#ifdef WLAN_FEATURE_11AC
- if (WDI_getFwWlanFeatCaps(DOT11AC))
- WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
- &pwdiConfigBSSParams->wdiReqInfo);
- else
-#endif
- WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
- &pwdiConfigBSSParams->wdiReqInfo);
-
- /* Need to fill in the STA Index to invalid, since at this point we have not
- yet received it from HAL */
- halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
-
- /* Need to fill in the BSS index */
- halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
-
-#ifdef WLAN_FEATURE_11AC
- if (WDI_getFwWlanFeatCaps(DOT11AC)){
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halConfigBssReqMsg.uBssParams.configBssParams_V1,
- uMsgSize);
- }else
-#endif
- {
- if ( uMsgSize <= sizeof(tConfigBssParams) )
- {
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halConfigBssReqMsg.uBssParams.configBssParams,
- uMsgSize);
- }
- else
- {
- return WDI_STATUS_E_FAILURE;
- }
- }
-
- pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Config BSS Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiConfigBSSRspCb, pEventData->pUserData,
- WDI_CONFIG_BSS_RESP);
-
-}/*WDI_ProcessConfigBSSReq*/
-
-
-/**
- @brief Process Del BSS Request function (called when Main FSM
- allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessDelBSSReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
- WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
- wpt_uint8 ucCurrentBSSSesIdx = 0;
- WDI_BSSSessionType* pBSSSes = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
-
- tDeleteBssReqMsg halBssReqMsg;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
- ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-------------------------------------------------------------------------
- Check to see if we are in the middle of an association, if so queue, if
- not it means it is free to process request
- -------------------------------------------------------------------------*/
- wpalMutexAcquire(&pWDICtx->wptMutex);
-
- /*------------------------------------------------------------------------
- Find the BSS for which the request is made
- ------------------------------------------------------------------------*/
- ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
- pwdiDelBSSParams->ucBssIdx,
- &pBSSSes);
-
- if ( NULL == pBSSSes )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: BSS does not yet exist. ucBssIdx %d",
- __func__, pwdiDelBSSParams->ucBssIdx);
-
- wpalMutexRelease(&pWDICtx->wptMutex);
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Check if this BSS is being currently processed or queued,
- if queued - queue the new request as well
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
- __func__, pwdiDelBSSParams->ucBssIdx);
-
- wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
-
- wpalMutexRelease(&pWDICtx->wptMutex);
-
- return wdiStatus;
- }
-
- /*-----------------------------------------------------------------------
- If we receive a Del BSS request for an association that is already in
- progress, it indicates that the assoc has failed => we no longer have
- an association in progress => we must check for pending associations
- that were queued and start as soon as the Del BSS response is received
- -----------------------------------------------------------------------*/
- if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
- {
- /*We can switch to false here because even if a subsequent Join comes in
- it will only be processed when DAL transitions out of BUSY state which
- happens when the Del BSS request comes */
- pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
-
- /*Former association is complete - prepare next pending assoc for
- processing */
- WDI_DequeueAssocRequest(pWDICtx);
- }
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
- sizeof(halBssReqMsg.deleteBssParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in start req %p %p %p",
- pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*Fill in the message request structure*/
-
- /*BSS Index is saved on config BSS response and Post Assoc Response */
- halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halBssReqMsg.deleteBssParams,
- sizeof(halBssReqMsg.deleteBssParams));
-
- pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
-
-
- /*-------------------------------------------------------------------------
- Send Del BSS Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
-
-
-}/*WDI_ProcessDelBSSReq*/
-
-/**
- @brief Process Post Assoc Request function (called when Main
- FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessPostAssocReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
- WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
- wpt_uint8 ucCurrentBSSSesIdx = 0;
- WDI_BSSSessionType* pBSSSes = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- wpt_uint16 uMsgSize = 0;
- wpt_uint16 uOffset = 0;
- WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
-
- tPostAssocReqMsg halPostAssocReqMsg;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
- ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-------------------------------------------------------------------------
- Check to see if we are in the middle of an association, if so queue, if
- not it means it is free to process request
- -------------------------------------------------------------------------*/
- wpalMutexAcquire(&pWDICtx->wptMutex);
-
- /*------------------------------------------------------------------------
- Find the BSS for which the request is made
- ------------------------------------------------------------------------*/
- ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
- pwdiPostAssocParams->wdiBSSParams.macBSSID,
- &pBSSSes);
-
- if ( NULL == pBSSSes )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: Association sequence for this BSS does not yet exist - "
- "operation not allowed. macBSSID " MAC_ADDRESS_STR,
- __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Check if this BSS is being currently processed or queued,
- if queued - queue the new request as well
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
- __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
-
- wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
-
- wpalMutexRelease(&pWDICtx->wptMutex);
-
- return wdiStatus;
- }
-
- /*-----------------------------------------------------------------------
- If Post Assoc was not yet received - the current association must
- be in progress
- -----------------------------------------------------------------------*/
- if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
- ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Association sequence for this BSS association no longer in "
- "progress - not allowed");
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*-----------------------------------------------------------------------
- Post Assoc Request is only allowed in Joining state
- -----------------------------------------------------------------------*/
- if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Post Assoc not allowed before JOIN - failing request");
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- wpalMutexRelease(&pWDICtx->wptMutex);
-
- uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
- sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
- /*-----------------------------------------------------------------------
- Fill message for tx over the bus
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
- uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + uMsgSize )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in start req %p %p %p",
- pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*Copy the STA parameters */
- WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
- &pwdiPostAssocParams->wdiSTAParams );
-
- /* Need to fill in the self STA Index */
- if ( WDI_STATUS_SUCCESS !=
- WDI_STATableFindStaidByAddr(pWDICtx,
- pwdiPostAssocParams->wdiSTAParams.macSTA,
- (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- MAC_ADDRESS_STR
- ": This station does not exist in the WDI Station Table",
- MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
- wpalMutexRelease(&pWDICtx->wptMutex);
- wpalMemoryFree(pSendBuffer);
- return WDI_STATUS_E_FAILURE;
- }
-
- /* Need to fill in the BSS index */
- halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
- pBSSSes->ucBSSIdx;
-
- /*Copy the BSS parameters */
- WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
- &pwdiPostAssocParams->wdiBSSParams);
-
- /* Need to fill in the STA index of the peer */
- if ( WDI_STATUS_SUCCESS !=
- WDI_STATableFindStaidByAddr(pWDICtx,
- pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
- (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- MAC_ADDRESS_STR
- ": This station does not exist in the WDI Station Table",
- MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
- wpalMutexRelease(&pWDICtx->wptMutex);
- wpalMemoryFree(pSendBuffer);
- return WDI_STATUS_E_FAILURE;
- }
-
- /* Need to fill in the BSS index */
- halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
- pBSSSes->ucBSSIdx;
-
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halPostAssocReqMsg.postAssocReqParams.configStaParams,
- sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
-
- uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
-
- wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
- &halPostAssocReqMsg.postAssocReqParams.configBssParams,
- sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
-
-
- pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
-
-
- wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
- pwdiPostAssocParams,
- sizeof(pWDICtx->wdiCachedPostAssocReq));
-
- /*-------------------------------------------------------------------------
- Send Post Assoc Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
-
-
-}/*WDI_ProcessPostAssocReq*/
-
-/**
- @brief Process Del STA Request function (called when Main FSM
- allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessDelSTAReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_DelSTAReqParamsType* pwdiDelSTAParams;
- WDI_DelSTARspCb wdiDelSTARspCb;
- wpt_uint8 ucCurrentBSSSesIdx = 0;
- WDI_BSSSessionType* pBSSSes = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- wpt_macAddr macBSSID;
- WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
-
- tDeleteStaReqMsg halDelStaReqMsg;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
- ( NULL == pEventData->pCBfnc ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
- wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
- /*-------------------------------------------------------------------------
- Check to see if we are in the middle of an association, if so queue, if
- not it means it is free to process request
- -------------------------------------------------------------------------*/
- wpalMutexAcquire(&pWDICtx->wptMutex);
-
- /*------------------------------------------------------------------------
- Find the BSS for which the request is made and identify WDI session
- ------------------------------------------------------------------------*/
- if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
- pwdiDelSTAParams->ucSTAIdx,
- &macBSSID))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "This station does not exist in the WDI Station Table %d",
- pwdiDelSTAParams->ucSTAIdx);
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_FAILURE;
- }
-
- ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
- if ( NULL == pBSSSes )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
- __func__, MAC_ADDR_ARRAY(macBSSID));
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Check if this BSS is being currently processed or queued,
- if queued - queue the new request as well
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
- __func__, MAC_ADDR_ARRAY(macBSSID));
-
- wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
- wpalMutexRelease(&pWDICtx->wptMutex);
- return wdiStatus;
- }
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
- sizeof(halDelStaReqMsg.delStaParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in start req %p %p %p",
- pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halDelStaReqMsg.delStaParams,
- sizeof(halDelStaReqMsg.delStaParams));
-
- pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Del STA Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
-
-}/*WDI_ProcessDelSTAReq*/
-
-
-/*==========================================================================
- SECURITY REQUEST PROCESSING API
-==========================================================================*/
-/**
- @brief Process Set BSS Key Request function (called when Main FSM
- allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessSetBssKeyReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
- WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
- wpt_uint8 ucCurrentBSSSesIdx = 0;
- WDI_BSSSessionType* pBSSSes = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
- tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
- wpt_uint8 keyIndex = 0;
-
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
- ( NULL == pEventData->pCBfnc ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
- wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
- /*-------------------------------------------------------------------------
- Check to see if we are in the middle of an association, if so queue, if
- not it means it is free to process request
- -------------------------------------------------------------------------*/
- wpalMutexAcquire(&pWDICtx->wptMutex);
-
- /*------------------------------------------------------------------------
- Find the BSS for which the request is made
- ------------------------------------------------------------------------*/
- ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
- pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
- &pBSSSes);
-
- if ( NULL == pBSSSes )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
- __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Check if this BSS is being currently processed or queued,
- if queued - queue the new request as well
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
- __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
-
- wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
- wpalMutexRelease(&pWDICtx->wptMutex);
- return wdiStatus;
- }
-
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
- sizeof(halSetBssKeyReqMsg.setBssKeyParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in set bss key req %p %p %p",
- pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-----------------------------------------------------------------------
- Copy the Key parameters into the HAL message
- -----------------------------------------------------------------------*/
-
- halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
-
- halSetBssKeyReqMsg.setBssKeyParams.encType =
- WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
-
- halSetBssKeyReqMsg.setBssKeyParams.numKeys =
- pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
-
- for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
- keyIndex++)
- {
- halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
- pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
- halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
- pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
- halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
- pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
- wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
- pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
- WDI_MAX_KEY_RSC_LEN);
- halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
- pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
- halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
- pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
- wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
- pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
- WDI_MAX_KEY_LENGTH);
- }
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halSetBssKeyReqMsg.setBssKeyParams,
- sizeof(halSetBssKeyReqMsg.setBssKeyParams));
-
- pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Set BSS Key Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiSetBSSKeyRspCb, pEventData->pUserData,
- WDI_SET_BSS_KEY_RESP);
-
-}/*WDI_ProcessSetBssKeyReq*/
-
-/**
- @brief Process Remove BSS Key Request function (called when Main
- FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessRemoveBssKeyReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
- WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
- wpt_uint8 ucCurrentBSSSesIdx = 0;
- WDI_BSSSessionType* pBSSSes = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
- tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
- ( NULL == pEventData->pCBfnc ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
- wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
- /*-------------------------------------------------------------------------
- Check to see if we are in the middle of an association, if so queue, if
- not it means it is free to process request
- -------------------------------------------------------------------------*/
- wpalMutexAcquire(&pWDICtx->wptMutex);
-
- /*------------------------------------------------------------------------
- Find the BSS for which the request is made
- ------------------------------------------------------------------------*/
- ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
- pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
- &pBSSSes);
-
- if ( NULL == pBSSSes )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
- __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Check if this BSS is being currently processed or queued,
- if queued - queue the new request as well
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
- __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
-
- wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
- wpalMutexRelease(&pWDICtx->wptMutex);
- return wdiStatus;
- }
-
-
- wpalMutexRelease(&pWDICtx->wptMutex);
-
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
- sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in set bss key req %p %p %p",
- pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
- /*-----------------------------------------------------------------------
- Copy the Key parameters into the HAL message
- -----------------------------------------------------------------------*/
- halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
-
- halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
- WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
-
- halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
-
- halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
- WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halRemoveBssKeyReqMsg.removeBssKeyParams,
- sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
-
- pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Remove BSS Key Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiRemoveBSSKeyRspCb, pEventData->pUserData,
- WDI_RMV_BSS_KEY_RESP);
-}/*WDI_ProcessRemoveBssKeyReq*/
-
-/**
- @brief Process Set STA KeyRequest function (called when Main FSM
- allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessSetStaKeyReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
- WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
- WDI_BSSSessionType* pBSSSes = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
- wpt_macAddr macBSSID;
- wpt_uint8 ucCurrentBSSSesIdx;
- tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
- wpt_uint8 keyIndex = 0;
-
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
- ( NULL == pEventData->pCBfnc ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
- wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
- /*-------------------------------------------------------------------------
- Check to see if we are in the middle of an association, if so queue, if
- not it means it is free to process request
- -------------------------------------------------------------------------*/
- wpalMutexAcquire(&pWDICtx->wptMutex);
-
- /*------------------------------------------------------------------------
- Find the BSS for which the request is made and identify WDI session
- ------------------------------------------------------------------------*/
- if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
- pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
- &macBSSID))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "This station does not exist in the WDI Station Table %d",
- pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_FAILURE;
- }
-
- ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
- if ( NULL == pBSSSes )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
- __func__, MAC_ADDR_ARRAY(macBSSID));
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Check if this BSS is being currently processed or queued,
- if queued - queue the new request as well
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
- __func__, MAC_ADDR_ARRAY(macBSSID));
-
- wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
- wpalMutexRelease(&pWDICtx->wptMutex);
- return wdiStatus;
- }
-
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
- sizeof(halSetStaKeyReqMsg.setStaKeyParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in set bss key req %p %p %p",
- pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
- /*-----------------------------------------------------------------------
- Copy the STA Key parameters into the HAL message
- -----------------------------------------------------------------------*/
- halSetStaKeyReqMsg.setStaKeyParams.encType =
- WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
-
- halSetStaKeyReqMsg.setStaKeyParams.wepType =
- WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
-
- halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
-
- halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
-
- halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
-
- for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
- keyIndex++)
- {
- halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
- pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
- halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
- pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
- halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
- pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
- wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
- pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
- WDI_MAX_KEY_RSC_LEN);
- halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
- pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
- halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
- pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
- wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
- pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
- WDI_MAX_KEY_LENGTH);
- }
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halSetStaKeyReqMsg.setStaKeyParams,
- sizeof(halSetStaKeyReqMsg.setStaKeyParams));
-
- pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Set STA Key Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiSetSTAKeyRspCb, pEventData->pUserData,
- WDI_SET_STA_KEY_RESP);
-
-}/*WDI_ProcessSetSTAKeyReq*/
-
-/**
- @brief Process Remove STA Key Request function (called when
- Main FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessRemoveStaKeyReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
- WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
- WDI_BSSSessionType* pBSSSes = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
- wpt_macAddr macBSSID;
- wpt_uint8 ucCurrentBSSSesIdx;
- tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
- ( NULL == pEventData->pCBfnc ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
- wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
- /*-------------------------------------------------------------------------
- Check to see if we are in the middle of an association, if so queue, if
- not it means it is free to process request
- -------------------------------------------------------------------------*/
- wpalMutexAcquire(&pWDICtx->wptMutex);
-
- /*------------------------------------------------------------------------
- Find the BSS for which the request is made and identify WDI session
- ------------------------------------------------------------------------*/
- if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
- pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
- &macBSSID))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "This station does not exist in the WDI Station Table %d",
- pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_FAILURE;
- }
-
- ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
- if ( NULL == pBSSSes )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
- __func__, MAC_ADDR_ARRAY(macBSSID));
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Check if this BSS is being currently processed or queued,
- if queued - queue the new request as well
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
- __func__, MAC_ADDR_ARRAY(macBSSID));
-
- wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
- wpalMutexRelease(&pWDICtx->wptMutex);
- return wdiStatus;
- }
-
-
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
- sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in set bss key req %p %p %p",
- pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-----------------------------------------------------------------------
- Copy the Key parameters into the HAL message
- -----------------------------------------------------------------------*/
-
- halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
- pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
-
- halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
- WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
-
- halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
- pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
-
- halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
- pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halRemoveStaKeyReqMsg.removeStaKeyParams,
- sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
-
- pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Remove STA Key Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiRemoveSTAKeyRspCb, pEventData->pUserData,
- WDI_RMV_STA_KEY_RESP);
-
-}/*WDI_ProcessRemoveSTAKeyReq*/
-
-/**
- @brief Process Set STA KeyRequest function (called when Main FSM
- allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessSetStaBcastKeyReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
- WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
- WDI_BSSSessionType* pBSSSes = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
- wpt_macAddr macBSSID;
- wpt_uint8 ucCurrentBSSSesIdx;
- tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
- wpt_uint8 keyIndex = 0;
-
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
- ( NULL == pEventData->pCBfnc ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
- wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
- /*-------------------------------------------------------------------------
- Check to see if we are in the middle of an association, if so queue, if
- not it means it is free to process request
- -------------------------------------------------------------------------*/
- wpalMutexAcquire(&pWDICtx->wptMutex);
-
- /*------------------------------------------------------------------------
- Find the BSS for which the request is made and identify WDI session
- ------------------------------------------------------------------------*/
- if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
- pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
- &macBSSID))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "This station does not exist in the WDI Station Table %d",
- pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_FAILURE;
- }
-
- ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
- if ( NULL == pBSSSes )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
- __func__, MAC_ADDR_ARRAY(macBSSID));
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Check if this BSS is being currently processed or queued,
- if queued - queue the new request as well
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
- __func__, MAC_ADDR_ARRAY(macBSSID));
-
- wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
- wpalMutexRelease(&pWDICtx->wptMutex);
- return wdiStatus;
- }
-
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
- sizeof(halSetStaKeyReqMsg.setStaKeyParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in set bss key req %p %p %p",
- pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
- /*-----------------------------------------------------------------------
- Copy the STA Key parameters into the HAL message
- -----------------------------------------------------------------------*/
- halSetStaKeyReqMsg.setStaKeyParams.encType =
- WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
-
- halSetStaKeyReqMsg.setStaKeyParams.wepType =
- WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
-
- halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
-
- halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
-
- halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
-
- for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
- keyIndex++)
- {
- halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
- pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
- halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
- pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
- halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
- pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
- wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
- pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
- WDI_MAX_KEY_RSC_LEN);
- halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
- pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
- halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
- pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
- wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
- pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
- WDI_MAX_KEY_LENGTH);
- }
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halSetStaKeyReqMsg.setStaKeyParams,
- sizeof(halSetStaKeyReqMsg.setStaKeyParams));
-
- pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Set STA Key Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiSetSTAKeyRspCb, pEventData->pUserData,
- WDI_SET_STA_KEY_RESP);
-
-}/*WDI_ProcessSetSTABcastKeyReq*/
-
-/**
- @brief Process Remove STA Key Request function (called when
- Main FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessRemoveStaBcastKeyReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
- WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
- WDI_BSSSessionType* pBSSSes = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
- wpt_macAddr macBSSID;
- wpt_uint8 ucCurrentBSSSesIdx;
- tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
- ( NULL == pEventData->pCBfnc ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
- wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
- /*-------------------------------------------------------------------------
- Check to see if we are in the middle of an association, if so queue, if
- not it means it is free to process request
- -------------------------------------------------------------------------*/
- wpalMutexAcquire(&pWDICtx->wptMutex);
-
- /*------------------------------------------------------------------------
- Find the BSS for which the request is made and identify WDI session
- ------------------------------------------------------------------------*/
- if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
- pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
- &macBSSID))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "This station does not exist in the WDI Station Table %d",
- pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_FAILURE;
- }
-
- ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
- if ( NULL == pBSSSes )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
- __func__, MAC_ADDR_ARRAY(macBSSID));
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Check if this BSS is being currently processed or queued,
- if queued - queue the new request as well
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
- __func__, MAC_ADDR_ARRAY(macBSSID));
-
- wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
- wpalMutexRelease(&pWDICtx->wptMutex);
- return wdiStatus;
- }
-
-
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
- sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in set bss key req %p %p %p",
- pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-----------------------------------------------------------------------
- Copy the Key parameters into the HAL message
- -----------------------------------------------------------------------*/
-
- halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
- pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
-
- halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
- WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
-
- halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
- pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
-
- halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
- pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
- sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
-
- pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Remove STA Key Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiRemoveSTAKeyRspCb, pEventData->pUserData,
- WDI_RMV_STA_KEY_RESP);
-
-}/*WDI_ProcessRemoveSTABcastKeyReq*/
-
-/*==========================================================================
- QOS and BA PROCESSING REQUEST API
-==========================================================================*/
-/**
- @brief Process Add TSpec Request function (called when Main FSM
- allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessAddTSpecReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_AddTSReqParamsType* pwdiAddTSParams;
- WDI_AddTsRspCb wdiAddTSRspCb;
- wpt_uint8 ucCurrentBSSSesIdx = 0;
- WDI_BSSSessionType* pBSSSes = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
- wpt_macAddr macBSSID;
- tAddTsParams halAddTsParams = {0};
-
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
- ( NULL == pEventData->pCBfnc ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
- wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
- /*-------------------------------------------------------------------------
- Check to see if we are in the middle of an association, if so queue, if
- not it means it is free to process request
- -------------------------------------------------------------------------*/
- wpalMutexAcquire(&pWDICtx->wptMutex);
-
- /*------------------------------------------------------------------------
- Find the BSS for which the request is made and identify WDI session
- ------------------------------------------------------------------------*/
- if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
- pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
- &macBSSID))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "This station does not exist in the WDI Station Table %d",
- pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_FAILURE;
- }
-
- ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
- if ( NULL == pBSSSes )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
- __func__, MAC_ADDR_ARRAY(macBSSID));
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Check if this BSS is being currently processed or queued,
- if queued - queue the new request as well
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
- __func__, MAC_ADDR_ARRAY(macBSSID));
-
- wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
- wpalMutexRelease(&pWDICtx->wptMutex);
- return wdiStatus;
- }
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- /*-----------------------------------------------------------------------
- Get message buffer
- ! TO DO : proper conversion into the HAL Message Request Format
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
- sizeof(halAddTsParams),
- &pSendBuffer, &usDataOffset,
- &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in set bss key req %p %p %p",
- pEventData, pwdiAddTSParams, wdiAddTSRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
- halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
-
- //TSPEC IE
- halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
- halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
- halAddTsParams.tspec.nomMsduSz =
- pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
- halAddTsParams.tspec.maxMsduSz =
- pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
- halAddTsParams.tspec.minSvcInterval =
- pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
- halAddTsParams.tspec.maxSvcInterval =
- pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
- halAddTsParams.tspec.inactInterval =
- pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
- halAddTsParams.tspec.suspendInterval =
- pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
- halAddTsParams.tspec.svcStartTime =
- pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
- halAddTsParams.tspec.minDataRate =
- pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
- halAddTsParams.tspec.meanDataRate =
- pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
- halAddTsParams.tspec.peakDataRate =
- pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
- halAddTsParams.tspec.maxBurstSz =
- pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
- halAddTsParams.tspec.delayBound =
- pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
- halAddTsParams.tspec.minPhyRate =
- pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
- halAddTsParams.tspec.surplusBw =
- pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
- halAddTsParams.tspec.mediumTime =
- pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
-
- //TSPEC IE : TS INFO : TRAFFIC
- halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
- pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
- halAddTsParams.tspec.tsinfo.traffic.userPrio =
- pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
- halAddTsParams.tspec.tsinfo.traffic.psb =
- pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
- halAddTsParams.tspec.tsinfo.traffic.aggregation =
- pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
- halAddTsParams.tspec.tsinfo.traffic.direction =
- pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
- halAddTsParams.tspec.tsinfo.traffic.tsid =
- pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
- halAddTsParams.tspec.tsinfo.traffic.trafficType =
- pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
-
- //TSPEC IE : TS INFO : SCHEDULE
- halAddTsParams.tspec.tsinfo.schedule.rsvd =
- pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
- halAddTsParams.tspec.tsinfo.schedule.schedule =
- pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halAddTsParams,
- sizeof(halAddTsParams));
-
- pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Add TS Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiAddTSRspCb, pEventData->pUserData,
- WDI_ADD_TS_RESP);
-}/*WDI_ProcessAddTSpecReq*/
-
-
-/**
- @brief Process Del TSpec Request function (called when Main FSM
- allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessDelTSpecReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_DelTSReqParamsType* pwdiDelTSParams;
- WDI_DelTsRspCb wdiDelTSRspCb;
- wpt_uint8 ucCurrentBSSSesIdx = 0;
- WDI_BSSSessionType* pBSSSes = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
- ( NULL == pEventData->pCBfnc ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
- wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
-
- /*-------------------------------------------------------------------------
- Check to see if we are in the middle of an association, if so queue, if
- not it means it is free to process request
- -------------------------------------------------------------------------*/
- wpalMutexAcquire(&pWDICtx->wptMutex);
-
- /*------------------------------------------------------------------------
- Find the BSS for which the request is made
- ------------------------------------------------------------------------*/
- ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
- pwdiDelTSParams->wdiDelTSInfo.macBSSID,
- &pBSSSes);
-
- if ( NULL == pBSSSes )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
- __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Check if this BSS is being currently processed or queued,
- if queued - queue the new request as well
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
- __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
-
- wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
- wpalMutexRelease(&pWDICtx->wptMutex);
- return wdiStatus;
- }
-
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- /*-----------------------------------------------------------------------
- Get message buffer
- ! TO DO : proper conversion into the HAL Message Request Format
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
- sizeof(pwdiDelTSParams->wdiDelTSInfo),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in set bss key req %p %p %p",
- pEventData, pwdiDelTSParams, wdiDelTSRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &pwdiDelTSParams->wdiDelTSInfo,
- sizeof(pwdiDelTSParams->wdiDelTSInfo));
-
- pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Del TS Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
-}/*WDI_ProcessDelTSpecReq*/
-
-/**
- @brief Process Update EDCA Params Request function (called when
- Main FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessUpdateEDCAParamsReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
- WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
- wpt_uint8 ucCurrentBSSSesIdx = 0;
- WDI_BSSSessionType* pBSSSes = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- WDI_Status wdiStatus;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
- ( NULL == pEventData->pCBfnc ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
- wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
- /*-------------------------------------------------------------------------
- Check to see if we are in the middle of an association, if so queue, if
- not it means it is free to process request
- -------------------------------------------------------------------------*/
- wpalMutexAcquire(&pWDICtx->wptMutex);
-
- /*------------------------------------------------------------------------
- Find the BSS for which the request is made
- ------------------------------------------------------------------------*/
- ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
- pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
- &pBSSSes);
-
- if ( NULL == pBSSSes )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
- __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Check if this BSS is being currently processed or queued,
- if queued - queue the new request as well
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
- __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
-
- wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
- wpalMutexRelease(&pWDICtx->wptMutex);
- return wdiStatus;
- }
-
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- /*-----------------------------------------------------------------------
- Get message buffer
- ! TO DO : proper conversion into the HAL Message Request Format
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
- sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in set bss key req %p %p %p",
- pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &pwdiUpdateEDCAParams->wdiEDCAInfo,
- sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
-
- pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Update EDCA Params Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiUpdateEDCARspCb, pEventData->pUserData,
- WDI_UPD_EDCA_PRMS_RESP);
-}/*WDI_ProcessUpdateEDCAParamsReq*/
-
-/**
- @brief Process Add BA Request function (called when Main FSM
- allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessAddBASessionReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
- WDI_AddBASessionRspCb wdiAddBASessionRspCb;
- wpt_uint8 ucCurrentBSSSesIdx = 0;
- WDI_BSSSessionType* pBSSSes = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
- wpt_macAddr macBSSID;
-
- tAddBASessionReqMsg halAddBASessionReq;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
- ( NULL == pEventData->pCBfnc ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pwdiAddBASessionParams =
- (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
- wdiAddBASessionRspCb =
- (WDI_AddBASessionRspCb)pEventData->pCBfnc;
- /*-------------------------------------------------------------------------
- Check to see if we are in the middle of an association, if so queue, if
- not it means it is free to process request
- -------------------------------------------------------------------------*/
- wpalMutexAcquire(&pWDICtx->wptMutex);
-
- /*------------------------------------------------------------------------
- Find the BSS for which the request is made
- ------------------------------------------------------------------------*/
- if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
- pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
- &macBSSID))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "This station does not exist in the WDI Station Table %d",
- pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_FAILURE;
- }
-
-
- ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
-
- if ( NULL == pBSSSes )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
- __func__, MAC_ADDR_ARRAY(macBSSID));
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Check if this BSS is being currently processed or queued,
- if queued - queue the new request as well
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
- __func__, MAC_ADDR_ARRAY(macBSSID));
-
- wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
- wpalMutexRelease(&pWDICtx->wptMutex);
- return wdiStatus;
- }
-
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
- WDI_ADD_BA_SESSION_REQ,
- sizeof(halAddBASessionReq.addBASessionParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize <
- (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in Add BA session req %p %p %p",
- pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- halAddBASessionReq.addBASessionParams.staIdx =
- pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
- wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
- pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
- WDI_MAC_ADDR_LEN);
- halAddBASessionReq.addBASessionParams.baTID =
- pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
- halAddBASessionReq.addBASessionParams.baPolicy =
- pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
- halAddBASessionReq.addBASessionParams.baBufferSize =
- pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
- halAddBASessionReq.addBASessionParams.baTimeout =
- pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
- halAddBASessionReq.addBASessionParams.baSSN =
- pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
- halAddBASessionReq.addBASessionParams.baDirection =
- pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halAddBASessionReq.addBASessionParams,
- sizeof(halAddBASessionReq.addBASessionParams));
-
- pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Start Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiAddBASessionRspCb, pEventData->pUserData,
- WDI_ADD_BA_SESSION_RESP);
-}/*WDI_ProcessAddBASessionReq*/
-
-/**
- @brief Process Del BA Request function (called when Main FSM
- allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessDelBAReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_DelBAReqParamsType* pwdiDelBAParams;
- WDI_DelBARspCb wdiDelBARspCb;
- wpt_uint8 ucCurrentBSSSesIdx = 0;
- WDI_BSSSessionType* pBSSSes = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
- wpt_macAddr macBSSID;
- tDelBAParams halDelBAparam;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
- ( NULL == pEventData->pCBfnc ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
- wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
- /*-------------------------------------------------------------------------
- Check to see if we are in the middle of an association, if so queue, if
- not it means it is free to process request
- -------------------------------------------------------------------------*/
- wpalMutexAcquire(&pWDICtx->wptMutex);
-
- /*------------------------------------------------------------------------
- Find the BSS for which the request is made
- ------------------------------------------------------------------------*/
- if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
- pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
- &macBSSID))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "This station does not exist in the WDI Station Table %d",
- pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_FAILURE;
- }
-
- ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
-
- if ( NULL == pBSSSes )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
- __func__, MAC_ADDR_ARRAY(macBSSID));
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Check if this BSS is being currently processed or queued,
- if queued - queue the new request as well
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
- __func__, MAC_ADDR_ARRAY(macBSSID));
-
- wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
- wpalMutexRelease(&pWDICtx->wptMutex);
- return wdiStatus;
- }
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
- sizeof(halDelBAparam),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer for DEL BA req %p %p %p",
- pEventData, pwdiDelBAParams, wdiDelBARspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
- halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
- halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halDelBAparam,
- sizeof(halDelBAparam));
-
- pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Start Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
-}/*WDI_ProcessDelBAReq*/
-
-#ifdef FEATURE_WLAN_ESE
-
-WDI_Status
-WDI_ProcessTSMStatsReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_TSMStatsReqParamsType* pwdiTSMParams;
- WDI_TsmRspCb wdiTSMRspCb;
- wpt_uint8 ucCurrentBSSSesIdx = 0;
- WDI_BSSSessionType* pBSSSes = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
- tTsmStatsParams halTsmStatsReqParams = {0};
-
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
- ( NULL == pEventData->pCBfnc ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
- wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
- /*-------------------------------------------------------------------------
- Check to see if we are in the middle of an association, if so queue, if
- not it means it is free to process request
- -------------------------------------------------------------------------*/
- wpalMutexAcquire(&pWDICtx->wptMutex);
-
- ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
- if ( NULL == pBSSSes )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
- __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Check if this BSS is being currently processed or queued,
- if queued - queue the new request as well
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
- __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
-
- wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
- wpalMutexRelease(&pWDICtx->wptMutex);
- return wdiStatus;
- }
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- /*-----------------------------------------------------------------------
- Get message buffer
- ! TO DO : proper conversion into the HAL Message Request Format
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
- sizeof(halTsmStatsReqParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Unable to get send buffer in set bss key req %p %p %p",
- pEventData, pwdiTSMParams, wdiTSMRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
- wpalMemoryCopy(halTsmStatsReqParams.bssId,
- pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
- WDI_MAC_ADDR_LEN);
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halTsmStatsReqParams,
- sizeof(halTsmStatsReqParams));
-
- pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send TSM Stats Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiTSMRspCb, pEventData->pUserData,
- WDI_TSM_STATS_RESP);
-}/*WDI_ProcessTSMStatsReq*/
-
-#endif
-
-
-/**
- @brief Process Flush AC Request function (called when Main FSM
- allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessFlushAcReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
- WDI_FlushAcRspCb wdiFlushAcRspCb;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
- ( NULL == pEventData->pCBfnc ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
- wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
- /*-----------------------------------------------------------------------
- Get message buffer
- ! TO DO : proper conversion into the HAL Message Request Format
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
- sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in set bss key req %p %p %p",
- pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &pwdiFlushAcParams->wdiFlushAcInfo,
- sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
-
- pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Start Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
-}/*WDI_ProcessFlushAcReq*/
-
-/**
- @brief Process BT AMP event Request function (called when Main
- FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessBtAmpEventReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
- WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
-
- tBtAmpEventMsg haltBtAmpEventMsg;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
- ( NULL == pEventData->pCBfnc ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
- wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
- /*-----------------------------------------------------------------------
- Get message buffer
- ! TO DO : proper conversion into the HAL Message Request Format
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
- sizeof(haltBtAmpEventMsg.btAmpEventParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in BT AMP event req %p %p %p",
- pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
- pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &haltBtAmpEventMsg.btAmpEventParams,
- sizeof(haltBtAmpEventMsg.btAmpEventParams));
-
- pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Start Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
-}/*WDI_ProcessBtAmpEventReq*/
-
-/**
- @brief Process Add STA self Request function (called when Main FSM
- allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessAddSTASelfReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
- WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tAddStaSelfParams_V1 halAddSTASelfParams;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData) ||
- ( NULL == pEventData->pCBfnc))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pwdiAddSTASelfReqParams =
- (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
- wdiAddSTASelfReqRspCb =
- (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
- WDI_ADD_STA_SELF_REQ,
- sizeof(tAddStaSelfParams_V1),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
- pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /* Cache the request for response processing */
- wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
- sizeof(pWDICtx->wdiCacheAddSTASelfReq));
-
- wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
- pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
- halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
- if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
- {
- halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
- }
- else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
- VOS_P2P_CLIENT_MODE) ||
- (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
- VOS_P2P_DEVICE_MODE))
- {
- halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
- }
- wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
- sizeof(tAddStaSelfParams_V1));
-
- pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Update Probe Resp Template Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiAddSTASelfReqRspCb, pEventData->pUserData,
- WDI_ADD_STA_SELF_RESP);
-}/*WDI_ProcessAddSTASelfReq*/
-
-
-
-/**
- @brief Process Del Sta Self Request function (called when Main
- FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessDelSTASelfReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
- WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tDelStaSelfParams halSetDelSelfSTAParams;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
- ( NULL == pEventData->pCBfnc ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pwdiDelStaSelfReqParams =
- (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
- wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
-
- /*-----------------------------------------------------------------------
- Get message buffer
- ! TO DO : proper conversion into the HAL Message Request Format
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
- sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize <
- (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in Del Sta Self req %p %p %p",
- pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
- pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
-
- wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
- sizeof(tDelStaSelfParams));
-
- pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Start Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiDelStaSelfRspCb, pEventData->pUserData,
- WDI_DEL_STA_SELF_RESP);
-
-}
-
-#ifdef FEATURE_OEM_DATA_SUPPORT
-/**
- @brief Process Start Oem Data Request function (called when Main
- FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessStartOemDataReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
- WDI_oemDataRspCb wdiOemDataRspCb;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- wpt_uint16 reqLen;
- tStartOemDataReqParams* halStartOemDataReqParams;
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
- ( NULL == pEventData->pCBfnc ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
- wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
-
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
-
- reqLen = sizeof(tStartOemDataReqParams);
-
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
- WDI_START_OEM_DATA_REQ, reqLen,
- &pSendBuffer, &usDataOffset, &usSendSize))||
- (usSendSize < (usDataOffset + reqLen)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in Start Oem Data req %p %p %p",
- pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- //copying WDI OEM DATA REQ PARAMS to shared memory
- halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
-
- wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
- wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
-
- pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Start Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiOemDataRspCb, pEventData->pUserData,
- WDI_START_OEM_DATA_RESP);
-}/*WDI_ProcessStartOemDataReq*/
-#endif
-
-/**
- @brief Process Host Resume Request function (called when Main
- FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessHostResumeReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
- WDI_HostResumeEventRspCb wdiHostResumeRspCb;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tHalWlanHostResumeReqParam halResumeReqParams;
-
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
- ( NULL == pEventData->pCBfnc ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters ",__func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
- wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
-
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
- WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in Start Oem Data req %p %p %p",
- pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- halResumeReqParams.configuredMcstBcstFilterSetting =
- pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halResumeReqParams,
- sizeof(halResumeReqParams));
-
- pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Start Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiHostResumeRspCb, pEventData->pUserData,
- WDI_HOST_RESUME_RESP);
-}/*WDI_ProcessHostResumeReq*/
-
-/**
- @brief Process set Tx Per Tracking Parameters Request function (called
- when Main FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessSetTxPerTrackingReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
- WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
- ( NULL == pEventData->pCBfnc ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters ",__func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
- pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
-
- /*-----------------------------------------------------------------------
- Get message buffer
- ! TO DO : proper conversion into the HAL Message Request Format
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
- sizeof(halTxPerTrackingReqParam),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in set tx per tracking req %p %p %p",
- pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
- halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
- halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
- halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halTxPerTrackingReqParam,
- sizeof(halTxPerTrackingReqParam));
-
- pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Get STA Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
-}/*WDI_ProcessSetTxPerTrackingReq*/
-
-/*=========================================================================
- Indications
-=========================================================================*/
-
-/**
- @brief Process Suspend Indications function (called when Main FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessHostSuspendInd
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_SuspendParamsType *pSuspendIndParams;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- WDI_Status wdiStatus;
- tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters in Suspend ind",__func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
-
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
- WDI_HOST_SUSPEND_IND,
- sizeof(halWlanSuspendIndparams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in Suspend Ind ");
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
- pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
-
- halWlanSuspendIndparams.activeSessionCount =
- WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
-
- wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
- sizeof(tHalWlanHostSuspendIndParam));
-
- /*-------------------------------------------------------------------------
- Send Suspend Request to HAL
- -------------------------------------------------------------------------*/
- pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
-
- wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
- return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
-}/*WDI_ProcessHostSuspendInd*/
-
-
-
-/**
- @brief Process Traffic Stats Indications function (called when Main FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessTrafficStatsInd
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_TrafficStatsIndType* pTrafficStatsIndParams;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- WDI_Status wdiStatus;
- tStatsClassBIndParams* pStatsClassBIndParams;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters in Traffic Stats ind",__func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
-
- if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters in Traffic Stats ind",__func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
- WDI_TRAFFIC_STATS_IND,
- sizeof(tStatsClassBIndParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "Unable to get send buffer in Traffic Stats Ind ");
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
-
- pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
-
- wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
- pTrafficStatsIndParams->pTrafficStats,
- pTrafficStatsIndParams->length);
-
- /*-------------------------------------------------------------------------
- Send Suspend Request to HAL
- -------------------------------------------------------------------------*/
- pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
-
- wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
- return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
-}/*WDI_ProcessTrafficStatsInd*/
-
-#ifdef WLAN_FEATURE_11W
-/**
- @brief Process Exclude Unencrypted Indications function (called
- when Main FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessExcludeUnencryptInd
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- WDI_Status wdiStatus;
- tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
-
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
- WDI_EXCLUDE_UNENCRYPTED_IND,
- sizeof(tHalWlanExcludeUnEncryptedIndParam),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "Unable to get send buffer in Exclude Unencrypted Ind ");
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
-
- pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
-
- wpalMemoryCopy(pHalExcUnencIndParams->bssId,
- pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
-
- /*-------------------------------------------------------------------------
- Send Suspend Request to HAL
- -------------------------------------------------------------------------*/
- pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
-
- wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
- return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
-}/*WDI_ProcessExcludeUnencryptInd*/
-#endif
-
-/**
- @brief Process Add Periodic Tx Pattern Indication function (called when
- Main FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessAddPeriodicTxPtrnInd
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- WDI_Status wdiStatus;
- tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
- wpt_uint8 selfStaIdx = 0;
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if ((NULL == pEventData) || (NULL == pEventData->pEventData))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pAddPeriodicTxPtrnParams =
- (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
-
- /*------------------------------------------------------------------------
- Get message buffer
- ------------------------------------------------------------------------*/
- if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
- WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
- __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
-
- if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
- pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
- &selfStaIdx))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: Failed to get selfStaIdx!", __func__);
- wpalMemoryFree(pSendBuffer);
-
- return WDI_STATUS_E_FAILURE;
- }
-
- halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
- halAddPeriodicTxPtrn->ucPtrnId =
- pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
- halAddPeriodicTxPtrn->usPtrnSize =
- pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
- halAddPeriodicTxPtrn->uPtrnIntervalMs =
- pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
-
- wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
- pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
- pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
-
- /*-------------------------------------------------------------------------
- Send Indication to HAL
- -------------------------------------------------------------------------*/
- pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
-
- wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
-
- return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
-} /* WDI_ProcessAddPeriodicTxPtrnInd */
-
-/**
- @brief Process Delete Periodic Tx Pattern Indication function (called when
- Main FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessDelPeriodicTxPtrnInd
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- WDI_Status wdiStatus;
- tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
- wpt_uint8 selfStaIdx = 0;
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if ((NULL == pEventData) || (NULL == pEventData->pEventData))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pDelPeriodicTxPtrnParams =
- (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
-
- /*------------------------------------------------------------------------
- Get message buffer
- ------------------------------------------------------------------------*/
- if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
- WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
- __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
-
- if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
- pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
- &selfStaIdx))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: Failed to get selfStaIdx!", __func__);
- wpalMemoryFree(pSendBuffer);
-
- return WDI_STATUS_E_FAILURE;
- }
-
- halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
- halDelPeriodicTxPtrn->uPatternIdBitmap =
- pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
-
- /*-------------------------------------------------------------------------
- Send Indication to HAL
- -------------------------------------------------------------------------*/
- pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
-
- wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
-
- return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
-} /* WDI_ProcessDelPeriodicTxPtrnInd */
-
-/*==========================================================================
- MISC CONTROL PROCESSING REQUEST API
-==========================================================================*/
-/**
- @brief Process Channel Switch Request function (called when
- Main FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessChannelSwitchReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_SwitchChReqParamsType* pwdiSwitchChParams;
- WDI_SwitchChRspCb wdiSwitchChRspCb;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
- ( NULL == pEventData->pCBfnc ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
- wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
- /*-----------------------------------------------------------------------
- Get message buffer
- ! TO DO : proper conversion into the HAL Message Request Format
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
- sizeof(halSwitchChannelReq.switchChannelParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in channel switch req %p %p %p",
- pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- halSwitchChannelReq.switchChannelParams.channelNumber =
- pwdiSwitchChParams->wdiChInfo.ucChannel;
-#ifndef WLAN_FEATURE_VOWIFI
- halSwitchChannelReq.switchChannelParams.localPowerConstraint =
- pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
-#endif
- halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
- pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
-
-#ifdef WLAN_FEATURE_VOWIFI
- halSwitchChannelReq.switchChannelParams.maxTxPower
- = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
- wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
- pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
- WDI_MAC_ADDR_LEN);
- wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
- pwdiSwitchChParams->wdiChInfo.macBSSId,
- WDI_MAC_ADDR_LEN);
-#endif
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halSwitchChannelReq.switchChannelParams,
- sizeof(halSwitchChannelReq.switchChannelParams));
-
- pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Switch Channel Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
-}/*WDI_ProcessChannelSwitchReq*/
-
-/**
- @brief Process Config STA Request function (called when Main FSM
- allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessConfigStaReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
- WDI_ConfigSTARspCb wdiConfigSTARspCb;
- wpt_uint8 ucCurrentBSSSesIdx = 0;
- WDI_BSSSessionType* pBSSSes = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
-
- tConfigStaReqMsg halConfigStaReqMsg;
- wpt_uint16 uMsgSize = 0;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
- ( NULL == pEventData->pCBfnc ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
- wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
- /*-------------------------------------------------------------------------
- Check to see if we are in the middle of an association, if so queue, if
- not it means it is free to process request
- -------------------------------------------------------------------------*/
- wpalMutexAcquire(&pWDICtx->wptMutex);
-
- /*------------------------------------------------------------------------
- Find the BSS for which the request is made
- ------------------------------------------------------------------------*/
- ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
- pwdiConfigSTAParams->wdiReqInfo.macBSSID,
- &pBSSSes);
-
- if ( NULL == pBSSSes )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
- __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Check if this BSS is being currently processed or queued,
- if queued - queue the new request as well
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
- __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
-
- wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
- wpalMutexRelease(&pWDICtx->wptMutex);
- return wdiStatus;
- }
-
- wpalMutexRelease(&pWDICtx->wptMutex);
-
- /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
-#ifdef WLAN_FEATURE_11AC
- if (WDI_getFwWlanFeatCaps(DOT11AC))
- uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
- else
-#endif
- uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
-
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
- uMsgSize,
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + uMsgSize )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in config sta req %p %p %p",
- pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*Copy the station context*/
- WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
- &pwdiConfigSTAParams->wdiReqInfo);
-
- if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
- {
- /* Need to fill in the self STA Index */
- if ( WDI_STATUS_SUCCESS !=
- WDI_STATableFindStaidByAddr(pWDICtx,
- pwdiConfigSTAParams->wdiReqInfo.macSTA,
- (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- MAC_ADDRESS_STR
- ": This station does not exist in the WDI Station Table",
- MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
- wpalMutexRelease(&pWDICtx->wptMutex);
- wpalMemoryFree(pSendBuffer);
- return WDI_STATUS_E_FAILURE;
- }
- }
- else
- {
- /* Need to fill in the STA Index to invalid, since at this point we have not
- yet received it from HAL */
- halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
- }
-
- /* Need to fill in the BSS index */
- halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halConfigStaReqMsg.uStaParams,
- uMsgSize);
-
- pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
-
- wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
- pwdiConfigSTAParams,
- sizeof(pWDICtx->wdiCachedConfigStaReq));
-
- /*-------------------------------------------------------------------------
- Send Config STA Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
-}/*WDI_ProcessConfigStaReq*/
-
-
-/**
- @brief Process Set Link State Request function (called when
- Main FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessSetLinkStateReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_SetLinkReqParamsType* pwdiSetLinkParams;
- WDI_SetLinkStateRspCb wdiSetLinkRspCb;
- wpt_uint8 ucCurrentBSSSesIdx = 0;
- WDI_BSSSessionType* pBSSSes = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
- tLinkStateParams halLinkStateReqMsg;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
- ( NULL == pEventData->pCBfnc ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
- wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
- /*-------------------------------------------------------------------------
- Check to see if we are in the middle of an association, if so queue, if
- not it means it is free to process request
- -------------------------------------------------------------------------*/
- wpalMutexAcquire(&pWDICtx->wptMutex);
-
- /*------------------------------------------------------------------------
- Find the BSS for which the request is made
- ------------------------------------------------------------------------*/
- ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
- pwdiSetLinkParams->wdiLinkInfo.macBSSID,
- &pBSSSes);
-
- if ( NULL == pBSSSes )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
- __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
- }
- else
- {
- /*------------------------------------------------------------------------
- Check if this BSS is being currently processed or queued,
- if queued - queue the new request as well
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
- __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
-
- wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
- wpalMutexRelease(&pWDICtx->wptMutex);
- return wdiStatus;
- }
- }
- /* If the link is set to enter IDLE - the Session allocated for this BSS
- will be deleted on the Set Link State response coming from HAL
- - cache the request for response processing */
- wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
- sizeof(pWDICtx->wdiCacheSetLinkStReq));
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- /*-----------------------------------------------------------------------
- Get message buffer
- ! TO DO : proper conversion into the HAL Message Request Format
- -----------------------------------------------------------------------*/
-
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
- sizeof(halLinkStateReqMsg),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in set bss key req %p %p %p",
- pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wpalMemoryCopy(halLinkStateReqMsg.bssid,
- pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
-
- wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
- pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
-
- halLinkStateReqMsg.state =
- WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halLinkStateReqMsg,
- sizeof(halLinkStateReqMsg));
-
- pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Set Link State Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
-}/*WDI_ProcessSetLinkStateReq*/
-
-
-/**
- @brief Process Get Stats Request function (called when Main FSM
- allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessGetStatsReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_GetStatsReqParamsType* pwdiGetStatsParams;
- WDI_GetStatsRspCb wdiGetStatsRspCb;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- wpt_uint8 ucCurrentBSSSesIdx = 0;
- WDI_BSSSessionType* pBSSSes = NULL;
- wpt_macAddr macBSSID;
- WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
- tHalStatsReqMsg halStatsReqMsg;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
- ( NULL == pEventData->pCBfnc ) )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
-
- pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
- wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
-
- /*-------------------------------------------------------------------------
- Check to see if we are in the middle of an association, if so queue, if
- not it means it is free to process request
- -------------------------------------------------------------------------*/
- wpalMutexAcquire(&pWDICtx->wptMutex);
-
- /*------------------------------------------------------------------------
- Find the BSS for which the request is made
- ------------------------------------------------------------------------*/
- if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
- pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
- &macBSSID))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "This station does not exist in the WDI Station Table %d",
- pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_FAILURE;
- }
-
- ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
- if ( NULL == pBSSSes )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
- __func__, MAC_ADDR_ARRAY(macBSSID));
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Check if this BSS is being currently processed or queued,
- if queued - queue the new request as well
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
- __func__, MAC_ADDR_ARRAY(macBSSID));
-
- wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
- wpalMutexRelease(&pWDICtx->wptMutex);
- return wdiStatus;
- }
-
-
- wpalMutexRelease(&pWDICtx->wptMutex);
-
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
- sizeof(halStatsReqMsg.statsReqParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in set bss key req %p %p %p",
- pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- halStatsReqMsg.statsReqParams.staId =
- pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
- halStatsReqMsg.statsReqParams.statsMask =
- pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halStatsReqMsg.statsReqParams,
- sizeof(halStatsReqMsg.statsReqParams));
-
- pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Get STA Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
-}/*WDI_ProcessGetStatsReq*/
-
-#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
-/**
- @brief Process Get Roam Rssi Request function (called when Main FSM
- allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessGetRoamRssiReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
- WDI_GetStatsRspCb wdiGetStatsRspCb;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- wpt_uint8 ucCurrentBSSSesIdx = 0;
- WDI_BSSSessionType* pBSSSes = NULL;
- wpt_macAddr macBSSID;
- WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
- tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
- ( NULL == pEventData->pCBfnc ) )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
- wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
-
- /*-------------------------------------------------------------------------
- Check to see if we are in the middle of an association, if so queue, if
- not it means it is free to process request
- -------------------------------------------------------------------------*/
- wpalMutexAcquire(&pWDICtx->wptMutex);
-
- /*------------------------------------------------------------------------
- Find the BSS for which the request is made
- ------------------------------------------------------------------------*/
- if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
- pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
- &macBSSID))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "This station does not exist in the WDI Station Table %d",
- pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_FAILURE;
- }
-
- ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
- if ( NULL == pBSSSes )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
- __func__, MAC_ADDR_ARRAY(macBSSID));
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Check if this BSS is being currently processed or queued,
- if queued - queue the new request as well
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
- __func__, MAC_ADDR_ARRAY(macBSSID));
-
- wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
- wpalMutexRelease(&pWDICtx->wptMutex);
- return wdiStatus;
- }
-
- wpalMutexRelease(&pWDICtx->wptMutex);
-
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
- sizeof(halRssiRoamReqMsg.roamRssiReqParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in set bss key req %p %p %p",
- pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- halRssiRoamReqMsg.roamRssiReqParams.staId =
- pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halRssiRoamReqMsg.roamRssiReqParams,
- sizeof(halRssiRoamReqMsg.roamRssiReqParams));
-
- pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Get STA Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
-}/*WDI_ProcessGetRoamRssiReq*/
-#endif
-
-/**
- @brief Process Update Cfg Request function (called when Main
- FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessUpdateCfgReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
- WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
-
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
- ( NULL == pEventData->pCBfnc))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
- wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
-
- /*-----------------------------------------------------------------------
- Get message buffer
- ! TO DO : proper conversion into the HAL Message Request Format
- -----------------------------------------------------------------------*/
-
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
- pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in set bss key req %p %p %p",
- pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &pwdiUpdateCfgParams->uConfigBufferLen,
- sizeof(wpt_uint32));
- wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
- pwdiUpdateCfgParams->pConfigBuffer,
- pwdiUpdateCfgParams->uConfigBufferLen);
-
- pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Update Cfg Request to HAL
- -------------------------------------------------------------------------*/
-
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
-
-}/*WDI_ProcessUpdateCfgReq*/
-
-
-/**
- @brief Process Add BA Request function (called when Main FSM
- allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessAddBAReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_AddBAReqParamsType* pwdiAddBAParams;
- WDI_AddBARspCb wdiAddBARspCb;
- wpt_uint8 ucCurrentBSSSesIdx = 0;
- WDI_BSSSessionType* pBSSSes = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
- wpt_macAddr macBSSID;
-
- tAddBAReqMsg halAddBAReq;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData) ||
- ( NULL == pEventData->pCBfnc ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
- wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
-
- /*-------------------------------------------------------------------------
- Check to see if we are in the middle of an association, if so queue, if
- not it means it is free to process request
- -------------------------------------------------------------------------*/
- wpalMutexAcquire(&pWDICtx->wptMutex);
-
- /*------------------------------------------------------------------------
- Find the BSS for which the request is made
- ------------------------------------------------------------------------*/
- if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
- pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
- &macBSSID))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "This station does not exist in the WDI Station Table %d",
- pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_FAILURE;
- }
-
- ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
- if ( NULL == pBSSSes )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
- __func__, MAC_ADDR_ARRAY(macBSSID));
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Check if this BSS is being currently processed or queued,
- if queued - queue the new request as well
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
- __func__, MAC_ADDR_ARRAY(macBSSID));
-
- wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
- wpalMutexRelease(&pWDICtx->wptMutex);
- return wdiStatus;
- }
-
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
- sizeof(halAddBAReq.addBAParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize <
- (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in Add BA req %p %p %p",
- pEventData, pwdiAddBAParams, wdiAddBARspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- halAddBAReq.addBAParams.baSessionID =
- pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
- halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
-#ifdef FEATURE_ON_CHIP_REORDERING
- halAddBAReq.addBAParams.isReorderingDoneOnChip =
- pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
-#endif
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halAddBAReq.addBAParams,
- sizeof(halAddBAReq.addBAParams));
-
- pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Start Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiAddBARspCb, pEventData->pUserData,
- WDI_ADD_BA_RESP);
-}/*WDI_ProcessAddBAReq*/
-
-
-
-/**
- @brief Process Trigger BA Request function (called when Main FSM
- allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessTriggerBAReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
- WDI_TriggerBARspCb wdiTriggerBARspCb;
- wpt_uint8 ucCurrentBSSSesIdx = 0;
- WDI_BSSSessionType* pBSSSes = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
- wpt_uint16 index;
- wpt_macAddr macBSSID;
-
- tTriggerBAReqMsg halTriggerBAReq;
- tTriggerBaReqCandidate* halTriggerBACandidate;
- WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData ) ||
- ( NULL == pEventData->pCBfnc ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
- wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
- /*-------------------------------------------------------------------------
- Check to see if we are in the middle of an association, if so queue, if
- not it means it is free to process request
- -------------------------------------------------------------------------*/
- wpalMutexAcquire(&pWDICtx->wptMutex);
-
- /*------------------------------------------------------------------------
- Find the BSS for which the request is made
- ------------------------------------------------------------------------*/
- if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
- pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
- &macBSSID))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "This station does not exist in the WDI Station Table %d",
- pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_FAILURE;
- }
-
- ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
- if ( NULL == pBSSSes )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
- __func__, MAC_ADDR_ARRAY(macBSSID));
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Check if this BSS is being currently processed or queued,
- if queued - queue the new request as well
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
- __func__, MAC_ADDR_ARRAY(macBSSID));
-
- wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
- wpalMutexRelease(&pWDICtx->wptMutex);
- return wdiStatus;
- }
-
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
- WDI_TRIGGER_BA_REQ,
- sizeof(halTriggerBAReq.triggerBAParams) +
- (sizeof(tTriggerBaReqCandidate) *
- pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize <
- (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
- (sizeof(tTriggerBaReqCandidate) *
- pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in Trigger BA req %p %p %p",
- pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- halTriggerBAReq.triggerBAParams.baSessionID =
- pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
- halTriggerBAReq.triggerBAParams.baCandidateCnt =
- pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halTriggerBAReq.triggerBAParams,
- sizeof(halTriggerBAReq.triggerBAParams));
-
- wdiTriggerBACandidate =
- (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
- halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
- sizeof(halTriggerBAReq.triggerBAParams));
-
- for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
- index++)
- {
- halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
- halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
- halTriggerBACandidate++;
- wdiTriggerBACandidate++;
- }
-
- pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Start Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiTriggerBARspCb, pEventData->pUserData,
- WDI_TRIGGER_BA_RESP);
-}/*WDI_ProcessTriggerBAReq*/
-
-
-
-/**
- @brief Process Update Beacon Params Request function (called when Main FSM
- allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessUpdateBeaconParamsReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
- WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tUpdateBeaconParams halUpdateBeaconParams;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData) ||
- ( NULL == pEventData->pCBfnc))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
- wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
- sizeof(halUpdateBeaconParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in set bss key req %p %p %p",
- pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*BSS Index of the BSS*/
- halUpdateBeaconParams.bssIdx =
- pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
- /*shortPreamble mode. HAL should update all the STA rates when it
- receives this message*/
- halUpdateBeaconParams.fShortPreamble =
- pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
- /* short Slot time.*/
- halUpdateBeaconParams.fShortSlotTime =
- pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
- /* Beacon Interval */
- halUpdateBeaconParams.beaconInterval =
- pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
-
- /*Protection related */
- halUpdateBeaconParams.llaCoexist =
- pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
- halUpdateBeaconParams.llbCoexist =
- pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
- halUpdateBeaconParams.llgCoexist =
- pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
- halUpdateBeaconParams.ht20MhzCoexist =
- pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
- halUpdateBeaconParams.llnNonGFCoexist =
- pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
- halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
- pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
- halUpdateBeaconParams.fRIFSMode =
- pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
- halUpdateBeaconParams.paramChangeBitmap =
- pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
-
- wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
- sizeof(halUpdateBeaconParams));
-
- pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Del TS Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
-}/*WDI_ProcessUpdateBeaconParamsReq*/
-
-
-
-/**
- @brief Process Send Beacon template Request function (called when Main FSM
- allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessSendBeaconParamsReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_SendBeaconParamsType* pwdiSendBeaconParams;
- WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- tSendBeaconReqMsg halSendBeaconReq;
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData ) ||
- ( NULL == pEventData->pCBfnc ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
- wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
- sizeof(halSendBeaconReq.sendBeaconParam),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in send beacon req %p %p %p",
- pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
- pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
- WDI_MAC_ADDR_LEN);
- halSendBeaconReq.sendBeaconParam.beaconLength =
- pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
- wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
- pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
- pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
- halSendBeaconReq.sendBeaconParam.timIeOffset =
- pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
- /* usP2PIeOffset should be atleast greater than timIeOffset */
- if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
- (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
- pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Invalid usP2PIeOffset %hu",
- pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- halSendBeaconReq.sendBeaconParam.p2pIeOffset =
- pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halSendBeaconReq.sendBeaconParam,
- sizeof(halSendBeaconReq.sendBeaconParam));
-
- pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Del TS Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
-}/*WDI_ProcessSendBeaconParamsReq*/
-
-/**
- @brief Process Update Beacon Params Request function (called when Main FSM
- allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessUpdateProbeRspTemplateReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
- WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tSendProbeRespReqParams halUpdateProbeRspTmplParams;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData) ||
- ( NULL == pEventData->pCBfnc))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pwdiUpdateProbeRespTmplParams =
- (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
- wdiUpdateProbeRespTmplRspCb =
- (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
- sizeof(halUpdateProbeRspTmplParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in set bss key req %p %p %p",
- pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
- pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
- WDI_MAC_ADDR_LEN);
-
- halUpdateProbeRspTmplParams.probeRespTemplateLen =
- pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
-
- wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
- pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
- BEACON_TEMPLATE_SIZE);
-
-
- wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
- pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
- WDI_PROBE_REQ_BITMAP_IE_LEN);
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halUpdateProbeRspTmplParams,
- sizeof(halUpdateProbeRspTmplParams));
-
- pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Update Probe Resp Template Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
- WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
-}/*WDI_ProcessUpdateProbeRspTemplateReq*/
-
-/**
- @brief Process NV blob download function (called when Main FSM
- allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessNvDownloadReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
-
- WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
- WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (pwdiNvDownloadReqParams =
- (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
- ( NULL == (wdiNvDownloadRspCb =
- (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*Intialize the Nv Blob Info */
- pWDICtx->wdiNvBlobInfo.usTotalFragment =
- TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
-
- /*cache the wdi nv request message here if the the first fragment
- * To issue the request to HAL for the next fragment */
- if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
- {
- wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
- pwdiNvDownloadReqParams,
- sizeof(pWDICtx->wdiCachedNvDownloadReq));
-
- pWDICtx->pfncRspCB = pEventData->pCBfnc;
- pWDICtx->pRspCBUserData = pEventData->pUserData;
- }
-
- return WDI_SendNvBlobReq(pWDICtx,pEventData);
-}
-
-/**
- @brief Process Set Max Tx Power Request function (called when Main
- FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status WDI_ProcessSetMaxTxPowerReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
- WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tSetMaxTxPwrReq halSetMaxTxPower;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData ) ||
- ( NULL == pEventData->pCBfnc ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
- pwdiSetMaxTxPowerParams =
- (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
- wdiSetMaxTxPowerRspCb =
- (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
-
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
-if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
- sizeof(halSetMaxTxPower.setMaxTxPwrParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
-)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Unable to get Set Max Tx Power req %p %p %p",
- pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
- pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
- WDI_MAC_ADDR_LEN);
-
- wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
- pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
- WDI_MAC_ADDR_LEN);
- halSetMaxTxPower.setMaxTxPwrParams.power =
- pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halSetMaxTxPower.setMaxTxPwrParams,
- sizeof(halSetMaxTxPower.setMaxTxPwrParams));
-
- pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Del TS Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiSetMaxTxPowerRspCb, pEventData->pUserData,
- WDI_SET_MAX_TX_POWER_RESP);
-
-}
-
-/*
- @brief Process Set Max Tx Power Per Band Request function (called when Main
- FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
- WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tpSetMaxTxPwrPerBandParams phalSetMxTxPwrPerBand = NULL;
- WDI_Status rValue = WDI_STATUS_SUCCESS;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData ) ||
- ( NULL == pEventData->pCBfnc ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
- pwdiSetMaxTxPowerPerBandParams = \
- (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
-
- wdiSetMaxTxPowerPerBandRspCb = \
- (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
-
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
-
- rValue = WDI_GetMessageBuffer(pWDICtx,
- WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
- sizeof(tSetMaxTxPwrPerBandParams),
- &pSendBuffer, &usDataOffset, &usSendSize);
-
- if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
- (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Unable to get Set Max Tx Power Per Band req %p %p %p",
- pEventData, pwdiSetMaxTxPowerPerBandParams,
- wdiSetMaxTxPowerPerBandRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
-
- phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandParams)(pSendBuffer + usDataOffset);
- phalSetMxTxPwrPerBand->bandInfo = \
- pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
-
- phalSetMxTxPwrPerBand->power = \
- pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
-
- pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Set Max Tx Power Per Band Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
- wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
- WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
-}
-
-/**
- @brief Process Set Tx Power Request function (called when Main
- FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status WDI_ProcessSetTxPowerReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
- WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tSetTxPwrReqParams *halSetTxPower = NULL;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData ) ||
- ( NULL == pEventData->pCBfnc ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pwdiSetTxPowerParams =
- (WDI_SetTxPowerParamsType*)pEventData->pEventData;
- wdiSetTxPowerRspCb =
- (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
-
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
- sizeof(tSetTxPwrReqParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
- )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Unable to get Set Max Tx Power req %p %p %p",
- pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
- halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
- halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
-
- pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Set Tx Power Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiSetTxPowerRspCb, pEventData->pUserData,
- WDI_SET_TX_POWER_RESP);
-}
-
-/**
- @brief Process P2P Notice Of Absence Request function (called when Main FSM
- allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessP2PGONOAReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
- WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tSetP2PGONOAParams halSetP2PGONOAParams;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData) ||
- ( NULL == pEventData->pCBfnc))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pwdiP2PGONOAReqParams =
- (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
- wdiP2PGONOAReqRspCb =
- (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
- WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
- sizeof(halSetP2PGONOAParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
- pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- halSetP2PGONOAParams.opp_ps =
- pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
- halSetP2PGONOAParams.ctWindow =
- pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
- halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
- halSetP2PGONOAParams.duration =
- pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
- halSetP2PGONOAParams.interval =
- pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
- halSetP2PGONOAParams.single_noa_duration =
- pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
- halSetP2PGONOAParams.psSelection =
- pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halSetP2PGONOAParams,
- sizeof(halSetP2PGONOAParams));
-
- pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Update Probe Resp Template Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiP2PGONOAReqRspCb, pEventData->pUserData,
- WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
-}/*WDI_ProcessP2PGONOAReq*/
-
-#ifdef FEATURE_WLAN_TDLS
-
-/**
- @brief Process P2P Notice Of Absence Request function (called when Main FSM
- allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessTdlsLinkEstablishReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
- WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
-
- tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData) ||
- ( NULL == pEventData->pCBfnc))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
- pwdiTDLSLinkEstablishReqParams =
- (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
- wdiTDLSLinkEstablishReqRspCb =
- (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
-
-
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
- WDI_TDLS_LINK_ESTABLISH_REQ,
- sizeof(halSetTDLSLinkEstablishParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
- pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- halSetTDLSLinkEstablishParams.staIdx =
- pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
- halSetTDLSLinkEstablishParams.bIsResponder =
- pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
- halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
- (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
- halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
- (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
- halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
- (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
- halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
- pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
- halSetTDLSLinkEstablishParams.aAck = 0;
- halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
- halSetTDLSLinkEstablishParams.moreDataAck = 0;
- halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
- halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
- pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
-
- wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
- pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
- pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
- halSetTDLSLinkEstablishParams.validChannelsLen =
- pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
-
- wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
- pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
- pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
- halSetTDLSLinkEstablishParams.validOperClassesLen =
- pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halSetTDLSLinkEstablishParams,
- sizeof(halSetTDLSLinkEstablishParams));
-
- pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Update Probe Resp Template Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
- WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
- return 0;
-}/*WDI_ProcessTdlsLinkEstablishReq*/
-
-
-#endif
-
-
-
-/**
- @brief Function to handle the ack from DXE once the power
- state is set.
- @param None
-
- @see
- @return void
-*/
-void
-WDI_SetPowerStateCb
-(
- wpt_status status,
- unsigned int dxePhyAddr,
- void *pContext
-)
-{
- wpt_status wptStatus;
- WDI_ControlBlockType *pCB = NULL;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
- if(eWLAN_PAL_STATUS_E_FAILURE == status )
- {
- //it shouldn't happen, put an error msg
- }
- /*
- * Trigger the event to bring the Enter BMPS req function to come
- * out of wait
-*/
- if( NULL != pContext )
- {
- pCB = (WDI_ControlBlockType *)pContext;
- }
- else
- {
- //put an error msg
- pCB = &gWDICb;
- }
- pCB->dxePhyAddr = dxePhyAddr;
- wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
- if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Failed to set an event");
-
- WDI_ASSERT(0);
- }
- return;
-}
-
-
-/**
- @brief Process Enter IMPS Request function (called when
- Main FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessEnterImpsReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- wpt_status wptStatus;
- WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- goto failRequest;
- }
-
- /*-----------------------------------------------------------------------
- Get message buffer
- ! TO DO : proper conversion into the HAL Message Request Format
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
- 0,
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in Enter IMPS req %p %p",
- pEventData, wdiEnterImpsRspCb);
- WDI_ASSERT(0);
- goto failRequest;
- }
-
- /* Reset the event to be not signalled */
- wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
- if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "WDI Init failed to reset an event");
-
- WDI_ASSERT(0);
- goto fail;
- }
-
- // notify DTS that we are entering IMPS
- wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
- if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
- WDI_ASSERT(0);
- goto fail;
- }
-
- /*
- * Wait for the event to be set once the ACK comes back from DXE
- */
- wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
- WDI_SET_POWER_STATE_TIMEOUT);
- if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "WDI Init failed to wait on an event");
-
- WDI_ASSERT(0);
- goto fail;
- }
-
- /*-------------------------------------------------------------------------
- Send Get STA Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
-
-fail:
- // Release the message buffer so we don't leak
- wpalMemoryFree(pSendBuffer);
-
-failRequest:
- //WDA should have failure check to avoid the memory leak
- return WDI_STATUS_E_FAILURE;
-}/*WDI_ProcessEnterImpsReq*/
-
-/**
- @brief Process Exit IMPS Request function (called when
- Main FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessExitImpsReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-----------------------------------------------------------------------
- Get message buffer
- ! TO DO : proper conversion into the HAL Message Request Format
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
- 0,
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in Exit IMPS req %p %p",
- pEventData, wdiExitImpsRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-------------------------------------------------------------------------
- Send Get STA Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
-}/*WDI_ProcessExitImpsReq*/
-
-/**
- @brief Process Enter BMPS Request function (called when Main
- FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessEnterBmpsReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
- WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tHalEnterBmpsReqParams enterBmpsReq;
- wpt_status wptStatus;
-
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
- ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- goto failRequest;
- }
-
- /*-----------------------------------------------------------------------
- Get message buffer
- ! TO DO : proper conversion into the HAL Message Request Format
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
- sizeof(enterBmpsReq),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in Enter BMPS req %p %p %p",
- pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
- WDI_ASSERT(0);
- goto failRequest;
- }
-
- /* Reset the event to be not signalled */
- wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
- if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "WDI Init failed to reset an event");
-
- WDI_ASSERT(0);
- goto fail;
- }
-
- // notify DTS that we are entering BMPS
- wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
- if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
- WDI_ASSERT(0);
- goto fail;
- }
-
-/*
- * Wait for the event to be set once the ACK comes back from DXE
- */
- wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
- WDI_SET_POWER_STATE_TIMEOUT);
- if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "WDI Init failed to wait on an event");
-
- WDI_ASSERT(0);
- goto fail;
- }
-
- pWDICtx->bInBmps = eWLAN_PAL_TRUE;
-
- enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
- enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
- enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
- enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
-
- // For ESE and 11R Roaming
- enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
- enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
- enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &enterBmpsReq,
- sizeof(enterBmpsReq));
-
- pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Get STA Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
-
-fail:
- // Release the message buffer so we don't leak
- wpalMemoryFree(pSendBuffer);
-
-failRequest:
- //WDA should have failure check to avoid the memory leak
- return WDI_STATUS_E_FAILURE;
-}/*WDI_ProcessEnterBmpsReq*/
-
-/**
- @brief Process Exit BMPS Request function (called when Main FSM
- allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessExitBmpsReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
- WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tHalExitBmpsReqParams exitBmpsReq;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
- ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-----------------------------------------------------------------------
- Get message buffer
- ! TO DO : proper conversion into the HAL Message Request Format
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
- sizeof(exitBmpsReq),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in Exit BMPS req %p %p %p",
- pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
- exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
-
- exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &exitBmpsReq,
- sizeof(exitBmpsReq));
-
- pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Get STA Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
-}/*WDI_ProcessExitBmpsReq*/
-
-/**
- @brief Process Enter UAPSD Request function (called when Main
- FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessEnterUapsdReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
- WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tUapsdReqParams enterUapsdReq;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
- ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-----------------------------------------------------------------------
- Get message buffer
- ! TO DO : proper conversion into the HAL Message Request Format
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
- sizeof(enterUapsdReq),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in Enter UAPSD req %p %p %p",
- pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
- enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
- enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
- enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
- enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
- enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
- enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
- enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
- enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &enterUapsdReq,
- sizeof(enterUapsdReq));
-
- pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Get STA Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
-}/*WDI_ProcessEnterUapsdReq*/
-
-/**
- @brief Process Exit UAPSD Request function (called when
- Main FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessExitUapsdReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- WDI_ExitUapsdReqParamsType *pExitUapsdparams;
- wpt_uint8 bssIdx = 0;
-
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
- ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-----------------------------------------------------------------------
- Get message buffer
- ! TO DO : proper conversion into the HAL Message Request Format
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
- sizeof(wpt_uint8),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in Exit UAPSD req %p %p",
- pEventData, wdiExitUapsdRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &bssIdx,
- sizeof(wpt_uint8));
-
- pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Get STA Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
-}/*WDI_ProcessExitUapsdReq*/
-
-/**
- @brief Process Set UAPSD params Request function (called when
- Main FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessSetUapsdAcParamsReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
- WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tUapsdInfo uapsdAcParamsReq;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
- ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-----------------------------------------------------------------------
- Get message buffer
- ! TO DO : proper conversion into the HAL Message Request Format
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
- sizeof(uapsdAcParamsReq),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in Set UAPSD params req %p %p %p",
- pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
- uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
- uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
- uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
- uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
- uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &uapsdAcParamsReq,
- sizeof(uapsdAcParamsReq));
-
- pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Get STA Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
-}/*WDI_ProcessSetUapsdAcParamsReq*/
-
-/**
- @brief Process update UAPSD params Request function (called
- when Main FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessUpdateUapsdParamsReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
- WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
- ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-----------------------------------------------------------------------
- Get message buffer
- ! TO DO : proper conversion into the HAL Message Request Format
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
- sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in Update UAPSD params req %p %p %p",
- pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
- sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
-
- pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Get STA Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
-}/*WDI_ProcessUpdateUapsdParamsReq*/
-
-/**
- @brief Process Configure RXP filter Request function (called
- when Main FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessConfigureRxpFilterReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
- WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tHalConfigureRxpFilterReqParams halRxpFilterParams;
-
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
- ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
- sizeof(halRxpFilterParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in Set UAPSD params req %p %p %p",
- pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- halRxpFilterParams.setMcstBcstFilterSetting =
- pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
- halRxpFilterParams.setMcstBcstFilter =
- pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halRxpFilterParams,
- sizeof(halRxpFilterParams));
-
- pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Get STA Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
-}/*WDI_ProcessConfigureRxpFilterReq*/
-
-/**
- @brief Process set beacon filter Request function (called
- when Main FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessSetBeaconFilterReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
- WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
- ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-----------------------------------------------------------------------
- Get message buffer
- ! TO DO : proper conversion into the HAL Message Request Format
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
- sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in Set beacon filter req %p %p %p",
- pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
- sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
- wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
- &pwdiBeaconFilterParams->aFilters[0],
- pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
-
- pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Get STA Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
-}/*WDI_ProcessSetBeaconFilterReq*/
-
-/**
- @brief Process remove beacon filter Request function (called
- when Main FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessRemBeaconFilterReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
- WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
- ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-----------------------------------------------------------------------
- Get message buffer
- ! TO DO : proper conversion into the HAL Message Request Format
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
- sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in remove beacon filter req %p %p %p",
- pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
- sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
-
- pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Get STA Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
-}
-
-/**
- @brief Process set RSSI thresholds Request function (called
- when Main FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessSetRSSIThresholdsReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
- WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tHalRSSIThresholds rssiThresholdsReq;
- WDI_Status ret_status = 0;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
- ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-----------------------------------------------------------------------
- Get message buffer
- ! TO DO : proper conversion into the HAL Message Request Format
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
- sizeof(rssiThresholdsReq),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in remove beacon filter req %p %p %p",
- pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- rssiThresholdsReq.bReserved10 =
- pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
- rssiThresholdsReq.bRssiThres1NegNotify =
- pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
- rssiThresholdsReq.bRssiThres1PosNotify =
- pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
- rssiThresholdsReq.bRssiThres2NegNotify =
- pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
- rssiThresholdsReq.bRssiThres2PosNotify =
- pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
- rssiThresholdsReq.bRssiThres3NegNotify =
- pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
- rssiThresholdsReq.bRssiThres3PosNotify =
- pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
- rssiThresholdsReq.ucRssiThreshold1 =
- pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
- rssiThresholdsReq.ucRssiThreshold2 =
- pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
- rssiThresholdsReq.ucRssiThreshold3 =
- pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &rssiThresholdsReq,
- sizeof(rssiThresholdsReq));
-
- pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Set threshold req to HAL
- -------------------------------------------------------------------------*/
- if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
- {
- // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
- // req. Then as a result of processing the threshold cross ind, we trigger
- // a Set threshold req, then we need to indicate to WDI that it needs to
- // go to busy state as a result of the indication as we sent a req in the
- // same WDI context.
- // Hence expected state transition is to busy.
- pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
- }
-
- return ret_status;
-}
-
-/**
- @brief Process set RSSI thresholds Request function (called
- when Main FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessHostOffloadReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
- WDI_HostOffloadCb wdiHostOffloadCb = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tHalHostOffloadReq hostOffloadParams;
- tHalNSOffloadParams nsOffloadParams;
- wpt_uint8 ucCurrentBSSSesIdx = 0;
- WDI_BSSSessionType* pBSSSes = NULL;
-
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
- ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- goto failRequest;
- }
-
- /*-----------------------------------------------------------------------
- Get message buffer
- ! TO DO : proper conversion into the HAL Message Request Format
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
- sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in host offload req %p %p %p",
- pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
- WDI_ASSERT(0);
- goto failRequest;
- }
-
- ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
- pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
- &pBSSSes);
- if ( NULL == pBSSSes )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
- __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
- goto fail;
- }
-
- hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
- hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
-
- if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
- {
- // ARP Offload
- wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
- pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
- 4);
- }
- else
- {
- // NS Offload
- wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
- pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
- 16);
-
-#ifdef WLAN_NS_OFFLOAD
- // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
- wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
- pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
- 16);
- wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
- pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
- 16);
- wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
- pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
- 16);
- wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
- pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
- 16);
- wpalMemoryCopy(nsOffloadParams.selfMacAddr,
- pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
- 6);
- nsOffloadParams.srcIPv6AddrValid =
- pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
-
- nsOffloadParams.targetIPv6Addr1Valid =
- pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
-
- nsOffloadParams.targetIPv6Addr2Valid =
- pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
-
- nsOffloadParams.slotIndex =
- pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
-
-#endif // WLAN_NS_OFFLOAD
- }
-
- nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
-
- // copy hostOffloadParams into pSendBuffer
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &hostOffloadParams,
- sizeof(hostOffloadParams));
-
- if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
- {
- // copy nsOffloadParams into pSendBuffer
- wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
- &nsOffloadParams,
- sizeof(nsOffloadParams));
- }
- else
- {
-#ifdef WLAN_NS_OFFLOAD
- if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
- {
- // copy nsOffloadParams into pSendBuffer
- wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
- &nsOffloadParams,
- sizeof(nsOffloadParams));
- }
-#endif
- }
-
- pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Get STA Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
-
-fail:
- // Release the message buffer so we don't leak
- wpalMemoryFree(pSendBuffer);
-
-failRequest:
- //WDA should have failure check to avoid the memory leak
- return WDI_STATUS_E_FAILURE;
-}/*WDI_ProcessHostOffloadReq*/
-
-/**
- @brief Process Keep Alive Request function (called
- when Main FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessKeepAliveReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
- WDI_KeepAliveCb wdiKeepAliveCb = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tHalKeepAliveReq keepAliveReq;
- wpt_uint8 ucCurrentBSSSesIdx = 0;
- WDI_BSSSessionType* pBSSSes = NULL;
-
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
- ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Invalid parameters in Keep Alive req");
- WDI_ASSERT(0);
- goto failRequest;
- }
-
- /*-----------------------------------------------------------------------
- Get message buffer
- ! TO DO : proper conversion into the HAL Message Request Format
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
- sizeof(keepAliveReq),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Unable to get send buffer in keep alive req %p %p %p",
- pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
- WDI_ASSERT(0);
- goto failRequest;
- }
-
- ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
- pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
- &pBSSSes);
- if ( NULL == pBSSSes )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- " %s : Association for this BSSID does not exist",__func__);
- goto fail;
- }
-
- keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
- keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
-
- keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
-
- if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
- {
- wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
- pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
- HAL_IPV4_ADDR_LEN);
- wpalMemoryCopy(keepAliveReq.destIpv4Addr,
- pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
- HAL_IPV4_ADDR_LEN);
- wpalMemoryCopy(keepAliveReq.destMacAddr,
- pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
- HAL_MAC_ADDR_LEN);
- }
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &keepAliveReq,
- sizeof(keepAliveReq));
-
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "Process keep alive req %zu", sizeof(keepAliveReq));
-
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "Process keep alive req time period %d",
- keepAliveReq.timePeriod);
-
- pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "Sending keep alive req to HAL");
-
- /*-------------------------------------------------------------------------
- Send Get STA Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
-
-fail:
- // Release the message buffer so we don't leak
- wpalMemoryFree(pSendBuffer);
-
-failRequest:
- //WDA should have failure check to avoid the memory leak
- return WDI_STATUS_E_FAILURE;
-}/*WDI_ProcessKeepAliveReq*/
-
-
-/**
- @brief Process Wowl add bc ptrn Request function (called
- when Main FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessWowlAddBcPtrnReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
- WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
- wpt_uint8 ucCurrentBSSSesIdx = 0;
- WDI_BSSSessionType* pBSSSes = NULL;
-
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
- ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- goto failRequest;
- }
-
- /*-----------------------------------------------------------------------
- Get message buffer
- ! TO DO : proper conversion into the HAL Message Request Format
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
- sizeof(wowlAddBcPtrnReq),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
- pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
- WDI_ASSERT(0);
- goto failRequest;
- }
-
- ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
- pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
- &pBSSSes);
- if ( NULL == pBSSSes )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- " %s : Association for this BSSID does not exist",__func__);
- goto fail;
- }
-
- wowlAddBcPtrnReq.ucPatternId =
- pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
- wowlAddBcPtrnReq.ucPatternByteOffset =
- pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
- wowlAddBcPtrnReq.ucPatternMaskSize =
- pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
- wowlAddBcPtrnReq.ucPatternSize =
- pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
-
- if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
- {
- wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
- pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
- pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
- wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
- pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
- pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
- }
- else
- {
- wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
- pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
- HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
- wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
- pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
- HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
-
- wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
- pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
- pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
- wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
- pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
- pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
- }
-
- wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &wowlAddBcPtrnReq,
- sizeof(wowlAddBcPtrnReq));
-
- pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Get STA Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
-fail:
- // Release the message buffer so we don't leak
- wpalMemoryFree(pSendBuffer);
-
-failRequest:
- //WDA should have failure check to avoid the memory leak
- return WDI_STATUS_E_FAILURE;
-}/*WDI_ProcessWowlAddBcPtrnReq*/
-
-/**
- @brief Process Wowl delete bc ptrn Request function (called
- when Main FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessWowlDelBcPtrnReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
- WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
- wpt_uint8 ucCurrentBSSSesIdx = 0;
- WDI_BSSSessionType* pBSSSes = NULL;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
- ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- goto failRequest;
- }
-
- /*-----------------------------------------------------------------------
- Get message buffer
- ! TO DO : proper conversion into the HAL Message Request Format
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
- sizeof(wowlDelBcPtrnReq),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
- pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
- WDI_ASSERT(0);
- goto failRequest;
- }
-
- ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
- pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
- &pBSSSes);
- if ( NULL == pBSSSes )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- " %s : Association for this BSSID does not exist",__func__);
- goto fail;
- }
-
- wowlDelBcPtrnReq.ucPatternId =
- pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
-
- wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &wowlDelBcPtrnReq,
- sizeof(wowlDelBcPtrnReq));
-
- pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Get STA Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
-
-fail:
- // Release the message buffer so we don't leak
- wpalMemoryFree(pSendBuffer);
-
-failRequest:
- //WDA should have failure check to avoid the memory leak
- return WDI_STATUS_E_FAILURE;
-}/*WDI_ProcessWowlDelBcPtrnReq*/
-
-/**
- @brief Process Wowl enter Request function (called
- when Main FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessWowlEnterReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
- WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tHalWowlEnterParams wowlEnterReq;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
- ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-----------------------------------------------------------------------
- Get message buffer
- ! TO DO : proper conversion into the HAL Message Request Format
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
- sizeof(wowlEnterReq),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in Wowl enter req %p %p %p",
- pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
-
- wowlEnterReq.ucMagicPktEnable =
- pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
- wowlEnterReq.ucPatternFilteringEnable =
- pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
- wowlEnterReq.ucUcastPatternFilteringEnable =
- pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
- wowlEnterReq.ucWowChnlSwitchRcv =
- pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
- wowlEnterReq.ucWowDeauthRcv =
- pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
- wowlEnterReq.ucWowDisassocRcv =
- pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
- wowlEnterReq.ucWowMaxMissedBeacons =
- pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
- wowlEnterReq.ucWowMaxSleepUsec =
- pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
-
-#ifdef WLAN_WAKEUP_EVENTS
- wowlEnterReq.ucWoWEAPIDRequestEnable =
- pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
-
- wowlEnterReq.ucWoWEAPOL4WayEnable =
- pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
-
- wowlEnterReq.ucWowNetScanOffloadMatch =
- pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
-
- wowlEnterReq.ucWowGTKRekeyError =
- pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
-
- wowlEnterReq.ucWoWBSSConnLoss =
- pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
-#endif // WLAN_WAKEUP_EVENTS
-
- wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
-
- wpalMemoryCopy(wowlEnterReq.magicPtrn,
- pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
- sizeof(tSirMacAddr));
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &wowlEnterReq,
- sizeof(wowlEnterReq));
-
- pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Get STA Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
-}/*WDI_ProcessWowlEnterReq*/
-
-/**
- @brief Process Wowl exit Request function (called when Main FSM
- allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessWowlExitReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_WowlExitReqCb wdiWowlExitCb = NULL;
- WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tHalWowlExitParams wowlExitparams;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
- ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-----------------------------------------------------------------------
- Get message buffer
- ! TO DO : proper conversion into the HAL Message Request Format
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
- sizeof(wowlExitparams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in Wowl Exit req %p %p",
- pEventData, wdiWowlExitCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &wowlExitparams,
- sizeof(wowlExitparams));
- /*-------------------------------------------------------------------------
- Send Get STA Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
-}/*WDI_ProcessWowlExitReq*/
-
-/**
- @brief Process Configure Apps Cpu Wakeup State Request function
- (called when Main FSM allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessConfigureAppsCpuWakeupStateReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
- WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
- ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
- sizeof(halCfgAppsCpuWakeupStateReqParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
- pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
- pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halCfgAppsCpuWakeupStateReqParams,
- sizeof(halCfgAppsCpuWakeupStateReqParams));
-
- pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Get STA Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
- WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
-}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
-
-#ifdef WLAN_FEATURE_VOWIFI_11R
-/**
- @brief Process Aggregated Add TSpec Request function (called when Main FSM
- allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessAggrAddTSpecReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
- WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
- wpt_uint8 ucCurrentBSSSesIdx = 0;
- WDI_BSSSessionType* pBSSSes = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
- wpt_macAddr macBSSID;
- tAggrAddTsReq halAggrAddTsReq;
- int i;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
- ( NULL == pEventData->pCBfnc ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
- wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
- pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
- wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
- /*-------------------------------------------------------------------------
- Check to see if we are in the middle of an association, if so queue, if
- not it means it is free to process request
- -------------------------------------------------------------------------*/
- wpalMutexAcquire(&pWDICtx->wptMutex);
-
- /*------------------------------------------------------------------------
- Find the BSS for which the request is made and identify WDI session
- ------------------------------------------------------------------------*/
- if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
- pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
- &macBSSID))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "This station does not exist in the WDI Station Table %d",
- pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_FAILURE;
- }
-
- ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
- if ( NULL == pBSSSes )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
- __func__, MAC_ADDR_ARRAY(macBSSID));
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Check if this BSS is being currently processed or queued,
- if queued - queue the new request as well
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
- __func__, MAC_ADDR_ARRAY(macBSSID));
-
- wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
- wpalMutexRelease(&pWDICtx->wptMutex);
- return wdiStatus;
- }
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- /*-----------------------------------------------------------------------
- Get message buffer
- ! TO DO : proper conversion into the HAL Message Request Format
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
- sizeof(tAggrAddTsParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in set bss key req %p %p %p",
- pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- halAggrAddTsReq.aggrAddTsParam.staIdx =
- pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
- halAggrAddTsReq.aggrAddTsParam.tspecIdx =
- pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
-
- for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
- {
- halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
- pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
- halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
- pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
- halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
- pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
- ackPolicy;
- halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
- pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
- accessPolicy;
- halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
- pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
- userPrio;
- halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
- pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
- psb;
- halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
- pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
- aggregation;
- halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
- pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
- direction;
- halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
- pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
- trafficType;
- halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
- pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
- trafficType;
- halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
- pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
- halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
- pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
-
-
- halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
- pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
- halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
- pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
- halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
- pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
- halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
- pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
- halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
- pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
- halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
- pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
- halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
- pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
- halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
- pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
- halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
- pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
- halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
- pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
- halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
- pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
- halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
- pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
- halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
- pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
- halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
- pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
- halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
- pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
- }
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halAggrAddTsReq,
- sizeof(halAggrAddTsReq));
-
- pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Add TS Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiAggrAddTSRspCb, pEventData->pUserData,
- WDI_AGGR_ADD_TS_RESP);
-}/*WDI_ProcessAggrAddTSpecReq*/
-#endif /* WLAN_FEATURE_VOWIFI_11R */
-
-/**
- @brief Process Shutdown Request function (called when Main FSM
- allows it)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessShutdownReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
- )
-{
- wpt_status wptStatus;
-
-
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if ( NULL == pEventData )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wpalMutexAcquire(&pWDICtx->wptMutex);
-
-
- gWDIInitialized = eWLAN_PAL_FALSE;
- /*! TO DO: stop the data services */
- if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
- {
- /*Stop the STA Table !UT- check this logic again
- It is safer to do it here than on the response - because a stop is imminent*/
- WDI_STATableStop(pWDICtx);
-
- /* Stop Transport Driver, DXE */
- WDTS_Stop(pWDICtx);
- }
-
- /*Clear all pending request*/
- WDI_ClearPendingRequests(pWDICtx);
- /* Close Data transport*/
- /* FTM mode does not open Data Path */
- if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
- {
- WDTS_Close(pWDICtx);
- }
- /*Close the STA Table !UT- check this logic again*/
- WDI_STATableClose(pWDICtx);
- /*close the PAL */
- wptStatus = wpalClose(pWDICtx->pPALContext);
- if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Failed to wpal Close %d", wptStatus);
- WDI_ASSERT(0);
- }
-
- /*Transition back to init state*/
- WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
-
- wpalMutexRelease(&pWDICtx->wptMutex);
-
- /*Make sure the expected state is properly defaulted to Init*/
- pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
-
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessShutdownReq*/
-
-/*========================================================================
- Main DAL Control Path Response Processing API
-========================================================================*/
-
-/**
- @brief Process Start Response function (called when a response
- is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessStartRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_StartRspParamsType wdiRspParams;
- WDI_StartRspCb wdiStartRspCb = NULL;
-
- tHalMacStartRspParams* startRspParams;
-
-#ifndef HAL_SELF_STA_PER_BSS
- WDI_AddStaParams wdiAddSTAParam = {0};
-#endif
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData) ||
- ( NULL == wdiStartRspCb ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
- {
- // not enough data was received
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "Invalid response length in Start Resp Expect %zx Rcvd %x",
- sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-------------------------------------------------------------------------
- Unpack HAL Response Message - the header was already extracted by the
- main Response Handling procedure
- -------------------------------------------------------------------------*/
- startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
-
- wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
- wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
- wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
- wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
- wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
- wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
- wdiRspParams.wlanReportedVersion.major =
- startRspParams->wcnssWlanVersion.major;
- wdiRspParams.wlanReportedVersion.minor =
- startRspParams->wcnssWlanVersion.minor;
- wdiRspParams.wlanReportedVersion.version =
- startRspParams->wcnssWlanVersion.version;
- wdiRspParams.wlanReportedVersion.revision =
- startRspParams->wcnssWlanVersion.revision;
- wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
- startRspParams->wcnssCrmVersionString,
- sizeof(wdiRspParams.wcnssSoftwareVersion));
- wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
- startRspParams->wcnssWlanVersionString,
- sizeof(wdiRspParams.wcnssHardwareVersion));
- wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
-
- /*Save the HAL Version*/
- pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
-
- wpalMutexAcquire(&pWDICtx->wptMutex);
- if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
- {
- pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
-
- /*Cache the start response for further use*/
- wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
- &wdiRspParams,
- sizeof(pWDICtx->wdiCachedStartRspParams));
-
- }
- else
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Failed to start device with status %s(%d)",
- WDI_getHALStatusMsgString(startRspParams->status),
- startRspParams->status);
-
- /*Set the expected state transition to stopped - because the start has
- failed*/
- pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
-
- wpalMutexRelease(&pWDICtx->wptMutex);
-
- /*Notify UMAC*/
- wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
-
- WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
-
- /*Although the response is an error - it was processed by our function
- so as far as the caller is concerned this is a succesful reponse processing*/
- return WDI_STATUS_SUCCESS;
- }
-
- wpalMutexRelease(&pWDICtx->wptMutex);
-
- if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
- {
- /* FTM mode does not need to execute below */
- /* Notify UMAC */
- wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
- return WDI_STATUS_SUCCESS;
- }
-
- /* START the Data transport */
- WDTS_startTransport(pWDICtx);
-
- /*Start the STA Table !- check this logic again*/
- WDI_STATableStart(pWDICtx);
-
-#ifndef HAL_SELF_STA_PER_BSS
- /* Store the Self STA Index */
- pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
-
- pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
- wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
- WDI_MAC_ADDR_LEN);
-
- /* At this point add the self-STA */
-
- /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
- /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
- /*! TO DO: wdiAddSTAParam.dpuSig */
- /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
- /*! TO DO: wdiAddSTAParam.ucHTCapable */
- /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
-
- //all DPU indices are the same for self STA
- wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
- wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
- wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
- wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
- WDI_MAC_ADDR_LEN);
- wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
- wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
-
- /* Note: Since we don't get an explicit config STA request for self STA, we
- add the self STA upon receiving the Start response message. But the
- self STA entry in the table is deleted when WDI gets an explicit delete STA
- request */
- (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
-#endif
-
- /*Notify UMAC*/
- wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessStartRsp*/
-
-
-/**
- @brief Process Stop Response function (called when a response
- is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessStopRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- WDI_StopRspCb wdiStopRspCb = NULL;
-
- tHalMacStopRspMsg halMacStopRspMsg;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData) ||
- ( NULL == wdiStopRspCb ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Invalid response length in Stop Resp %u",
- pEventData->uEventDataSize);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-------------------------------------------------------------------------
- Unpack HAL Response Message - the header was already extracted by the
- main Response Handling procedure
- -------------------------------------------------------------------------*/
- wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
- pEventData->pEventData,
- sizeof(halMacStopRspMsg.stopRspParams));
-
- wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
-
- wpalMutexAcquire(&pWDICtx->wptMutex);
-
- /*--------------------------------------------------------------------------
- Check to see if the stop went OK
- --------------------------------------------------------------------------*/
- if ( WDI_STATUS_SUCCESS != wdiStatus )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Failed to stop the device with status %s (%d)",
- WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
- halMacStopRspMsg.stopRspParams.status);
-
- WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_FAILURE;
- }
-
- pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
-
- /*Transition now as WDI may get preempted imediately after it sends
- up the Stop Response and it will not get to process the state transition
- from Main Rsp function*/
- WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
- wpalMutexRelease(&pWDICtx->wptMutex);
-
- /*! TO DO: - STOP the Data transport */
-
- /*Notify UMAC*/
- wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessStopRsp*/
-
-/**
- @brief Process Close Rsp function (called when a response
- is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessCloseRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- /*There is no close response comming from HAL - function just kept for
- simmetry */
- WDI_ASSERT(0);
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessCloseRsp*/
-
-
-/*============================================================================
- SCAN RESPONSE PROCESSING API
-============================================================================*/
-
-/**
- @brief Process Init Scan Rsp function (called when a response
- is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessInitScanRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- WDI_InitScanRspCb wdiInitScanRspCb;
- tHalInitScanRspMsg halInitScanRspMsg;
- wpt_status wptStatus;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
- if( NULL == wdiInitScanRspCb)
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "%s: call back function is NULL", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-------------------------------------------------------------------------
- Unpack HAL Response Message - the header was already extracted by the
- main Response Handling procedure
- -------------------------------------------------------------------------*/
- wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
- pEventData->pEventData,
- sizeof(halInitScanRspMsg.initScanRspParams));
-
- wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
-
- if ( pWDICtx->bInBmps )
- {
- // notify DTS that we are entering Full power
- wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
- if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
- WDI_ASSERT(0);
- }
- }
-
- /*Notify UMAC*/
- wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessInitScanRsp*/
-
-
-/**
- @brief Process Start Scan Rsp function (called when a response
- is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessStartScanRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_StartScanRspParamsType wdiStartScanParams;
- WDI_StartScanRspCb wdiStartScanRspCb;
-
- tHalStartScanRspMsg halStartScanRspMsg;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
- if( NULL == wdiStartScanRspCb)
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "%s: call back function is NULL", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
- pEventData->pEventData,
- sizeof(halStartScanRspMsg.startScanRspParams));
-
- wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
- halStartScanRspMsg.startScanRspParams.status);
-#ifdef WLAN_FEATURE_VOWIFI
- wdiStartScanParams.ucTxMgmtPower =
- halStartScanRspMsg.startScanRspParams.txMgmtPower;
- wpalMemoryCopy( wdiStartScanParams.aStartTSF,
- halStartScanRspMsg.startScanRspParams.startTSF,
- 2);
-#endif
-
- if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Start scan failed with status %s (%d)",
- WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
- halStartScanRspMsg.startScanRspParams.status);
- /* send the status to UMAC, don't return from here*/
- }
-
- /*Notify UMAC*/
- wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-
-}/*WDI_ProcessStartScanRsp*/
-
-
-/**
- @brief Process End Scan Response function (called when a
- response is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessEndScanRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- tHalEndScanRspMsg halEndScanRspMsg;
- WDI_EndScanRspCb wdiEndScanRspCb;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
- pEventData->pEventData,
- sizeof(halEndScanRspMsg.endScanRspParams));
-
- wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
-
- if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "End Scan failed with status %s (%d )",
- WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
- halEndScanRspMsg.endScanRspParams.status);
- /* send the status to UMAC, don't return from here*/
- }
-
- /*Notify UMAC*/
- wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessEndScanRsp*/
-
-
-/**
- @brief Process Finish Scan Response function (called when a
- response is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessFinishScanRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- WDI_FinishScanRspCb wdiFinishScanRspCb;
-
- tHalFinishScanRspMsg halFinishScanRspMsg;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
- pEventData->pEventData,
- sizeof(halFinishScanRspMsg.finishScanRspParams.status));
-
- wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
-
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
- "Finish scan response reported status: %d",
- halFinishScanRspMsg.finishScanRspParams.status);
-
- if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
- ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Finish Scan failed with status %s (%d)",
- WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
- halFinishScanRspMsg.finishScanRspParams.status);
- /* send the status to UMAC, don't return from here*/
- }
-
- /*Notify UMAC*/
- wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessFinishScanRsp*/
-
-/**
- @brief Process Join Response function (called when a response
- is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessJoinRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- WDI_JoinRspCb wdiJoinRspCb;
- WDI_BSSSessionType* pBSSSes = NULL;
-
- tHalJoinRspMsg halJoinRspMsg;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) ||
- ( NULL == pWDICtx->pfncRspCB ) ||
- ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
- pEventData->pEventData,
- sizeof(halJoinRspMsg.joinRspParams));
-
- wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
-
- wpalMutexAcquire(&pWDICtx->wptMutex);
-
- /*-----------------------------------------------------------------------
- Join response can only be received for an existing assoc that
- is current and in progress
- -----------------------------------------------------------------------*/
- if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
- ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
- "association no longer in progress %d - mysterious HAL response",
- __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
-
- WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
-
- /*-----------------------------------------------------------------------
- Join Response is only allowed in init state
- -----------------------------------------------------------------------*/
- if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Join only allowed in Joining state - failure state is %d "
- "strange HAL response", pBSSSes->wdiAssocState);
-
- WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
-
- /*-----------------------------------------------------------------------
- If assoc has failed the current session will be deleted
- -----------------------------------------------------------------------*/
- if ( WDI_STATUS_SUCCESS != wdiStatus )
- {
- /*Association was failed by HAL - remove session*/
- WDI_DeleteSession(pWDICtx, pBSSSes);
-
- /*Association no longer in progress */
- pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
-
- /*Association no longer in progress - prepare pending assoc for processing*/
- WDI_DequeueAssocRequest(pWDICtx);
-
- }
- else
- {
- /*Transition to state Joining - this may be redundant as we are supposed
- to be in this state already - but just to be safe*/
- pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
- }
-
- wpalMutexRelease(&pWDICtx->wptMutex);
-
- /*Notify UMAC*/
- wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessJoinRsp*/
-
-
-/**
- @brief Process Config BSS Response function (called when a
- response is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessConfigBSSRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
- WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
- wpt_uint8 ucCurrentBSSSesIdx = 0;
- WDI_BSSSessionType* pBSSSes = NULL;
-
- tConfigBssRspMsg halConfigBssRspMsg;
- WDI_AddStaParams wdiBcastAddSTAParam = {0};
- WDI_AddStaParams wdiAddSTAParam = {0};
-
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
- pEventData->pEventData,
- sizeof(halConfigBssRspMsg.configBssRspParams));
-
- wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
- halConfigBssRspMsg.configBssRspParams.status);
- if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
- {
- wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
- pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
- WDI_MAC_ADDR_LEN);
-
- wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
-
- wdiConfigBSSParams.ucBcastSig =
- halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
-
- wdiConfigBSSParams.ucUcastSig =
- halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
-
- wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
-
- #ifdef WLAN_FEATURE_VOWIFI
- wdiConfigBSSParams.ucTxMgmtPower =
- halConfigBssRspMsg.configBssRspParams.txMgmtPower;
- #endif
- wpalMemoryCopy( wdiConfigBSSParams.macSTA,
- halConfigBssRspMsg.configBssRspParams.staMac,
- WDI_MAC_ADDR_LEN );
-
- wpalMutexAcquire(&pWDICtx->wptMutex);
- /*------------------------------------------------------------------------
- Find the BSS for which the request is made
- ------------------------------------------------------------------------*/
- ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
- wdiConfigBSSParams.macBSSID,
- &pBSSSes);
-
- /*-----------------------------------------------------------------------
- Config BSS response can only be received for an existing assoc that
- is current and in progress
- -----------------------------------------------------------------------*/
- if ( NULL == pBSSSes )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Association sequence for this BSS does not yet exist "
- "- mysterious HAL response");
-
- WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*Save data for this BSS*/
- pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
- pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
- pBSSSes->bcastDpuIndex =
- halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
- pBSSSes->bcastDpuSignature =
- halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
- pBSSSes->bcastMgmtDpuIndex =
- halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
- pBSSSes->bcastMgmtDpuSignature =
- halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
- pBSSSes->ucRmfEnabled =
- pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
- pBSSSes->bcastStaIdx =
- halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
-
- /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
-
- /*-------------------------------------------------------------------------
- Add Peer STA
- -------------------------------------------------------------------------*/
- wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
- wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
- wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
-
- /*This info can be retrieved from the cached initial request*/
- wdiAddSTAParam.ucWmmEnabled =
- pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
- wdiAddSTAParam.ucHTCapable =
- pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
- wdiAddSTAParam.ucStaType =
- pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
-
- /* MAC Address of STA */
- wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
- halConfigBssRspMsg.configBssRspParams.staMac,
- WDI_MAC_ADDR_LEN);
-
- wpalMemoryCopy(wdiAddSTAParam.macBSSID,
- pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
- WDI_MAC_ADDR_LEN);
-
- /*Add BSS specific parameters*/
- wdiAddSTAParam.bcastMgmtDpuIndex =
- halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
- wdiAddSTAParam.bcastMgmtDpuSignature =
- halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
- wdiAddSTAParam.bcastDpuIndex =
- halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
- wdiAddSTAParam.bcastDpuSignature =
- halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
- wdiAddSTAParam.ucRmfEnabled =
- pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
- wdiAddSTAParam.ucBSSIdx =
- halConfigBssRspMsg.configBssRspParams.bssIdx;
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
-
- WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
- /*-------------------------------------------------------------------------
- Add Broadcast STA only in AP mode
- -------------------------------------------------------------------------*/
- if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
- WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "Add BCAST STA to table for index: %d",
- halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
-
- wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
- sizeof(WDI_AddStaParams) );
-
- WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
- halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
- }
- wpalMutexRelease(&pWDICtx->wptMutex);
- }
- else
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Config BSS RSP failed with status : %s(%d)",
- WDI_getHALStatusMsgString(
- halConfigBssRspMsg.configBssRspParams.status),
- halConfigBssRspMsg.configBssRspParams.status);
-
-
- /*Association was failed by HAL - remove session*/
- WDI_DeleteSession(pWDICtx, pBSSSes);
-
- /*Association no longer in progress */
- pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
-
- /*Association no longer in progress - prepare pending assoc for processing*/
- WDI_DequeueAssocRequest(pWDICtx);
-
- }
-
- /*Notify UMAC*/
- wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessConfigBSSRsp*/
-
-
-/**
- @brief Process Del BSS Response function (called when a response
- is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessDelBSSRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_DelBSSRspParamsType wdiDelBSSParams;
- WDI_DelBSSRspCb wdiDelBSSRspCb;
- wpt_uint8 ucCurrentBSSSesIdx = 0;
- WDI_BSSSessionType* pBSSSes = NULL;
-
- tDeleteBssRspMsg halDelBssRspMsg;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
- pEventData->pEventData,
- sizeof(halDelBssRspMsg.deleteBssRspParams));
-
-
- wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
- halDelBssRspMsg.deleteBssRspParams.status);
-
- wpalMutexAcquire(&pWDICtx->wptMutex);
-
- /*------------------------------------------------------------------------
- Find the BSS for which the request is made
- ------------------------------------------------------------------------*/
- ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
- halDelBssRspMsg.deleteBssRspParams.bssIdx,
- &pBSSSes);
-
- /*-----------------------------------------------------------------------
- Del BSS response can only be received for an existing assoc that
- is current and in progress
- -----------------------------------------------------------------------*/
- if ( NULL == pBSSSes )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Association sequence for this BSS does not yet exist or "
- "association no longer in progress - mysterious HAL response");
-
- WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*Extract BSSID for the response to UMAC*/
- wpalMemoryCopy(wdiDelBSSParams.macBSSID,
- pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
-
- wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
-
- /*-----------------------------------------------------------------------
- The current session will be deleted
- -----------------------------------------------------------------------*/
- WDI_DeleteSession(pWDICtx, pBSSSes);
-
-
- /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
- if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
- pBSSSes->wdiBssType == WDI_IBSS_MODE)
- {
- (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
- }
-
- /* Delete the STA's in this BSS */
- WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
-
- wpalMutexRelease(&pWDICtx->wptMutex);
-
- /*Notify UMAC*/
- wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessDelBSSRsp*/
-
-/**
- @brief Process Post Assoc Rsp function (called when a response
- is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessPostAssocRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_PostAssocRspParamsType wdiPostAssocParams;
- WDI_PostAssocRspCb wdiPostAssocRspCb;
- wpt_uint8 ucCurrentBSSSesIdx = 0;
- WDI_BSSSessionType* pBSSSes = NULL;
- tPostAssocRspMsg halPostAssocRspMsg;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
- pEventData->pEventData,
- sizeof(halPostAssocRspMsg.postAssocRspParams));
-
- /*Extract the Post Assoc STA Params */
-
- wdiPostAssocParams.staParams.ucSTAIdx =
- halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
- wdiPostAssocParams.staParams.ucUcastSig =
- halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
- wdiPostAssocParams.staParams.ucBcastSig =
- halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
-
- wdiPostAssocParams.wdiStatus =
- WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
-
- /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
- included in the response */
- wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
- pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
- WDI_MAC_ADDR_LEN);
-
- /* Extract Post Assoc BSS Params */
-
- wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
- pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
- WDI_MAC_ADDR_LEN);
-
- /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
- included in the response */
- wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
- pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
- .macSTA, WDI_MAC_ADDR_LEN);
-
- wdiPostAssocParams.bssParams.ucBcastSig =
- halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
-
- wdiPostAssocParams.bssParams.ucUcastSig =
- halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
-
- wdiPostAssocParams.bssParams.ucBSSIdx =
- halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
-
- wdiPostAssocParams.bssParams.ucSTAIdx =
- halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
-
- wpalMutexAcquire(&pWDICtx->wptMutex);
-
- /*------------------------------------------------------------------------
- Find the BSS for which the request is made
- ------------------------------------------------------------------------*/
- ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
- wdiPostAssocParams.bssParams.
- macBSSID, &pBSSSes);
-
- /*-----------------------------------------------------------------------
- Post assoc response can only be received for an existing assoc that
- is current and in progress
- -----------------------------------------------------------------------*/
- if (( NULL == pBSSSes ) ||
- ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
- ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Association sequence for this BSS does not yet exist or "
- "association no longer in progress - mysterious HAL response");
-
- WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*-----------------------------------------------------------------------
- Post Assoc Request is only allowed in Joining state
- -----------------------------------------------------------------------*/
- if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Post Assoc not allowed before JOIN - failing request "
- "strange HAL response");
-
- WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
-
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*-----------------------------------------------------------------------
- If assoc has failed the current session will be deleted
- -----------------------------------------------------------------------*/
- if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
- {
- /*Association was failed by HAL - remove session*/
- WDI_DeleteSession(pWDICtx, pBSSSes);
- }
- else
- {
- /*Transition to state POST Assoc*/
- pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
-
- /*Save DPU Info*/
- pBSSSes->bcastMgmtDpuIndex =
- halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
- pBSSSes->bcastMgmtDpuSignature =
- halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
- pBSSSes->bcastDpuIndex =
- halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
- pBSSSes->bcastDpuSignature =
- halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
-
- pBSSSes->ucBSSIdx =
- halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
- }
-
- /*Association no longer in progress */
- pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
-
- /*Association no longer in progress - prepare pending assoc for processing*/
- WDI_DequeueAssocRequest(pWDICtx);
-
- wpalMutexRelease(&pWDICtx->wptMutex);
-
- /*Notify UMAC*/
- wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessPostAssocRsp*/
-
-/**
- @brief Process Del STA Rsp function (called when a response is
- being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessDelSTARsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_DelSTARspParamsType wdiDelSTARsp;
- WDI_DelSTARspCb wdiDelSTARspCb;
- wpt_uint8 staType;
- tDeleteStaRspMsg halDelStaRspMsg;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
- pEventData->pEventData,
- sizeof(halDelStaRspMsg.delStaRspParams));
-
- wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
- wdiDelSTARsp.wdiStatus =
- WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
-
- WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
-
- /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
- if(staType == WDI_STA_ENTRY_SELF)
- {
- WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
-
- /* At this point add the self-STA */
-
- /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
- /*! TO DO: wdiAddSTAParam.ucHTCapable */
- /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
-
-#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
-#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
-
- //all DPU indices are the same for self STA
- pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
- pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
- pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
- pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
- pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
- pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
-
- pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
- }
- else
- {
- //Delete the station in the table
- WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
- }
-
- /*Notify UMAC*/
- wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessDelSTARsp*/
-
-
-/*==========================================================================
- Security Response Processing Functions
-==========================================================================*/
-
-/**
- @brief Process Set BSS Key Rsp function (called when a response
- is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessSetBssKeyRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- eHalStatus halStatus;
- WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- if ( eHAL_STATUS_SUCCESS != halStatus )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Set BSS Key failed with status %s (%d)",
- WDI_getHALStatusMsgString(halStatus),
- halStatus);
- /* send the status to UMAC, don't return from here*/
- }
-
- /*Notify UMAC*/
- wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessSetBssKeyRsp*/
-
-/**
- @brief Process Remove BSS Key Rsp function (called when a response
- is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessRemoveBssKeyRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- eHalStatus halStatus;
- WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- if ( eHAL_STATUS_SUCCESS != halStatus )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Remove BSS Key failed with status %s (%d )",
- WDI_getHALStatusMsgString(halStatus),
- halStatus);
- /* send the status to UMAC, don't return from here*/
- }
-
- /*Notify UMAC*/
- wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessSetBssKeyRsp*/
-
-
-/**
- @brief Process Set STA Key Rsp function (called when a response
- is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessSetStaKeyRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- eHalStatus halStatus;
- WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- if ( eHAL_STATUS_SUCCESS != halStatus )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Set STA Key failed with status %s (%d)",
- WDI_getHALStatusMsgString(halStatus),
- halStatus);
- /* send the status to UMAC, don't return from here*/
- }
-
- /*Notify UMAC*/
- wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessSetSTAKeyRsp*/
-
-/**
- @brief Process Remove STA Key Rsp function (called when a
- response is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessRemoveStaKeyRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- eHalStatus halStatus;
- WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- if ( eHAL_STATUS_SUCCESS != halStatus )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Remove STA Key failed with status %s (%d)",
- WDI_getHALStatusMsgString(halStatus),
- halStatus);
- /* send the status to UMAC, don't return from here*/
- }
-
- /*Notify UMAC*/
- wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessRemoveStaKeyRsp*/
-
-/**
- @brief Process Set STA Bcast Key Rsp function (called when a
- response is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessSetStaBcastKeyRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- eHalStatus halStatus;
- WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy( &halStatus,
- pEventData->pEventData,
- sizeof(halStatus));
-
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- if ( eHAL_STATUS_SUCCESS != halStatus )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Set STA Key failed with status %s (%d)",
- WDI_getHALStatusMsgString(halStatus),
- halStatus);
- /* send the status to UMAC, don't return from here*/
- }
-
- /*Notify UMAC*/
- wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessSetSTABcastKeyRsp*/
-
-/**
- @brief Process Remove STA Bcast Key Rsp function (called when a
- response is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessRemoveStaBcastKeyRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- eHalStatus halStatus;
- WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy( &halStatus,
- pEventData->pEventData,
- sizeof(halStatus));
-
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- if ( eHAL_STATUS_SUCCESS != halStatus )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Remove STA Key failed with status %s (%d)",
- WDI_getHALStatusMsgString(halStatus),
- halStatus);
- /* send the status to UMAC, don't return from here*/
- }
-
- /*Notify UMAC*/
- wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessRemoveStaBcastKeyRsp*/
-
-
-/*==========================================================================
- QoS and BA Response Processing Functions
-==========================================================================*/
-
-/**
- @brief Process Add TSpec Rsp function (called when a response
- is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessAddTSpecRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- eHalStatus halStatus;
- WDI_AddTsRspCb wdiAddTsRspCb;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- /*Notify UMAC*/
- wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessAddTSpecRsp*/
-
-
-/**
- @brief Process Del TSpec Rsp function (called when a response
- is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessDelTSpecRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- eHalStatus halStatus;
- WDI_DelTsRspCb wdiDelTsRspCb;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- /*Notify UMAC*/
- wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessDelTSpecRsp*/
-
-/**
- @brief Process Update EDCA Parameters Rsp function (called when a
- response is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessUpdateEDCAParamsRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- eHalStatus halStatus;
- WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- /*Notify UMAC*/
- wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessUpdateEDCAParamsRsp*/
-
-
-/**
- @brief Process Add BA Rsp function (called when a response
- is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessAddBASessionRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_AddBASessionRspCb wdiAddBASessionRspCb;
-
- tAddBASessionRspParams halBASessionRsp;
- WDI_AddBASessionRspParamsType wdiBASessionRsp;
-
-
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy( &halBASessionRsp,
- pEventData->pEventData,
- sizeof(halBASessionRsp));
-
- wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
-
- if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
- {
- wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
- wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
- wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
- wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
- wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
- wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
- wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
- }
-
- /*Notify UMAC*/
- wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessAddSessionBARsp*/
-
-
-/**
- @brief Process Del BA Rsp function (called when a response
- is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessDelBARsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- eHalStatus halStatus;
- WDI_DelBARspCb wdiDelBARspCb;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- if ( eHAL_STATUS_SUCCESS == halStatus )
- {
- /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
- }
-
- /*Notify UMAC*/
- wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessDelBARsp*/
-
-#ifdef FEATURE_WLAN_ESE
-/**
- @brief Process TSM Stats Rsp function (called when a response
- is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessTsmStatsRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_TsmRspCb wdiTsmStatsRspCb;
- tTsmStatsRspMsg halTsmStatsRspMsg;
- WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Unpack HAL Response Message - the header was already extracted by the
- main Response Handling procedure
- -------------------------------------------------------------------------*/
- wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
- pEventData->pEventData,
- sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
-
- wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
- wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
- halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
- sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
- sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
- wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
- wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
- wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
- wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
- wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
- wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
- halTsmStatsRspMsg.tsmStatsRspParams.status);
-
- /*Notify UMAC*/
- wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessTsmStatsRsp*/
-
-#endif
-
-
-
-/**
- @brief Process Flush AC Rsp function (called when a response
- is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessFlushAcRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- eHalStatus halStatus;
- WDI_FlushAcRspCb wdiFlushAcRspCb;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy( &halStatus,
- pEventData->pEventData,
- sizeof(halStatus));
-
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- /*Notify UMAC*/
- wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessFlushAcRsp*/
-
-/**
- @brief Process BT AMP event Rsp function (called when a
- response is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessBtAmpEventRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- eHalStatus halStatus;
- WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy( &halStatus,
- pEventData->pEventData,
- sizeof(halStatus));
-
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- /*Notify UMAC*/
- wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessBtAmpEventRsp*/
-
-
-/**
- @brief Process ADD STA SELF Rsp function (called
- when a response is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessAddSTASelfRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
- WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
- tAddStaSelfRspMsg halAddStaSelfRsp;
- WDI_AddStaParams wdiAddSTAParam = {0};
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiAddSTASelfReqParamsRspCb =
- (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
- pEventData->pEventData,
- sizeof(halAddStaSelfRsp.addStaSelfRspParams));
-
-
- wdiAddSTASelfParams.wdiStatus =
- WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
-
- wdiAddSTASelfParams.ucSTASelfIdx =
- halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
- wdiAddSTASelfParams.dpuIdx =
- halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
- wdiAddSTASelfParams.dpuSignature =
- halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
-
- wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
- pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
- WDI_MAC_ADDR_LEN);
-
-
-#ifdef HAL_SELF_STA_PER_BSS
-
- /* At this point add the self-STA */
-
- /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
- /*! TO DO: wdiAddSTAParam.ucHTCapable */
- /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
-
- //all DPU indices are the same for self STA
-
- /*DPU Information*/
- wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
- wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
- wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
- wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
- wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
- wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
-
- wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
- WDI_MAC_ADDR_LEN);
-
- wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
- wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
-
- if(halAddStaSelfRsp.addStaSelfRspParams.status
- != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
- {
- (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
- }
-#endif
-
- /*Notify UMAC*/
- wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessAddSTASelfRsp*/
-
-
-
-/**
- @brief WDI_ProcessDelSTASelfRsp function (called when a
- response is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessDelSTASelfRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
- WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
- tDelStaSelfRspParams delStaSelfRspParams;
- wpt_uint8 ucStaIdx;
-
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
-
- wpalMemoryCopy( &delStaSelfRspParams,
- (wpt_uint8*)pEventData->pEventData,
- sizeof(tDelStaSelfRspParams));
-
- wdiDelStaSelfRspParams.wdiStatus =
- WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
-
- /* delStaSelfRspParams.status is not
- eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
- if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
- {
- WDI_Status wdiStatus;
- wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
- delStaSelfRspParams.selfMacAddr,
- &ucStaIdx);
- if(WDI_STATUS_E_FAILURE == wdiStatus)
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: Unable to extract the STA Idx ", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
- WDI_STATableDelSta(pWDICtx, ucStaIdx);
- }
-
- /*Notify UMAC*/
- wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}
-
-#ifdef FEATURE_OEM_DATA_SUPPORT
-/**
- @brief Start Oem Data Rsp function (called when a
- response is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-
-WDI_Status
-WDI_ProcessStartOemDataRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_oemDataRspCb wdiOemDataRspCb;
- WDI_oemDataRspParamsType* wdiOemDataRspParams;
- tStartOemDataRspParams* halStartOemDataRspParams;
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
-
-
- //It is the responsibility of the application code to check for failure
- //conditions!
-
- //Allocate memory for WDI OEM DATA RSP structure
- wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
-
- if(NULL == wdiOemDataRspParams)
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Failed to allocate memory in OEM DATA Response %p %p %p ",
- pWDICtx, pEventData, pEventData->pEventData);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /* Populate WDI structure members */
- wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
-
- /*Notify UMAC*/
- wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
-
- //Free memory allocated for WDI OEM_DATA MEAS RSP structure
- wpalMemoryFree(wdiOemDataRspParams);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_PrcoessStartOemDataRsp*/
-#endif
-
-/*===========================================================================
- Miscellaneous Control Response Processing API
-===========================================================================*/
-
-/**
- @brief Process Channel Switch Rsp function (called when a response
- is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessChannelSwitchRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_SwitchCHRspParamsType wdiSwitchChRsp;
- WDI_SwitchChRspCb wdiChSwitchRspCb;
- tSwitchChannelRspParams halSwitchChannelRsp;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy( &halSwitchChannelRsp,
- (wpt_uint8*)pEventData->pEventData,
- sizeof(halSwitchChannelRsp));
-
- wdiSwitchChRsp.wdiStatus =
- WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
- wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
-
-#ifdef WLAN_FEATURE_VOWIFI
- wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
-#endif
-
- /*Notify UMAC*/
- wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessChannelSwitchRsp*/
-
-
-/**
- @brief Process Config STA Rsp function (called when a response
- is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessConfigStaRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_ConfigSTARspParamsType wdiCfgSTAParams;
- WDI_ConfigSTARspCb wdiConfigSTARspCb;
- WDI_AddStaParams wdiAddSTAParam;
-
- WDI_BSSSessionType* pBSSSes = NULL;
- wpt_uint8 ucCurrentBSSSesIdx = 0;
-
- tConfigStaRspMsg halConfigStaRsp;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
- pEventData->pEventData,
- sizeof(halConfigStaRsp.configStaRspParams));
-
-
- wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
- wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
- wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
- wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
- wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
-
- /* MAC Address of STA - take from cache as it does not come back in the
- response*/
- wpalMemoryCopy( wdiCfgSTAParams.macSTA,
- pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
- WDI_MAC_ADDR_LEN);
-
- wdiCfgSTAParams.wdiStatus =
- WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
-
- wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
- wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
- wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
-
- if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
- {
- if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
- {
- /* ADD STA to table */
- wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
- wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
- wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
-
- /*This info can be retrieved from the cached initial request*/
- wdiAddSTAParam.ucWmmEnabled =
- pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
- wdiAddSTAParam.ucHTCapable =
- pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
- wdiAddSTAParam.ucStaType =
- pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
- wdiAddSTAParam.ucRmfEnabled =
- pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
-
- /* MAC Address of STA */
- wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
- pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
- WDI_MAC_ADDR_LEN);
-
- wpalMemoryCopy(wdiAddSTAParam.macBSSID,
- pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
- WDI_MAC_ADDR_LEN);
-
- ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
- pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
- &pBSSSes);
-
- if ( NULL == pBSSSes )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Association for this BSSID is not in place");
-
- WDI_ASSERT(0);
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*Add BSS specific parameters*/
- wdiAddSTAParam.bcastMgmtDpuIndex =
- halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
- wdiAddSTAParam.bcastMgmtDpuSignature =
- halConfigStaRsp.configStaRspParams.ucMgmtSig;
- wdiAddSTAParam.bcastDpuIndex =
- halConfigStaRsp.configStaRspParams.bcastDpuIndex;
- wdiAddSTAParam.bcastDpuSignature =
- halConfigStaRsp.configStaRspParams.ucBcastSig;
- wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
-
- WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
- }
- if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
- {
- WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
-
- pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
- halConfigStaRsp.configStaRspParams.bcastDpuIndex;
- pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
- halConfigStaRsp.configStaRspParams.ucBcastSig;
- pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
- halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
- pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
- halConfigStaRsp.configStaRspParams.ucMgmtSig;
- pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
- halConfigStaRsp.configStaRspParams.bssIdx;
- pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
- halConfigStaRsp.configStaRspParams.dpuIndex;
- pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
- halConfigStaRsp.configStaRspParams.ucUcastSig;
- }
- }
-
- /*Notify UMAC*/
- wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessConfigStaRsp*/
-
-
-/**
- @brief Process Set Link State Rsp function (called when a
- response is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessSetLinkStateRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- eHalStatus halStatus;
- WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
-
- WDI_BSSSessionType* pBSSSes = NULL;
- wpt_uint8 ucCurrentBSSSesIdx = 0;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
-
- wpalMutexAcquire(&pWDICtx->wptMutex);
-
- /*If the link is being transitioned to idle - the BSS is to be deleted
- - this type of ending a session is possible when UMAC has failed an
- - association session during Join*/
- if ( WDI_LINK_IDLE_STATE ==
- pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
- {
- /*------------------------------------------------------------------------
- Find the BSS for which the request is made
- ------------------------------------------------------------------------*/
- ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
- pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
- &pBSSSes);
-
- /*-----------------------------------------------------------------------
- Del BSS response can only be received for an existing assoc that
- is current and in progress
- -----------------------------------------------------------------------*/
- if ( NULL == pBSSSes )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "Set link response received outside association session");
- }
- else
- {
- /* For BT AMP roles no need to delete the sessions if assoc fails. There
- will be del BSS coming after this to stop the beaconing & cleaning up the
- sessions*/
- if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
- ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
- {
- /*-----------------------------------------------------------------------
- The current session will be deleted
- -----------------------------------------------------------------------*/
- WDI_DeleteSession(pWDICtx, pBSSSes);
-
- /*-----------------------------------------------------------------------
- Check to see if this association is in progress - if so disable the
- flag as this has ended
- -----------------------------------------------------------------------*/
- if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
- {
- /*Association no longer in progress */
- pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
- /*Association no longer in progress - prepare pending assoc for processing*/
- WDI_DequeueAssocRequest(pWDICtx);
- }
- }
- }
- }
- /* If the link state has been set to POST ASSOC, reset the "association in
- progress" flag */
- if ( WDI_LINK_POSTASSOC_STATE ==
- pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
- {
- pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
- WDI_DequeueAssocRequest(pWDICtx);
- }
-
- wpalMutexRelease(&pWDICtx->wptMutex);
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy( &halStatus,
- pEventData->pEventData,
- sizeof(halStatus));
-
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- /*Notify UMAC*/
- wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessSetLinkStateRsp*/
-
-/**
- @brief Process Get Stats Rsp function (called when a response is
- being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessGetStatsRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_GetStatsRspParamsType *wdiGetStatsRsp;
- WDI_GetStatsRspCb wdiGetStatsRspCb;
- tHalStatsRspParams* pHalStatsRspParams;
-
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
-
- /*allocate the stats response buffer */
- wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
- pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
- + sizeof(WDI_GetStatsRspParamsType));
-
- if(NULL == wdiGetStatsRsp)
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Failed to allocate memory in Get Stats Response %p %p %p ",
- pWDICtx, pEventData, pEventData->pEventData);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
-
- wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
- wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
- wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
- wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
- wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
- wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
-
- /* copy the stats from buffer at the end of the tHalStatsRspParams message */
- wpalMemoryCopy(wdiGetStatsRsp + 1,
- (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
- pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
-
- /*Notify UMAC*/
- wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
-
- wpalMemoryFree(wdiGetStatsRsp);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessGetStatsRsp*/
-
-#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
-/**
- @brief Process Get Roam Rssi Rsp function (called when a response is
- being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessGetRoamRssiRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
- WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
- tHalGetRoamRssiRspMsg halRoamRssiRspParams;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
- if(NULL == wdiGetRoamRssiRspCb)
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "%s: call back function is NULL", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
- pEventData->pEventData,
- sizeof(halRoamRssiRspParams.roamRssiRspParams));
-
- wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
- wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
- wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
-
- /*Notify UMAC*/
- wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessGetRoamRssiRsp*/
-#endif
-
-
-/**
- @brief Process Update Cfg Rsp function (called when a response is
- being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessUpdateCfgRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- eHalStatus halStatus;
- WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- /*Notify UMAC*/
- wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessUpdateCfgRsp*/
-
-
-
-/**
- @brief Process Add BA Rsp function (called when a response
- is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessAddBARsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_AddBARspCb wdiAddBARspCb;
-
- tAddBARspParams halAddBARsp;
- WDI_AddBARspinfoType wdiAddBARsp;
-
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy( &halAddBARsp,
- pEventData->pEventData,
- sizeof(halAddBARsp));
-
- wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
-
- if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
- {
- wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
- }
-
- /*Notify UMAC*/
- wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessAddSessionBARsp*/
-
-/**
- @brief Process Add BA Rsp function (called when a response
- is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessTriggerBARsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_TriggerBARspCb wdiTriggerBARspCb;
-
- tTriggerBARspParams* halTriggerBARsp;
- tTriggerBaRspCandidate* halBaCandidate;
- WDI_TriggerBARspParamsType* wdiTriggerBARsp;
- WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
- wpt_uint16 index;
- wpt_uint16 TidIndex;
- WDI_Status halTriggerBARspStatus;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
-
- halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
-
- if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
- {
- wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
- halTriggerBARsp->baCandidateCnt *
- sizeof(WDI_TriggerBARspCandidateType));
-
- if(NULL == wdiTriggerBARsp)
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Failed to allocate memory in Trigger BA Response %p %p %p ",
- pWDICtx, pEventData, pEventData->pEventData);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
-
- wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
- wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
- halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
-
- wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
- halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
-
- for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
- {
- wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
- halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
- for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
- {
- wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
- halBaCandidate->baInfo[TidIndex].fBaEnable;
- wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
- halBaCandidate->baInfo[TidIndex].startingSeqNum;
- }
- wdiTriggerBARspCandidate++;
- halBaCandidate++;
- }
- }
- else
- {
- wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
-
- if(NULL == wdiTriggerBARsp)
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Failed to allocate memory in Trigger BA Response %p %p %p ",
- pWDICtx, pEventData, pEventData->pEventData);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
-
- }
-
- /*Notify UMAC*/
- wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
-
- wpalMemoryFree(wdiTriggerBARsp);
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessAddSessionBARsp*/
-
-/**
- @brief Process Update Beacon Params Rsp function (called when a response
- is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessUpdateBeaconParamsRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- eHalStatus halStatus;
- WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy( &halStatus,
- pEventData->pEventData,
- sizeof(halStatus));
-
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- /*Notify UMAC*/
- wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessUpdateBeaconParamsRsp*/
-
-/**
- @brief Process Send Beacon template Rsp function (called when a response
- is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessSendBeaconParamsRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- eHalStatus halStatus;
- WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy( &halStatus,
- pEventData->pEventData,
- sizeof(halStatus));
-
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- /*Notify UMAC*/
- wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessSendBeaconParamsRsp*/
-
-
-/**
- @brief Process Update Probe Resp Template Rsp function (called
- when a response is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessUpdateProbeRspTemplateRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- eHalStatus halStatus;
- WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy( &halStatus,
- pEventData->pEventData,
- sizeof(halStatus));
-
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- /*Notify UMAC*/
- wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
-
- /**
- @brief Process Set Max Tx Power Rsp function (called when a response
- is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessSetMaxTxPowerRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- tSetMaxTxPwrRspMsg halTxpowerrsp;
-
- WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
-
- WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
- pEventData->pEventData,
- sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
-
- if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Error status returned in Set Max Tx Power Response ");
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiSetMaxTxPowerRspMsg.wdiStatus =
- WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
- wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
-
- /*Notify UMAC*/
- wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}
-
- /**
- @brief Process Set Tx Power Rsp function (called when a response
- is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessSetTxPowerRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- tSetTxPwrRspMsg halTxpowerrsp;
- WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
- WDA_SetTxPowerRspCb wdiReqStatusCb;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
- pEventData->pEventData,
- sizeof(halTxpowerrsp.setTxPwrRspParams));
-
- if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Error status returned in Set Tx Power Response ");
- WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiSetTxPowerRspMsg.wdiStatus =
- WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
-
- /*Notify UMAC*/
- wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}
-
-/**
- @brief Process Set Max Tx Power Per Band Rsp function (called when a response
- is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessSetMaxTxPowerPerBandRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
- WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
- WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
- pEventData->pEventData,
- sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
-
- if (eHAL_STATUS_SUCCESS !=
- halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Error status returned in Set Max Tx Power Per Band Response");
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiSetTxPowerPerBandRspMsg.wdiStatus =
- WDI_HAL_2_WDI_STATUS(
- halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
-
- /* Notify UMAC */
- wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}
-
-#ifdef FEATURE_WLAN_TDLS
-/**
- @brief Process TDLS Link Establish Rsp function (called
- when a response is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessLinkEstablishReqRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- eHalStatus halStatus;
- WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
- tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
- WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
-
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-------------------------------------------------------------------------
- Extract indication and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
- pEventData->pEventData,
- sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
-
- wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy( &halStatus,
- pEventData->pEventData,
- sizeof(halStatus));
-
- wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
- wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
-
- /*Notify UMAC*/
- wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessLinkEstablishReqRsp*/
-#endif
-
-/**
- @brief Process P2P Group Owner Notice Of Absense Rsp function (called
- when a response is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessP2PGONOARsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- eHalStatus halStatus;
- WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy( &halStatus,
- pEventData->pEventData,
- sizeof(halStatus));
-
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- /*Notify UMAC*/
- wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessP2PGONOARsp*/
-/**
- @brief Process Enter IMPS Rsp function (called when a response
- is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessEnterImpsRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- eHalStatus halStatus;
- WDI_EnterImpsRspCb wdiEnterImpsRspCb;
- wpt_status wptStatus;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- halStatus = *((eHalStatus*)pEventData->pEventData);
-
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
- * Other module states are taken care by PMC.
- * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
- */
- if (wdiStatus != WDI_STATUS_SUCCESS) {
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
- halStatus);
- /* Call Back is not required as we are putting the DXE in FULL
- * and riva is already in full (IMPS RSP Failed)*/
- wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
-
- if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
- WDI_ASSERT(0);
- }
- }
- /*Notify UMAC*/
- wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessEnterImpsRsp*/
-
-/**
- @brief Process Exit IMPS Rsp function (called when a response
- is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessExitImpsRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- eHalStatus halStatus;
- WDI_ExitImpsRspCb wdiExitImpsRspCb;
- wpt_status wptStatus;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- if (halStatus != eHAL_STATUS_SUCCESS)
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
-
- // notify DTS that we are entering Full power
- wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
- if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
- WDI_ASSERT(0);
- }
- /*Notify UMAC*/
- wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessExitImpsRsp*/
-
-/**
- @brief Process Enter BMPS Rsp function (called when a response
- is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessEnterBmpsRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- eHalStatus halStatus = eHAL_STATUS_FAILURE;
- tHalEnterBmpsRspParams halEnterBmpsRsp;
- WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
- WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
- wpt_status wptStatus;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
- {
- wpalMemoryCopy( &halEnterBmpsRsp,
- pEventData->pEventData,
- sizeof(halEnterBmpsRsp));
-
- //Used to print debug message
- halStatus = halEnterBmpsRsp.status;
- wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
- wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
- }
- else
- {
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
- }
-
- wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
-
- /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
- * Other module states are taken care by PMC.
- * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
- */
- if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
- {
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
- halStatus);
- /* Call Back is not required as we are putting the DXE in FULL
- * and riva is already in FULL (BMPS RSP Failed)*/
- wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
- if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
- WDI_ASSERT(0);
- }
- pWDICtx->bInBmps = eWLAN_PAL_FALSE;
- }
-
- /*Notify UMAC*/
- wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessEnterBmpsRsp*/
-
-/**
- @brief Process Exit BMPS Rsp function (called when a response
- is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessExitBmpsRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- eHalStatus halStatus;
- WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
- tHalExitBmpsRspParams halExitBmpsRsp;
- WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
- wpt_status wptStatus;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
-
- if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
- {
- wpalMemoryCopy( &halExitBmpsRsp,
- pEventData->pEventData,
- sizeof(halExitBmpsRsp));
-
- wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
- wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
- }
- else
- {
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
- }
-
- // notify DTS that we are entering Full power
- wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
- if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
- WDI_ASSERT(0);
- }
- pWDICtx->bInBmps = eWLAN_PAL_FALSE;
-
- /*Notify UMAC*/
- wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessExitBmpsRsp*/
-
-/**
- @brief Process Enter UAPSD Rsp function (called when a response
- is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessEnterUapsdRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- eHalStatus halStatus;
- tUapsdRspParams halEnterUapsdRsp;
- WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
- WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
-
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
- {
- wpalMemoryCopy( &halEnterUapsdRsp,
- pEventData->pEventData,
- sizeof(halEnterUapsdRsp));
-
- wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
- wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
- }
- else
- {
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
- }
-
- if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
- {
- // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
- // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
- // the traffic to decide when to suspend the trigger frames when there is no traffic
- // activity on the trigger enabled ACs
- pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
-
-#ifdef WLAN_PERF
- // Increment the BD signature to refresh the fast path BD utilization
- pWDICtx->uBdSigSerialNum++;
-#endif
- }
-
- /*Notify UMAC*/
- wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessEnterUapsdRsp*/
-
-/**
- @brief Process Exit UAPSD Rsp function (called when a response
- is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessExitUapsdRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- eHalStatus halStatus;
- WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
- tHalExitUapsdRspParams halExitUapsdRsp;
- WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
- {
- wpalMemoryCopy( &halExitUapsdRsp,
- pEventData->pEventData,
- sizeof(halExitUapsdRsp));
-
- wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
- wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
- }
- else
- {
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
- }
- // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
- // directly instead of the FW WQ.
- pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
-
-#ifdef WLAN_PERF
- // Increment the BD signature to refresh the fast path BD utilization
- pWDICtx->uBdSigSerialNum++;
-#endif
-
- /*Notify UMAC*/
- wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessExitUapsdRsp*/
-
-/**
- @brief Process set UAPSD params Rsp function (called when a
- response is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessSetUapsdAcParamsRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- eHalStatus halStatus;
- WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- /*Notify UMAC*/
- wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessSetUapsdAcParamsRsp*/
-
-/**
- @brief Process update UAPSD params Rsp function (called when a
- response is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessUpdateUapsdParamsRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- eHalStatus halStatus;
- WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- /*Notify UMAC*/
- wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessUpdateUapsdParamsRsp*/
-
-/**
- @brief Process Configure RXP filter Rsp function (called when a
- response is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessConfigureRxpFilterRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- eHalStatus halStatus;
- WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- /*Notify UMAC*/
- wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessConfigureRxpFilterRsp*/
-
-/**
- @brief Process Set beacon filter Rsp function (called when a
- response is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessSetBeaconFilterRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- eHalStatus halStatus;
- WDI_SetBeaconFilterCb wdiBeaconFilterCb;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- /*Notify UMAC*/
- wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessSetBeaconFilterRsp*/
-
-/**
- @brief Process remove beacon filter Rsp function (called when a
- response is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessRemBeaconFilterRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- eHalStatus halStatus;
- WDI_RemBeaconFilterCb wdiBeaconFilterCb;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- /*Notify UMAC*/
- wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessRemBeaconFilterRsp*/
-
-/**
- @brief Process set RSSI thresholds Rsp function (called when a
- response is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessSetRSSIThresoldsRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- eHalStatus halStatus;
- WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- /*Notify UMAC*/
- wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessSetRSSIThresoldsRsp*/
-
-/**
- @brief Process host offload Rsp function (called when a
- response is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessHostOffloadRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- eHalStatus halStatus;
- WDI_HostOffloadCb wdiHostOffloadCb;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- /*Notify UMAC*/
- wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessHostOffloadRsp*/
-
-/**
- @brief Process keep alive Rsp function (called when a
- response is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessKeepAliveRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- eHalStatus halStatus;
- WDI_KeepAliveCb wdiKeepAliveCb;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Received WDI_ProcessKeepAliveRsp Callback from HAL");
-
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- /*Notify UMAC*/
- wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessKeepAliveRsp*/
-
-/**
- @brief Process wowl add ptrn Rsp function (called when a
- response is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessWowlAddBcPtrnRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- eHalStatus halStatus;
- WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
- tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
- WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
-
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
- {
- wpalMemoryCopy( &halAddWowlBcastPtrRsp,
- pEventData->pEventData,
- sizeof(halAddWowlBcastPtrRsp));
-
- wdiWowlAddBcPtrRsp.wdiStatus =
- WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
- }
- else
- {
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiWowlAddBcPtrRsp.wdiStatus =
- WDI_HAL_2_WDI_STATUS(halStatus);
- }
-
- /*Notify UMAC*/
- wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessWowlAddBcPtrnRsp*/
-
-/**
- @brief Process wowl delete ptrn Rsp function (called when a
- response is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessWowlDelBcPtrnRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- eHalStatus halStatus;
- WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
- tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
- WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
- {
- wpalMemoryCopy( &halDelWowlBcastPtrRsp,
- pEventData->pEventData,
- sizeof(halDelWowlBcastPtrRsp));
-
- wdiWowlDelBcstPtrRsp.wdiStatus =
- WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
- }
- else
- {
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
- }
- /*Notify UMAC*/
- wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessWowlDelBcPtrnRsp*/
-
-/**
- @brief Process wowl enter Rsp function (called when a response
- is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessWowlEnterRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- eHalStatus halStatus;
- WDI_WowlEnterReqCb wdiWowlEnterCb;
- WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
- tHalEnterWowlRspParams halEnterWowlRspParams;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
- {
- wpalMemoryCopy( &halEnterWowlRspParams,
- (wpt_uint8*)pEventData->pEventData,
- sizeof(halEnterWowlRspParams));
-
- wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
- wdiwowlEnterRsp.status =
- WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
- }
- else
- {
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
- }
- /*Notify UMAC*/
- wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessWowlEnterRsp*/
-
-/**
- @brief Process wowl exit Rsp function (called when a response
- is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessWowlExitRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- eHalStatus halStatus;
- WDI_WowlExitReqCb wdiWowlExitCb;
- tHalExitWowlRspParams halExitWowlRspParams;
- WDI_WowlExitRspParamsType wdiWowlExitRsp;
-
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
- {
- wpalMemoryCopy( &halExitWowlRspParams,
- pEventData->pEventData,
- sizeof(halExitWowlRspParams));
-
- wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
- wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
-
- }
- else
- {
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
- }
- /*Notify UMAC*/
- wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessWowlExitRsp*/
-
-/**
- @brief Process Configure Apps CPU wakeup State Rsp function
- (called when a response is being received over the bus
- from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessConfigureAppsCpuWakeupStateRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- eHalStatus halStatus;
- WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- /*Notify UMAC*/
- wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
-
-
-/**
- @brief Process Nv download(called when a response
- is being received over the bus from HAL,will check if the responce is )
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessNvDownloadRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
-
- WDI_NvDownloadRspCb wdiNvDownloadRspCb;
- tHalNvImgDownloadRspParams halNvDownloadRsp;
- WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy( &halNvDownloadRsp,
- pEventData->pEventData,
- sizeof(halNvDownloadRsp));
-
- wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
-
- if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
- (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
- pWDICtx->wdiNvBlobInfo.usTotalFragment ))
- {
- WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
- (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
- }
- else
- {
- /*Reset the Nv related global information in WDI context information */
- pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
- pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
- pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
- /*call WDA callback function for last fragment */
- wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
- wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
- }
-
- return WDI_STATUS_SUCCESS;
-}
-#ifdef WLAN_FEATURE_VOWIFI_11R
-/**
- @brief Process Add TSpec Rsp function (called when a response
- is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessAggrAddTSpecRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- tAggrAddTsRspParams aggrAddTsRsp;
- WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy( &aggrAddTsRsp,
- pEventData->pEventData,
- sizeof(aggrAddTsRsp));
-
- /* What is the difference between status0 and status1? */
- wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
-
- /*Notify UMAC*/
- wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessAddTSpecRsp*/
-#endif /* WLAN_FEATURE_VOWIFI_11R */
-
-/**
- @brief WDI_ProcessHostResumeRsp function (called when a
- response is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessHostResumeRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_SuspendResumeRspParamsType wdiResumeRspParams;
- WDI_HostResumeEventRspCb wdiHostResumeRspCb;
- tHalHostResumeRspParams hostResumeRspMsg;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
-
- wpalMemoryCopy( &hostResumeRspMsg,
- (wpt_uint8*)pEventData->pEventData,
- sizeof(hostResumeRspMsg));
-
- wdiResumeRspParams.wdiStatus =
- WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
-
- /*Notify UMAC*/
- wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}
-
-/**
- @brief Process Set Tx PER Rsp function (called when a response
- is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessSetTxPerTrackingRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- eHalStatus halStatus;
- WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- /*Notify UMAC*/
- pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessSetTxPerTrackingRsp*/
-
-/*==========================================================================
- Indications from HAL
- ==========================================================================*/
-/**
- @brief Process Low RSSI Indication function (called when an
- indication of this kind is being received over the bus
- from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessLowRSSIInd
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_LowLevelIndType wdiInd;
- tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-------------------------------------------------------------------------
- Extract indication and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
- pEventData->pEventData,
- sizeof(tHalRSSINotification));
-
- /*Fill in the indication parameters*/
- wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
- wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
- halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
- wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
- halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
- wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
- halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
- wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
- halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
- wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
- halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
- wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
- halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
- wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
- halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
-
- if ( pWDICtx->wdiLowLevelIndCB )
- {
- /*Notify UMAC of indication*/
- pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
- }
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessLowRSSIInd*/
-
-
-/**
- @brief Process Missed Beacon Indication function (called when
- an indication of this kind is being received over the
- bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessMissedBeaconInd
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- eHalStatus halStatus;
- WDI_LowLevelIndType wdiInd;
- tpHalMissedBeaconIndParams halMissedBeaconIndParams;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
- halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
- /*-------------------------------------------------------------------------
- Extract indication and send it to UMAC
- -------------------------------------------------------------------------*/
- /*! TO DO: Parameters need to be unpacked according to HAL struct*/
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- /*Fill in the indication parameters*/
- wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
- wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
- halMissedBeaconIndParams->bssIdx;
- if ( pWDICtx->wdiLowLevelIndCB )
- {
- /*Notify UMAC*/
- pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
- }
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessMissedBeaconInd*/
-
-
-/**
- @brief Process Unk Addr Frame Indication function (called when
- an indication of this kind is being received over the
- bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessUnkAddrFrameInd
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- eHalStatus halStatus;
- WDI_LowLevelIndType wdiInd;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-------------------------------------------------------------------------
- Extract indication and send it to UMAC
- -------------------------------------------------------------------------*/
- /*! TO DO: Parameters need to be unpacked according to HAL struct*/
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- /*Fill in the indication parameters*/
- wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
- /* ! TO DO - fill in from HAL struct:
- wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
-
- if ( pWDICtx->wdiLowLevelIndCB )
- {
- /*Notify UMAC*/
- pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
- }
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessUnkAddrFrameInd*/
-
-
-/**
- @brief Process MIC Failure Indication function (called when an
- indication of this kind is being received over the bus
- from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessMicFailureInd
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_LowLevelIndType wdiInd;
- tpSirMicFailureInd pHalMicFailureInd;
-
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
- /*-------------------------------------------------------------------------
- Extract indication and send it to UMAC
- -------------------------------------------------------------------------*/
-
- /*Fill in the indication parameters*/
- wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
- wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
- pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
- wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
- pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
- wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
- pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
- wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
- pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
- wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
- pHalMicFailureInd->info.multicast;
- wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
- pHalMicFailureInd->info.IV1;
- wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
- pHalMicFailureInd->info.keyId;
- wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
- pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
- wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
- pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
-
- if ( pWDICtx->wdiLowLevelIndCB )
- {
- /*Notify UMAC*/
- pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
- }
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessMicFailureInd*/
-
-
-/**
- @brief Process Fatal Failure Indication function (called when
- an indication of this kind is being received over the
- bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessFatalErrorInd
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- eHalStatus halStatus;
- WDI_LowLevelIndType wdiInd;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-------------------------------------------------------------------------
- Extract indication and send it to UMAC
- -------------------------------------------------------------------------*/
-
- /*! TO DO: Parameters need to be unpacked according to HAL struct*/
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Fatal failure received from device %d ", halStatus );
-
- /*Fill in the indication parameters*/
- wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
- wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
-
- if ( pWDICtx->wdiLowLevelIndCB )
- {
- /*Notify UMAC*/
- pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
- }
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessFatalErrorInd*/
-
-/**
- @brief Process Delete STA Indication function (called when
- an indication of this kind is being received over the
- bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessDelSTAInd
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- tDeleteStaContextParams halDelSTACtx;
- WDI_LowLevelIndType wdiInd;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-------------------------------------------------------------------------
- Extract indication and send it to UMAC
- -------------------------------------------------------------------------*/
-
- /* Parameters need to be unpacked according to HAL struct*/
- wpalMemoryCopy( &halDelSTACtx,
- pEventData->pEventData,
- sizeof(halDelSTACtx));
-
- /*Fill in the indication parameters*/
- wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
-
- wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
- halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
- wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
- halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
-
- wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
- halDelSTACtx.assocId;
- wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
- halDelSTACtx.staId;
- wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
- halDelSTACtx.reasonCode;
-
- if ( pWDICtx->wdiLowLevelIndCB )
- {
- /*Notify UMAC*/
- pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
- }
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessDelSTAInd*/
-
-/**
-*@brief Process Coex Indication function (called when
- an indication of this kind is being received over the
- bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessCoexInd
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_LowLevelIndType wdiInd;
- tCoexIndMsg halCoexIndMsg;
- wpt_uint32 index;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT( 0 );
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-------------------------------------------------------------------------
- Extract indication and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
- pEventData->pEventData,
- sizeof(halCoexIndMsg.coexIndParams) );
-
- /*Fill in the indication parameters*/
- wdiInd.wdiIndicationType = WDI_COEX_IND;
- wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
- for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
- {
- wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
- }
-
- // DEBUG
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
- wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
- wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
- wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
- wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
- wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
-
- if ( pWDICtx->wdiLowLevelIndCB )
- {
- /*Notify UMAC*/
- pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
- }
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessCoexInd*/
-
-/**
-*@brief Process Tx Complete Indication function (called when
- an indication of this kind is being received over the
- bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessTxCompleteInd
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_LowLevelIndType wdiInd;
- tTxComplIndMsg halTxComplIndMsg;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT( 0 );
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-------------------------------------------------------------------------
- Extract indication and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
- pEventData->pEventData,
- sizeof(halTxComplIndMsg.txComplParams) );
-
- /*Fill in the indication parameters*/
- wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
- wdiInd.wdiIndicationData.tx_complete_status
- = halTxComplIndMsg.txComplParams.status;
-
- if ( pWDICtx->wdiLowLevelIndCB )
- {
- /*Notify UMAC*/
- pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
- }
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessTxCompleteInd*/
-#ifdef FEATURE_WLAN_TDLS
-/**
-*@brief Process TDLS Indication function (called when
- an indication of this kind is being received over the
- bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessTdlsInd
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_LowLevelIndType wdiInd;
- tTdlsIndMsg halTdlsIndMsg;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT( 0 );
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-------------------------------------------------------------------------
- Extract indication and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
- pEventData->pEventData,
- sizeof(halTdlsIndMsg.tdlsIndParams) );
-
- /*Fill in the indication parameters*/
- wdiInd.wdiIndicationType = WDI_TDLS_IND;
-
- wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
- = halTdlsIndMsg.tdlsIndParams.status;
-
- wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
- = halTdlsIndMsg.tdlsIndParams.staIdx;
-
- wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
- = halTdlsIndMsg.tdlsIndParams.reasonCode;
-
- /*Notify UMAC*/
- pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessTdlsInd*/
-#endif
-
-/**
-*@brief Process Noa Start Indication function (called when
- an indication of this kind is being received over the
- bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessP2pNoaStartInd
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_LowLevelIndType wdiInd;
- tNoaStartIndMsg halNoaStartIndMsg;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT( 0 );
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-------------------------------------------------------------------------
- Extract indication and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
- pEventData->pEventData,
- sizeof(halNoaStartIndMsg.noaStartIndParams) );
-
- /*Fill in the indication parameters*/
- wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
-
- wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
- = halNoaStartIndMsg.noaStartIndParams.status;
-
- wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
- = halNoaStartIndMsg.noaStartIndParams.bssIdx;
-
- /*Notify UMAC*/
- pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessNoaAttrInd*/
-
-/**
-*@brief Process Noa Attr Indication function (called when
- an indication of this kind is being received over the
- bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessP2pNoaAttrInd
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_LowLevelIndType wdiInd;
- tNoaAttrIndMsg halNoaAttrIndMsg;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT( 0 );
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-------------------------------------------------------------------------
- Extract indication and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
- pEventData->pEventData,
- sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
-
- /*Fill in the indication parameters*/
- wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
-
- wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
- = halNoaAttrIndMsg.noaAttrIndParams.status;
-
- wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
- = halNoaAttrIndMsg.noaAttrIndParams.index;
- wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
- = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
- wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
- = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
-
- wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
- = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
- wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
- = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
- wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
- = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
- wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
- = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
-
- wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
- = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
- wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
- = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
- wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
- = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
- wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
- = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
-
- if ( pWDICtx->wdiLowLevelIndCB )
- {
- /*Notify UMAC*/
- pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
- }
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessNoaAttrInd*/
-
-/**
- @brief Process Tx PER Hit Indication function (called when
- an indication of this kind is being received over the
- bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessTxPerHitInd
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_LowLevelIndType wdiInd;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Extract indication and send it to UMAC
- -------------------------------------------------------------------------*/
- /*Fill in the indication parameters*/
- wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
-
- if ( pWDICtx->wdiLowLevelIndCB )
- {
- /*Notify UMAC*/
- pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
- }
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessTxPerHitInd*/
-
-/**
- @brief Process Periodic Tx Pattern Fw Indication function
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessPeriodicTxPtrnFwInd
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_LowLevelIndType wdiInd;
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if ((NULL == pWDICtx) || (NULL == pEventData) ||
- (NULL == pEventData->pEventData))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-------------------------------------------------------------------------
- Extract indication and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
- (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
- sizeof(tHalPeriodicTxPtrnFwInd));
-
- if (pWDICtx->wdiLowLevelIndCB)
- {
- /*Notify UMAC*/
- pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
- }
-
- return WDI_STATUS_SUCCESS;
-}
-
-/**
- @brief WDI_ProcessFTMCommandReq
- Process FTM Command, simply route to HAL
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessFTMCommandReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_FTMCommandReqType *ftmCommandReq = NULL;
- wpt_uint8 *ftmCommandBuffer = NULL;
- wpt_uint16 dataOffset;
- wpt_uint16 bufferSize;
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
-
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
-
- /* Get MSG Buffer */
- WDI_GetMessageBuffer(pWDICtx,
- WDI_FTM_CMD_REQ,
- ftmCommandReq->bodyLength,
- &ftmCommandBuffer,
- &dataOffset,
- &bufferSize);
-
- wpalMemoryCopy(ftmCommandBuffer + dataOffset,
- ftmCommandReq->FTMCommandBody,
- ftmCommandReq->bodyLength);
-
- /* Send MSG */
- return WDI_SendMsg(pWDICtx,
- ftmCommandBuffer,
- bufferSize,
- pEventData->pCBfnc,
- pEventData->pUserData,
- WDI_FTM_CMD_RESP);
-}
-
-/**
- @brief WDI_ProcessFTMCommandRsp
- Process FTM Command Response from HAL, simply route to HDD FTM
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessFTMCommandRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_FTMCommandRspCb ftmCMDRspCb;
- tProcessPttRspParams *ftmCMDRspData = NULL;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
-
- ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
-
- wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
- (void *)&ftmCMDRspData->pttMsgBuffer,
- ftmCMDRspData->pttMsgBuffer.msgBodyLength);
-
- /*Notify UMAC*/
- ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}
-/**
- @brief WDI_ProcessHalDumpCmdReq
- Process hal dump Command, simply route to HAL
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessHALDumpCmdReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
- WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tHalDumpCmdReqMsg halDumpCmdReqMsg;
- wpt_uint8* pSendBuffer = NULL;
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData) ||
- ( NULL == pEventData->pCBfnc ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
- wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
-
- /* Copying the HAL DUMP Command Information HAL Structure*/
- halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
- pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
- halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
- pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
- halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
- pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
- halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
- pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
- halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
- pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
-
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
- sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize <
- (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in HAL Dump Command req %p %p %p",
- pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halDumpCmdReqMsg.dumpCmdReqParams,
- sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
-
- pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Start Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiHALDumpCmdRspCb, pEventData->pUserData,
- WDI_HAL_DUMP_CMD_RESP);
-}
-
-/**
- @brief WDI_ProcessHalDumpCmdRsp
- Process hal Dump Command Response from HAL, simply route to HDD
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessHALDumpCmdRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
- tHalDumpCmdRspParams halDumpCmdRspParams;
- WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
-
- /*Initialize the WDI Response structure */
- wdiHALDumpCmdRsp.usBufferLen = 0;
- wdiHALDumpCmdRsp.pBuffer = NULL;
-
- wpalMemoryCopy( &halDumpCmdRspParams,
- pEventData->pEventData,
- sizeof(tHalDumpCmdRspParams));
-
- wdiHALDumpCmdRsp.wdiStatus =
- WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
-
- if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
- (halDumpCmdRspParams.rspLength != 0))
- {
- /* Copy the response data */
- wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
- wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
-
- wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
- &halDumpCmdRspParams.rspBuffer,
- halDumpCmdRspParams.rspLength);
- }
-
- /*Notify UMAC*/
- wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
-
- if(wdiHALDumpCmdRsp.pBuffer != NULL)
- {
- /* Free the allocated buffer */
- wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
- }
- return WDI_STATUS_SUCCESS;
-}
-
-/*==========================================================================
- CONTRL TRANSPORT INTERACTION
-
- Callback function registered with the control transport - for receiving
- notifications and packets
-==========================================================================*/
-/**
- @brief This callback is invoked by the control transport
- when it wishes to send up a notification like the ones
- mentioned above.
-
- @param
-
- wctsHandle: handle to the control transport service
- wctsEvent: the event being notified
- wctsNotifyCBData: the callback data of the user
-
- @see WCTS_OpenTransport
-
- @return None
-*/
-void
-WDI_NotifyMsgCTSCB
-(
- WCTS_HandleType wctsHandle,
- WCTS_NotifyEventType wctsEvent,
- void* wctsNotifyCBData
-)
-{
- WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- if (NULL == pWDICtx )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return;
- }
-
- if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
- {
- /* callback presumably occurred after close */
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid control block", __func__);
- return;
- }
-
- if ( WCTS_EVENT_OPEN == wctsEvent )
- {
- /*Flag must be set atomically as it is checked from incoming request
- functions*/
- wpalMutexAcquire(&pWDICtx->wptMutex);
- pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
-
- /*Nothing to do - so try to dequeue any pending request that may have
- occurred while we were trying to establish this*/
- WDI_DequeuePendingReq(pWDICtx);
- wpalMutexRelease(&pWDICtx->wptMutex);
- }
- else if ( WCTS_EVENT_CLOSE == wctsEvent )
- {
- /*Flag must be set atomically as it is checked from incoming request
- functions*/
- wpalMutexAcquire(&pWDICtx->wptMutex);
- pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
-
- /*No other request will be processed from now on - fail all*/
- WDI_ClearPendingRequests(pWDICtx);
- wpalMutexRelease(&pWDICtx->wptMutex);
-
- /*Notify that the Control Channel is closed */
- wpalEventSet(&pWDICtx->wctsActionEvent);
- }
-
-}/*WDI_NotifyMsgCTSCB*/
-
-
-/**
- @brief This callback is invoked by the control transport
- when it wishes to send up a packet received over the
- bus.
-
- @param
-
- wctsHandle: handle to the control transport service
- pMsg: the packet
- uLen: the packet length
- wctsRxMsgCBData: the callback data of the user
-
- @see WCTS_OpenTransport
-
- @return None
-*/
-void
-WDI_RXMsgCTSCB
-(
- WCTS_HandleType wctsHandle,
- void* pMsg,
- wpt_uint32 uLen,
- void* wctsRxMsgCBData
-)
-{
- tHalMsgHeader *pHalMsgHeader;
- WDI_EventInfoType wdiEventData;
- WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
-
- /*------------------------------------------------------------------------
- Sanity check
- ------------------------------------------------------------------------*/
- if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
- ( uLen < sizeof(tHalMsgHeader)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return;
- }
-
- if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
- {
- /* callback presumably occurred after close */
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid control block", __func__);
- return;
- }
-
- /*The RX Callback is expected to be serialized in the proper control thread
- context - so no serialization is necessary here
- ! - revisit this assumption */
-
- pHalMsgHeader = (tHalMsgHeader *)pMsg;
-
- if ( uLen != pHalMsgHeader->msgLen )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Invalid packet received from HAL - catastrophic failure");
- WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
- return;
- }
-
- wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
-
- /*The message itself starts after the header*/
- wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
- wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
- wdiEventData.pCBfnc = gWDICb.pfncRspCB;
- wdiEventData.pUserData = gWDICb.pRspCBUserData;
-
-
- if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
- {
- /*Stop the timer as the response was received */
- /*!UT - check for potential race conditions between stop and response */
- wpalTimerStop(&pWDICtx->wptResponseTimer);
- }
- /* Check if we receive a response message which is not expected */
- else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
- WDI_getRespMsgString(wdiEventData.wdiResponse),
- wdiEventData.wdiResponse,
- WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
- pWDICtx->wdiExpectedResponse);
-
- if (gWDICb.bEnableSSR == false)
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "SSR is not enabled on WDI timeout");
- WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
- return;
- }
- wpalWcnssResetIntr();
- /* if this timer fires, it means Riva did not receive the FIQ */
- wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
-
- return;
- }
-
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "Rx smth from HAL: %d", wdiEventData.wdiResponse);
-
- /*Post response event to the state machine*/
- WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
-
-}/*WDI_RXMsgCTSCB*/
-
-
-/*========================================================================
- Internal Helper Routines
-========================================================================*/
-
-/**
- @brief WDI_CleanCB - internal helper routine used to clean the
- WDI Main Control Block
-
- @param pWDICtx - pointer to the control block
-
- @return Result of the function call
-*/
-WPT_INLINE WDI_Status
-WDI_CleanCB
-(
- WDI_ControlBlockType* pWDICtx
-)
-{
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
-
- /*Clean the WDI Control Block*/
- wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
-
- pWDICtx->uGlobalState = WDI_MAX_ST;
- pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
- pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
-
- WDI_ResetAssocSessions( pWDICtx );
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_CleanCB*/
-
-
-/**
- @brief Process request helper function
-
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WPT_INLINE WDI_Status
-WDI_ProcessRequest
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*!! Skip sanity check as this is called from the FSM functionss which
- already checked these pointers*/
-
- if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
- ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "Calling request processing function for req %s (%d) %p",
- WDI_getReqMsgString(pEventData->wdiRequest),
- pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
- return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
- }
- else
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Operation %d is not yet implemented ",
- pEventData->wdiRequest);
- return WDI_STATUS_E_NOT_IMPLEMENT;
- }
-}/*WDI_ProcessRequest*/
-
-
-/**
- @brief Get message helper function - it allocates memory for a
- message that is to be sent to HAL accross the bus and
- prefixes it with a send message header
-
- @param pWDICtx: pointer to the WLAN DAL context
- wdiReqType: type of the request being sent
- uBufferLen: message buffer len
- pMsgBuffer: resulting allocated buffer
- pusDataOffset: offset in the buffer where the caller
- can start copying its message data
- puBufferSize: the resulting buffer size (offset+buff
- len)
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_GetMessageBuffer
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_RequestEnumType wdiReqType,
- wpt_uint16 usBufferLen,
- wpt_uint8** pMsgBuffer,
- wpt_uint16* pusDataOffset,
- wpt_uint16* pusBufferSize
-)
-{
- tHalMsgHeader halMsgHeader;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*!! No sanity check here as we trust the called - ! check this assumption
- again*/
-
- /*-------------------------------------------------------------------------
- Try to allocate message buffer from PAL
- -------------------------------------------------------------------------*/
- *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
- *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
- if ( NULL == *pMsgBuffer )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Unable to allocate message buffer for req %s (%d)",
- WDI_getReqMsgString(wdiReqType),
- wdiReqType);
- WDI_ASSERT(0);
- return WDI_STATUS_MEM_FAILURE;
- }
-
- /*-------------------------------------------------------------------------
- Fill in the message header
- -------------------------------------------------------------------------*/
- halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
- /* Fill msgVersion */
-#ifdef WLAN_FEATURE_11AC
- if (WDI_getFwWlanFeatCaps(DOT11AC))
- halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
- else
-#endif
- halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
-
- halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
- *pusDataOffset = sizeof(halMsgHeader);
- wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_GetMessageBuffer*/
-
-
-/**
- @brief Send message helper function - sends a message over the
- bus using the control tranport and saves some info in
- the CB
-
- @param pWDICtx: pointer to the WLAN DAL context
- pSendBuffer: buffer to be sent
-
- usSendSize size of the buffer to be sent
- pRspCb: response callback - save in the WDI
- CB
- pUserData: user data associated with the
- callback
- wdiExpectedResponse: the code of the response that is
- expected to be rx-ed for this request
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_SendMsg
-(
- WDI_ControlBlockType* pWDICtx,
- wpt_uint8* pSendBuffer,
- wpt_uint32 usSendSize,
- void* pRspCb,
- void* pUserData,
- WDI_ResponseEnumType wdiExpectedResponse
-)
-{
- WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
- wpt_uint32 ret;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
-
- /*------------------------------------------------------------------------
- Save needed info in the CB
- ------------------------------------------------------------------------*/
- pWDICtx->pRspCBUserData = pUserData;
- pWDICtx->pfncRspCB = pRspCb;
- pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
-
- /*-----------------------------------------------------------------------
- Call the CTS to send this message over - free message afterwards
- - notify transport failure
- Note: CTS is reponsible for freeing the message buffer.
- -----------------------------------------------------------------------*/
- ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
- if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
- (eWLAN_PAL_STATUS_E_RESOURCES != ret))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "Failed to send message over the bus - catastrophic failure");
-
- wdiStatus = WDI_STATUS_E_FAILURE;
- }
- else
- {
- /* even when message was placed in CTS deferred Q, we will treat it
- success but log this info
- */
- if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "WDI_SendMsg: message placed in CTS deferred Q, expected "
- "response %s (%d)",
- WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
- pWDICtx->wdiExpectedResponse);
- WDI_ASSERT(0);
- }
- }
-
- /*Check if originator provided a request status callback*/
- if ( NULL != pWDICtx->wdiReqStatusCB )
- {
- /*Inform originator whether request went through or not*/
- WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
- void *callbackContext = pWDICtx->pReqStatusUserData;
- pWDICtx->wdiReqStatusCB = NULL;
- pWDICtx->pReqStatusUserData = NULL;
- callback(wdiStatus, callbackContext);
-
- /*For WDI requests which have registered a request callback,
- inform the WDA caller of the same via setting the return value
- (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
- end up repeating the functonality in the req callback for the
- WDI_STATUS_E_FAILURE case*/
- if (wdiStatus == WDI_STATUS_E_FAILURE)
- wdiStatus = WDI_STATUS_PENDING;
- }
-
- if ( wdiStatus == WDI_STATUS_SUCCESS )
- {
- /*Start timer for the expected response */
- wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
-
- /*cache current timestamp for debugging */
- pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
- }
- else
- {
- /*Inform upper stack layers that a transport fatal error occurred*/
- WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
- }
-
- return wdiStatus;
-
-}/*WDI_SendMsg*/
-
-
-
-/**
- @brief Send indication helper function - sends a message over
- the bus using the control transport and saves some info
- in the CB
-
- @param pWDICtx: pointer to the WLAN DAL context
- pSendBuffer: buffer to be sent
- usSendSize: size of the buffer to be sent
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_SendIndication
-(
- WDI_ControlBlockType* pWDICtx,
- wpt_uint8* pSendBuffer,
- wpt_uint32 usSendSize
-)
-{
- wpt_uint32 uStatus ;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
-
- /*-----------------------------------------------------------------------
- Call the CTS to send this message over
- Note: CTS is reponsible for freeing the message buffer.
- -----------------------------------------------------------------------*/
- uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
- (void*)pSendBuffer, usSendSize );
-
- /*Inform Upper MAC about the outcome of the request*/
- if ( NULL != pWDICtx->wdiReqStatusCB )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "Send indication status : %d", uStatus);
-
- /* even if CTS placed indication into its deferred Q, we treat it
- * as success and let CTS drain its queue as per smd interrupt to CTS
- */
- pWDICtx->wdiReqStatusCB( ((uStatus != eWLAN_PAL_STATUS_SUCCESS) && (uStatus != eWLAN_PAL_STATUS_E_RESOURCES)) ? WDI_STATUS_E_FAILURE: WDI_STATUS_SUCCESS,
- pWDICtx->pReqStatusUserData);
- }
-
- /*If sending of the message failed - it is considered catastrophic and
- indicates an error with the device*/
- if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
- ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
-
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "Failed to send indication over the bus - catastrophic failure");
-
- WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
- return WDI_STATUS_E_FAILURE;
- }
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_SendIndication*/
-
-
-/**
- @brief WDI_DetectedDeviceError - called internally by DAL when
- it has detected a failure in the device
-
- @param pWDICtx: pointer to the WLAN DAL context
- usErrorCode: error code detected by WDI or received
- from HAL
-
- @see
- @return None
-*/
-void
-WDI_DetectedDeviceError
-(
- WDI_ControlBlockType* pWDICtx,
- wpt_uint16 usErrorCode
-)
-{
- WDI_LowLevelIndType wdiInd;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Device Error detected code: %d - transitioning to stopped state",
- usErrorCode);
-
- wpalMutexAcquire(&pWDICtx->wptMutex);
-
- WDI_STATableStop(pWDICtx);
-
- WDI_ResetAssocSessions(pWDICtx);
-
- /*Set the expected state transition to stopped - because the device
- experienced a failure*/
- pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
-
- /*Transition to stopped to fail all incomming requests from this point on*/
- WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
-
- WDI_ClearPendingRequests(pWDICtx);
-
- /*TO DO: - there should be an attempt to reset the device here*/
-
- wpalMutexRelease(&pWDICtx->wptMutex);
-
- /*------------------------------------------------------------------------
- Notify UMAC if a handler is registered
- ------------------------------------------------------------------------*/
- if (pWDICtx->wdiLowLevelIndCB)
- {
- wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
- wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
-
- pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
- }
-}/*WDI_DetectedDeviceError*/
-
-/**
- @brief This callback is invoked by the wpt when a timer that
- we started on send message has expire - this should
- never happen - it means device is stuck and cannot
- reply - trigger catastrophic failure
- @param
-
- pUserData: the callback data of the user (ptr to WDI CB)
-
- @see
- @return None
-*/
-void
-WDI_ResponseTimerCB
-(
- void *pUserData
-)
-{
- WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- if (NULL == pWDICtx)
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return;
- }
-
- /*cache current timestamp for debugging */
- pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
-
- /* If response timer is running at this time that means this timer
- * event is not for the last request but rather last-to-last request and
- * this timer event has come after we recevied respone for last-to-last
- * message
- */
- if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "WDI_ResponseTimerCB: timer in running state on timer event, "
- "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
- pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
- return;
- }
-
- if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
- {
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "Timeout occurred while waiting for %s (%d) message from device "
- " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
- WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
- pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
- pWDICtx->uTimeStampRspTmrExp);
-
- /* WDI timeout means Riva is not responding or SMD communication to Riva
- * is not happening. The only possible way to recover from this error
- * is to initiate SSR from APPS.
- * There is also an option to re-enable wifi, which will eventually
- * trigger SSR
- */
- if (gWDICb.bEnableSSR == false)
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "SSR is not enabled on WDI timeout");
- WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
- return;
- }
-#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
- wpalWcnssResetIntr();
- /* if this timer fires, it means Riva did not receive the FIQ */
- wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
-#else
- WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
- wpalWlanReload();
-#endif
- }
- else
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Timeout occurred but not waiting for any response %d "
- "timeStampTmrStart: %u, timeStampTmrExp: %u",
- pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
- pWDICtx->uTimeStampRspTmrExp);
- }
-
- return;
-
-}/*WDI_ResponseTimerCB*/
-
-
-/**
- @brief Process response helper function
-
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WPT_INLINE WDI_Status
-WDI_ProcessResponse
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /* Skip sanity check as this is called from the FSM functions which
- already checked these pointers
- ! - revisit this assumption */
- if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
- ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "Calling response processing function for resp %s (%d) %p",
- WDI_getRespMsgString(pEventData->wdiResponse),
- pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
- return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
- }
- else
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Operation %d is not yet implemented ",
- pEventData->wdiResponse);
- return WDI_STATUS_E_NOT_IMPLEMENT;
- }
-}/*WDI_ProcessResponse*/
-
-
-/*=========================================================================
- QUEUE SUPPORT UTILITY FUNCTIONS
-=========================================================================*/
-
-/**
- @brief Utility function used by the DAL Core to help queue a
- request that cannot be processed right away.
- @param
-
- pWDICtx: - pointer to the WDI control block
- pEventData: - pointer to the evnt info that needs to be
- queued
-
- @see
- @return Result of the operation
-*/
-WDI_Status
-WDI_QueuePendingReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- wpt_list_node* pNode;
- WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
- void* pEventInfo = NULL;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- if ( NULL == pEventDataQueue )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Cannot allocate memory for queueing");
- WDI_ASSERT(0);
- return WDI_STATUS_MEM_FAILURE;
- }
-
- pEventDataQueue->pCBfnc = pEventData->pCBfnc;
- pEventDataQueue->pUserData = pEventData->pUserData;
- pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
- pEventDataQueue->wdiRequest = pEventData->wdiRequest;
- pEventDataQueue->wdiResponse = pEventData->wdiResponse;
-
- if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
- {
- pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
-
- if ( NULL == pEventInfo )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Cannot allocate memory for queueing event data info");
- WDI_ASSERT(0);
- wpalMemoryFree(pEventDataQueue);
- return WDI_STATUS_MEM_FAILURE;
- }
-
- wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
-
- }
- pEventDataQueue->pEventData = pEventInfo;
-
- /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
- pNode = (wpt_list_node*)pEventDataQueue;
-
- wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_QueuePendingReq*/
-
-/**
- @brief Callback function for serializing queued message
- processing in the control context
- @param
-
- pMsg - pointer to the message
-
- @see
- @return Result of the operation
-*/
-void
-WDI_PALCtrlMsgCB
-(
- wpt_msg *pMsg
-)
-{
- WDI_EventInfoType* pEventData = NULL;
- WDI_ControlBlockType* pWDICtx = NULL;
- WDI_Status wdiStatus;
- WDI_ReqStatusCb pfnReqStatusCB;
- void* pUserData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- if (( NULL == pMsg )||
- ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
- ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Invalid message received on serialize ctrl context API");
- WDI_ASSERT(0);
- return;
- }
-
- /*Transition back to the state that we had before serialization
- - serialization transitions us to BUSY to stop any incomming requests
- ! TO DO L: possible race condition here if a request comes in between the
- state transition and the post function*/
-
- WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
-
- /*-----------------------------------------------------------------------
- Check to see what type of event we are serializing
- - responses are never expected to come through here
- -----------------------------------------------------------------------*/
- switch ( pEventData->wdiRequest )
- {
-
- case WDI_STOP_REQ:
- wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
- break;
-
- case WDI_NV_DOWNLOAD_REQ:
- // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
- // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
- if (pWDICtx->uGlobalState == WDI_STARTED_ST)
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
- wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
- }
- else
- {
- wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
- }
-
- break;
-
- default:
- wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
- break;
- }/*switch ( pEventData->wdiRequest )*/
-
- if ( WDI_STATUS_SUCCESS != wdiStatus )
- {
- WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
-
- if ( NULL != pfnReqStatusCB )
- {
- /*Fail the request*/
- pfnReqStatusCB( wdiStatus, pUserData);
- }
- }
-
- /* Free data - that was allocated when queueing*/
- if( pEventData != NULL )
- {
- if( pEventData->pEventData != NULL )
- {
- wpalMemoryFree(pEventData->pEventData);
- }
- wpalMemoryFree(pEventData);
- }
-
- if( pMsg != NULL )
- {
- wpalMemoryFree(pMsg);
- }
-
-}/*WDI_PALCtrlMsgCB*/
-
-/**
- @brief Utility function used by the DAL Core to help dequeue
- and schedule for execution a pending request
- @param
-
- pWDICtx: - pointer to the WDI control block
- pEventData: - pointer to the evnt info that needs to be
- queued
-
- @see
- @return Result of the operation
-*/
-WDI_Status
-WDI_DequeuePendingReq
-(
- WDI_ControlBlockType* pWDICtx
-)
-{
- wpt_list_node* pNode = NULL;
- WDI_EventInfoType* pEventData;
- wpt_msg* palMsg;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
-
- if ( NULL == pNode )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "List is empty - return");
- return WDI_STATUS_SUCCESS;
- }
-
- /*The node actually points to the 1st element inside the Event Data struct -
- just cast it back to the struct*/
- pEventData = (WDI_EventInfoType*)pNode;
-
- /*Serialize processing in the control thread
- !TO DO: - check to see if these are all the messages params that need
- to be filled in*/
- palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
-
- if ( NULL == palMsg )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
- WDI_ASSERT(0);
- return WDI_STATUS_MEM_FAILURE;
- }
- palMsg->pContext = pWDICtx;
- palMsg->callback = WDI_PALCtrlMsgCB;
- palMsg->ptr = pEventData;
-
- /*Save the global state as we need it on the other side*/
- palMsg->val = pWDICtx->uGlobalState;
-
- /*Transition back to BUSY as we need to handle a queued request*/
- WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
-
- wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
-
- return WDI_STATUS_PENDING;
-}/*WDI_DequeuePendingReq*/
-
-
-/**
- @brief Utility function used by the DAL Core to help queue
- an association request that cannot be processed right
- away.- The assoc requests will be queued by BSSID
- @param
-
- pWDICtx: - pointer to the WDI control block
- pEventData: pointer to the evnt info that needs to be queued
- macBSSID: bssid
-
- @see
- @return Result of the operation
-*/
-WDI_Status
-WDI_QueueNewAssocRequest
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData,
- wpt_macAddr macBSSID
-)
-{
- wpt_uint8 i;
- WDI_BSSSessionType* pSession = NULL;
- wpt_list_node* pNode;
- WDI_EventInfoType* pEventDataQueue;
- void* pEventInfo;
- WDI_NextSessionIdType* pSessionIdElement;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
-
- /*------------------------------------------------------------------------
- Search for a session that matches the BSSID
- ------------------------------------------------------------------------*/
- for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
- {
- if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
- {
- /*Found an empty session*/
- pSession = &pWDICtx->aBSSSessions[i];
- break;
- }
- }
-
- if ( i >= WDI_MAX_BSS_SESSIONS )
- {
- /*Cannot find any empty sessions*/
- return WDI_STATUS_E_FAILURE;
- }
-
- /*------------------------------------------------------------------------
- Fill in the BSSID for this session and set the usage flag
- ------------------------------------------------------------------------*/
- wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
- pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
-
- /*------------------------------------------------------------------------
- Allocate memory for this and place it in the queue
- ------------------------------------------------------------------------*/
- pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
- if ( NULL == pEventDataQueue )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: Cannot allocate memory for queue node", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_MEM_FAILURE;
- }
-
- pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
- if ( NULL == pSessionIdElement )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: Cannot allocate memory for session ID", __func__);
- WDI_ASSERT(0);
- wpalMemoryFree(pEventDataQueue);
- return WDI_STATUS_MEM_FAILURE;
- }
-
- pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
- if ( NULL == pEventInfo )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: Cannot allocate memory for event data info", __func__);
- WDI_ASSERT(0);
- wpalMemoryFree(pSessionIdElement);
- wpalMemoryFree(pEventDataQueue);
- return WDI_STATUS_MEM_FAILURE;
- }
-
- pEventDataQueue->pCBfnc = pEventData->pCBfnc;
- pEventDataQueue->pUserData = pEventData->pUserData;
- pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
- pEventDataQueue->wdiRequest = pEventData->wdiRequest;
- pEventDataQueue->wdiResponse = pEventData->wdiResponse;
-
- wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
- pEventDataQueue->pEventData = pEventInfo;
-
- /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
- pNode = (wpt_list_node*)pEventDataQueue;
-
- /*This association is currently being queued*/
- pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
-
- wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
-
- /*We need to maintain a separate list that keeps track of the order in which
- the new assoc requests are being queued such that we can start processing
- them in the order that they had arrived*/
- pSessionIdElement->ucIndex = i;
- pNode = (wpt_list_node*)pSessionIdElement;
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
- wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
-
- /*Return pending as this is what the status of the request is since it has
- been queued*/
- return WDI_STATUS_PENDING;
-}/*WDI_QueueNewAssocRequest*/
-
-/**
- @brief Utility function used by the DAL Core to help queue
- an association request that cannot be processed right
- away.- The assoc requests will be queued by BSSID
- @param
-
- pWDICtx: - pointer to the WDI control block
- pSession: - session in which to queue
- pEventData: pointer to the event info that needs to be
- queued
-
- @see
- @return Result of the operation
-*/
-WDI_Status
-WDI_QueueAssocRequest
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_BSSSessionType* pSession,
- WDI_EventInfoType* pEventData
-)
-{
- wpt_list_node* pNode;
- WDI_EventInfoType* pEventDataQueue;
- void* pEventInfo;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity check
- ------------------------------------------------------------------------*/
- if (( NULL == pSession ) || ( NULL == pWDICtx ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
-
- return WDI_STATUS_E_FAILURE;
- }
-
- /*------------------------------------------------------------------------
- Allocate memory for this and place it in the queue
- ------------------------------------------------------------------------*/
- pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
- if ( NULL == pEventDataQueue )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: Cannot allocate memory for queueing", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_MEM_FAILURE;
- }
-
- pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
- if ( NULL == pEventInfo )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: Cannot allocate memory for queueing event data info",
- __func__);
- WDI_ASSERT(0);
- wpalMemoryFree(pEventDataQueue);
- return WDI_STATUS_MEM_FAILURE;
- }
-
- pEventDataQueue->pCBfnc = pEventData->pCBfnc;
- pEventDataQueue->pUserData = pEventData->pUserData;
- pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
- pEventDataQueue->wdiRequest = pEventData->wdiRequest;
- pEventDataQueue->wdiResponse = pEventData->wdiResponse;
- pEventDataQueue->pEventData = pEventInfo;
-
- wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
-
- /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
- pNode = (wpt_list_node*)pEventDataQueue;
-
- /*This association is currently being queued*/
- pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
-
- wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
-
- /*The result of this operation is pending because the request has been
- queued and it will be processed at a later moment in time */
- return WDI_STATUS_PENDING;
-}/*WDI_QueueAssocRequest*/
-
-/**
- @brief Utility function used by the DAL Core to help dequeue
- an association request that was pending
- The request will be queued up in front of the main
- pending queue for imediate processing
- @param
-
- pWDICtx: - pointer to the WDI control block
-
-
- @see
- @return Result of the operation
-*/
-WDI_Status
-WDI_DequeueAssocRequest
-(
- WDI_ControlBlockType* pWDICtx
-)
-{
- wpt_list_node* pNode = NULL;
- WDI_NextSessionIdType* pSessionIdElement;
- WDI_BSSSessionType* pSession;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity check
- ------------------------------------------------------------------------*/
- if ( NULL == pWDICtx )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
-
- return WDI_STATUS_E_FAILURE;
- }
-
- /*------------------------------------------------------------------------
- An association has been completed => a new association can occur
- Check to see if there are any pending associations ->
- If so , transfer all the pending requests into the busy queue for
- processing
- These requests have arrived prior to the requests in the busy queue
- (bc they needed to be processed in order to be placed in this queue)
- => they will be placed at the front of the busy queue
- ------------------------------------------------------------------------*/
- wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
-
- if ( NULL == pNode )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "List is empty - return");
- return WDI_STATUS_SUCCESS;
- }
-
- /*The node actually points to the 1st element inside the Session Id struct -
- just cast it back to the struct*/
- pSessionIdElement = (WDI_NextSessionIdType*)pNode;
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
-
- if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
- {
- pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
-
- /*Transfer all the pending requests in this assoc queue to
- the front of the main waiting queue for subsequent execution*/
- wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
- while ( NULL != pNode )
- {
- /*Place it in front of the main pending list*/
- wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
- wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
- }
- pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
- }
- else
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "Invalid session id queued up for assoc");
- WPAL_ASSERT(0);
- wpalMemoryFree(pSessionIdElement);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*Clean this up as it is no longer needed in order to prevent memory leak*/
- wpalMemoryFree(pSessionIdElement);
- return WDI_STATUS_SUCCESS;
-}/*WDI_DequeueAssocRequest*/
-
-/**
- @brief Utility function used by the DAL Core to clear any
- pending requests - all req cb will be called with
- failure and the queue will be emptied.
- @param
-
- pWDICtx: - pointer to the WDI control block
-
- @see
- @return Result of the operation
-*/
-WDI_Status
-WDI_ClearPendingRequests
-(
- WDI_ControlBlockType* pWDICtx
-)
-{
- wpt_list_node* pNode = NULL;
- WDI_EventInfoType* pEventDataQueue = NULL;
- WDI_ReqStatusCb pfnReqStatusCB;
- void* pUserData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
-
- /*------------------------------------------------------------------------
- Go through all the requests and fail them - this will only be called
- when device is being stopped or an error was detected - either case the
- pending requests can no longer be sent down to HAL
- ------------------------------------------------------------------------*/
- while( pNode )
- {
- /*The node actually points to the 1st element inside the Event Data struct -
- just cast it back to the struct*/
- pEventDataQueue = (WDI_EventInfoType*)pNode;
-
- WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
- if ( NULL != pfnReqStatusCB )
- {
- /*Fail the request*/
- pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
- }
- /* Free data - that was allocated when queueing */
- if ( pEventDataQueue->pEventData != NULL )
- {
- wpalMemoryFree(pEventDataQueue->pEventData);
- }
- wpalMemoryFree(pEventDataQueue);
-
- if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
- {
- break;
- }
- }
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ClearPendingRequests*/
-
-/**
- @brief Helper routine used to init the BSS Sessions in the WDI control block
-
-
- @param pWDICtx: pointer to the WLAN DAL context
-
- @see
-*/
-void
-WDI_ResetAssocSessions
-(
- WDI_ControlBlockType* pWDICtx
-)
-{
- wpt_uint8 i;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
-
- /*-------------------------------------------------------------------------
- No Sanity check
- -------------------------------------------------------------------------*/
- for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
- {
- wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
- pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
- pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
- pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
- }
-}/*WDI_ResetAssocSessions*/
-
-/**
- @brief Helper routine used to find a session based on the BSSID
-
-
- @param pWDICtx: pointer to the WLAN DAL context
- macBSSID: BSSID of the session
- pSession: pointer to the session (if found)
-
- @see
- @return Index of the session in the array
-*/
-wpt_uint8
-WDI_FindAssocSession
-(
- WDI_ControlBlockType* pWDICtx,
- wpt_macAddr macBSSID,
- WDI_BSSSessionType** ppSession
-)
-{
- wpt_uint8 i;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if ( NULL == ppSession )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- return WDI_MAX_BSS_SESSIONS;
- }
-
- *ppSession = NULL;
-
- /*------------------------------------------------------------------------
- Search for a session that matches the BSSID
- ------------------------------------------------------------------------*/
- for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
- {
- if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
- (eWLAN_PAL_TRUE ==
- wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
- WDI_MAC_ADDR_LEN)) )
- {
- /*Found the session*/
- *ppSession = &pWDICtx->aBSSSessions[i];
- return i;
- }
- }
-
- return i;
-}/*WDI_FindAssocSession*/
-
-/**
- @brief Helper routine used to find a session based on the BSSID
-
-
- @param pWDICtx: pointer to the WLAN DAL context
- ucBSSIdx: BSS Index of the session
- ppSession: out pointer to the session (if found)
-
- @see
- @return Index of the session in the array
-*/
-wpt_uint8
-WDI_FindAssocSessionByBSSIdx
-(
- WDI_ControlBlockType* pWDICtx,
- wpt_uint16 ucBSSIdx,
- WDI_BSSSessionType** ppSession
-)
-{
- wpt_uint8 i;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if ( NULL == ppSession )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- return WDI_MAX_BSS_SESSIONS;
- }
-
- *ppSession = NULL;
-
- /*------------------------------------------------------------------------
- Search for a session that matches the BSSID
- ------------------------------------------------------------------------*/
- for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
- {
- if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
- {
- /*Found the session*/
- *ppSession = &pWDICtx->aBSSSessions[i];
- return i;
- }
- }
-
- return i;
-}/*WDI_FindAssocSessionByBSSIdx*/
-
-/**
- @brief Helper routine used to find a session based on the BSSID
-
-
- @param pWDICtx: pointer to the WLAN DAL context
- ucBSSIdx: BSS Index of the session
- ppSession: out pointer to the session (if found)
-
- @see
- @return Index of the session in the array
-*/
-wpt_uint8
-WDI_FindAssocSessionByIdx
-(
- WDI_ControlBlockType* pWDICtx,
- wpt_uint16 usIdx,
- WDI_BSSSessionType** ppSession
-)
-{
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- return WDI_MAX_BSS_SESSIONS;
- }
-
- /*Found the session*/
- *ppSession = &pWDICtx->aBSSSessions[usIdx];
-
- return usIdx;
-
-}/*WDI_FindAssocSessionByBSSIdx*/
-
-/**
- @brief Helper routine used to find an empty session in the WDI
- CB
-
-
- @param pWDICtx: pointer to the WLAN DAL context
- pSession: pointer to the session (if found)
-
- @see
- @return Index of the session in the array
-*/
-wpt_uint8
-WDI_FindEmptySession
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_BSSSessionType** ppSession
-)
-{
- wpt_uint8 i;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if ( NULL == ppSession )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- return WDI_MAX_BSS_SESSIONS;
- }
-
- *ppSession = NULL;
-
- /*------------------------------------------------------------------------
- Search for a session that it is not in use
- ------------------------------------------------------------------------*/
- for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
- {
- if ( ! pWDICtx->aBSSSessions[i].bInUse )
- {
- /*Found a session*/
- *ppSession = &pWDICtx->aBSSSessions[i];
- return i;
- }
- }
-
- return i;
-}/*WDI_FindEmptySession*/
-
-
-/**
- @brief Helper routine used to get the total count of active
- sessions
-
-
- @param pWDICtx: pointer to the WLAN DAL context
- macBSSID: pointer to BSSID. If NULL, get all the session.
- If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
- skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
- This argument is ignored if macBSSID is NULL.
- @see
- @return Number of sessions in use
-*/
-wpt_uint8
-WDI_GetActiveSessionsCount
-(
- WDI_ControlBlockType* pWDICtx,
- wpt_macAddr macBSSID,
- wpt_boolean skipBSSID
-)
-{
- wpt_uint8 i, ucCount = 0;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
-
- /*------------------------------------------------------------------------
- Count all sessions in use
- ------------------------------------------------------------------------*/
- for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
- {
- if ( macBSSID && skipBSSID &&
- (eWLAN_PAL_TRUE ==
- wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
- WDI_MAC_ADDR_LEN)))
- {
- continue;
- }
- else if ( pWDICtx->aBSSSessions[i].bInUse )
- {
- ucCount++;
- }
- }
-
- return ucCount;
-}/*WDI_GetActiveSessionsCount*/
-
-/**
- @brief Helper routine used to delete session in the WDI
- CB
-
-
- @param pWDICtx: pointer to the WLAN DAL context
- pSession: pointer to the session (if found)
-
- @see
- @return Index of the session in the array
-*/
-void
-WDI_DeleteSession
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_BSSSessionType* ppSession
-)
-{
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if ( NULL == ppSession )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- return ;
- }
-
- /*------------------------------------------------------------------------
- Reset the entries int session
- ------------------------------------------------------------------------*/
- wpal_list_destroy(&ppSession->wptPendingQueue);
- wpalMemoryZero(ppSession, sizeof(*ppSession));
- ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
- ppSession->bInUse = eWLAN_PAL_FALSE;
- ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
- wpal_list_init(&ppSession->wptPendingQueue);
-
-}/*WDI_DeleteSession*/
-
-/**
- @brief Utility function to add the broadcast STA to the the STA table.
- The bcast STA ID is assigned by HAL and must be valid.
- @param
-
- WDI_AddStaParams: - pointer to the WDI Add STA params
- usBcastStaIdx: - Broadcast STA index passed by HAL
-
- @see
- @return void
-*/
-void
-WDI_AddBcastSTAtoSTATable
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_AddStaParams * staParams,
- wpt_uint16 usBcastStaIdx
-)
-{
- WDI_AddStaParams wdiAddSTAParam = {0};
- wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
-
- /*---------------------------------------------------------------------
- Sanity check
- ---------------------------------------------------------------------*/
- if ( NULL == staParams )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
-
- return;
- }
-
- wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
- wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
- wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
- wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
- wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
- wdiAddSTAParam.dpuSig = staParams->dpuSig;
- wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
- WDI_MAC_ADDR_LEN );
- wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
- wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
- wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
- wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
- wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
- wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
- wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
-
- (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
-}
-
-/**
- @brief NV blob will be divided into fragments of size 4kb and
- Sent to HAL
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
- */
-
-WDI_Status WDI_SendNvBlobReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
-
- tHalNvImgDownloadReqMsg halNvImgDownloadParam;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- wpt_uint16 usCurrentFragmentSize =0;
- wpt_uint8* pSrcBuffer = NULL;
- WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
- WDI_NvDownloadRspCb wdiNvDownloadRspCb;
-
- wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
- WDI_ASSERT(NULL != wdiNvDownloadRspCb);
- pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
-
- /* Sanity Check is done by the caller */
- pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
-
- /* Update the current Fragment Number */
- pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
-
- /*Update the HAL REQ structure */
- /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
- halNvImgDownloadParam.nvImageReqParams.fragNumber =
- pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
-
- /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
- If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
- image will be sent to HAL*/
-
- if(pWDICtx->wdiNvBlobInfo.usTotalFragment
- == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
- {
- /* Taking care of boundry condition */
- if( !(usCurrentFragmentSize =
- pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
- usCurrentFragmentSize = FRAGMENT_SIZE;
-
- /*Update the HAL REQ structure */
- halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
- halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
-
- }
- else
- {
- usCurrentFragmentSize = FRAGMENT_SIZE;
-
- /*Update the HAL REQ structure */
- halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
- halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
- }
-
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
- sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize <
- (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in NV Download req %p %p ",
- pEventData, pwdiNvDownloadReqParams);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /* Copying the Hal NV download REQ structure */
- wpalMemoryCopy(pSendBuffer + usDataOffset ,
- &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
-
- /* Appending the NV image fragment */
- wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
- (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
- usCurrentFragmentSize);
-
- pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
-
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiNvDownloadRspCb, pEventData->pUserData,
- WDI_NV_DOWNLOAD_RESP);
-
-}
-/*============================================================================
- Helper inline functions for
- ============================================================================*/
-/**
- @brief Helper routine used to find a session based on the BSSID
- @param pContext: pointer to the WLAN DAL context
- @param pDPContext: pointer to the Datapath context
-
- @see
- @return
-*/
-WPT_INLINE void
-WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
-{
- WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
-
- pCB->pDPContext = pDPContext;
- return;
-}
-
-/**
- @brief Helper routine used to find a session based on the BSSID
-
-
- @param pContext: pointer to the WLAN DAL context
-
- @see
- @return pointer to Datapath context
-*/
-WPT_INLINE void *
-WDI_DS_GetDatapathContext (void *pContext)
-{
- WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
- return pCB->pDPContext;
-}
-/**
- @brief Helper routine used to find a session based on the BSSID
-
-
- @param pContext: pointer to the WLAN DAL context
- @param pDTDriverContext: pointer to the Transport Driver context
-
- @see
- @return void
-*/
-WPT_INLINE void
-WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
-{
- WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
-
- pCB->pDTDriverContext = pDTDriverContext;
- return;
-}
-
-/**
- @brief Helper routine used to find a session based on the BSSID
-
-
- @param pWDICtx: pointer to the WLAN DAL context
-
- @see
- @return pointer to datapath context
-*/
-WPT_INLINE void *
-WDT_GetTransportDriverContext (void *pContext)
-{
- WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
- return(pCB->pDTDriverContext);
-}
-
-/*============================================================================
- Helper inline converters
- ============================================================================*/
-/*Convert WDI driver type into HAL driver type*/
-WPT_STATIC WPT_INLINE WDI_Status
-WDI_HAL_2_WDI_STATUS
-(
- eHalStatus halStatus
-)
-{
- /*Lightweight function - no sanity checks and no unecessary code to increase
- the chances of getting inlined*/
- switch( halStatus )
- {
- case eHAL_STATUS_SUCCESS:
- case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
- case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
- return WDI_STATUS_SUCCESS;
- case eHAL_STATUS_FAILURE:
- return WDI_STATUS_E_FAILURE;
- case eHAL_STATUS_FAILED_ALLOC:
- return WDI_STATUS_MEM_FAILURE;
- /*The rest of the HAL error codes must be kept hidden from the UMAC as
- they refer to specific internal modules of our device*/
- default:
- return WDI_STATUS_DEV_INTERNAL_FAILURE;
- }
-
- return WDI_STATUS_E_FAILURE;
-}/*WDI_HAL_2_WDI_STATUS*/
-
-/*Convert WDI request type into HAL request type*/
-WPT_STATIC WPT_INLINE tHalHostMsgType
-WDI_2_HAL_REQ_TYPE
-(
- WDI_RequestEnumType wdiReqType
-)
-{
- /*Lightweight function - no sanity checks and no unecessary code to increase
- the chances of getting inlined*/
- switch( wdiReqType )
- {
- case WDI_START_REQ:
- return WLAN_HAL_START_REQ;
- case WDI_STOP_REQ:
- return WLAN_HAL_STOP_REQ;
- case WDI_INIT_SCAN_REQ:
- return WLAN_HAL_INIT_SCAN_REQ;
- case WDI_START_SCAN_REQ:
- return WLAN_HAL_START_SCAN_REQ;
- case WDI_END_SCAN_REQ:
- return WLAN_HAL_END_SCAN_REQ;
- case WDI_FINISH_SCAN_REQ:
- return WLAN_HAL_FINISH_SCAN_REQ;
- case WDI_JOIN_REQ:
- return WLAN_HAL_JOIN_REQ;
- case WDI_CONFIG_BSS_REQ:
- return WLAN_HAL_CONFIG_BSS_REQ;
- case WDI_DEL_BSS_REQ:
- return WLAN_HAL_DELETE_BSS_REQ;
- case WDI_POST_ASSOC_REQ:
- return WLAN_HAL_POST_ASSOC_REQ;
- case WDI_DEL_STA_REQ:
- return WLAN_HAL_DELETE_STA_REQ;
- case WDI_SET_BSS_KEY_REQ:
- return WLAN_HAL_SET_BSSKEY_REQ;
- case WDI_RMV_BSS_KEY_REQ:
- return WLAN_HAL_RMV_BSSKEY_REQ;
- case WDI_SET_STA_KEY_REQ:
- return WLAN_HAL_SET_STAKEY_REQ;
- case WDI_RMV_STA_KEY_REQ:
- return WLAN_HAL_RMV_STAKEY_REQ;
- case WDI_SET_STA_BCAST_KEY_REQ:
- return WLAN_HAL_SET_BCASTKEY_REQ;
- case WDI_RMV_STA_BCAST_KEY_REQ:
- //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
- return WLAN_HAL_RMV_STAKEY_REQ;
- case WDI_ADD_TS_REQ:
- return WLAN_HAL_ADD_TS_REQ;
- case WDI_DEL_TS_REQ:
- return WLAN_HAL_DEL_TS_REQ;
- case WDI_UPD_EDCA_PRMS_REQ:
- return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
- case WDI_ADD_BA_REQ:
- return WLAN_HAL_ADD_BA_REQ;
- case WDI_DEL_BA_REQ:
- return WLAN_HAL_DEL_BA_REQ;
-#ifdef FEATURE_WLAN_ESE
- case WDI_TSM_STATS_REQ:
- return WLAN_HAL_TSM_STATS_REQ;
-#endif
- case WDI_CH_SWITCH_REQ:
- return WLAN_HAL_CH_SWITCH_REQ;
- case WDI_CONFIG_STA_REQ:
- return WLAN_HAL_CONFIG_STA_REQ;
- case WDI_SET_LINK_ST_REQ:
- return WLAN_HAL_SET_LINK_ST_REQ;
- case WDI_GET_STATS_REQ:
- return WLAN_HAL_GET_STATS_REQ;
- case WDI_UPDATE_CFG_REQ:
- return WLAN_HAL_UPDATE_CFG_REQ;
- case WDI_ADD_BA_SESSION_REQ:
- return WLAN_HAL_ADD_BA_SESSION_REQ;
- case WDI_TRIGGER_BA_REQ:
- return WLAN_HAL_TRIGGER_BA_REQ;
- case WDI_UPD_BCON_PRMS_REQ:
- return WLAN_HAL_UPDATE_BEACON_REQ;
- case WDI_SND_BCON_REQ:
- return WLAN_HAL_SEND_BEACON_REQ;
- case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
- return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
- case WDI_SET_MAX_TX_POWER_REQ:
- return WLAN_HAL_SET_MAX_TX_POWER_REQ;
- case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
- return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
- case WDI_SET_TX_POWER_REQ:
- return WLAN_HAL_SET_TX_POWER_REQ;
- case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
- return WLAN_HAL_SET_P2P_GONOA_REQ;
-#ifdef FEATURE_WLAN_TDLS
- case WDI_TDLS_LINK_ESTABLISH_REQ:
- return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
-#endif
- case WDI_ENTER_IMPS_REQ:
- return WLAN_HAL_ENTER_IMPS_REQ;
- case WDI_EXIT_IMPS_REQ:
- return WLAN_HAL_EXIT_IMPS_REQ;
- case WDI_ENTER_BMPS_REQ:
- return WLAN_HAL_ENTER_BMPS_REQ;
- case WDI_EXIT_BMPS_REQ:
- return WLAN_HAL_EXIT_BMPS_REQ;
- case WDI_ENTER_UAPSD_REQ:
- return WLAN_HAL_ENTER_UAPSD_REQ;
- case WDI_EXIT_UAPSD_REQ:
- return WLAN_HAL_EXIT_UAPSD_REQ;
- case WDI_SET_UAPSD_PARAM_REQ:
- return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
- case WDI_UPDATE_UAPSD_PARAM_REQ:
- return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
- case WDI_CONFIGURE_RXP_FILTER_REQ:
- return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
- case WDI_SET_BEACON_FILTER_REQ:
- return WLAN_HAL_ADD_BCN_FILTER_REQ;
- case WDI_REM_BEACON_FILTER_REQ:
- return WLAN_HAL_REM_BCN_FILTER_REQ;
- case WDI_SET_RSSI_THRESHOLDS_REQ:
- return WLAN_HAL_SET_RSSI_THRESH_REQ;
- case WDI_HOST_OFFLOAD_REQ:
- return WLAN_HAL_HOST_OFFLOAD_REQ;
- case WDI_WOWL_ADD_BC_PTRN_REQ:
- return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
- case WDI_WOWL_DEL_BC_PTRN_REQ:
- return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
- case WDI_WOWL_ENTER_REQ:
- return WLAN_HAL_ENTER_WOWL_REQ;
- case WDI_WOWL_EXIT_REQ:
- return WLAN_HAL_EXIT_WOWL_REQ;
- case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
- return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
- case WDI_NV_DOWNLOAD_REQ:
- return WLAN_HAL_DOWNLOAD_NV_REQ;
- case WDI_FLUSH_AC_REQ:
- return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
- case WDI_BTAMP_EVENT_REQ:
- return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
-#ifdef WLAN_FEATURE_VOWIFI_11R
- case WDI_AGGR_ADD_TS_REQ:
- return WLAN_HAL_AGGR_ADD_TS_REQ;
-#endif /* WLAN_FEATURE_VOWIFI_11R */
- case WDI_FTM_CMD_REQ:
- return WLAN_HAL_PROCESS_PTT_REQ;
- case WDI_ADD_STA_SELF_REQ:
- return WLAN_HAL_ADD_STA_SELF_REQ;
- case WDI_DEL_STA_SELF_REQ:
- return WLAN_HAL_DEL_STA_SELF_REQ;
-#ifdef FEATURE_OEM_DATA_SUPPORT
- case WDI_START_OEM_DATA_REQ:
- return WLAN_HAL_START_OEM_DATA_REQ;
-#endif /* FEATURE_OEM_DATA_SUPPORT */
- case WDI_HOST_RESUME_REQ:
- return WLAN_HAL_HOST_RESUME_REQ;
- case WDI_HOST_SUSPEND_IND:
- return WLAN_HAL_HOST_SUSPEND_IND;
- case WDI_TRAFFIC_STATS_IND:
- return WLAN_HAL_CLASS_B_STATS_IND;
-#ifdef WLAN_FEATURE_11W
- case WDI_EXCLUDE_UNENCRYPTED_IND:
- return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
-#endif
- case WDI_KEEP_ALIVE_REQ:
- return WLAN_HAL_KEEP_ALIVE_REQ;
-#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
- case WDI_ROAM_SCAN_OFFLOAD_REQ:
- return WLAN_ROAM_SCAN_OFFLOAD_REQ;
-#endif
-#ifdef FEATURE_WLAN_SCAN_PNO
- case WDI_SET_PREF_NETWORK_REQ:
- return WLAN_HAL_SET_PREF_NETWORK_REQ;
- case WDI_SET_RSSI_FILTER_REQ:
- return WLAN_HAL_SET_RSSI_FILTER_REQ;
- case WDI_UPDATE_SCAN_PARAMS_REQ:
- return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
-#endif // FEATURE_WLAN_SCAN_PNO
- case WDI_SET_TX_PER_TRACKING_REQ:
- return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
-#ifdef WLAN_FEATURE_PACKET_FILTERING
- case WDI_8023_MULTICAST_LIST_REQ:
- return WLAN_HAL_8023_MULTICAST_LIST_REQ;
- case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
- return WLAN_HAL_SET_PACKET_FILTER_REQ;
- case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
- return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
- case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
- return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
-#endif // WLAN_FEATURE_PACKET_FILTERING
- case WDI_HAL_DUMP_CMD_REQ:
- return WLAN_HAL_DUMP_COMMAND_REQ;
-#ifdef WLAN_FEATURE_GTK_OFFLOAD
- case WDI_GTK_OFFLOAD_REQ:
- return WLAN_HAL_GTK_OFFLOAD_REQ;
- case WDI_GTK_OFFLOAD_GETINFO_REQ:
- return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
-#endif /* WLAN_FEATURE_GTK_OFFLOAD */
-
- case WDI_INIT_SCAN_CON_REQ:
- return WLAN_HAL_INIT_SCAN_CON_REQ;
- case WDI_SET_POWER_PARAMS_REQ:
- return WLAN_HAL_SET_POWER_PARAMS_REQ;
- case WDI_SET_TM_LEVEL_REQ:
- return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
- case WDI_FEATURE_CAPS_EXCHANGE_REQ:
- return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
-#ifdef WLAN_FEATURE_11AC
- case WDI_UPDATE_VHT_OP_MODE_REQ:
- return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
-#endif
- case WDI_GET_ROAM_RSSI_REQ:
- return WLAN_HAL_GET_ROAM_RSSI_REQ;
- case WDI_DHCP_START_IND:
- return WLAN_HAL_DHCP_START_IND;
- case WDI_DHCP_STOP_IND:
- return WLAN_HAL_DHCP_STOP_IND;
-#ifdef FEATURE_WLAN_LPHB
- case WDI_LPHB_CFG_REQ:
- return WLAN_HAL_LPHB_CFG_REQ;
-#endif /* FEATURE_WLAN_LPHB */
- case WDI_ADD_PERIODIC_TX_PATTERN_IND:
- return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
- case WDI_DEL_PERIODIC_TX_PATTERN_IND:
- return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
-
- case WDI_RATE_UPDATE_IND:
- return WLAN_HAL_RATE_UPDATE_IND;
-
-#ifdef FEATURE_WLAN_BATCH_SCAN
- case WDI_SET_BATCH_SCAN_REQ:
- return WLAN_HAL_BATCHSCAN_SET_REQ;
- case WDI_STOP_BATCH_SCAN_IND:
- return WLAN_HAL_BATCHSCAN_STOP_IND;
- case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
- return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
-#endif
-
- default:
- return WLAN_HAL_MSG_MAX;
- }
-
-}/*WDI_2_HAL_REQ_TYPE*/
-
-/*Convert WDI response type into HAL response type*/
-WPT_STATIC WPT_INLINE WDI_ResponseEnumType
-HAL_2_WDI_RSP_TYPE
-(
- tHalHostMsgType halMsg
-)
-{
- /*Lightweight function - no sanity checks and no unecessary code to increase
- the chances of getting inlined*/
- switch( halMsg )
- {
- case WLAN_HAL_START_RSP:
- return WDI_START_RESP;
- case WLAN_HAL_STOP_RSP:
- return WDI_STOP_RESP;
- case WLAN_HAL_INIT_SCAN_RSP:
- return WDI_INIT_SCAN_RESP;
- case WLAN_HAL_START_SCAN_RSP:
- return WDI_START_SCAN_RESP;
- case WLAN_HAL_END_SCAN_RSP:
- return WDI_END_SCAN_RESP;
- case WLAN_HAL_FINISH_SCAN_RSP:
- return WDI_FINISH_SCAN_RESP;
- case WLAN_HAL_CONFIG_STA_RSP:
- return WDI_CONFIG_STA_RESP;
- case WLAN_HAL_DELETE_STA_RSP:
- return WDI_DEL_STA_RESP;
- case WLAN_HAL_CONFIG_BSS_RSP:
- return WDI_CONFIG_BSS_RESP;
- case WLAN_HAL_DELETE_BSS_RSP:
- return WDI_DEL_BSS_RESP;
- case WLAN_HAL_JOIN_RSP:
- return WDI_JOIN_RESP;
- case WLAN_HAL_POST_ASSOC_RSP:
- return WDI_POST_ASSOC_RESP;
- case WLAN_HAL_SET_BSSKEY_RSP:
- return WDI_SET_BSS_KEY_RESP;
- case WLAN_HAL_SET_STAKEY_RSP:
- return WDI_SET_STA_KEY_RESP;
- case WLAN_HAL_RMV_BSSKEY_RSP:
- return WDI_RMV_BSS_KEY_RESP;
- case WLAN_HAL_RMV_STAKEY_RSP:
- return WDI_RMV_STA_KEY_RESP;
- case WLAN_HAL_SET_BCASTKEY_RSP:
- return WDI_SET_STA_BCAST_KEY_RESP;
- //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
- // return WDI_RMV_STA_BCAST_KEY_RESP;
- case WLAN_HAL_ADD_TS_RSP:
- return WDI_ADD_TS_RESP;
- case WLAN_HAL_DEL_TS_RSP:
- return WDI_DEL_TS_RESP;
- case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
- return WDI_UPD_EDCA_PRMS_RESP;
- case WLAN_HAL_ADD_BA_RSP:
- return WDI_ADD_BA_RESP;
- case WLAN_HAL_DEL_BA_RSP:
- return WDI_DEL_BA_RESP;
-#ifdef FEATURE_WLAN_ESE
- case WLAN_HAL_TSM_STATS_RSP:
- return WDI_TSM_STATS_RESP;
-#endif
- case WLAN_HAL_CH_SWITCH_RSP:
- return WDI_CH_SWITCH_RESP;
- case WLAN_HAL_SET_LINK_ST_RSP:
- return WDI_SET_LINK_ST_RESP;
- case WLAN_HAL_GET_STATS_RSP:
- return WDI_GET_STATS_RESP;
- case WLAN_HAL_UPDATE_CFG_RSP:
- return WDI_UPDATE_CFG_RESP;
- case WLAN_HAL_ADD_BA_SESSION_RSP:
- return WDI_ADD_BA_SESSION_RESP;
- case WLAN_HAL_TRIGGER_BA_RSP:
- return WDI_TRIGGER_BA_RESP;
- case WLAN_HAL_UPDATE_BEACON_RSP:
- return WDI_UPD_BCON_PRMS_RESP;
- case WLAN_HAL_SEND_BEACON_RSP:
- return WDI_SND_BCON_RESP;
- case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
- return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
- /*Indications*/
- case WLAN_HAL_RSSI_NOTIFICATION_IND:
- return WDI_HAL_RSSI_NOTIFICATION_IND;
- case WLAN_HAL_MISSED_BEACON_IND:
- return WDI_HAL_MISSED_BEACON_IND;
- case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
- return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
- case WLAN_HAL_MIC_FAILURE_IND:
- return WDI_HAL_MIC_FAILURE_IND;
- case WLAN_HAL_FATAL_ERROR_IND:
- return WDI_HAL_FATAL_ERROR_IND;
- case WLAN_HAL_DELETE_STA_CONTEXT_IND:
- return WDI_HAL_DEL_STA_IND;
- case WLAN_HAL_COEX_IND:
- return WDI_HAL_COEX_IND;
- case WLAN_HAL_OTA_TX_COMPL_IND:
- return WDI_HAL_TX_COMPLETE_IND;
- case WLAN_HAL_P2P_NOA_ATTR_IND:
- return WDI_HAL_P2P_NOA_ATTR_IND;
- case WLAN_HAL_P2P_NOA_START_IND:
- return WDI_HAL_P2P_NOA_START_IND;
- case WLAN_HAL_TX_PER_HIT_IND:
- return WDI_HAL_TX_PER_HIT_IND;
- case WLAN_HAL_SET_MAX_TX_POWER_RSP:
- return WDI_SET_MAX_TX_POWER_RESP;
- case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
- return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
- case WLAN_HAL_SET_TX_POWER_RSP:
- return WDI_SET_TX_POWER_RESP;
- case WLAN_HAL_SET_P2P_GONOA_RSP:
- return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
-#ifdef FEATURE_WLAN_TDLS
- case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
- return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
- case WLAN_HAL_TDLS_IND:
- return WDI_HAL_TDLS_IND;
-#endif
- case WLAN_HAL_ENTER_IMPS_RSP:
- return WDI_ENTER_IMPS_RESP;
- case WLAN_HAL_EXIT_IMPS_RSP:
- return WDI_EXIT_IMPS_RESP;
- case WLAN_HAL_ENTER_BMPS_RSP:
- return WDI_ENTER_BMPS_RESP;
- case WLAN_HAL_EXIT_BMPS_RSP:
- return WDI_EXIT_BMPS_RESP;
- case WLAN_HAL_ENTER_UAPSD_RSP:
- return WDI_ENTER_UAPSD_RESP;
- case WLAN_HAL_EXIT_UAPSD_RSP:
- return WDI_EXIT_UAPSD_RESP;
- case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
- return WDI_SET_UAPSD_PARAM_RESP;
- case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
- return WDI_UPDATE_UAPSD_PARAM_RESP;
- case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
- return WDI_CONFIGURE_RXP_FILTER_RESP;
- case WLAN_HAL_ADD_BCN_FILTER_RSP:
- return WDI_SET_BEACON_FILTER_RESP;
- case WLAN_HAL_REM_BCN_FILTER_RSP:
- return WDI_REM_BEACON_FILTER_RESP;
- case WLAN_HAL_SET_RSSI_THRESH_RSP:
- return WDI_SET_RSSI_THRESHOLDS_RESP;
- case WLAN_HAL_HOST_OFFLOAD_RSP:
- return WDI_HOST_OFFLOAD_RESP;
- case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
- return WDI_WOWL_ADD_BC_PTRN_RESP;
- case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
- return WDI_WOWL_DEL_BC_PTRN_RESP;
- case WLAN_HAL_ENTER_WOWL_RSP:
- return WDI_WOWL_ENTER_RESP;
- case WLAN_HAL_EXIT_WOWL_RSP:
- return WDI_WOWL_EXIT_RESP;
- case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
- return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
- case WLAN_HAL_DOWNLOAD_NV_RSP:
- return WDI_NV_DOWNLOAD_RESP;
- case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
- return WDI_FLUSH_AC_RESP;
- case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
- return WDI_BTAMP_EVENT_RESP;
- case WLAN_HAL_PROCESS_PTT_RSP:
- return WDI_FTM_CMD_RESP;
- case WLAN_HAL_ADD_STA_SELF_RSP:
- return WDI_ADD_STA_SELF_RESP;
-case WLAN_HAL_DEL_STA_SELF_RSP:
- return WDI_DEL_STA_SELF_RESP;
-#ifdef FEATURE_OEM_DATA_SUPPORT
- case WLAN_HAL_START_OEM_DATA_RSP:
- return WDI_START_OEM_DATA_RESP;
-#endif /* FEATURE_OEM_DATA_SUPPORT */
- case WLAN_HAL_HOST_RESUME_RSP:
- return WDI_HOST_RESUME_RESP;
- case WLAN_HAL_KEEP_ALIVE_RSP:
- return WDI_KEEP_ALIVE_RESP;
-#ifdef FEATURE_WLAN_SCAN_PNO
- case WLAN_HAL_SET_PREF_NETWORK_RSP:
- return WDI_SET_PREF_NETWORK_RESP;
- case WLAN_HAL_SET_RSSI_FILTER_RSP:
- return WDI_SET_RSSI_FILTER_RESP;
- case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
- return WDI_UPDATE_SCAN_PARAMS_RESP;
- case WLAN_HAL_PREF_NETW_FOUND_IND:
- return WDI_HAL_PREF_NETWORK_FOUND_IND;
-#endif // FEATURE_WLAN_SCAN_PNO
-#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
- case WLAN_ROAM_SCAN_OFFLOAD_RSP:
- return WDI_ROAM_SCAN_OFFLOAD_RESP;
-#endif
- case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
- return WDI_SET_TX_PER_TRACKING_RESP;
-#ifdef WLAN_FEATURE_PACKET_FILTERING
- case WLAN_HAL_8023_MULTICAST_LIST_RSP:
- return WDI_8023_MULTICAST_LIST_RESP;
- case WLAN_HAL_SET_PACKET_FILTER_RSP:
- return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
- case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
- return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
- case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
- return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
-#endif // WLAN_FEATURE_PACKET_FILTERING
-
- case WLAN_HAL_DUMP_COMMAND_RSP:
- return WDI_HAL_DUMP_CMD_RESP;
- case WLAN_HAL_SET_POWER_PARAMS_RSP:
- return WDI_SET_POWER_PARAMS_RESP;
-#ifdef WLAN_FEATURE_VOWIFI_11R
- case WLAN_HAL_AGGR_ADD_TS_RSP:
- return WDI_AGGR_ADD_TS_RESP;
-#endif
-
-#ifdef WLAN_FEATURE_GTK_OFFLOAD
- case WLAN_HAL_GTK_OFFLOAD_RSP:
- return WDI_GTK_OFFLOAD_RESP;
- case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
- return WDI_GTK_OFFLOAD_GETINFO_RESP;
-#endif /* WLAN_FEATURE_GTK_OFFLOAD */
-#ifdef WLAN_WAKEUP_EVENTS
- case WLAN_HAL_WAKE_REASON_IND:
- return WDI_HAL_WAKE_REASON_IND;
-#endif // WLAN_WAKEUP_EVENTS
-
- case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
- return WDI_SET_TM_LEVEL_RESP;
- case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
- return WDI_FEATURE_CAPS_EXCHANGE_RESP;
-#ifdef WLAN_FEATURE_11AC
- case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
- return WDI_UPDATE_VHT_OP_MODE_RESP;
-#endif
-#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
- case WLAN_HAL_GET_ROAM_RSSI_RSP:
- return WDI_GET_ROAM_RSSI_RESP;
-#endif
-
-#ifdef FEATURE_WLAN_LPHB
- case WLAN_HAL_LPHB_IND:
- return WDI_HAL_LPHB_IND;
- case WLAN_HAL_LPHB_CFG_RSP:
- return WDI_LPHB_CFG_RESP;
-#endif /* FEATURE_WLAN_LPHB */
-
- case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
- return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
- case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
- return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
-
-#ifdef FEATURE_WLAN_BATCH_SCAN
- case WLAN_HAL_BATCHSCAN_SET_RSP:
- return WDI_SET_BATCH_SCAN_RESP;
- case WLAN_HAL_BATCHSCAN_RESULT_IND:
- return WDI_BATCHSCAN_RESULT_IND;
-#endif // FEATURE_WLAN_BATCH_SCAN
-
- default:
- return eDRIVER_TYPE_MAX;
- }
-
-}/*HAL_2_WDI_RSP_TYPE*/
-
-
-/*Convert WDI driver type into HAL driver type*/
-WPT_STATIC WPT_INLINE tDriverType
-WDI_2_HAL_DRV_TYPE
-(
- WDI_DriverType wdiDriverType
-)
-{
- /*Lightweight function - no sanity checks and no unecessary code to increase
- the chances of getting inlined*/
- switch( wdiDriverType )
- {
- case WDI_DRIVER_TYPE_PRODUCTION:
- return eDRIVER_TYPE_PRODUCTION;
- case WDI_DRIVER_TYPE_MFG:
- return eDRIVER_TYPE_MFG;
- case WDI_DRIVER_TYPE_DVT:
- return eDRIVER_TYPE_DVT;
- }
-
- return eDRIVER_TYPE_MAX;
-}/*WDI_2_HAL_DRV_TYPE*/
-
-
-/*Convert WDI stop reason into HAL stop reason*/
-WPT_STATIC WPT_INLINE tHalStopType
-WDI_2_HAL_STOP_REASON
-(
- WDI_StopType wdiDriverType
-)
-{
- /*Lightweight function - no sanity checks and no unecessary code to increase
- the chances of getting inlined*/
- switch( wdiDriverType )
- {
- case WDI_STOP_TYPE_SYS_RESET:
- return HAL_STOP_TYPE_SYS_RESET;
- case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
- return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
- case WDI_STOP_TYPE_RF_KILL:
- return HAL_STOP_TYPE_RF_KILL;
- }
-
- return HAL_STOP_TYPE_MAX;
-}/*WDI_2_HAL_STOP_REASON*/
-
-
-/*Convert WDI scan mode type into HAL scan mode type*/
-WPT_STATIC WPT_INLINE eHalSysMode
-WDI_2_HAL_SCAN_MODE
-(
- WDI_ScanMode wdiScanMode
-)
-{
- /*Lightweight function - no sanity checks and no unecessary code to increase
- the chances of getting inlined*/
- switch( wdiScanMode )
- {
- case WDI_SCAN_MODE_NORMAL:
- return eHAL_SYS_MODE_NORMAL;
- case WDI_SCAN_MODE_LEARN:
- return eHAL_SYS_MODE_LEARN;
- case WDI_SCAN_MODE_SCAN:
- return eHAL_SYS_MODE_SCAN;
- case WDI_SCAN_MODE_PROMISC:
- return eHAL_SYS_MODE_PROMISC;
- case WDI_SCAN_MODE_SUSPEND_LINK:
- return eHAL_SYS_MODE_SUSPEND_LINK;
- case WDI_SCAN_MODE_ROAM_SCAN:
- return eHAL_SYS_MODE_ROAM_SCAN;
- case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
- return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
- }
-
- return eHAL_SYS_MODE_MAX;
-}/*WDI_2_HAL_SCAN_MODE*/
-
-/*Convert WDI sec ch offset into HAL sec ch offset type*/
-WPT_STATIC WPT_INLINE ePhyChanBondState
-WDI_2_HAL_SEC_CH_OFFSET
-(
- WDI_HTSecondaryChannelOffset wdiSecChOffset
-)
-{
- /*Lightweight function - no sanity checks and no unecessary code to increase
- the chances of getting inlined*/
- switch( wdiSecChOffset )
- {
- case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
- return PHY_SINGLE_CHANNEL_CENTERED;
- case WDI_SECONDARY_CHANNEL_OFFSET_UP:
- return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
- case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
- return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
-#ifdef WLAN_FEATURE_11AC
- case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
- return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
- case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
- return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
- case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
- return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
- case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
- return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
- case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
- return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
- case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
- return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
- case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
- return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
-#endif
- default:
- break;
- }
-
- return PHY_CHANNEL_BONDING_STATE_MAX;
-}/*WDI_2_HAL_SEC_CH_OFFSET*/
-
-/*Convert WDI BSS type into HAL BSS type*/
-WPT_STATIC WPT_INLINE tSirBssType
-WDI_2_HAL_BSS_TYPE
-(
- WDI_BssType wdiBSSType
-)
-{
- /*Lightweight function - no sanity checks and no unecessary code to increase
- the chances of getting inlined*/
- switch( wdiBSSType )
- {
- case WDI_INFRASTRUCTURE_MODE:
- return eSIR_INFRASTRUCTURE_MODE;
- case WDI_INFRA_AP_MODE:
- return eSIR_INFRA_AP_MODE;
- case WDI_IBSS_MODE:
- return eSIR_IBSS_MODE;
- case WDI_BTAMP_STA_MODE:
- return eSIR_BTAMP_STA_MODE;
- case WDI_BTAMP_AP_MODE:
- return eSIR_BTAMP_AP_MODE;
- case WDI_BSS_AUTO_MODE:
- return eSIR_AUTO_MODE;
- }
-
- return eSIR_DONOT_USE_BSS_TYPE;
-}/*WDI_2_HAL_BSS_TYPE*/
-
-/*Convert WDI NW type into HAL NW type*/
-WPT_STATIC WPT_INLINE tSirNwType
-WDI_2_HAL_NW_TYPE
-(
- WDI_NwType wdiNWType
-)
-{
- /*Lightweight function - no sanity checks and no unecessary code to increase
- the chances of getting inlined*/
- switch( wdiNWType )
- {
- case WDI_11A_NW_TYPE:
- return eSIR_11A_NW_TYPE;
- case WDI_11B_NW_TYPE:
- return eSIR_11B_NW_TYPE;
- case WDI_11G_NW_TYPE:
- return eSIR_11G_NW_TYPE;
- case WDI_11N_NW_TYPE:
- return eSIR_11N_NW_TYPE;
- }
-
- return eSIR_DONOT_USE_NW_TYPE;
-}/*WDI_2_HAL_NW_TYPE*/
-
-/*Convert WDI chanel bonding type into HAL cb type*/
-WPT_STATIC WPT_INLINE ePhyChanBondState
-WDI_2_HAL_CB_STATE
-(
- WDI_PhyChanBondState wdiCbState
-)
-{
- /*Lightweight function - no sanity checks and no unecessary code to increase
- the chances of getting inlined*/
- switch ( wdiCbState )
- {
- case WDI_PHY_SINGLE_CHANNEL_CENTERED:
- return PHY_SINGLE_CHANNEL_CENTERED;
- case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
- return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
- case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
- return PHY_DOUBLE_CHANNEL_CENTERED;
- case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
- return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
-#ifdef WLAN_FEATURE_11AC
- case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
- return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
- case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
- return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
- case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
- return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
- case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
- return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
- case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
- return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
- case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
- return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
- case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
- return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
-#endif
- case WDI_MAX_CB_STATE:
- default:
- break;
- }
-
- return PHY_CHANNEL_BONDING_STATE_MAX;
-}/*WDI_2_HAL_CB_STATE*/
-
-/*Convert WDI chanel bonding type into HAL cb type*/
-WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
-WDI_2_HAL_HT_OPER_MODE
-(
- WDI_HTOperatingMode wdiHTOperMode
-)
-{
- /*Lightweight function - no sanity checks and no unecessary code to increase
- the chances of getting inlined*/
- switch ( wdiHTOperMode )
- {
- case WDI_HT_OP_MODE_PURE:
- return eSIR_HT_OP_MODE_PURE;
- case WDI_HT_OP_MODE_OVERLAP_LEGACY:
- return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
- case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
- return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
- case WDI_HT_OP_MODE_MIXED:
- return eSIR_HT_OP_MODE_MIXED;
- }
-
- return eSIR_HT_OP_MODE_MAX;
-}/*WDI_2_HAL_HT_OPER_MODE*/
-
-/*Convert WDI mimo PS type into HAL mimo PS type*/
-WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
-WDI_2_HAL_MIMO_PS
-(
- WDI_HTMIMOPowerSaveState wdiHTOperMode
-)
-{
- /*Lightweight function - no sanity checks and no unecessary code to increase
- the chances of getting inlined*/
- switch ( wdiHTOperMode )
- {
- case WDI_HT_MIMO_PS_STATIC:
- return eSIR_HT_MIMO_PS_STATIC;
- case WDI_HT_MIMO_PS_DYNAMIC:
- return eSIR_HT_MIMO_PS_DYNAMIC;
- case WDI_HT_MIMO_PS_NA:
- return eSIR_HT_MIMO_PS_NA;
- case WDI_HT_MIMO_PS_NO_LIMIT:
- return eSIR_HT_MIMO_PS_NO_LIMIT;
- }
-
- return eSIR_HT_MIMO_PS_MAX;
-}/*WDI_2_HAL_MIMO_PS*/
-
-/*Convert WDI ENC type into HAL ENC type*/
-WPT_STATIC WPT_INLINE tAniEdType
-WDI_2_HAL_ENC_TYPE
-(
- WDI_EncryptType wdiEncType
-)
-{
- /*Lightweight function - no sanity checks and no unecessary code to increase
- the chances of getting inlined*/
- switch ( wdiEncType )
- {
- case WDI_ENCR_NONE:
- return eSIR_ED_NONE;
-
- case WDI_ENCR_WEP40:
- return eSIR_ED_WEP40;
-
- case WDI_ENCR_WEP104:
- return eSIR_ED_WEP104;
-
- case WDI_ENCR_TKIP:
- return eSIR_ED_TKIP;
-
- case WDI_ENCR_CCMP:
- return eSIR_ED_CCMP;
-
- case WDI_ENCR_AES_128_CMAC:
- return eSIR_ED_AES_128_CMAC;
-#if defined(FEATURE_WLAN_WAPI)
- case WDI_ENCR_WPI:
- return eSIR_ED_WPI;
-#endif
- default:
- return eSIR_ED_NOT_IMPLEMENTED;
- }
-
-}/*WDI_2_HAL_ENC_TYPE*/
-
-/*Convert WDI WEP type into HAL WEP type*/
-WPT_STATIC WPT_INLINE tAniWepType
-WDI_2_HAL_WEP_TYPE
-(
- WDI_WepType wdiWEPType
-)
-{
- /*Lightweight function - no sanity checks and no unecessary code to increase
- the chances of getting inlined*/
- switch ( wdiWEPType )
- {
- case WDI_WEP_STATIC:
- return eSIR_WEP_STATIC;
-
- case WDI_WEP_DYNAMIC:
- return eSIR_WEP_DYNAMIC;
- }
-
- return eSIR_WEP_MAX;
-}/*WDI_2_HAL_WEP_TYPE*/
-
-WPT_STATIC WPT_INLINE tSirLinkState
-WDI_2_HAL_LINK_STATE
-(
- WDI_LinkStateType wdiLinkState
-)
-{
- /*Lightweight function - no sanity checks and no unecessary code to increase
- the chances of getting inlined*/
- switch ( wdiLinkState )
- {
- case WDI_LINK_IDLE_STATE:
- return eSIR_LINK_IDLE_STATE;
-
- case WDI_LINK_PREASSOC_STATE:
- return eSIR_LINK_PREASSOC_STATE;
-
- case WDI_LINK_POSTASSOC_STATE:
- return eSIR_LINK_POSTASSOC_STATE;
-
- case WDI_LINK_AP_STATE:
- return eSIR_LINK_AP_STATE;
-
- case WDI_LINK_IBSS_STATE:
- return eSIR_LINK_IBSS_STATE;
-
- case WDI_LINK_BTAMP_PREASSOC_STATE:
- return eSIR_LINK_BTAMP_PREASSOC_STATE;
-
- case WDI_LINK_BTAMP_POSTASSOC_STATE:
- return eSIR_LINK_BTAMP_POSTASSOC_STATE;
-
- case WDI_LINK_BTAMP_AP_STATE:
- return eSIR_LINK_BTAMP_AP_STATE;
-
- case WDI_LINK_BTAMP_STA_STATE:
- return eSIR_LINK_BTAMP_STA_STATE;
-
- case WDI_LINK_LEARN_STATE:
- return eSIR_LINK_LEARN_STATE;
-
- case WDI_LINK_SCAN_STATE:
- return eSIR_LINK_SCAN_STATE;
-
- case WDI_LINK_FINISH_SCAN_STATE:
- return eSIR_LINK_FINISH_SCAN_STATE;
-
- case WDI_LINK_INIT_CAL_STATE:
- return eSIR_LINK_INIT_CAL_STATE;
-
- case WDI_LINK_FINISH_CAL_STATE:
- return eSIR_LINK_FINISH_CAL_STATE;
-
- case WDI_LINK_LISTEN_STATE:
- return eSIR_LINK_LISTEN_STATE;
-
- case WDI_LINK_SEND_ACTION_STATE:
- return eSIR_LINK_SEND_ACTION_STATE;
-
- default:
- return eSIR_LINK_MAX;
- }
-}
-
-/*Translate a STA Context from WDI into HAL*/
-WPT_STATIC WPT_INLINE
-void
-WDI_CopyWDIStaCtxToHALStaCtx
-(
- tConfigStaParams* phalConfigSta,
- WDI_ConfigStaReqInfoType* pwdiConfigSta
-)
-{
- wpt_uint8 i;
-#ifdef WLAN_FEATURE_11AC
- /* Get the Version 1 Handler */
- tConfigStaParams_V1* phalConfigSta_V1 = NULL;
- if (WDI_getFwWlanFeatCaps(DOT11AC))
- {
- phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
- }
-#endif
- /*Lightweight function - no sanity checks and no unecessary code to increase
- the chances of getting inlined*/
-
- wpalMemoryCopy(phalConfigSta->bssId,
- pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
-
- wpalMemoryCopy(phalConfigSta->staMac,
- pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
-
- phalConfigSta->assocId = pwdiConfigSta->usAssocId;
- phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
- phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
- phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
- phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
- phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
- phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
- phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
- phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
- phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
- phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
- phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
- phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
- phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
- phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
- phalConfigSta->action = pwdiConfigSta->wdiAction;
- phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
- phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
- phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
- phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
- phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
- phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
- phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
-
- phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
-
- phalConfigSta->supportedRates.opRateMode =
- pwdiConfigSta->wdiSupportedRates.opRateMode;
- for(i = 0; i < SIR_NUM_11B_RATES; i ++)
- {
- phalConfigSta->supportedRates.llbRates[i] =
- pwdiConfigSta->wdiSupportedRates.llbRates[i];
- }
- for(i = 0; i < SIR_NUM_11A_RATES; i ++)
- {
- phalConfigSta->supportedRates.llaRates[i] =
- pwdiConfigSta->wdiSupportedRates.llaRates[i];
- }
- for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
- {
- phalConfigSta->supportedRates.aniLegacyRates[i] =
- pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
- }
- phalConfigSta->supportedRates.aniEnhancedRateBitmap =
- pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
- for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
- {
- phalConfigSta->supportedRates.supportedMCSSet[i] =
- pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
- }
- phalConfigSta->supportedRates.rxHighestDataRate =
- pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
-
-#ifdef WLAN_FEATURE_11AC
- if(phalConfigSta_V1 != NULL)
- {
- phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
- phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
- phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
- phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
- }
-#endif
-
- phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
-
-#ifdef WLAN_FEATURE_11AC
- if(phalConfigSta_V1 != NULL)
- {
- phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
- phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
- phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
- phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
- phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
-
- }
-#endif
-}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
-
-/*Translate a Rate set info from WDI into HAL*/
-WPT_STATIC WPT_INLINE void
-WDI_CopyWDIRateSetToHALRateSet
-(
- tSirMacRateSet* pHalRateSet,
- WDI_RateSet* pwdiRateSet
-)
-{
- wpt_uint8 i;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
- pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
-
- for ( i = 0; i < pHalRateSet->numRates; i++ )
- {
- pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
- }
-
-}/*WDI_CopyWDIRateSetToHALRateSet*/
-
-
-/*Translate an EDCA Parameter Record from WDI into HAL*/
-WPT_STATIC WPT_INLINE void
-WDI_CopyWDIEDCAParamsToHALEDCAParams
-(
- tSirMacEdcaParamRecord* phalEdcaParam,
- WDI_EdcaParamRecord* pWDIEdcaParam
-)
-{
- /*Lightweight function - no sanity checks and no unecessary code to increase
- the chances of getting inlined*/
-
- phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
- phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
- phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
- phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
-
- phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
- phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
- phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
-}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
-
-
-/*Copy a management frame header from WDI fmt into HAL fmt*/
-WPT_STATIC WPT_INLINE void
-WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
-(
- tSirMacMgmtHdr* pmacMgmtHdr,
- WDI_MacMgmtHdr* pwdiMacMgmtHdr
-)
-{
- pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
- pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
- pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
- pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
- pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
- pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
- pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
- pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
- pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
- pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
- pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
-
- pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
- pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
-
- wpalMemoryCopy(pmacMgmtHdr->da,
- pwdiMacMgmtHdr->da, 6);
- wpalMemoryCopy(pmacMgmtHdr->sa,
- pwdiMacMgmtHdr->sa, 6);
- wpalMemoryCopy(pmacMgmtHdr->bssId,
- pwdiMacMgmtHdr->bssId, 6);
-
- pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
- pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
- pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
-
-}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
-
-
-/*Copy config bss parameters from WDI fmt into HAL fmt*/
-WPT_STATIC WPT_INLINE void
-WDI_CopyWDIConfigBSSToHALConfigBSS
-(
- tConfigBssParams* phalConfigBSS,
- WDI_ConfigBSSReqInfoType* pwdiConfigBSS
-)
-{
-
- wpt_uint8 keyIndex = 0;
-#ifdef WLAN_FEATURE_11AC
- /* Get the Version 1 Handler */
- tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
- if (WDI_getFwWlanFeatCaps(DOT11AC))
- phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
-#endif
-
- wpalMemoryCopy( phalConfigBSS->bssId,
- pwdiConfigBSS->macBSSID,
- WDI_MAC_ADDR_LEN);
-
-#ifdef HAL_SELF_STA_PER_BSS
- wpalMemoryCopy( phalConfigBSS->selfMacAddr,
- pwdiConfigBSS->macSelfAddr,
- WDI_MAC_ADDR_LEN);
-#endif
-
- phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
-
- phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
- phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
-
- phalConfigBSS->shortSlotTimeSupported =
- pwdiConfigBSS->ucShortSlotTimeSupported;
- phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
- phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
- phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
- phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
- phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
- phalConfigBSS->fLsigTXOPProtectionFullSupport =
- pwdiConfigBSS->ucTXOPProtectionFullSupport;
- phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
- phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
- phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
- phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
- phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
- phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
- phalConfigBSS->action = pwdiConfigBSS->wdiAction;
- phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
- phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
- phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
-
- phalConfigBSS->htOperMode =
- WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
-
- phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
- phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
- phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
- phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
-
-#ifdef WLAN_FEATURE_VOWIFI
- phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
-#endif
-
- /*! Used 32 as magic number because that is how the ssid is declared inside the
- hal header - hal needs a macro for it */
- phalConfigBSS->ssId.length =
- (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
- pwdiConfigBSS->wdiSSID.ucLength : 32;
- wpalMemoryCopy(phalConfigBSS->ssId.ssId,
- pwdiConfigBSS->wdiSSID.sSSID,
- phalConfigBSS->ssId.length);
-
- WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
- &pwdiConfigBSS->wdiSTAContext);
-
- WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
- &pwdiConfigBSS->wdiRateSet);
-
- phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
-
- if(phalConfigBSS->edcaParamsValid)
- {
- WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
- &pwdiConfigBSS->wdiBEEDCAParams);
- WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
- &pwdiConfigBSS->wdiBKEDCAParams);
- WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
- &pwdiConfigBSS->wdiVIEDCAParams);
- WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
- &pwdiConfigBSS->wdiVOEDCAParams);
- }
-
- phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
-
- phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
-
-#ifdef WLAN_FEATURE_VOWIFI_11R
-
- phalConfigBSS->extSetStaKeyParamValid =
- pwdiConfigBSS->bExtSetStaKeyParamValid;
-
- if( phalConfigBSS->extSetStaKeyParamValid )
- {
- /*-----------------------------------------------------------------------
- Copy the STA Key parameters into the HAL message
- -----------------------------------------------------------------------*/
- phalConfigBSS->extSetStaKeyParam.encType =
- WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
-
- phalConfigBSS->extSetStaKeyParam.wepType =
- WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
-
- phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
-
- phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
-
- phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
-
- for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
- keyIndex++)
- {
- phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
- pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
- phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
- pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
- phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
- pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
- wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
- pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
- WDI_MAX_KEY_RSC_LEN);
- phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
- pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
- phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
- pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
- wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
- pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
- WDI_MAX_KEY_LENGTH);
- }
- }
- else/* phalConfigBSS->extSetStaKeyParamValid is not set */
- {
- wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
- sizeof(phalConfigBSS->extSetStaKeyParam) );
- }
-
-#endif /*WLAN_FEATURE_VOWIFI_11R*/
-
-#ifdef WLAN_FEATURE_11AC
- if(phalConfigBSS_V1 != NULL)
- {
- phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
- phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
- }
-#endif
-
-}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
-
-
-/*Extract the request CB function and user data from a request structure
- pointed to by user data */
-WPT_STATIC WPT_INLINE void
-WDI_ExtractRequestCBFromEvent
-(
- WDI_EventInfoType* pEvent,
- WDI_ReqStatusCb* ppfnReqCB,
- void** ppUserData
-)
-{
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
- switch ( pEvent->wdiRequest )
- {
- case WDI_START_REQ:
- *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_STOP_REQ:
- *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_INIT_SCAN_REQ:
- *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_START_SCAN_REQ:
- *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_END_SCAN_REQ:
- *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_FINISH_SCAN_REQ:
- *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_JOIN_REQ:
- *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_CONFIG_BSS_REQ:
- *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_DEL_BSS_REQ:
- *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_POST_ASSOC_REQ:
- *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_DEL_STA_REQ:
- *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_DEL_STA_SELF_REQ:
- *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
- break;
-
- case WDI_SET_BSS_KEY_REQ:
- *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_RMV_BSS_KEY_REQ:
- *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_SET_STA_KEY_REQ:
- *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_RMV_STA_KEY_REQ:
- *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_ADD_TS_REQ:
- *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_DEL_TS_REQ:
- *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_UPD_EDCA_PRMS_REQ:
- *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_ADD_BA_SESSION_REQ:
- *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_DEL_BA_REQ:
- *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
- break;
-#ifdef FEATURE_WLAN_ESE
- case WDI_TSM_STATS_REQ:
- *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
- break;
-#endif
- case WDI_CH_SWITCH_REQ:
- *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_CONFIG_STA_REQ:
- *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_SET_LINK_ST_REQ:
- *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_GET_STATS_REQ:
- *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
- break;
-#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
- case WDI_GET_ROAM_RSSI_REQ:
- *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
- break;
-#endif
- case WDI_UPDATE_CFG_REQ:
- *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_ADD_BA_REQ:
- *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_TRIGGER_BA_REQ:
- *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_UPD_BCON_PRMS_REQ:
- *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_SND_BCON_REQ:
- *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_ENTER_BMPS_REQ:
- *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_EXIT_BMPS_REQ:
- *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_ENTER_UAPSD_REQ:
- *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_EXIT_UAPSD_REQ:
- *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_SET_UAPSD_PARAM_REQ:
- *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_UPDATE_UAPSD_PARAM_REQ:
- *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_CONFIGURE_RXP_FILTER_REQ:
- *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_SET_BEACON_FILTER_REQ:
- *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_REM_BEACON_FILTER_REQ:
- *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_SET_RSSI_THRESHOLDS_REQ:
- *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_HOST_OFFLOAD_REQ:
- *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_WOWL_ADD_BC_PTRN_REQ:
- *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_WOWL_DEL_BC_PTRN_REQ:
- *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_WOWL_ENTER_REQ:
- *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_WOWL_EXIT_REQ:
- *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
- *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_FLUSH_AC_REQ:
- *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_BTAMP_EVENT_REQ:
- *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_KEEP_ALIVE_REQ:
- *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
- break;
-#if defined FEATURE_WLAN_SCAN_PNO
- case WDI_SET_PREF_NETWORK_REQ:
- *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_SET_RSSI_FILTER_REQ:
- *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_UPDATE_SCAN_PARAMS_REQ:
- *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
- break;
-#endif
- case WDI_SET_TX_PER_TRACKING_REQ:
- *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
- break;
-#if defined WLAN_FEATURE_PACKET_FILTERING
- case WDI_8023_MULTICAST_LIST_REQ:
- *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
- *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
- *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
- break;
- case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
- *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
- break;
-#endif
- case WDI_SET_POWER_PARAMS_REQ:
- *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
- break;
-#if defined WLAN_FEATURE_GTK_OFFLOAD
- case WDI_GTK_OFFLOAD_REQ:
- *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
- break;
- case WDI_GTK_OFFLOAD_GETINFO_REQ:
- *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
- *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
- break;
-#endif
-
- default:
- *ppfnReqCB = NULL;
- *ppUserData = NULL;
- break;
- }
-}/*WDI_ExtractRequestCBFromEvent*/
-
-
-/**
- @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
- frame xtl is enabled for a particular STA.
-
- WDI_PostAssocReq must have been called.
-
- @param uSTAIdx: STA index
-
- @see WDI_PostAssocReq
- @return Result of the function call
-*/
-wpt_boolean
-WDI_IsHwFrameTxTranslationCapable
-(
- wpt_uint8 uSTAIdx
-)
-{
- /*!! FIX ME - this must eventually be per station - for now just feedback
- uma value*/
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
-#ifdef WLAN_SOFTAP_VSTA_FEATURE
- if (IS_VSTA_IDX(uSTAIdx))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "STA %d is a Virtual STA, "
- "HW frame translation disabled", uSTAIdx);
- return eWLAN_PAL_FALSE;
- }
-#endif
-
- return gWDICb.bFrameTransEnabled;
-}/*WDI_IsHwFrameTxTranslationCapable*/
-
-#ifdef FEATURE_WLAN_SCAN_PNO
-/**
- @brief WDI_SetPreferredNetworkList
-
- @param pwdiPNOScanReqParams: the Set PNO as specified
- by the Device Interface
-
- wdiPNOScanCb: callback for passing back the response
- of the Set PNO operation received from the
- device
-
- pUserData: user data will be passed back with the
- callback
-
- @return Result of the function call
-*/
-WDI_Status
-WDI_SetPreferredNetworkReq
-(
- WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
- WDI_PNOScanCb wdiPNOScanCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData = {{0}};
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
- wdiEventData.pEventData = pwdiPNOScanReqParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
- wdiEventData.pCBfnc = wdiPNOScanCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-}
-
-
-/**
- @brief WDI_SetRssiFilterReq
-
- @param pwdiRssiFilterReqParams: the Set RSSI Filter as
- specified by the Device Interface
-
- wdiRssiFilterCb: callback for passing back the response
- of the Set RSSI Filter operation received from the
- device
-
- pUserData: user data will be passed back with the
- callback
-
- @return Result of the function call
-*/
-WDI_Status
-WDI_SetRssiFilterReq
-(
- WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
- WDI_RssiFilterCb wdiRssiFilterCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData = {{0}};
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
- wdiEventData.pEventData = pwdiRssiFilterReqParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
- wdiEventData.pCBfnc = wdiRssiFilterCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-}/*WDI_SetRssiFilterReq*/
-
-/**
- @brief WDI_UpdateScanParamsReq
-
- @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
- by the Device Interface
-
- wdiUpdateScanParamsCb: callback for passing back the response
- of the Set PNO operation received from the
- device
-
- pUserData: user data will be passed back with the
- callback
-
- @return Result of the function call
-*/
-WDI_Status
-WDI_UpdateScanParamsReq
-(
- WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
- WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData = {{0}};
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
- wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
- wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
- wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-}
-
-/**
- @brief Helper function to pack Set Preferred Network List
- Request parameters
-
- @param pWDICtx: pointer to the WLAN DAL context
- pwdiPNOScanReqParams: pointer to the info received
- from upper layers
- ppSendBuffer, pSize - out pointers of the packed buffer
- and its size
-
- @return Result of the function call
-*/
-
-WDI_Status
-WDI_PackPreferredNetworkList
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
- wpt_uint8** ppSendBuffer,
- wpt_uint16* pSize
-)
-{
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tpPrefNetwListParams pPrefNetwListParams = NULL;
- wpt_uint8 i;
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
- sizeof(tPrefNetwListParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in Set PNO req %p",
- pwdiPNOScanReqParams);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
-
- /*-------------------------------------------------------------------------
- Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
- -------------------------------------------------------------------------*/
- pPrefNetwListParams->enable =
- pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
- pPrefNetwListParams->modePNO =
- pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
-
- pPrefNetwListParams->ucNetworksCount =
- (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
- WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
- pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
- WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
-
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
- pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
- pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
- pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
-
- for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
- {
- /*SSID of the BSS*/
- pPrefNetwListParams->aNetworks[i].ssId.length
- = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
-
- wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
- pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
- pPrefNetwListParams->aNetworks[i].ssId.length);
-
- /*Authentication type for the network*/
- pPrefNetwListParams->aNetworks[i].authentication =
- (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
-
- /*Encryption type for the network*/
- pPrefNetwListParams->aNetworks[i].encryption =
- (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
-
- /*Indicate the channel on which the Network can be found
- 0 - if all channels */
- pPrefNetwListParams->aNetworks[i].ucChannelCount =
- (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
- WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
- pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
- WLAN_HAL_PNO_MAX_NETW_CHANNELS;
-
- wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
- pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
- pPrefNetwListParams->aNetworks[i].ucChannelCount);
-
- /*Indicates the RSSI threshold for the network to be considered*/
- pPrefNetwListParams->aNetworks[i].rssiThreshold =
- pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
-
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI SET PNO: SSID %d %s",
- pPrefNetwListParams->aNetworks[i].ssId.length,
- pPrefNetwListParams->aNetworks[i].ssId.ssId);
- }
-
- pPrefNetwListParams->scanTimers.ucScanTimersCount =
- (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
- WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
- pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
- WLAN_HAL_PNO_MAX_SCAN_TIMERS;
-
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
- pPrefNetwListParams->scanTimers.ucScanTimersCount,
- pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
- pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
-
- for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
- {
- pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
- pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
- pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
- pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
- }
-
- /*Copy the probe template*/
- pPrefNetwListParams->us24GProbeSize =
- (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
- WLAN_HAL_PNO_MAX_PROBE_SIZE)?
- pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
- WLAN_HAL_PNO_MAX_PROBE_SIZE;
-
- wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
- pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
- pPrefNetwListParams->us24GProbeSize);
-
- pPrefNetwListParams->us5GProbeSize =
- (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
- WLAN_HAL_PNO_MAX_PROBE_SIZE)?
- pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
- WLAN_HAL_PNO_MAX_PROBE_SIZE;
-
- wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
- pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
- pPrefNetwListParams->us5GProbeSize);
-
- /*Set the output values*/
- *ppSendBuffer = pSendBuffer;
- *pSize = usSendSize;
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_PackPreferredNetworkList*/
-
-/**
- @brief Helper function to pack Set Preferred Network List
- Request parameters
-
- @param pWDICtx: pointer to the WLAN DAL context
- pwdiPNOScanReqParams: pointer to the info received
- from upper layers
- ppSendBuffer, pSize - out pointers of the packed buffer
- and its size
-
- @return Result of the function call
-*/
-
-WDI_Status
-WDI_PackPreferredNetworkListNew
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
- wpt_uint8** ppSendBuffer,
- wpt_uint16* pSize
-)
-{
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tpPrefNetwListParamsNew pPrefNetwListParams;
- wpt_uint8 i;
-
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
- sizeof(tPrefNetwListParamsNew),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in Set PNO req %p",
- pwdiPNOScanReqParams);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
-
- /*-------------------------------------------------------------------------
- Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
- -------------------------------------------------------------------------*/
- pPrefNetwListParams->enable =
- pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
- pPrefNetwListParams->modePNO =
- pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
-
- pPrefNetwListParams->ucNetworksCount =
- (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
- WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
- pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
- WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
-
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
- pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
- pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
- pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
-
- for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
- {
- /*SSID of the BSS*/
- pPrefNetwListParams->aNetworks[i].ssId.length
- = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
-
- wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
- pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
- pPrefNetwListParams->aNetworks[i].ssId.length);
-
- /*Authentication type for the network*/
- pPrefNetwListParams->aNetworks[i].authentication =
- (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
-
- /*Encryption type for the network*/
- pPrefNetwListParams->aNetworks[i].encryption =
- (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
-
- /*SSID bcast type for the network*/
- pPrefNetwListParams->aNetworks[i].bcastNetworkType =
- (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
-
- /*Indicate the channel on which the Network can be found
- 0 - if all channels */
- pPrefNetwListParams->aNetworks[i].ucChannelCount =
- pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
-
- wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
- pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
- pPrefNetwListParams->aNetworks[i].ucChannelCount);
-
- /*Indicates the RSSI threshold for the network to be considered*/
- pPrefNetwListParams->aNetworks[i].rssiThreshold =
- pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
-
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "WDI SET PNO: SSID %d %s",
- pPrefNetwListParams->aNetworks[i].ssId.length,
- pPrefNetwListParams->aNetworks[i].ssId.ssId);
- }
-
- pPrefNetwListParams->scanTimers.ucScanTimersCount =
- (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
- WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
- pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
- WLAN_HAL_PNO_MAX_SCAN_TIMERS;
-
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
- pPrefNetwListParams->scanTimers.ucScanTimersCount,
- pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
- pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
-
- for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
- {
- pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
- pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
- pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
- pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
- }
-
- /*Copy the probe template*/
- pPrefNetwListParams->us24GProbeSize =
- (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
- WLAN_HAL_PNO_MAX_PROBE_SIZE)?
- pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
- WLAN_HAL_PNO_MAX_PROBE_SIZE;
-
- wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
- pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
- pPrefNetwListParams->us24GProbeSize);
-
- pPrefNetwListParams->us5GProbeSize =
- (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
- WLAN_HAL_PNO_MAX_PROBE_SIZE)?
- pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
- WLAN_HAL_PNO_MAX_PROBE_SIZE;
-
- wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
- pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
- pPrefNetwListParams->us5GProbeSize);
-
-
- /*Set the output values*/
- *ppSendBuffer = pSendBuffer;
- *pSize = usSendSize;
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_PackPreferredNetworkListNew*/
-
-/**
- @brief Process Set Preferred Network List Request function
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessSetPreferredNetworkReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
- WDI_PNOScanCb wdiPNOScanCb = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usSendSize = 0;
- WDI_Status wdiStatus;
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
- ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-------------------------------------------------------------------------
- Pack the PNO request structure based on version
- -------------------------------------------------------------------------*/
- if ( pWDICtx->wdiPNOVersion > 0 )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "%s: PNO new version %d ", __func__,
- pWDICtx->wdiPNOVersion);
-
- wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
- &pSendBuffer, &usSendSize);
- }
- else
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "%s: PNO old version %d ", __func__,
- pWDICtx->wdiPNOVersion);
-
- wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
- &pSendBuffer, &usSendSize);
- }
-
- if (( WDI_STATUS_SUCCESS != wdiStatus )||
- ( NULL == pSendBuffer )||( 0 == usSendSize ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: failed to pack request parameters", __func__);
- WDI_ASSERT(0);
- return wdiStatus;
- }
-
- pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Get STA Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
-}
-
-/**
- @brief Process Set RSSI Filter Request function
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessSetRssiFilterReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
- WDI_RssiFilterCb wdiRssiFilterCb = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- wpt_uint8 ucRssiThreshold;
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
- ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
- sizeof(ucRssiThreshold),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in Set PNO req %p %p %p",
- pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &ucRssiThreshold,
- sizeof(ucRssiThreshold));
-
- pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Get STA Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
-}
-#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
-/**
- @brief WDI_RoamScanOffloadReq
-
- @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
- by the Device Interface
-
- wdiRoamOffloadScancb: callback for passing back the response
- of the Roam Candidate Lookup Req operation received from the
- device
-
- pUserData: user data will be passed back with the
- callback
- @return Result of the function call
-*/
-WDI_Status
-WDI_RoamScanOffloadReq
-(
- WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
- WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData = {{0}};
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
- wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
- wdiEventData.pCBfnc = wdiRoamOffloadScancb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-}
-
-void
-WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
-{
- switch (wdiEdType)
- {
- case WDI_ED_NONE:
- *EdType = eED_NONE;
- break;
- case WDI_ED_WEP40:
- case WDI_ED_WEP104:
- *EdType = eED_WEP;
- break;
- case WDI_ED_TKIP:
- *EdType = eED_TKIP;
- break;
- case WDI_ED_CCMP:
-#ifdef WLAN_FEATURE_11W
- case WDI_ED_AES_128_CMAC:
-#endif
- *EdType = eED_CCMP;
- break;
-#ifdef FEATURE_WLAN_WAPI
- case WDI_ED_WPI:
- *EdType = eED_WPI;
- break;
-#endif
- case WDI_ED_ANY:
- *EdType = eED_ANY;
- break;
-
- default:
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Unknown Encryption Type", __func__);
- break;
- }
-}
-
-/**
- @brief Helper function to pack Start Roam Candidate Lookup
- Request parameters
-
- @param pWDICtx: pointer to the WLAN DAL context
- pwdiRoamScanOffloadReqParams: pointer to the info received
- from upper layers
- ppSendBuffer, pSize - out pointers of the packed buffer
- and its size
-
- @return Result of the function call
-*/
-
-WDI_Status
-WDI_PackRoamScanOffloadParams
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
- wpt_uint8** ppSendBuffer,
- wpt_uint16* pSize
-)
-{
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tpRoamCandidateListParams pRoamCandidateListParams = NULL;
- wpt_uint8 i;
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
- sizeof(tRoamCandidateListParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
- pwdiRoamScanOffloadReqParams);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
- pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
- wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
- pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
- wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
- pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
- HAL_MAC_ADDR_LEN);
- pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
- WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
- pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
- WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
- pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
-
- pRoamCandidateListParams->ConnectedNetwork.ssId.length
- = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
- wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
- pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
- pRoamCandidateListParams->ConnectedNetwork.ssId.length);
- wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
- pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
- pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
- pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
- pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
- pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
- pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
- pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
- pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
- pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
- pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
- pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
- pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
- pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
- pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
- pRoamCandidateListParams->IsESEEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsESEEnabled ;
- wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
- pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
- pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
- pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
-
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
- "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
- "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
- "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
- "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
- "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
- "HomeAwayTime=%d",
- pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
- pRoamCandidateListParams->RoamScanOffloadEnabled,
- pRoamCandidateListParams->Command,
- pRoamCandidateListParams->StartScanReason,
- pRoamCandidateListParams->NeighborScanTimerPeriod,
- pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
- pRoamCandidateListParams->NeighborScanChannelMinTime,
- pRoamCandidateListParams->NeighborScanChannelMaxTime,
- pRoamCandidateListParams->EmptyRefreshScanPeriod,
- pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
- pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
- pRoamCandidateListParams->ConnectedNetwork.authentication,
- pRoamCandidateListParams->ConnectedNetwork.encryption,
- pRoamCandidateListParams->ConnectedNetwork.mcencryption,
- pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
- pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
- pRoamCandidateListParams->us24GProbeSize =
- (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
- WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
- pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
- WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
- wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
- pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
- pRoamCandidateListParams->us24GProbeSize);
- pRoamCandidateListParams->us5GProbeSize =
- (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
- WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
- pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
- WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
- wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
- pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
- pRoamCandidateListParams->us5GProbeSize);
- pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
- pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
- pRoamCandidateListParams->nProbes =
- pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
- pRoamCandidateListParams->HomeAwayTime =
- pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
- for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
- }
-
-
- /*Set the output values*/
- *ppSendBuffer = pSendBuffer;
- *pSize = usSendSize;
- return WDI_STATUS_SUCCESS;
-}/*WDI_PackRoamScanOffloadParams*/
-
-/**
- @brief Process Start Roam Candidate Lookup Request function
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessRoamScanOffloadReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
- WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usSendSize = 0;
- WDI_Status wdiStatus;
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
- ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-------------------------------------------------------------------------
- Pack the Start Roam Candidate Lookup request structure based on version
- -------------------------------------------------------------------------*/
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "%s: Packing Roam Candidate Lookup request ", __func__);
-
- wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
- &pSendBuffer, &usSendSize);
-
- if (( WDI_STATUS_SUCCESS != wdiStatus )||
- ( NULL == pSendBuffer )||( 0 == usSendSize ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: failed to pack request parameters", __func__);
- WDI_ASSERT(0);
- return wdiStatus;
- }
-
- pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
-}
-
-/**
- @brief Process Start Roam Candidate Lookup Rsp function (called when a
- response is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessRoamScanOffloadRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- eHalStatus halStatus;
- WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
-
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData ))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- /*Notify UMAC*/
- wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/* WDI_ProcessRoamScanOffloadRsp */
-#endif
-
-/**
- @brief Process Update Scan Params function
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_PackUpdateScanParamsReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
- wpt_uint8** ppSendBuffer,
- wpt_uint16* pSize
-)
-{
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tUpdateScanParams updateScanParams = {0};
-
-
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "Begin WDI Update Scan Parameters Old Style Params");
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
- sizeof(updateScanParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in Update Scan Params req %p",
- pwdiUpdateScanParams);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- //
- // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
- //
-
- updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
- updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
-
- updateScanParams.ucChannelCount =
- (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
- WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
- pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
- WLAN_HAL_PNO_MAX_NETW_CHANNELS;
-
- wpalMemoryCopy( updateScanParams.aChannels,
- pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
- updateScanParams.ucChannelCount);
-
-
- updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
- updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
- updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
- updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
- updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &updateScanParams,
- sizeof(updateScanParams));
-
- pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
-
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "End Update Scan Parameters Old Style");
-
- /*Set the output values*/
- *ppSendBuffer = pSendBuffer;
- *pSize = usSendSize;
-
- return WDI_STATUS_SUCCESS;
-}
-
-/**
- @brief Process Update Scan Params function
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_PackUpdateScanParamsReqEx
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
- wpt_uint8** ppSendBuffer,
- wpt_uint16* pSize
-)
-{
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tUpdateScanParamsEx updateScanParams = {0};
-
-
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
- sizeof(updateScanParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in Update Scan Params Ex req %p",
- pwdiUpdateScanParams);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- //
- // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
- //
-
- updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
- updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
-
- updateScanParams.ucChannelCount =
- (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
- WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
- pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
- WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
-
- wpalMemoryCopy( updateScanParams.aChannels,
- pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
- updateScanParams.ucChannelCount);
-
-
- updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
- updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
- updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
- updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
- updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &updateScanParams,
- sizeof(updateScanParams));
-
- pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
-
- /*Set the output values*/
- *ppSendBuffer = pSendBuffer;
- *pSize = usSendSize;
-
- return WDI_STATUS_SUCCESS;
-}
-
-/**
- @brief Process Update Scan Params function
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessUpdateScanParamsReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
- WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usSendSize = 0;
- WDI_Status wdiStatus;
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
- ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "Begin WDI Update Scan Parameters");
-
- //
- // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
- //
- if ( pWDICtx->wlanVersion.revision < 1 )
- {
- wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
- &pSendBuffer, &usSendSize);
- }
- else
- {
- wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
- &pSendBuffer, &usSendSize);
- }
-
- if(WDI_STATUS_SUCCESS != wdiStatus)
- {
- //memory allocation failed
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-------------------------------------------------------------------------
- Send Get STA Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiUpdateScanParamsCb, pEventData->pUserData,
- WDI_UPDATE_SCAN_PARAMS_RESP);
-}
-
-/**
- @brief Process Preferred Network Found Indication function
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessPrefNetworkFoundInd
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_LowLevelIndType wdiInd;
- tpPrefNetwFoundParams pNetwFoundParams;
- wpt_uint32 msgsize;
-
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT( 0 );
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-------------------------------------------------------------------------
- Extract indication and send it to UMAC
- -------------------------------------------------------------------------*/
- pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
-
- msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
- wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
- (wpt_uint8 *)wpalMemoryAllocate(msgsize);
-
- if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: fail to allocate memory", __func__);
- return WDI_STATUS_MEM_FAILURE;
- }
-
- wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
- (pNetwFoundParams->ssId.length < 32 )?
- pNetwFoundParams->ssId.length : 32;
- wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
- pNetwFoundParams->ssId.ssId,
- wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
- wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
- wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
- pNetwFoundParams->frameLength;
- wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
- (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
- pNetwFoundParams->frameLength);
-
- /*Fill in the indication parameters*/
- wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
-
- // DEBUG
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
- wdiInd.wdiIndicationType,
- wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
- wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
- wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
- wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
-
- if ( pWDICtx->wdiLowLevelIndCB )
- {
- /*Notify UMAC*/
- pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
- }
-
- return WDI_STATUS_SUCCESS;
-}
-
-/**
- @brief Process PNO Rsp function (called when a
- response is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessSetPreferredNetworkRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- eHalStatus halStatus;
- WDI_PNOScanCb wdiPNOScanCb = NULL;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData ))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
-
- wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- /*Notify UMAC*/
- wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessSetPreferredNetworkRsp*/
-
-/**
- @brief Process RSSI Filter Rsp function (called when a
- response is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessSetRssiFilterRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- eHalStatus halStatus;
- WDI_RssiFilterCb wdiRssiFilterCb;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData ))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- /*Notify UMAC*/
- wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessSetRssiFilterRsp*/
-
-/**
- @brief Process Update Scan Params Rsp function (called when a
- response is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessUpdateScanParamsRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- tUpdateScanParamsResp halUpdScanParams;
- WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
- wpt_uint32 uStatus;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData ))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "%s: Process UPD scan params ptr : %p",
- __func__, pEventData->pEventData);
-
- wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy( (void *)&halUpdScanParams.status,
- pEventData->pEventData,
- sizeof(halUpdScanParams.status));
-
- uStatus = halUpdScanParams.status;
-
- /*Extract PNO version - 1st bit of the status */
- pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
-
- /*Remove version bit*/
- uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
-
- wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
-
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "UPD Scan Parameters rsp with status: %d",
- halUpdScanParams.status);
-
- /*Notify UMAC*/
- wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}
-#endif // FEATURE_WLAN_SCAN_PNO
-
-#ifdef WLAN_FEATURE_PACKET_FILTERING
-WDI_Status
-WDI_8023MulticastListReq
-(
- WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
- WDI_8023MulticastListCb wdi8023MulticastListCallback,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "%s", __func__);
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
- wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
- wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
- wdiEventData.pCBfnc = wdi8023MulticastListCallback;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-}
-
-WDI_Status
-WDI_ReceiveFilterSetFilterReq
-(
- WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
- WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "%s",__func__);
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
- wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
- wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
- (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
- * sizeof(WDI_RcvPktFilterFieldParams);
- wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
- wdiEventData.pUserData = pUserData;
-
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-}
-
-WDI_Status
-WDI_FilterMatchCountReq
-(
- WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
- WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "%s",__func__);
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
- wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
- wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
- wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
- wdiEventData.pUserData = pUserData;
-
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-}
-
-WDI_Status
-WDI_ReceiveFilterClearFilterReq
-(
- WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
- WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "%s",__func__);
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
- wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
- wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
- wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
- wdiEventData.pUserData = pUserData;
-
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-}
-
-/**
- @brief Process 8023 Multicast List Request function
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_Process8023MulticastListReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
- WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
- wpt_uint8 i;
- wpt_uint8 ucCurrentBSSSesIdx = 0;
- WDI_BSSSessionType* pBSSSes = NULL;
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "%s",__func__);
-
- pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
- if( NULL == pRcvFltMcAddrListType )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Failed to alloc in WDI_Process8023MulticastListReq");
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (pwdiFltPktSetMcListReqParamsType =
- (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
- ( NULL == (wdi8023MulticastListCb =
- (WDI_8023MulticastListCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- wpalMemoryFree(pRcvFltMcAddrListType);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
- pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
- &pBSSSes);
- if ( NULL == pBSSSes )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- " %s : Association for this BSSID does not exist",__func__);
- wpalMemoryFree(pRcvFltMcAddrListType);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
- WDI_8023_MULTICAST_LIST_REQ,
- sizeof(tHalRcvFltMcAddrListType),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in "
- "WDI_Process8023MulticastListReq() %p %p %p",
- pEventData, pwdiFltPktSetMcListReqParamsType,
- wdi8023MulticastListCb);
- wpalMemoryFree(pRcvFltMcAddrListType);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pRcvFltMcAddrListType->cMulticastAddr =
- pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
- for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
- {
- wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
- pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
- sizeof(tSirMacAddr));
- }
-
- pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- pRcvFltMcAddrListType,
- sizeof(tHalRcvFltMcAddrListType));
-
- pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
-
-
- wpalMemoryFree(pRcvFltMcAddrListType);
- /*-------------------------------------------------------------------------
- Send Get STA Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdi8023MulticastListCb, pEventData->pUserData,
- WDI_8023_MULTICAST_LIST_RESP);
-}
-
-/**
- @brief Process Receive Filter Set Filter Request function
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessReceiveFilterSetFilterReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
- WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- wpt_uint32 usRcvPktFilterCfgSize;
- tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
- wpt_uint8 i;
- wpt_uint8 ucCurrentBSSSesIdx = 0;
- WDI_BSSSessionType* pBSSSes = NULL;
- tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
- wpt_uint32 usSessRcvPktFilterCfgSize;
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "%s",__func__);
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (pwdiSetRcvPktFilterReqInfo =
- (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
- ( NULL == (wdiReceiveFilterSetFilterCb =
- (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
- pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
- &pBSSSes);
- if ( NULL == pBSSSes )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- " %s : Association for this BSSID does not exist",__func__);
- return WDI_STATUS_E_FAILURE;
- }
-
- if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
- {
-
- usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
- ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
- * sizeof(tHalSessionizedRcvPktFilterCfgType));
-
- pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
- usSessRcvPktFilterCfgSize);
-
- if(NULL == pSessRcvPktFilterCfg)
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Failed to allocate memory for "
- "tHalRcvPktFilterCfgType: %p %p %p ",
- __func__, pWDICtx, pEventData, pEventData->pEventData);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
-
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
-
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
- usSessRcvPktFilterCfgSize,
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in "
- "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
- pEventData, pwdiSetRcvPktFilterReqInfo,
- wdiReceiveFilterSetFilterCb);
- WDI_ASSERT(0);
- wpalMemoryFree(pSessRcvPktFilterCfg);
- return WDI_STATUS_E_FAILURE;
- }
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "UsData Off %d UsSend %d cfg %p",usDataOffset,
- usSendSize,pSessRcvPktFilterCfg);
-
- pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
- pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
- pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
- pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
-
- pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
- pSessRcvPktFilterCfg->filterType);
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
- pSessRcvPktFilterCfg->coleasceTime);
-
- for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
- {
- pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
- pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
- pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
- pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
- pSessRcvPktFilterCfg->paramsData[i].dataOffset =
- pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
- pSessRcvPktFilterCfg->paramsData[i].dataLength =
- pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
-
- wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
- &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
- 8);
- wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
- &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
- 8);
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Out:Proto %d Comp Flag %d",
- pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
- pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Data Offset %d Data Len %d",
- pSessRcvPktFilterCfg->paramsData[i].dataOffset,
- pSessRcvPktFilterCfg->paramsData[i].dataLength);
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "CData: %d:%d:%d:%d:%d:%d",
- pSessRcvPktFilterCfg->paramsData[i].compareData[0],
- pSessRcvPktFilterCfg->paramsData[i].compareData[1],
- pSessRcvPktFilterCfg->paramsData[i].compareData[2],
- pSessRcvPktFilterCfg->paramsData[i].compareData[3],
- pSessRcvPktFilterCfg->paramsData[i].compareData[4],
- pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "MData: %d:%d:%d:%d:%d:%d",
- pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
- pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
- pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
- pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
- pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
- pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
- }
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- pSessRcvPktFilterCfg,
- usSessRcvPktFilterCfgSize);
-
-
- pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
-
- wpalMemoryFree(pSessRcvPktFilterCfg);
-
- }
- /*If SLM_SESSIONIZATION is not supported then do this */
- else
- {
- usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
- ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
- * sizeof(tHalRcvPktFilterParams));
-
- pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
- usRcvPktFilterCfgSize);
-
- if(NULL == pRcvPktFilterCfg)
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Failed to allocate memory for "
- "tHalRcvPktFilterCfgType: %p %p %p ",
- __func__, pWDICtx, pEventData, pEventData->pEventData);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
-
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
- usRcvPktFilterCfgSize,
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in "
- "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
- pEventData, pwdiSetRcvPktFilterReqInfo,
- wdiReceiveFilterSetFilterCb);
- WDI_ASSERT(0);
- wpalMemoryFree(pRcvPktFilterCfg);
- return WDI_STATUS_E_FAILURE;
- }
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "UsData Off %d UsSend %d cfg %d",usDataOffset,
- usSendSize,usRcvPktFilterCfgSize);
-
- pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
- pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
- pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
- pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
- pRcvPktFilterCfg->filterType);
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "NParams %d CT %d",pRcvPktFilterCfg->numParams,
- pRcvPktFilterCfg->coalesceTime);
-
- for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
- {
- pRcvPktFilterCfg->paramsData[i].protocolLayer =
- pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
- pRcvPktFilterCfg->paramsData[i].cmpFlag =
- pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
- pRcvPktFilterCfg->paramsData[i].dataOffset =
- pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
- pRcvPktFilterCfg->paramsData[i].dataLength =
- pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
-
- wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
- &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
- 8);
- wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
- &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
- 8);
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "Out:Proto %d Comp Flag %d",
- pRcvPktFilterCfg->paramsData[i].protocolLayer,
- pRcvPktFilterCfg->paramsData[i].cmpFlag);
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "Data Offset %d Data Len %d",
- pRcvPktFilterCfg->paramsData[i].dataOffset,
- pRcvPktFilterCfg->paramsData[i].dataLength);
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "CData: %d:%d:%d:%d:%d:%d",
- pRcvPktFilterCfg->paramsData[i].compareData[0],
- pRcvPktFilterCfg->paramsData[i].compareData[1],
- pRcvPktFilterCfg->paramsData[i].compareData[2],
- pRcvPktFilterCfg->paramsData[i].compareData[3],
- pRcvPktFilterCfg->paramsData[i].compareData[4],
- pRcvPktFilterCfg->paramsData[i].compareData[5]);
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "MData: %d:%d:%d:%d:%d:%d",
- pRcvPktFilterCfg->paramsData[i].dataMask[0],
- pRcvPktFilterCfg->paramsData[i].dataMask[1],
- pRcvPktFilterCfg->paramsData[i].dataMask[2],
- pRcvPktFilterCfg->paramsData[i].dataMask[3],
- pRcvPktFilterCfg->paramsData[i].dataMask[4],
- pRcvPktFilterCfg->paramsData[i].dataMask[5]);
- }
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- pRcvPktFilterCfg,
- usRcvPktFilterCfgSize);
-
-
- pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "%s",__func__);
- wpalMemoryFree(pRcvPktFilterCfg);
- }
- /*-------------------------------------------------------------------------
- Send Get STA Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiReceiveFilterSetFilterCb, pEventData->pUserData,
- WDI_RECEIVE_FILTER_SET_FILTER_RESP);
-}
-
-/**
- @brief Process Packet Filter Match Count Request function
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessFilterMatchCountReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
- NULL;
- WDI_FilterMatchCountCb wdiFilterMatchCountCb =
- NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
- wpt_uint8 ucCurrentBSSSesIdx = 0;
- WDI_BSSSessionType* pBSSSes = NULL;
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "%s",__func__);
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
- (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
- ( NULL == (wdiFilterMatchCountCb =
- (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
- pwdiRcvFltPktMatchCntReqParamsType->bssId,
- &pBSSSes);
- if ( NULL == pBSSSes )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- " %s : Association for this BSSID does not exist",__func__);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
- WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
- sizeof(tHalRcvFltPktMatchCntReqParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in "
- "WDI_ProcessFilterMatchCountReq() %p %p %p",
- pEventData, pwdiRcvFltPktMatchCntReqParamsType,
- wdiFilterMatchCountCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &rcvFltPktMatchCntReqParam,
- sizeof(rcvFltPktMatchCntReqParam));
-
- //
- // Don't need to fill send buffer other than header
- //
- pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
-
-
- /*-------------------------------------------------------------------------
- Send Get STA Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiFilterMatchCountCb,
- pEventData->pUserData,
- WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
-}
-
-/**
- @brief Process Receive Filter Clear Filter Request function
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessReceiveFilterClearFilterReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
- WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tHalRcvFltPktClearParam rcvFltPktClearParam;
- wpt_uint8 ucCurrentSessionId = 0;
- WDI_BSSSessionType* pBSSSes = NULL;
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "%s",__func__);
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (pwdiRcvFltPktClearReqParamsType =
- (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
- ( NULL == (wdiRcvFltPktClearFilterCb =
- (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
- pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
- &pBSSSes);
- if ( NULL == pBSSSes )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- " %s : Association for this BSSID does not exist",__func__);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
- WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
- sizeof(tHalRcvFltPktClearParam),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in "
- "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
- pEventData, pwdiRcvFltPktClearReqParamsType,
- wdiRcvFltPktClearFilterCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
-
- rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
- filterClearParam.status;
- rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
- filterClearParam.filterId;
-
- rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &rcvFltPktClearParam,
- sizeof(rcvFltPktClearParam));
-
- pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
-
-
- /*-------------------------------------------------------------------------
- Send Get STA Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiRcvFltPktClearFilterCb, pEventData->pUserData,
- WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
-}
-
-/**
- @brief Process 8023 Multicast List Response function
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_Process8023MulticastListRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- eHalStatus halStatus;
- WDI_8023MulticastListCb wdi8023MulticastListCb;
- tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
- WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "%s",__func__);
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData ))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
- {
- wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
- pEventData->pEventData,
- sizeof(halRcvFltPktSetMcListRsp));
-
- wdiRcvFltPktSetMcListRspInfo.wdiStatus =
- WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
- wdiRcvFltPktSetMcListRspInfo.bssIdx =
- halRcvFltPktSetMcListRsp.bssIdx;
- }
- else
- {
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
- }
-
- /*Notify UMAC*/
- wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}
-
-/**
- @brief Process Set Rsp function (called when a
- response is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessReceiveFilterSetFilterRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- eHalStatus halStatus;
- WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
- tHalSetPktFilterRspParams halSetPktFilterRspParams;
- WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "%s",__func__);
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData ))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
- pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
- {
- wpalMemoryCopy( &halSetPktFilterRspParams,
- pEventData->pEventData,
- sizeof(halSetPktFilterRspParams));
-
- wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
- wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
- }
- else
- {
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
- }
- /*Notify UMAC*/
- wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}
-
-/**
- @brief Process Packet Filter Match Count Response function
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessFilterMatchCountRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- eHalStatus halStatus;
- WDI_FilterMatchCountCb wdiFilterMatchCountCb;
- tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
- WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
-
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "%s",__func__);
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData ))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
- {
- wpalMemoryCopy( &halRcvFltrPktMatachRsp,
- pEventData->pEventData,
- sizeof(halRcvFltrPktMatachRsp));
-
- wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
- wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
- }
- else
- {
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
- }
-
- /*Notify UMAC*/
- wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}
-
-/**
- @brief Process Receive Filter Clear Filter Response function
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessReceiveFilterClearFilterRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- eHalStatus halStatus;
- WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
- tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
- WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "%s",__func__);
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData ))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
- pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
- {
- wpalMemoryCopy( &halRcvFltPktClearRspMsg,
- pEventData->pEventData,
- sizeof(halRcvFltPktClearRspMsg));
-
- wdiRcvFltPktClearRspParamsType.wdiStatus =
- WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
- wdiRcvFltPktClearRspParamsType.bssIdx =
- halRcvFltPktClearRspMsg.bssIdx;
- }
- else
- {
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
- }
-
- /*Notify UMAC*/
- wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}
-#endif // WLAN_FEATURE_PACKET_FILTERING
-
-/**
- @brief Process Shutdown Rsp function
- There is no shutdown response comming from HAL
- - function just kept for simmetry
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessShutdownRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- /*There is no shutdown response comming from HAL - function just kept for
- simmetry */
- WDI_ASSERT(0);
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessShutdownRsp*/
-
-/**
- @brief WDI_SetPowerParamsReq
-
- @param pwdiPowerParamsReqParams: the Set Power Params as
- specified by the Device Interface
-
- wdiPowerParamsCb: callback for passing back the response
- of the Set Power Params operation received from the
- device
-
- pUserData: user data will be passed back with the
- callback
-
- @return Result of the function call
-*/
-WDI_Status
-WDI_SetPowerParamsReq
-(
- WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
- WDI_SetPowerParamsCb wdiPowerParamsCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
- wdiEventData.pEventData = pwdiPowerParamsReqParams;
- wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
- wdiEventData.pCBfnc = wdiPowerParamsCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-}/*WDI_SetPowerParamsReq*/
-
-/**
- @brief Process Set Power Params Request function
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessSetPowerParamsReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
- WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tSetPowerParamsType powerParams;
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
- ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
- sizeof(powerParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(powerParams) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in Set PNO req %p %p %p",
- pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /* Ignore DTIM */
- powerParams.uIgnoreDTIM =
- pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
-
- /*DTIM Period*/
- powerParams.uDTIMPeriod =
- pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
-
- /* Listen Interval */
- powerParams.uListenInterval=
- pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
-
- /* Broadcast Multicas Filter */
- powerParams.uBcastMcastFilter =
- pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
-
- /* Beacon Early Termination */
- powerParams.uEnableBET =
- pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
-
- /* Beacon Early Termination Interval */
- powerParams.uBETInterval =
- pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
-
- /* MAX LI for modulated DTIM */
- powerParams.uMaxLIModulatedDTIM =
- pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &powerParams,
- sizeof(powerParams));
-
- pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Get STA Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
-}
-
-/**
- @brief Process Power Params Rsp function (called when a
- response is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessSetPowerParamsRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- eHalStatus halStatus;
- WDI_SetPowerParamsCb wdiPowerParamsCb;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData ))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- /*Notify UMAC*/
- wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessSetPowerParamsRsp*/
-
-/**
- @brief WDI_dhcpStartInd
- Host will send an event to the FW when DHCP is initiated
-
- @param
- WDI_DHCPInd: DHCP Indication
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_dhcpStartInd
-(
- WDI_DHCPInd *wdiDHCPInd
-)
-{
- WDI_EventInfoType wdiEventData;
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- wdiEventData.wdiRequest = WDI_DHCP_START_IND;
- wdiEventData.pEventData = wdiDHCPInd;
- wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
- wdiEventData.pCBfnc = NULL;
- wdiEventData.pUserData = NULL;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-}
-
-
-/**
- @brief WDI_dhcpStopInd
- Host will send an event to the FW when DHCP is completed
-
- @param
- WDI_DHCPInd: DHCP Indication
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_dhcpStopInd
-(
- WDI_DHCPInd *wdiDHCPInd
-)
-{
- WDI_EventInfoType wdiEventData;
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
- wdiEventData.pEventData = wdiDHCPInd;
- wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
- wdiEventData.pCBfnc = NULL;
- wdiEventData.pUserData = NULL;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-}
-
-/**
- @brief Process DHCP Start Indication message and post it to HAL
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessDHCPStartInd
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- wpt_uint16 usLen = 0;
- WDI_DHCPInd* pwdiDHCPInd = NULL;
- tDHCPInfo* pDHCPInfo;
-
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "%s", __func__);
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
- pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
-
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
- WDI_DHCP_START_IND,
- sizeof(tDHCPInfo),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + usLen )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "Unable to get send buffer in DHCP Start req %p ",
- pEventData);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
- pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
- wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
- WDI_MAC_ADDR_LEN);
-
- pWDICtx->pReqStatusUserData = NULL;
- pWDICtx->pfncRspCB = NULL;
-
- /*-------------------------------------------------------------------------
- Send DHCP Start Indication to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
-
-}/*WDI_ProcessDHCPStartInd*/
-
-/**
- @brief Process DHCP Stop indication message and post it to HAL
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessDHCPStopInd
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- wpt_uint16 usLen = 0;
- WDI_DHCPInd* pwdiDHCPInd = NULL;
- tDHCPInfo* pDHCPInfo;
-
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "%s", __func__);
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
-
- if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
- pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
-
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
- WDI_DHCP_STOP_IND,
- sizeof(tDHCPInfo),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + usLen )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "Unable to get send buffer in DHCP Start req %p ",
- pEventData);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
- pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
- wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
- WDI_MAC_ADDR_LEN);
-
- pWDICtx->pReqStatusUserData = NULL;
- pWDICtx->pfncRspCB = NULL;
- /*-------------------------------------------------------------------------
- Send DHCP Stop indication to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
-
-}/*WDI_ProcessDHCPStopInd*/
-
-#ifdef WLAN_FEATURE_GTK_OFFLOAD
-/**
- @brief WDI_GTKOffloadReq will be called when the upper MAC
- wants to set GTK Rekey Counter while in power save. Upon
- the call of this API the WLAN DAL will pack and send a
- HAL GTK offload request message to the lower RIVA
- sub-system if DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_PostAssocReq must have been called.
-
- @param pwdiGtkOffloadParams: the GTK offload as specified
- by the Device Interface
-
- wdiGtkOffloadCb: callback for passing back the response
- of the GTK offload operation received from the device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_PostAssocReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_GTKOffloadReq
-(
- WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
- WDI_GtkOffloadCb wdiGtkOffloadCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
- wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
- wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
- wdiEventData.pCBfnc = wdiGtkOffloadCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-}
-
-
-/**
- @brief WDI_GTKOffloadGetInfoReq will be called when the upper
- MAC wants to get GTK Rekey Counter while in power save.
- Upon the call of this API the WLAN DAL will pack and
- send a HAL GTK offload request message to the lower RIVA
- sub-system if DAL is in state STARTED.
-
- In state BUSY this request will be queued. Request won't
- be allowed in any other state.
-
- WDI_PostAssocReq must have been called.
-
- @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
- Information Message as specified by the
- Device Interface
-
- wdiGtkOffloadGetInfoCb: callback for passing back the
- response of the GTK offload operation received from the
- device
-
- pUserData: user data will be passed back with the
- callback
-
- @see WDI_PostAssocReq
- @return Result of the function call
-*/
-WDI_Status
-WDI_GTKOffloadGetInfoReq
-(
- WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
- WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
- wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
- wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
- wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-}
-
-
-/**
- @brief Process set GTK Offload Request function
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessGTKOffloadReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
- WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
- wpt_uint8 ucCurrentSessionId = 0;
- WDI_BSSSessionType* pBSSSes = NULL;
-
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
- ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- goto failRequest;
- }
-
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
- sizeof(gtkOffloadReqParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in GTK offload req %p %p %p",
- pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
- WDI_ASSERT(0);
- goto failRequest;
- }
-
- //
- // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
- //
- ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
- pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
- &pBSSSes);
- if ( NULL == pBSSSes )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- " %s : Association for this BSSID does not exist", __func__);
- goto fail;
- }
-
- gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
-
- gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
- // Copy KCK
- wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
- // Copy KEK
- wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
- // Copy KeyReplayCounter
- wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &gtkOffloadReqParams,
- sizeof(gtkOffloadReqParams));
-
- pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Get STA Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
-
-fail:
- // Release the message buffer so we don't leak
- wpalMemoryFree(pSendBuffer);
-
-failRequest:
- //WDA should have failure check to avoid the memory leak
- return WDI_STATUS_E_FAILURE;
-}
-
-
-/**
- @brief Process GTK Offload Get Information Request function
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessGTKOffloadGetInfoReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
- WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
- wpt_uint8 ucCurrentSessionId = 0;
- WDI_BSSSessionType* pBSSSes = NULL;
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
- ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- goto failRequest;
- }
-
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
- sizeof(halGtkOffloadGetInfoReqParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
- pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
- WDI_ASSERT(0);
- goto failRequest;
- }
- ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
- pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
- &pBSSSes);
- if ( NULL == pBSSSes )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- " %s : Association for this BSSID does not exist",__func__);
- goto fail;
- }
- halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
-
- //
- // Don't need to fill send buffer other than header
- //
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halGtkOffloadGetInfoReqParams,
- sizeof(halGtkOffloadGetInfoReqParams));
-
- pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
-
- /*-------------------------------------------------------------------------
- Send Get STA Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
-fail:
- // Release the message buffer so we don't leak
- wpalMemoryFree(pSendBuffer);
-
-failRequest:
- //WDA should have failure check to avoid the memory leak
- return WDI_STATUS_E_FAILURE;
-}
-
-/**
- @brief Process host offload Rsp function (called when a
- response is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessGtkOffloadRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- eHalStatus halStatus;
- WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
- tHalGtkOffloadRspParams halGtkOffloadRspParams;
- WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
- {
- wpalMemoryCopy( &halGtkOffloadRspParams,
- pEventData->pEventData,
- sizeof(halGtkOffloadRspParams));
-
- wdiGtkOffloadRsparams.ulStatus =
- WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
- wdiGtkOffloadRsparams.bssIdx =
- halGtkOffloadRspParams.bssIdx;
- }
- else
- {
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
- }
-
- /*Notify UMAC*/
- wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}
-
-/**
- @brief Process GTK Offload Get Information Response function
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessGTKOffloadGetInfoRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- eHalStatus halStatus;
- WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
- tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
- WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
- WDI_BSSSessionType* pBSSSes = NULL;
-
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData ))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
- {
- wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
- pEventData->pEventData,
- sizeof(halGtkOffloadGetInfoRspParams));
-
- wdiGtkOffloadGetInfoRsparams.ulStatus =
- WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
- wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
- halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
- wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
- halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
- wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
- halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
- wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
- halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
-
- wpalMutexAcquire(&pWDICtx->wptMutex);
- WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
- &pBSSSes);
-
- if ( NULL == pBSSSes )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Association sequence for this BSS does not exist or "
- "association no longer in progress - mysterious HAL response");
- wpalMutexRelease(&pWDICtx->wptMutex);
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
- sizeof (wpt_macAddr));
- wpalMutexRelease(&pWDICtx->wptMutex);
- }
- else
- {
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
- }
- /*Notify UMAC*/
- //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
- //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
- wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}
-#endif // WLAN_FEATURE_GTK_OFFLOAD
-
-#ifdef WLAN_WAKEUP_EVENTS
-WDI_Status
-WDI_ProcessWakeReasonInd
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_LowLevelIndType *pWdiInd;
- tpWakeReasonParams pWakeReasonParams;
- wpt_uint32 allocSize = 0;
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "+%s", __func__);
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT( 0 );
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-------------------------------------------------------------------------
- Extract indication and send it to UMAC
- -------------------------------------------------------------------------*/
- pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
-
- allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
-
- //Allocate memory for WDI_WakeReasonIndType structure
- pWdiInd = wpalMemoryAllocate(allocSize) ;
-
- if(NULL == pWdiInd)
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
- __func__, pWDICtx, pEventData, pEventData->pEventData);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wpalMemoryZero(pWdiInd, allocSize);
-
- /* Fill in the indication parameters*/
- // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
- pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
- pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
- pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
- pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
- pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
- wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
- &(pWakeReasonParams->aDataStart[0]),
- pWakeReasonParams->ulStoredDataLen);
-
-
- if ( pWDICtx->wdiLowLevelIndCB )
- {
- /*Notify UMAC*/
- pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
- }
-
- //Free memory allocated for WDI_WakeReasonIndType structure
- wpalMemoryFree(pWdiInd);
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "-%s", __func__);
-
- return WDI_STATUS_SUCCESS;
-}
-#endif // WLAN_WAKEUP_EVENTS
-
-void WDI_GetWcnssCompiledApiVersion
-(
- WDI_WlanVersionType *pWcnssApiVersion
-)
-{
- pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
- pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
- pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
- pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
-}
-
-/**
- @brief Process Set TM Level Rsp function (called when a
- response is being received over the bus from HAL)
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessSetTmLevelRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- eHalStatus halStatus;
- WDI_SetTmLevelCb wdiSetTmLevelCb;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData ))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- /*Notify UMAC*/
- wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessSetTmLevelRsp*/
-
-/**
- @brief Process Set Thermal Mitigation level Changed request
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessSetTmLevelReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
- WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tSetThermalMitgationType halTmMsg;
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
- ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
- sizeof(halTmMsg),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in Set PNO req %p %p %p",
- pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
- halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
-
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- &halTmMsg,
- sizeof(halTmMsg));
-
- pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
- pWDICtx->pfncRspCB = NULL;
- /*-------------------------------------------------------------------------
- Send Get STA Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
-}
-
-/* Fill the value from the global features enabled array to the global capabilities
- * bitmap struct
- */
-static void
-FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
-{
- wpt_int8 i;
- for (i=0; i<len; i++)
- {
- setFeatCaps(fCaps, enabledFeat[i]);
- }
-}
-
-/**
- @brief WDI_featureCapsExchangeReq
- Post feature capability bitmap exchange event.
- Host will send its own capability to FW in this req and
- expect FW to send its capability back as a bitmap in Response
-
- @param
-
- wdiFeatureCapsExchangeCb: callback called on getting the response.
- It is kept to mantain similarity between WDI reqs and if needed, can
- be used in future. Currently, It is set to NULL
-
- pUserData: user data will be passed back with the
- callback
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_featureCapsExchangeReq
-(
- WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
- wpt_int32 fCapsStructSize;
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /* Allocate memory separately for global variable carrying FW caps */
- fCapsStructSize = sizeof(tWlanFeatCaps);
- gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
- if ( NULL == gpHostWlanFeatCaps )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Cannot allocate memory for host capability info");
- WDI_ASSERT(0);
- return WDI_STATUS_MEM_FAILURE;
- }
-
- wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
- (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Host caps %x %x %x %x",
- gpHostWlanFeatCaps->featCaps[0],
- gpHostWlanFeatCaps->featCaps[1],
- gpHostWlanFeatCaps->featCaps[2],
- gpHostWlanFeatCaps->featCaps[3]
- );
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
- WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
- wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
- wdiEventData.pEventData = gpHostWlanFeatCaps;
- wdiEventData.uEventDataSize = fCapsStructSize;
- wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
- wdiEventData.pUserData = pUserData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-}
-
-/**
- @brief Disable Active mode offload in Host
-
- @param void
- @see
- @return void
-*/
-void
-WDI_disableCapablityFeature(wpt_uint8 feature_index)
-{
- supportEnabledFeatures[feature_index] = 0;
- return;
-}
-
-/**
- @brief Process Host-FW Capability Exchange Request function
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessFeatureCapsExchangeReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- wpt_uint16 usLen = 0;
-
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "%s", __func__);
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- /* Call back function is NULL since not required for cap exchange req */
- if (( NULL == pEventData ) ||
- ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- usLen = sizeof(tWlanFeatCaps);
-
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
- WDI_FEATURE_CAPS_EXCHANGE_REQ,
- usLen,
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + usLen )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "Unable to get send buffer in feat caps exchange req %p %p",
- pEventData, (tWlanFeatCaps *)pEventData->pEventData);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "Host Caps - %x %x %x %x",
- ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
- ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
- ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
- ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
- );
-
- /* Copy host caps after the offset in the send buffer */
- wpalMemoryCopy( pSendBuffer+usDataOffset,
- (tWlanFeatCaps *)pEventData->pEventData,
- usLen);
-
- /*-------------------------------------------------------------------------
- Send Start Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- (WDI_StartRspCb)pEventData->pCBfnc,
- pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
-
-}/*WDI_ProcessFeatureCapsExchangeReq*/
-
-/**
- @brief Process Host-FW Capability Exchange Response function
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessFeatureCapsExchangeRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
- wpt_int32 fCapsStructSize;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "%s", __func__);
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData ))
- {
- /* It will go here when riva is old (doesn't understand this msg) and host is new */
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /* Allocate memory separately for global variable carrying FW caps */
- fCapsStructSize = sizeof(tWlanFeatCaps);
- gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
- if ( NULL == gpFwWlanFeatCaps )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Cannot allocate memory for host capability info");
- WDI_ASSERT(0);
- return WDI_STATUS_MEM_FAILURE;
- }
-
- /*-------------------------------------------------------------------------
- Unpack HAL Response Message - the header was already extracted by the
- main Response Handling procedure
- -------------------------------------------------------------------------*/
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
-
- wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
- fCapsStructSize);
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "FW caps %x %x %x %x",
- gpFwWlanFeatCaps->featCaps[0],
- gpFwWlanFeatCaps->featCaps[1],
- gpFwWlanFeatCaps->featCaps[2],
- gpFwWlanFeatCaps->featCaps[3]
- );
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
- WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
- wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
-
- /*Notify UMAC - there is no callback right now but can be used in future if reqd */
- if (wdiFeatureCapsExchangeCb != NULL)
- wdiFeatureCapsExchangeCb(NULL, NULL);
-
- return WDI_STATUS_SUCCESS;
-}
-
-#ifdef WLAN_FEATURE_11AC
-WDI_Status
-WDI_ProcessUpdateVHTOpModeRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
- WDI_Status wdiStatus;
- eHalStatus halStatus;
-
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
- wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- /*Notify UMAC*/
- wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
-
- return WDI_STATUS_SUCCESS;
-}
-#endif
-/**
- @brief WDI_getHostWlanFeatCaps
- WDI API that returns whether the feature passed to it as enum value in
- "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
- variable storing host capability bitmap to find this. This can be used by
- other moduels to decide certain things like call different APIs based on
- whether a particular feature is supported.
-
- @param
-
- feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
-
- @see
- @return
- 0 - if the feature is NOT supported in host
- any non-zero value - if the feature is SUPPORTED in host.
-*/
-wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
-{
- wpt_uint8 featSupported = 0;
- if (gpHostWlanFeatCaps != NULL)
- {
- getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
- }
- else
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
- }
- return featSupported;
-}
-
-/**
- @brief WDI_getFwWlanFeatCaps
- WDI API that returns whether the feature passed to it as enum value in
- "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
- variable storing host capability bitmap to find this. This can be used by
- other moduels to decide certain things like call different APIs based on
- whether a particular feature is supported.
-
- @param
-
- feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
- in wlan_hal_msg.h.
-
- @see
- @return
- 0 - if the feature is NOT supported in FW
- any non-zero value - if the feature is SUPPORTED in FW.
-*/
-wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
-{
- wpt_uint8 featSupported = 0;
- if (gpFwWlanFeatCaps != NULL)
- {
- getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
- }
- else
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
- }
- return featSupported;
-}
-
-#ifdef WLAN_FEATURE_11AC
-WDI_Status
-WDI_ProcessUpdateVHTOpModeReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
- WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
-
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "%s", __func__);
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) ||
- ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
- ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
- sizeof(WDI_UpdateVHTOpMode),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in update vht opMode req");
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
-
- wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
- sizeof(WDI_UpdateVHTOpMode));
-
- /*-------------------------------------------------------------------------
- Send Start Request to HAL
- -------------------------------------------------------------------------*/
- return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
- wdiVHTOpModeCb,
- pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
-
-}
-
-WDI_Status
-WDI_UpdateVHTOpModeReq
-(
- WDI_UpdateVHTOpMode *pData,
- WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
- void* pUserData
-)
-{
- WDI_EventInfoType wdiEventData;
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
- wdiEventData.pEventData = pData;
- wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
- wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
- wdiEventData.pUserData = pUserData;
-
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}
-#endif
-
-/**
- @brief WDI_TransportChannelDebug -
- Display DXE Channel debugging information
- User may request to display DXE channel snapshot
- Or if host driver detects any abnormal stcuk may display
-
- @param displaySnapshot : Display DXE snapshot option
- @param enableStallDetect : Enable stall detect feature
- This feature will take effect to data performance
- Not integrate till fully verification
- @see
- @return none
-*/
-void WDI_TransportChannelDebug
-(
- wpt_boolean displaySnapshot,
- wpt_boolean toggleStallDetect
-)
-{
- WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
- return;
-}
-/**
- @brief WDI_SsrTimerCB
- Callback function for SSR timer, if this is called then the graceful
- shutdown for Riva did not happen.
-
- @param pUserData : user data to timer
-
- @see
- @return none
-*/
-void
-WDI_SsrTimerCB
-(
- void *pUserData
-)
-{
- WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- if (NULL == pWDICtx )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return;
- }
- wpalRivaSubystemRestart();
-
- return;
-
-}/*WDI_SsrTimerCB*/
-
-/**
- @brief WDI_SetEnableSSR -
- This API is called to enable/disable SSR on WDI timeout.
-
- @param enableSSR : enable/disable SSR
-
- @see
- @return none
-*/
-void WDI_SetEnableSSR(wpt_boolean enableSSR)
-{
- gWDICb.bEnableSSR = enableSSR;
-}
-
-
-#ifdef FEATURE_WLAN_LPHB
-/**
- @brief WDI_ProcessLphbInd -
- This function will be invoked when FW detects low power
- heart beat failure
-
- @param pWDICtx : wdi context
- pEventData : indication data
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessLphbInd
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_LowLevelIndType wdiInd;
- tHalLowPowerHeartBeatIndParam lphbIndicationParam;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if ((NULL == pWDICtx) || (NULL == pEventData) ||
- (NULL == pEventData->pEventData))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-------------------------------------------------------------------------
- Extract indication and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy(&lphbIndicationParam,
- pEventData->pEventData,
- sizeof(tHalLowPowerHeartBeatIndParam));
-
- wdiInd.wdiIndicationType = WDI_LPHB_IND;
- wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
- lphbIndicationParam.bssIdx;
- wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
- lphbIndicationParam.sessionIdx;
- wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
- lphbIndicationParam.protocolType;
- wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
- lphbIndicationParam.eventReason;
- /*Notify UMAC*/
- if (pWDICtx->wdiLowLevelIndCB)
- {
- pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
- }
-
- return WDI_STATUS_SUCCESS;
-}
-
-/**
- @brief WDI_ProcessLphbCfgRsp -
- LPHB configuration response from FW
-
- @param pWDICtx : wdi context
- pEventData : indication data
-
- @see
- @return Result of the function call
-*/
-WDI_Status WDI_ProcessLphbCfgRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- eHalStatus halStatus;
- WDI_LphbCfgCb wdiLphbCfgCb;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if ((NULL == pWDICtx) || (NULL == pEventData) ||
- (NULL == pEventData->pEventData))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
-
- /*-------------------------------------------------------------------------
- Extract response and send it to UMAC
- -------------------------------------------------------------------------*/
- halStatus = *((eHalStatus*)pEventData->pEventData);
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "LPHB Cfg Rsp Return status %d", wdiStatus);
- /*Notify UMAC*/
- if (NULL != wdiLphbCfgCb)
- {
- wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
- }
-
- return WDI_STATUS_SUCCESS;
-}
-
-/**
- @brief WDI_ProcessLPHBConfReq -
- LPHB configuration request to FW
-
- @param pWDICtx : wdi context
- pEventData : indication data
-
- @see
- @return none
-*/
-WDI_Status WDI_ProcessLPHBConfReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_LPHBReq *pLphbReqParams;
- WDI_Status wdiStatus;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tHalLowPowerHeartBeatReq *halLphbReqRarams;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if ((NULL == pEventData) || (NULL == pEventData->pEventData))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters in Suspend ind",__func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
-
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
- WDI_LPHB_CFG_REQ,
- sizeof(tHalLowPowerHeartBeatReqMsg),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Unable to get send buffer in LPHB Ind ");
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
- wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
-
- halLphbReqRarams->lowPowerHeartBeatCmdType =
- (tANI_U16)(++pLphbReqParams->cmd);
- switch ((tANI_U16)pLphbReqParams->cmd)
- {
- case WDI_LPHB_SET_EN_PARAMS_INDID:
- halLphbReqRarams->sessionIdx =
- pLphbReqParams->params.lphbEnableReq.session;
- halLphbReqRarams->options.control.heartBeatEnable =
- pLphbReqParams->params.lphbEnableReq.enable;
- halLphbReqRarams->options.control.heartBeatType =
- pLphbReqParams->params.lphbEnableReq.item;
- break;
-
- case WDI_LPHB_SET_TCP_PARAMS_INDID:
- halLphbReqRarams->sessionIdx =
- pLphbReqParams->params.lphbTcpParamReq.session;
- halLphbReqRarams->options.tcpParams.timeOutSec =
- pLphbReqParams->params.lphbTcpParamReq.timeout;
- wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
- &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
- sizeof(v_U32_t));
- wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
- &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
- sizeof(v_U32_t));
-
- wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
- pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
- WDI_MAC_ADDR_LEN);
-
- halLphbReqRarams->options.tcpParams.hostPort =
- pLphbReqParams->params.lphbTcpParamReq.src_port;
- halLphbReqRarams->options.tcpParams.destPort =
- pLphbReqParams->params.lphbTcpParamReq.dst_port;
- halLphbReqRarams->options.tcpParams.timePeriodSec =
- pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
- halLphbReqRarams->options.tcpParams.tcpSn =
- pLphbReqParams->params.lphbTcpParamReq.tcpSn;
- break;
-
- case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
- halLphbReqRarams->sessionIdx =
- pLphbReqParams->params.lphbTcpFilterReq.session;
- halLphbReqRarams->options.tcpUdpFilter.offset =
- pLphbReqParams->params.lphbTcpFilterReq.offset;
- halLphbReqRarams->options.tcpUdpFilter.filterLength =
- pLphbReqParams->params.lphbTcpFilterReq.length;
- wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
- pLphbReqParams->params.lphbTcpFilterReq.filter,
- WDI_LPHB_FILTER_LEN);
- break;
-
- case WDI_LPHB_SET_UDP_PARAMS_INDID:
- halLphbReqRarams->sessionIdx =
- pLphbReqParams->params.lphbUdpParamReq.session;
- halLphbReqRarams->options.udpParams.timeOutSec =
- pLphbReqParams->params.lphbUdpParamReq.timeout;
- halLphbReqRarams->options.udpParams.timePeriodSec =
- pLphbReqParams->params.lphbUdpParamReq.interval;
- wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
- &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
- sizeof(v_U32_t));
- wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
- &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
- sizeof(v_U32_t));
-
- wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
- pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
- WDI_MAC_ADDR_LEN);
-
- halLphbReqRarams->options.udpParams.hostPort =
- pLphbReqParams->params.lphbUdpParamReq.src_port;
- halLphbReqRarams->options.udpParams.destPort =
- pLphbReqParams->params.lphbUdpParamReq.dst_port;
- break;
-
- case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
- halLphbReqRarams->sessionIdx =
- pLphbReqParams->params.lphbUdpFilterReq.session;
- halLphbReqRarams->options.tcpUdpFilter.offset =
- pLphbReqParams->params.lphbUdpFilterReq.offset;
- halLphbReqRarams->options.tcpUdpFilter.filterLength =
- pLphbReqParams->params.lphbUdpFilterReq.length;
- wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
- pLphbReqParams->params.lphbUdpFilterReq.filter,
- WDI_LPHB_FILTER_LEN);
- break;
-
- case WDI_LPHB_SET_NETWORK_INFO_INDID:
- /* NA */
- break;
-
- default:
- break;
- }
-
- /*-------------------------------------------------------------------------
- Send Suspend Request to HAL
- -------------------------------------------------------------------------*/
- pWDICtx->pfncRspCB = pEventData->pCBfnc;
- pWDICtx->pReqStatusUserData = pEventData->pUserData;
-
- wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
- usSendSize, pWDICtx->pfncRspCB,
- pWDICtx->pReqStatusUserData,
- WDI_LPHB_CFG_RESP);
-
- return wdiStatus;
-}
-
-/**
- @brief WDI_LPHBConfReq -
- LPHB configuration request API
-
- @param lphbconfParam : configuration parameter
- usrData : client context
- lphbCfgCb : callback function pointer
-
- @see
- @return Success or fail status code
-*/
-WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
- void *usrData, WDI_LphbCfgCb lphbCfgCb)
-{
- WDI_EventInfoType wdiEventData;
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if (eWLAN_PAL_FALSE == gWDIInitialized)
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
- wdiEventData.pEventData = lphbconfParam;
- wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
- wdiEventData.pCBfnc = lphbCfgCb;
- wdiEventData.pUserData = usrData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-}
-#endif /* FEATURE_WLAN_LPHB */
-
-/**
- @brief WDI_ProcessIbssPeerInactivityInd
- Process peer inactivity indication coming from HAL
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessIbssPeerInactivityInd
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_LowLevelIndType wdiInd;
- tIbssPeerInactivityIndMsg halIbssIndMsg;
-
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT( 0 );
- return WDI_STATUS_E_FAILURE;
- }
-
- /*-------------------------------------------------------------------------
- Extract indication and send it to UMAC
- -------------------------------------------------------------------------*/
- wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
- pEventData->pEventData,
- sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
-
- /*Fill in the indication parameters*/
- wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
-
- wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
- = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
-
- wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
- = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
-
- wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
- halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
- sizeof(tSirMacAddr));
-
- /*Notify UMAC*/
- pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
-
- return WDI_STATUS_SUCCESS;
-
-} /*WDI_ProcessIbssPeerInactivityInd*/
-
-
-/**
-*@brief WDI_RateUpdateInd will be called when the upper MAC
- requests the device to set rates.
-
-
- @param wdiRateUpdateIndParams:
-
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_RateUpdateInd
-(
- WDI_RateUpdateIndParams *wdiRateUpdateIndParams
-)
-{
- WDI_EventInfoType wdiEventData;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_FALSE == gWDIInitialized )
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
- wdiEventData.pEventData = wdiRateUpdateIndParams;
- wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
- wdiEventData.pCBfnc = NULL;
- wdiEventData.pUserData = NULL;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-
-}/* WDI_RateUpdateInd */
-
-/**
- @brief Process Rate Update Indication and post it to HAL
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessRateUpdateInd
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
- tHalRateUpdateInd *pRateUpdateInd;
- WDI_Status wdiStatus;
-
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "%s", __func__);
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
- if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
- pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
-
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
- WDI_RATE_UPDATE_IND,
- sizeof(tHalRateUpdateParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset +
- sizeof(tHalRateUpdateParams) )))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "Unable to get send buffer in Rate Update Indication %p ",
- pEventData);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
-
- /* Copy the bssid */
- wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
- pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
-
- /* Copy the tx flags */
- pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
- pwdiRateUpdateInd->ucastDataRateTxFlag;
- pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
- pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
- pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
- pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
- pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
- pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
-
- /* Copy the tx rates */
- pRateUpdateInd->halRateUpdateParams.ucastDataRate =
- pwdiRateUpdateInd->ucastDataRate;
- pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
- pwdiRateUpdateInd->reliableMcastDataRate;
- pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
- pwdiRateUpdateInd->mcastDataRate24GHz;
- pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
- pwdiRateUpdateInd->mcastDataRate5GHz;
-
- /*-------------------------------------------------------------------------
- Send Rate Update Indication to HAL
- -------------------------------------------------------------------------*/
- pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
- pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
-
- wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
-
- return (wdiStatus != WDI_STATUS_SUCCESS) ?
- wdiStatus : WDI_STATUS_SUCCESS_SYNC;
-
-} /* WDI_ProcessRateUpdateInd */
-
-#ifdef FEATURE_WLAN_BATCH_SCAN
-
-/**
- @brief Process stop batch indication from WDA
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessStopBatchScanInd
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- WDI_Status wdiStatus;
- tHalBatchScanStopIndParam *pHalInd = NULL;
- WDI_StopBatchScanIndType *pWdiInd = NULL;
-
-
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "%s", __func__);
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
-
- if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
- pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
-
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
- WDI_STOP_BATCH_SCAN_IND,
- sizeof(tHalBatchScanStopIndParam),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "Unable to get send buffer in stop batch scan ind %p ",
- pEventData);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
- pHalInd->param = pWdiInd->param;
-
- pWDICtx->pReqStatusUserData = NULL;
- pWDICtx->pfncRspCB = NULL;
- /*-------------------------------------------------------------------------
- Send Stop batch scan indication to HAL
- -------------------------------------------------------------------------*/
- wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
- return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
-}
-
-/**
- @brief This API is called to trigger batch scan results from FW
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessTriggerBatchScanResultInd
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_Status wdiStatus;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tHalBatchScanTriggerResultParam *pHalInd = NULL;
- WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
-
-
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
- "%s", __func__);
-
- /*-------------------------------------------------------------------------
- Sanity check
- -------------------------------------------------------------------------*/
-
- if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
- pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
-
- if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
- WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
- sizeof(tHalBatchScanTriggerResultParam),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "Unable to get send buffer in stop batch scan ind %p ",
- pEventData);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
- pHalInd->param = pWdiInd->param;
-
- pWDICtx->pReqStatusUserData = NULL;
- pWDICtx->pfncRspCB = NULL;
- /*-------------------------------------------------------------------------
- Send trigger batch scan result indication to HAL
- -------------------------------------------------------------------------*/
- wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
- return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
-}
-
-
-/**
- @brief Process set batch scan response from FW
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessSetBatchScanRsp
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_SetBatchScanCb wdiSetBatchScanCb;
- WDI_SetBatchScanRspType *pSetBatchScanRsp;
-
- tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*sanity check*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
- if ( NULL == wdiSetBatchScanCb)
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
- "%s: call back function is NULL", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
-
- if (NULL == pSetBatchScanRsp)
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Failed to allocate memory in set batch scan response %p %p %p ",
- pWDICtx, pEventData, pEventData->pEventData);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*extract response and send it to UMAC*/
- pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
-
- pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
-
- /*Notify UMAC*/
- wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
-
- wpalMemoryFree(pSetBatchScanRsp);
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_ProcessSetBatchScanRsp*/
-
-/**
- @brief Process batch scan result indication from FW
-
- @param pWDICtx: pointer to the WLAN DAL context
- pEventData: pointer to the event information structure
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_ProcessBatchScanResultInd
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- void *pBatchScanResultInd;
- WDI_LowLevelIndType wdiInd;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*sanity check*/
- if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
- ( NULL == pEventData->pEventData))
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: Invalid parameters", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /*extract response and send it to UMAC*/
- pBatchScanResultInd = (void *)pEventData->pEventData;
-
- /*Fill in the indication parameters*/
- wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
-
- wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
-
- /*Notify UMAC*/
- if (pWDICtx->wdiLowLevelIndCB)
- {
- pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
- }
- else
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "%s: WDILowLevelIndCb is null", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- return WDI_STATUS_SUCCESS;
-} /*End of WDI_ProcessBatchScanResultInd*/
-
-/**
- @brief WDI_ProcessSetBatchScanReq -
- Set batch scan request to FW
-
- @param pWDICtx : wdi context
- pEventData : indication data
-
- @see
- @return none
-*/
-WDI_Status WDI_ProcessSetBatchScanReq
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_EventInfoType* pEventData
-)
-{
- WDI_SetBatchScanReqType *pWdiReq;
- WDI_Status wdiStatus;
- wpt_uint8* pSendBuffer = NULL;
- wpt_uint16 usDataOffset = 0;
- wpt_uint16 usSendSize = 0;
- tHalBatchScanSetParams *pHalReq;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*sanity check*/
- if ((NULL == pEventData) || (NULL == pEventData->pEventData))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Invalid parameters in set batch scan request", __func__);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
-
- pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
-
-
- /*get message buffer*/
- if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
- WDI_SET_BATCH_SCAN_REQ,
- sizeof(tHalBatchScanSetParams),
- &pSendBuffer, &usDataOffset, &usSendSize))||
- (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
-
- pHalReq->rtt = pWdiReq->rtt;
- pHalReq->rfBand = pWdiReq->rfBand;
- pHalReq->bestNetworks = pWdiReq->bestNetwork;
- pHalReq->scanInterval = pWdiReq->scanFrequency;
- pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
-
- /*send set batch scan request to fw*/
- pWDICtx->pfncRspCB = pEventData->pCBfnc;
- pWDICtx->pReqStatusUserData = pEventData->pUserData;
-
- wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
- usSendSize, pWDICtx->pfncRspCB,
- pWDICtx->pReqStatusUserData,
- WDI_SET_BATCH_SCAN_RESP);
-
- return wdiStatus;
-}
-
-/**
- @brief WDI_SetBatchScanReq
- This API is called to set batch scan request in FW
-
- @param pBatchScanReqParam : pointer to set batch scan re param
- usrData : Client context
- setBatchScanRspCb : set batch scan resp callback
- @see
- @return SUCCESS or FAIL
-*/
-WDI_Status WDI_SetBatchScanReq
-(
- void *pBatchScanReqParam,
- void *usrData,
- WDI_SetBatchScanCb setBatchScanRspCb
-)
-{
- WDI_EventInfoType wdiEventData;
-
- /*sanity check*/
- if (eWLAN_PAL_FALSE == gWDIInitialized)
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /* fill in event data and post to the main FSM */
- wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
- wdiEventData.pEventData = pBatchScanReqParam;
- wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
- wdiEventData.pCBfnc = setBatchScanRspCb;
- wdiEventData.pUserData = usrData;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-}
-
-/**
- @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
-
- @param None
-
- @see
-
- @return Status of the request
-*/
-WDI_Status
-WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
-{
- WDI_EventInfoType wdiEventData;
-
- /*-------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if (eWLAN_PAL_FALSE == gWDIInitialized)
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request!");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*-------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
- wdiEventData.pEventData = pWdiReq;
- wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
- wdiEventData.pCBfnc = NULL;
- wdiEventData.pUserData = NULL;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-}
-
-/**
- @brief WDI_TriggerBatchScanResultInd
- This API is called to pull batch scan result from FW
-
- @param pWdiReq : pointer to get batch scan ind param
- @see
- @return SUCCESS or FAIL
-*/
-WDI_Status WDI_TriggerBatchScanResultInd
-(
- WDI_TriggerBatchScanResultIndType *pWdiReq
-)
-{
- WDI_EventInfoType wdiEventData;
- /*-------------------------------------------------------------------------
- Sanity Check
- ------------------------------------------------------------------------*/
- if (eWLAN_PAL_FALSE == gWDIInitialized)
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "WDI API call before module is initialized - Fail request!");
-
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- /*-------------------------------------------------------------------------
- Fill in Event data and post to the Main FSM
- ------------------------------------------------------------------------*/
- wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
- wdiEventData.pEventData = pWdiReq;
- wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
- wdiEventData.pCBfnc = NULL;
- wdiEventData.pUserData = NULL;
-
- return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
-}
-
-#endif /*FEATURE_WLAN_BATCH_SCAN*/
diff --git a/CORE/WDI/CP/src/wlan_qct_wdi_dp.c b/CORE/WDI/CP/src/wlan_qct_wdi_dp.c
deleted file mode 100644
index 1a84ac544bce..000000000000
--- a/CORE/WDI/CP/src/wlan_qct_wdi_dp.c
+++ /dev/null
@@ -1,1054 +0,0 @@
-/*
- * Copyright (c) 2012-2013 The Linux Foundation. All rights reserved.
- *
- * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
- *
- *
- * Permission to use, copy, modify, and/or distribute this software for
- * any purpose with or without fee is hereby granted, provided that the
- * above copyright notice and this permission notice appear in all
- * copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
- * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
- * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
- * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
- * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-/*
- * This file was originally distributed by Qualcomm Atheros, Inc.
- * under proprietary terms before Copyright ownership was assigned
- * to the Linux Foundation.
- */
-
-
-/*===========================================================================
-
- W L A N _ Q C T _ W D I _ D P. C
-
- OVERVIEW:
-
- This software unit holds the implementation of the WLAN Device Abstraction
- Layer Internal Utility routines to be used by the Data Path.
-
- The functions externalized by this module are to be only by the WDI data
- path.
-
- The module leveraged as much as functionality as was possible from the HAL
- in Libra/Volans.
-
- DEPENDENCIES:
-
- Are listed for each API below.
-===========================================================================*/
-
-/*===========================================================================
-
- EDIT HISTORY FOR FILE
-
-
- This section contains comments describing changes made to the module.
- Notice that changes are listed in reverse chronological order.
-
-
- $Header$$DateTime$$Author$
-
-
- when who what, where, why
----------- --- --------------------------------------------------------
-2010-08-19 lti Created module
-
-===========================================================================*/
-
-#include "wlan_qct_pal_api.h"
-#include "wlan_qct_pal_type.h"
-#include "wlan_qct_wdi.h"
-#include "wlan_qct_wdi_i.h"
-#include "wlan_qct_wdi_sta.h"
-#include "wlan_qct_wdi_dp.h"
-#include "wlan_qct_wdi_bd.h"
-#include "wlan_qct_pal_trace.h"
-
-#include "wlan_qct_dev_defs.h"
-#define MAC_ADDR_ARRAY(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
-#define MAC_ADDRESS_STR "%02x:%02x:%02x:%02x:%02x:%02x"
-
-extern uint8 WDA_IsWcnssWlanCompiledVersionGreaterThanOrEqual(uint8 major, uint8 minor, uint8 version, uint8 revision);
-extern uint8 WDA_IsWcnssWlanReportedVersionGreaterThanOrEqual(uint8 major, uint8 minor, uint8 version, uint8 revision);
-
-
-/*----------------------------------------------------------------------------
- * Preprocessor Definitions and Constants
- * -------------------------------------------------------------------------*/
-
-/*--------------------------------------------------------------------------
- TID->QueueID mapping
- --------------------------------------------------------------------------*/
-static wpt_uint8 btqmQosTid2QidMapping[] =
-{
- BTQM_QID0,
- BTQM_QID1,
- BTQM_QID2,
- BTQM_QID3,
- BTQM_QID4,
- BTQM_QID5,
- BTQM_QID6,
- BTQM_QID7
-};
-/*===========================================================================
- Helper Internal API
- ===========================================================================*/
-
-/**
- @brief WDI_DP_UtilsInit - Intializes the parameters required to
- interact with the data path
-
- @param pWDICtx: pointer to the main WDI Ctrl Block
-
- @return success always
-*/
-WDI_Status
-WDI_DP_UtilsInit
-(
- WDI_ControlBlockType* pWDICtx
-)
-{
- WDI_RxBdType* pAmsduRxBdFixMask;
-
- // WQ to be used for filling the TxBD
- pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
-
-#ifdef WLAN_PERF
- pWDICtx->uBdSigSerialNum = 0;
-#endif
-
- pAmsduRxBdFixMask = &pWDICtx->wdiRxAmsduBdFixMask;
-
- wpalMemoryFill(pAmsduRxBdFixMask,sizeof(WDI_RxBdType), 0xff);
-
- pAmsduRxBdFixMask->penultimatePduIdx = 0;
- pAmsduRxBdFixMask->headPduIdx = 0;
- pAmsduRxBdFixMask->tailPduIdx = 0;
- pAmsduRxBdFixMask->mpduHeaderLength = 0;
- pAmsduRxBdFixMask->mpduHeaderOffset = 0;
- pAmsduRxBdFixMask->mpduDataOffset = 0;
- pAmsduRxBdFixMask->pduCount = 0;
- pAmsduRxBdFixMask->mpduLength = 0;
- pAmsduRxBdFixMask->asf = 0;
- pAmsduRxBdFixMask->esf = 0;
- pAmsduRxBdFixMask->lsf = 0;
- pAmsduRxBdFixMask->processOrder = 0;
- pAmsduRxBdFixMask->sybFrameIdx = 0;
- pAmsduRxBdFixMask->totalMsduSize = 0;
- pAmsduRxBdFixMask->aduFeedback = 0;
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_DP_UtilsInit*/
-
-
-/**
- @brief WDI_DP_UtilsExit - Clears the parameters required to
- interact with the data path
-
- @param pWDICtx: pointer to the main WDI Ctrl Block
-
- @return success always
-*/
-WDI_Status
-WDI_DP_UtilsExit
-(
- WDI_ControlBlockType* pWDICtx
-)
-{
- return WDI_STATUS_SUCCESS;
-}/*WDI_DP_UtilsExit*/
-
-/**
- @brief WDI_SwapBytes - Swap Bytes of a given buffer
-
- @param pBd: buffer to be swapped
- nbSwap: number of bytes to swap
-
- @return none
-*/
-WPT_STATIC WPT_INLINE void
-WDI_SwapBytes
-(
- wpt_uint8 *pBd,
- wpt_uint32 nbSwap
-)
-{
- wpt_uint32 *pU32;
- wpt_uint32 nU32;
- wpt_uint32 wc;
-
- nU32 = (((nbSwap) + 3)>>2);
-
- pU32 = (wpt_uint32 *)pBd;
- for ( wc = 0; wc < nU32; wc++ )
- {
- pU32[ wc ] = WPAL_BE32_TO_CPU( pU32[ wc ] );
- }
-}/*WDI_SwapBytes*/
-
-/**
- @brief WDI_BmuGetQidForQOSTid - returns the BMU QID for a given
- TID
-
- @param ucTid: TID
- pQid: out QID
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_BmuGetQidForQOSTid
-(
- wpt_uint8 ucTid,
- wpt_uint8* pQid
-)
-{
- if (ucTid > BTQM_QUEUE_TX_TID_7 )
- return WDI_STATUS_E_FAILURE;
-
- *pQid = btqmQosTid2QidMapping[ucTid];
- return WDI_STATUS_SUCCESS;
-}/*WDI_BmuGetQidForQOSTid*/
-
-#ifdef WLAN_PERF
-
-/**
- @brief WDI_ComputeTxBdSignature - computes the BD signature
-
- @param pWDICtx: pointer to the global WDI context;
-
- pDestMacAddr: destination MAC address
-
- ucTid: TID of the frame
-
- ucDisableFrmXtl: Unicast destination
-
- @return the signature
-*/
-static wpt_uint32
-WDI_ComputeTxBdSignature
-(
- WDI_ControlBlockType* pWDICtx,
- wpt_uint8* pDestMac,
- wpt_uint8 ucTid,
- wpt_uint8 ucUnicastDst
-)
-{
- wpt_uint16 *pMacU16 = (wpt_uint16 *) pDestMac;
-
- return ((pMacU16[0] ^ pMacU16[1] ^ pMacU16[2])<< WDI_TXBD_SIG_MACADDR_HASH_OFFSET |
- pWDICtx->uBdSigSerialNum << WDI_TXBD_SIG_SERIAL_OFFSET |
- ucTid << WDI_TXBD_SIG_TID_OFFSET |
- ucUnicastDst << WDI_TXBD_SIG_UCAST_DATA_OFFSET);
-}/*WDI_ComputeTxBdSignature*/
-
-
-/**
- @brief WDI_TxBdFastFwd - evaluates if a frame can be fast
- forwarded
-
- @param pWDICtx: Context to the WDI
- pDestMac: Destination MAC
- ucTid: packet TID pBDHeader
- ucUnicastDst: is packet unicast
- pTxBd: pointer to the BD header
- usMpduLength: len
-
- @return 1 - if the frame can be fast fwd-ed ; 0 if not
-*/
-wpt_uint32
-WDI_TxBdFastFwd
-(
- WDI_ControlBlockType* pWDICtx,
- wpt_uint8* pDestMac,
- wpt_uint8 ucTid,
- wpt_uint8 ucUnicastDst,
- void* pTxBd,
- wpt_uint16 usMpduLength
- )
-{
- WDI_TxBdType* pBd = (WDI_TxBdType*) pTxBd;
- wpt_uint32 uRetval = 0;
-#ifdef WPT_LITTLE_BYTE_ENDIAN
- wpt_uint16 usSwapped;
- wpt_uint16* pU16 = (wpt_uint16 *) pTxBd;
-#endif
-
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- if( pBd->txBdSignature ==
- WDI_ComputeTxBdSignature(pWDICtx, pDestMac, ucTid, ucUnicastDst))
- {
-
-#ifdef WPT_LITTLE_BYTE_ENDIAN
- /* When swap to BE format, mpduLength field is at 8th WORD location(16th byte) */
- usSwapped = wpt_cpu_to_be16(usMpduLength);
- pU16[8] = usSwapped;
-#else
- /* Remove the #error when ported to a real BIG ENDIAN machine */
- // #error "Is host byte order really BIG endian?"
- /* When host is already in BE format, no swapping needed.*/
- pBd->mpduLength = usMpduLength;
-#endif
- uRetval = 1;
- }
- return uRetval ;
-}/*WDI_TxBdFastFwd*/
-
-#endif /*WLAN_PERF*/
-
-/*===========================================================================
- External API
- ===========================================================================*/
-
-/**
- @brief WLANHAL_FillTxBd - Called by TL to fill in TxBD.
-
- Following are the highlights of the function
-
- 1. All unicast data packets are sent by data rate decided by TPE.
- (i.e BD rates are disabled).
-
- 2. All u/mcast management packets would go in Broadcast
- Management Rates
-
- 3. dpuNE would be disabled for all data packets
-
- 4. dpuNE would be enabled for all management packets
- excluding packets when RMF is enabled
-
- 5. QID8 at self STA is for broadcast data which uses no ACK
- policy.
-
- 6. QID9 at self STA, we use it for unicast mgmt and set ACK
- policy to normal ACK.
-
- 7. QID10 at self STA, we use it for b/mcast mgmt and set ACK
- policy to NO ACK.
-
- WDI DP Utilities modules must be initiatilized before this
- API can be called.
-
- @param
-
- IN
- pWDICtx: pointer to the global WDI context;
-
- ucTypeSubtype: 802.11 [5:4] ucType [3:0] subtype
-
- pDestMacAddr: destination MAC address
-
- pTid: ptr to TID of the frame
-
- ucDisableFrmXtl: When set, disables UMA HW frame
- translation and WDI needs to fill in all BD
- fields. When not set, UMA performs BD
- filling and frame translation
-
- pTxBd: ptr to the TxBD
-
- ucTxFlag: different option setting for TX.
-
- ucProtMgmtFrame: for management frames, whether the frame is
- protected (protect bit is set in FC)
-
- uTimeStamp: Timestamp when the frame was received from HDD. (usec)
-
- @return
- The result code associated with performing the operation
-
-*/
-
-WDI_Status
-WDI_FillTxBd
-(
- WDI_ControlBlockType* pWDICtx,
- wpt_uint8 ucTypeSubtype,
- void* pDestMacAddr,
- void* pAddr2,
- wpt_uint8* pTid,
- wpt_uint8 ucDisableFrmXtl,
- void* pTxBd,
- wpt_uint32 ucTxFlag,
- wpt_uint8 ucProtMgmtFrame,
- wpt_uint32 uTimeStamp,
- wpt_uint8* staIndex
-)
-{
- wpt_uint8 ucTid = *pTid;
- WDI_TxBdType* pBd = (WDI_TxBdType*) pTxBd;
- WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
- wpt_uint8 ucUnicastDst = 0;
- wpt_uint8 ucType = 0;
- wpt_uint8 ucSubType = 0;
- wpt_uint8 ucIsRMF = 0;
- WDI_BSSSessionType* pBSSSes;
- wpt_uint8 ucSTAType = 0;
-#ifdef WLAN_PERF
- wpt_uint32 uTxBdSignature = pBd->txBdSignature;
-#endif
- tANI_U8 useStaRateForBcastFrames = 0;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
-
- /*------------------------------------------------------------------------
- Get type and subtype of the frame first
- ------------------------------------------------------------------------*/
- ucType = (ucTypeSubtype & WDI_FRAME_TYPE_MASK) >> WDI_FRAME_TYPE_OFFSET;
- ucSubType = (ucTypeSubtype & WDI_FRAME_SUBTYPE_MASK);
-
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Type: %d/%d, MAC S: %08x. MAC D: %08x., Tid=%d, frmXlat=%d, pTxBD=%p ucTxFlag 0x%X",
- ucType, ucSubType,
- *((wpt_uint32 *) pAddr2),
- *((wpt_uint32 *) pDestMacAddr),
- ucTid,
- !ucDisableFrmXtl, pTxBd, ucTxFlag );
-
-
- //logic to determine the version match between host and riva to find out when to enable using STA rate for bcast frames.
- //determine if Riva vsersion and host version both are greater than or equal to 0.0.2 (major, minor, version). if yes then use STA rate
- // instead of BD rate for BC/MC frames. Otherwise use old code to use BD rate instead.
- {
- if (WDA_IsWcnssWlanCompiledVersionGreaterThanOrEqual(0, 0, 2, 0) &&
- WDA_IsWcnssWlanReportedVersionGreaterThanOrEqual(0, 0, 2, 0))
- useStaRateForBcastFrames = 1;
- }
-
-
- /*-----------------------------------------------------------------------
- * Set common fields in TxBD
- * bdt: always HWBD_TYPE_GENERIC
- dpuRF: This is not used in Gen6 since all WQs are explicitly
- programmed to each HW module
- * ucTid: from caller, ignored if frame is MGMT frame
- * fwTxComplete0: always set to 0
- * txComplete1: If TxComp inrs is requested, enable TxComplete interrupt
- * dpuFeedback/aduFeedback/reserved2: Always set to 0
- ap: ACK policy to be placed in Qos ctrl field. Ignored by HW if non
- Qos ucType frames.
- u/b: If Addr1 of this frame in its 802.11 form is unicast, set to 0.
- Otherwise set to 1.
- dpuNE: always set to 0. DPU also uses the privacy bit in 802.11 hdr
- for encryption decision
- -----------------------------------------------------------------------*/
- pBd->bdt = HWBD_TYPE_GENERIC;
-
- // Route all trigger enabled frames to FW WQ, for FW to suspend trigger frame generation
- // when no traffic is exists on trigger enabled ACs
- if(ucTxFlag & WDI_TRIGGER_ENABLED_AC_MASK) {
- pBd->dpuRF = pWDICtx->ucDpuRF;
- } else
- {
- pBd->dpuRF = BMUWQ_BTQM_TX_MGMT;
- }
-
-
- pBd->tid = ucTid;
- // Clear the reserved field as this field is used for defining special
- // flow control BD.
- pBd->reserved4 = 0;
- pBd->fwTxComplete0 = 0;
-
- /* This bit is for host to register TxComplete Interrupt */
- pBd->txComplete1 = (ucTxFlag & WDI_TXCOMP_REQUESTED_MASK) ? 1 : 0;
-
- pBd->ap = WDI_ACKPOLICY_ACK_REQUIRED;
- pBd->dpuNE = WDI_NO_ENCRYPTION_DISABLED;
-
- ucUnicastDst = !(((wpt_uint8 *)pDestMacAddr)[0] & 0x01);
- *((wpt_uint32 *)pBd + WDI_DPU_FEEDBACK_OFFSET) = 0;
-
- if(!ucUnicastDst)
- {
- pBd->ap = WDI_ACKPOLICY_ACK_NOTREQUIRED;
- }
-
- if (ucType == WDI_MAC_DATA_FRAME)
- {
-
- /* Set common fields for data frames (regardless FT enable/disable)
- * bd_ssn: Let DPU auto generate seq # if QosData frame. All other
- frames DPU generates seq using nonQos counter.
- For QosNull, don't occupy one Qos seq # to avoid a potential
- hole seen in reorder buffer when BA is enabled.
-
- * bd_rate:HW default or broadcast data rate
- * rmf: RMF doesn't apply for data frames. Always set to 0
- * u/b: If Addr1 of this frame in its 802.11 form is unicast,
- set to 0. Otherwise set to 1.
- * Sanity: Force disable HW frame translation if incoming frame is
- NULL data frame
- */
-
- if ((ucSubType & WDI_MAC_DATA_QOS_DATA)&&
- (ucSubType != WDI_MAC_DATA_QOS_NULL))
- {
- pBd->bd_ssn = WDI_TXBD_BD_SSN_FILL_DPU_QOS;
- }
- else
- {
- pBd->bd_ssn = WDI_TXBD_BD_SSN_FILL_DPU_NON_QOS;
- }
-
- /* Unicast/Mcast decision:
- * In Infra STA role, all frames to AP are unicast frames.
- * For IBSS, then check the actual DA MAC address
- This implementation doesn't support multi BSS and AP case.
- if(eSYSTEM_STA_IN_IBSS_ROLE == systemRole)
- ucUnicastDst = !(((wpt_uint8 *)pDestMacAddr)[0] & 0x01);
- else
- ucUnicastDst = WDI_DEFAULT_UNICAST_ENABLED;
-
- The above is original HAL code - however to make implementation
- more elastic and supportive of concurrency scenarios we shall just
- assume that bcast bit of MAC adddress cannot be set if addr is not
- bcast: (!! may want to revisit this during testing)
- */
-
- //Broadcast frames buffering don't work well if BD rate is used in AP mode.
- //always use STA rate for data frames.
- //never use BD rate for BC/MC frames in AP mode.
-
-
- if (useStaRateForBcastFrames)
- {
- pBd->bdRate = WDI_TXBD_BDRATE_DEFAULT;
- }
- else
- {
- pBd->bdRate = (ucUnicastDst)? WDI_TXBD_BDRATE_DEFAULT : WDI_BDRATE_BCDATA_FRAME;
- }
-#ifdef FEATURE_WLAN_TDLS
- if ( ucTxFlag & WDI_USE_BD_RATE2_FOR_MANAGEMENT_FRAME)
- {
- pBd->bdRate = WDI_BDRATE_CTRL_FRAME;
- }
-#endif
-
- pBd->rmf = WDI_RMF_DISABLED;
-
- /* sanity: Might already be set by caller, but enforce it here again */
- if( WDI_MAC_DATA_NULL == (ucSubType & ~WDI_MAC_DATA_QOS_DATA))
- {
- ucDisableFrmXtl = 1;
- if (ucTxFlag & WDI_TXCOMP_REQUESTED_MASK)
- {
- /*Send to FW to transmit NULL frames.*/
- pBd->dpuRF = BMUWQ_FW_TRANSMIT;
- }
- else
- {
-#ifdef LIBRA_WAPI_SUPPORT
- if (ucTxFlag & WDI_WAPI_STA_MASK)
- {
- pBd->dpuRF = BMUWQ_WAPI_DPU_TX;
- /*set NE bit to 1 for the null/qos null frames*/
- pBd->dpuNE = WDI_NO_ENCRYPTION_ENABLED;
- }
-#endif
- }
- }
-#if defined(WLAN_PERF) || defined(FEATURE_WLAN_WAPI) || defined(LIBRA_WAPI_SUPPORT)
- //For not-NULL data frames
- else
- {
-#if defined(FEATURE_WLAN_WAPI)
- //If caller doesn't want this frame to be encrypted, for example, WAI packets
- if( (ucTxFlag & WDI_TX_NO_ENCRYPTION_MASK) )
- {
- pBd->dpuNE = WDI_NO_ENCRYPTION_ENABLED;
- }
-#endif //defined(FEATURE_WLAN_WAPI)
-#ifdef LIBRA_WAPI_SUPPORT
- if (ucTxFlag & WDI_WAPI_STA_MASK)
- {
- pBd->dpuRF = BMUWQ_WAPI_DPU_TX;
- }
-#endif //LIBRA_WAPI_SUPPORT
-#if defined(WLAN_PERF)
- uTxBdSignature = WDI_ComputeTxBdSignature(pWDICtx, pDestMacAddr, ucTid, ucUnicastDst);
-#endif //defined(WLAN_PERF)
- }
-#endif
- }
- else if (ucType == WDI_MAC_MGMT_FRAME)
- {
-
- /*--------------------------------------------------------------------
- * Set common fields for mgmt frames
- * bd_ssn: Always let DPU auto generate seq # from the nonQos
- sequence number counter.
- * bd_rate:unicast mgmt frames will go at lower rate (multicast rate).
- * multicast mgmt frames will go at the STA rate as in AP mode
- * buffering has an issue at HW if BD rate is used.
- * rmf: NOT SET here. would be set later after STA id lookup is done.
- * Sanity: Force HW frame translation OFF for mgmt frames.
- --------------------------------------------------------------------*/
- /* apply to both ucast/mcast mgmt frames */
- /* Probe requests are sent using BD rate */
- if( ucSubType == WDI_MAC_MGMT_PROBE_REQ )
- {
- pBd->bdRate = WDI_BDRATE_BCMGMT_FRAME;
- }
- else
- {
- if (useStaRateForBcastFrames)
- {
- pBd->bdRate = (ucUnicastDst)? WDI_BDRATE_BCMGMT_FRAME : WDI_TXBD_BDRATE_DEFAULT;
- }
- else
- {
- pBd->bdRate = WDI_BDRATE_BCMGMT_FRAME;
- }
- }
- if ( ucTxFlag & WDI_USE_BD_RATE2_FOR_MANAGEMENT_FRAME)
- {
- pBd->bdRate = WDI_BDRATE_CTRL_FRAME;
- }
-
- pBd->bd_ssn = WDI_TXBD_BD_SSN_FILL_DPU_NON_QOS;
- if((ucSubType == WDI_MAC_MGMT_ACTION) || (ucSubType == WDI_MAC_MGMT_DEAUTH) ||
- (ucSubType == WDI_MAC_MGMT_DISASSOC))
- ucIsRMF = 1;
- ucDisableFrmXtl = 1;
- }
- else
- { // Control Packet
- /* We should never get a control packet, asserting here since something
- is wrong */
- WDI_ASSERT(0);
- }
-
- pBd->ub = !ucUnicastDst;
-
- /* Fast path: Leverage UMA for BD filling/frame translation.
- * Must be a data frame to request for FT.
- * When HW frame translation is enabled, UMA fills in the following fields:
- * DPU Sig
- * DPU descriptor index
- * Updates MPDU header offset, data offset, MPDU length after translation
- * STA id
- * BTQM Queue ID
- */
-
- pBd->ft = pWDICtx->bFrameTransEnabled & !ucDisableFrmXtl;
-
- if( !pBd->ft)
- {
- /* - Slow path: Frame translation is disabled. Need to set the
- following fields:
- * STA id
- * DPU Sig
- * DPU descriptor index
- * BTQM Queue ID
- * - For mgmt frames, also update rmf bits
- */
-
- WDI_StaStruct* pSta = (WDI_StaStruct*) pWDICtx->staTable;
- wpt_uint8 ucStaId;
-
- /* Disable frame translation*/
- pBd->ft = 0;
-#ifdef WLAN_PERF
- /* Mark the BD could not be reused */
- uTxBdSignature = WDI_TXBD_SIG_MGMT_MAGIC;
-#endif
- if((ucTxFlag & WDI_USE_SELF_STA_REQUESTED_MASK) &&
- !(ucIsRMF && ucProtMgmtFrame))
- {
-#ifdef HAL_SELF_STA_PER_BSS
- // Get the (self) station index from ADDR2, which should be the self MAC addr
- wdiStatus = WDI_STATableFindStaidByAddr( pWDICtx,
- *(wpt_macAddr*)pAddr2, &ucStaId );
- if (WDI_STATUS_SUCCESS != wdiStatus)
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_ERROR, "WDI_STATableFindStaidByAddr failed");
- WPAL_TRACE(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_ERROR, "STA ID = %d " MAC_ADDRESS_STR,
- ucStaId, MAC_ADDR_ARRAY(*(wpt_macAddr*)pAddr2));
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-#else
- ucStaId = pWDICtx->ucSelfStaId;
-#endif
- }
- else
- {
- /*
- _____________________________________________________________________________________________
- | | | Data || Mgmt |
- |____|_______|_______________________________________||_______________________________________|
- | | Mode | DestAddr | Addr2 (selfMac) || DestAddr | Addr2 (selfMac) |
- |____|_______|___________________|___________________||___________________|___________________|
- | | | | || | |
- | | STA | DestAddr->staIdx | When DestAddr || DestAddr->staIdx | - |
- | | | | lookup fails, || | |
- | | | | Addr2->staIdx || | |
- |U/C | IBSS | DestAddr->staIdx | - || DestAddr->staIdx | - |
- | | SoftAP| DestAddr->staIdx | - || DestAddr->staIdx | When DestAddr |
- | | | | || | lookup fails, |
- | | | | || | Addr2->StaIdx |
- | | Idle | N/A | N/A || - | Addr2->StaIdx |
- |____|_______|___________________|___________________||___________________|___________________|
- | | | | || | |
- | | STA | N/A | N/A || - | Addr2->staIdx-> |
- | | | | || | bssIdx->bcasStaIdx|
- |B/C | IBSS | - | Addr2->staIdx-> || - | Addr2->staIdx-> |
- | | | | bssIdx->bcasStaIdx|| | bssIdx->bcasStaIdx|
- | | SoftAP| - | Addr2->staIdx-> || - | Addr2->staIdx-> |
- | | | | bssIdx->bcasStaIdx|| | bssIdx->bcasStaIdx|
- | | Idle | N/A | N/A || - | Addr2->staIdx-> |
- | | | | || | bssIdx->bcasStaIdx|
- |____|_______|___________________|___________________||___________________|___________________|*/
- // Get the station index based on the above table
- if( ucUnicastDst )
- {
- wdiStatus = WDI_STATableFindStaidByAddr( pWDICtx,
- *(wpt_macAddr*)pDestMacAddr, &ucStaId );
- // In STA mode the unicast data frame could be
- // transmitted to a DestAddr for which there might not be an entry in
- // HAL STA table and the lookup would fail. In such cases use the Addr2
- // (self MAC address) to get the selfStaIdx.
- // From SelfStaIdx, get BSSIdx and use BSS MacAddr to get the staIdx
- // corresponding to peerSta(AP).
- // Drop frames only it is a data frame. Management frames can still
- // go out using selfStaIdx.
-
-
- if (WDI_STATUS_SUCCESS != wdiStatus)
- {
- if(ucType == WDI_MAC_MGMT_FRAME)
- {
- //For management frames, use self staIdx if peer sta
- //entry is not found.
- wdiStatus = WDI_STATableFindStaidByAddr( pWDICtx,
- *(wpt_macAddr*)pAddr2, &ucStaId );
- }
- else
- {
- if( !ucDisableFrmXtl )
- {
- // FrameTranslation in HW is enanled. This means,
- // pDestMacaddress may be unknown. Get the station index
- // for ADDR2, which should be the self MAC addr
- wdiStatus = WDI_STATableFindStaidByAddr( pWDICtx,
- *(wpt_macAddr*)pAddr2, &ucStaId );
- if (WDI_STATUS_SUCCESS == wdiStatus)
- {
- //Found self Sta index.
- WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
- wpt_uint8 bssIdx = 0;
-
- pBSSSes = NULL;
- //Initialize WDI status to error.
- wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
-
- //Check if its BSSIdx is valid.
- if (pSTATable[ucStaId].bssIdx != WDI_BSS_INVALID_IDX)
- {
- //Use BSSIdx to get the association sequence and use
- //macBssId to get the peerMac Address(MacBSSID).
- bssIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
- pSTATable[ucStaId].bssIdx,
- &pBSSSes);
-
- if ( NULL != pBSSSes )
- {
- //Get staId from the peerMac.
- wdiStatus = WDI_STATableFindStaidByAddr( pWDICtx,
- pBSSSes->macBSSID, &ucStaId );
- }
- }
- }
- }
- }
- //wdiStatus will be success if it found valid peerStaIdx
- //Otherwise return failure.
- if(WDI_STATUS_SUCCESS != wdiStatus )
- {
- return WDI_STATUS_E_NOT_ALLOWED;
- }
- }
- }
- else
- {
- // For bcast frames use the bcast station index
- wpt_uint8 bssSessIdx;
-
- // Get the station index for ADDR2, which should be the self MAC addr
- wdiStatus = WDI_STATableFindStaidByAddr( pWDICtx,
- *(wpt_macAddr*)pAddr2, &ucStaId );
- if (WDI_STATUS_SUCCESS != wdiStatus)
- {
- return WDI_STATUS_E_NOT_ALLOWED;
- }
-
- // Get the Bss Index related to the staId
- bssSessIdx = pSta[ucStaId].bssIdx;
-
- // Get the broadcast station index for this bss
- (void) WDI_FindAssocSessionByBSSIdx( pWDICtx, bssSessIdx,
- &pBSSSes );
- if (NULL == pBSSSes)
- {
- // session not found ?!?
- return WDI_STATUS_E_FAILURE;
- }
- ucStaId = pBSSSes->bcastStaIdx;
- }
- }
-
- pBd->staIndex = ucStaId;
-
- *staIndex = ucStaId;
-
- pSta += ucStaId; // Go to the curresponding station's station table
-
- if(ucType == WDI_MAC_MGMT_FRAME)
- {
- if (ucUnicastDst)
- {
- /* If no ack is requested use the bcast queue */
- if (ucTxFlag & WDI_USE_NO_ACK_REQUESTED_MASK)
- {
- pBd->queueId = BTQM_QUEUE_SELF_STA_BCAST_MGMT;
- }
- else
- {
- /* Assigning Queue Id configured to Ack */
- pBd->queueId = BTQM_QUEUE_SELF_STA_UCAST_MGMT;
- }
- }
- else
- {
- /* Assigning to Queue Id configured to No Ack */
- pBd->queueId = BTQM_QUEUE_SELF_STA_BCAST_MGMT;
- }
-
- if(ucIsRMF && pSta->rmfEnabled)
- {
- pBd->dpuNE = !ucProtMgmtFrame;
- pBd->rmf = 1;
- if(!ucUnicastDst)
- pBd->dpuDescIdx = pSta->bcastMgmtDpuIndex; /* IGTK */
- else
- pBd->dpuDescIdx = pSta->dpuIndex; /* PTK */
- }
- else
- {
- pBd->dpuNE = WDI_NO_ENCRYPTION_ENABLED;
- pBd->rmf = 0;
- pBd->dpuDescIdx = pSta->dpuIndex; /* PTK for both u/mcast mgmt frames */
- }
- }
- else
- {
- /* data frames */
- /* TID->QID is one-to-one mapping, the same way as followed in H/W */
- wpt_uint8 queueId = 0;
-
-
- WDI_STATableGetStaType(pWDICtx, ucStaId, &ucSTAType);
- if(!ucUnicastDst)
- pBd->queueId = BTQM_QID0;
-#ifndef HAL_SELF_STA_PER_BSS
- else if( ucUnicastDst && (ucStaId == pWDICtx->ucSelfStaId))
- pBd->queueId = BTQM_QUEUE_SELF_STA_UCAST_DATA;
-#else
- else if( ucUnicastDst && (ucSTAType == WDI_STA_ENTRY_SELF))
- pBd->queueId = BTQM_QUEUE_SELF_STA_UCAST_DATA;
-#endif
- else if (pSta->qosEnabled)
- {
- WDI_BmuGetQidForQOSTid( ucTid, &queueId);
- pBd->queueId = (wpt_uint32) queueId;
- }
- else
- pBd->queueId = BTQM_QUEUE_TX_nQOS;
-
- if(ucUnicastDst)
- {
- pBd->dpuDescIdx = pSta->dpuIndex; /*unicast data frames: PTK*/
- }
- else
- {
- pBd->dpuDescIdx = pSta->bcastDpuIndex; /* mcast data frames: GTK*/
- }
- }
-
- pBd->dpuSignature = pSta->dpuSig;
-
- /* ! Re-analize this assumption
- - original code from HAL is below - however WDI does not have access to a
- DPU index table - so it just stores the signature that it receives from HAL upon
- post assoc
- if(eHAL_STATUS_SUCCESS == halDpu_GetSignature(pMac, pSta->dpuIndex, &ucDpuSig))
- pBd->dpuSignature = ucDpuSig;
- else{
- WPAL_TRACE( WPT_WDI_CONTROL_MODULE, WPT_MSG_LEVEL_HIGH, "halDpu_GetSignature() failed for dpuId = %d\n", pBd->dpuDescIdx));
- return VOS_STATUS_E_FAILURE;
- } */
-#ifdef WLAN_SOFTAP_VSTA_FEATURE
- // if this is a Virtual Station or statype is TDLS and trig enabled mask
- // set then change the DPU Routing Flag so
- // that the frame will be routed to Firmware for queuing & transmit
- if (IS_VSTA_IDX(ucStaId) ||
- (
-#ifdef FEATURE_WLAN_TDLS
- (ucSTAType == WDI_STA_ENTRY_TDLS_PEER ) &&
-#endif
- (ucTxFlag & WDI_TRIGGER_ENABLED_AC_MASK)))
- {
- pBd->dpuRF = BMUWQ_FW_DPU_TX;
- }
-#endif
-
- }
-
- /*------------------------------------------------------------------------
- Over SDIO bus, SIF won't swap data bytes to/from data FIFO.
- In order for MAC modules to recognize BD in Riva's default endian
- format (Big endian)
- * All BD fields need to be swaped here
- ------------------------------------------------------------------------*/
- WDI_SwapTxBd((wpt_uint8 *)pBd);
-
-#ifdef WLAN_PERF
- /* Save the BD signature. This field won't be swapped and remains in host
- byte order */
- pBd->txBdSignature = uTxBdSignature ;
-#endif
-
- return wdiStatus;
-}/*WDI_FillTxBd*/
-
-
-/**
- @brief WDI_RxBD_GetFrameTypeSubType - Called by the data path
- to retrieve the type/subtype of the received frame.
-
- @param pvBDHeader: Void pointer to the RxBD buffer.
- usFrmCtrl: the frame ctrl of the 802.11 header
-
- @return A byte which contains both type and subtype info. LSB four bytes
- (b0 to b3)is subtype and b5-b6 is type info.
-*/
-
-wpt_uint8
-WDI_RxBD_GetFrameTypeSubType
-(
- void* _pvBDHeader,
- wpt_uint16 usFrmCtrl
-)
-{
- WDI_RxBdType* pRxBd = (WDI_RxBdType*) _pvBDHeader;
- wpt_uint8 typeSubType;
- WDI_MacFrameCtl wdiFrmCtl;
-
- if (pRxBd->ft != WDI_RX_BD_FT_DONE)
- {
- if (pRxBd->asf)
- {
- typeSubType = (WDI_MAC_DATA_FRAME << WDI_FRAME_TYPE_OFFSET) |
- WDI_MAC_DATA_QOS_DATA;
- } else {
- wpalMemoryCopy(&wdiFrmCtl, &usFrmCtrl, sizeof(wdiFrmCtl));
- typeSubType = (wdiFrmCtl.type << WDI_FRAME_TYPE_OFFSET) |
- wdiFrmCtl.subType;
- }
- }
- else
- {
- wpalMemoryCopy(&wdiFrmCtl, &usFrmCtrl, sizeof(wdiFrmCtl));
- typeSubType = (wdiFrmCtl.type << WDI_FRAME_TYPE_OFFSET) |
- wdiFrmCtl.subType;
- }
-
- return typeSubType;
-}/*WDI_RxBD_GetFrameTypeSubType*/
-
-/**
- @brief WDI_SwapRxBd swaps the RX BD.
-
-
- @param pBd - pointer to the BD (in/out)
-
- @return None
-*/
-void
-WDI_SwapRxBd(wpt_uint8 *pBd)
-{
-#ifndef WDI_BIG_BYTE_ENDIAN
- WDI_SwapBytes(pBd , WDI_RX_BD_HEADER_SIZE);
-#endif
-}/*WDI_SwapRxBd*/
-
-
-/**
- @brief WDI_SwapTxBd - Swaps the TX BD
-
- @param pBd - pointer to the BD (in/out)
-
- @return none
-*/
-void
-WDI_SwapTxBd(wpt_uint8 *pBd)
-{
-#ifndef WDI_BIG_BYTE_ENDIAN
- WDI_SwapBytes(pBd , WDI_TX_BD_HEADER_SIZE);
-#endif
-}/*WDI_SwapTxBd*/
-
-/*! TO DO: - check if we still need this for RIVA*/
-/**
- @brief WDI_RxAmsduBdFix - fix for HW issue for AMSDU
-
-
- @param pWDICtx: Context to the WDI
- pBDHeader - pointer to the BD header
-
- @return None
-*/
-void
-WDI_RxAmsduBdFix
-(
- WDI_ControlBlockType* pWDICtx,
- void* _pvBDHeader
-)
-{
- WDI_RxBdType* pRxBd = (WDI_RxBdType*) _pvBDHeader;
- wpt_uint32 *pModBd, *pMaskBd, *pFirstBd, i;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
-
- if (pRxBd->asf)
- {
- if (pRxBd->sybFrameIdx == 0)
- {
- //copy the BD of first AMSDU
- pWDICtx->wdiRxAmsduFirstBdCache = *pRxBd;
- }
- else
- {
- pModBd = (wpt_uint32*)pRxBd;
- pMaskBd = (wpt_uint32*)&pWDICtx->wdiRxAmsduBdFixMask;
- pFirstBd = (wpt_uint32*)&pWDICtx->wdiRxAmsduFirstBdCache;
-
- for (i = 0; i < sizeof(WDI_RxBdType)/sizeof(wpt_uint32 *); i++)
- {
- //modified BD = zero out non AMSDU related fields in this BD |
- // non AMSDU related fields from the first BD.
- pModBd[i] = (pModBd[i] & ~pMaskBd[i]) |
- (pFirstBd[i] & pMaskBd[i]);
- }
- }
- }
- return;
-}/*WDI_RxAmsduBdFix*/
diff --git a/CORE/WDI/CP/src/wlan_qct_wdi_sta.c b/CORE/WDI/CP/src/wlan_qct_wdi_sta.c
deleted file mode 100644
index d2230b354c2a..000000000000
--- a/CORE/WDI/CP/src/wlan_qct_wdi_sta.c
+++ /dev/null
@@ -1,716 +0,0 @@
-/*
- * Copyright (c) 2014 The Linux Foundation. All rights reserved.
- *
- * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
- *
- *
- * Permission to use, copy, modify, and/or distribute this software for
- * any purpose with or without fee is hereby granted, provided that the
- * above copyright notice and this permission notice appear in all
- * copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
- * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
- * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
- * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
- * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-/*
- * This file was originally distributed by Qualcomm Atheros, Inc.
- * under proprietary terms before Copyright ownership was assigned
- * to the Linux Foundation.
- */
-
-/*===========================================================================
-
- W L A N _ Q C T _ W D I _ S T A . C
-
- OVERVIEW:
-
- This software unit holds the implementation of the WLAN Device Abstraction
- Layer Station Table Management Entity.
-
- The functions externalized by this module are internal APIs for DAL Core
- and can only be called by it.
-
- DEPENDENCIES:
-
- Are listed for each API below.
-===========================================================================*/
-
-/*===========================================================================
-
- EDIT HISTORY FOR FILE
-
-
- This section contains comments describing changes made to the module.
- Notice that changes are listed in reverse chronological order.
-
-
- $Header$$DateTime$$Author$
-
-
- when who what, where, why
----------- --- --------------------------------------------------------
-2010-08-09 lti Created module
-
-===========================================================================*/
-
-/*----------------------------------------------------------------------------
- * Include Files
- * -------------------------------------------------------------------------*/
-#include "wlan_qct_wdi.h"
-#include "wlan_qct_wdi_i.h"
-#include "wlan_qct_wdi_sta.h"
-#include "wlan_qct_pal_api.h"
-#include "wlan_qct_pal_trace.h"
-
-
-/*----------------------------------------------------------------------------
- * Function definition
- * -------------------------------------------------------------------------*/
-/**
- @brief WDI_STATableInit - Initializes the STA tables.
- Allocates the necesary memory.
-
-
- @param pWDICtx: pointer to the WLAN DAL context
-
- @see
- @return Result of the function call
-*/
-WDI_Status WDI_STATableInit
-(
- WDI_ControlBlockType* pWDICtx
-)
-{
- wpt_uint8 ucMaxStations;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
-
- ucMaxStations = (wpt_uint8) pWDICtx->ucMaxStations;
-
- /*----------------------------------------------------------------------
- Allocate the memory for sta table
- ------------------------------------------------------------------------*/
- pWDICtx->staTable = wpalMemoryAllocate(ucMaxStations * sizeof(WDI_StaStruct));
-
- if (NULL == pWDICtx->staTable)
- {
-
- WDI_STATableClose(pWDICtx);
-
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Error allocating memory on WDI_STATableInit");
- return WDI_STATUS_E_FAILURE;
- }
-
- wpalMemoryZero( pWDICtx->staTable, ucMaxStations * sizeof( WDI_StaStruct ));
-
-#ifndef HAL_SELF_STA_PER_BSS
- // Initialize the Self STAID to an invalid value
- pWDICtx->ucSelfStaId = WDI_STA_INVALID_IDX;
-#endif
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_STATableInit*/
-
-/**
- @brief WDI_STATableStart - resets the max and number values of
- STAtions
-
-
- @param pWDICtx: pointer to the WLAN DAL context
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_STATableStart
-(
- WDI_ControlBlockType* pWDICtx
-)
-{
- wpt_uint8 ucMaxStations;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- ucMaxStations = (wpt_uint8) pWDICtx->ucMaxStations;
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_STATableStart*/
-
-/**
- @brief WDI_STATableStop - clears the sta table
-
-
- @param pWDICtx: pointer to the WLAN DAL context
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_STATableStop
-(
- WDI_ControlBlockType* pWDICtx
-)
-{
- wpt_uint8 ucMaxStations;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
-
-#ifndef HAL_SELF_STA_PER_BSS
- /* Clean up the Self STAID */
- pWDICtx->ucSelfStaId = WDI_STA_INVALID_IDX;
-#endif
-
- ucMaxStations = pWDICtx->ucMaxStations;
-
- wpalMemoryZero( (void *) pWDICtx->staTable,
- ucMaxStations * sizeof( WDI_StaStruct ));
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_STATableStop*/
-
-/**
- @brief WDI_STATableClose - frees the resources used by the STA
- table.
-
-
- @param pWDICtx: pointer to the WLAN DAL context
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_STATableClose
-(
- WDI_ControlBlockType* pWDICtx
-)
-{
- WDI_Status status = WDI_STATUS_SUCCESS;
-
- // Free memory
- if (pWDICtx->staTable != NULL)
- wpalMemoryFree( pWDICtx->staTable);
-
- pWDICtx->staTable = NULL;
- return status;
-}/*WDI_STATableClose*/
-
-
-/**
- @brief WDI_STATableAddSta - Function to Add Station
-
-
- @param pWDICtx: pointer to the WLAN DAL context
- pwdiParam: station parameters
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_STATableAddSta
-(
- WDI_ControlBlockType* pWDICtx,
- WDI_AddStaParams* pwdiParam
-)
-{
- wpt_uint8 ucSTAIdx = 0;
- WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-----------------------------------------------------------------------
- Sanity check
- - station ids are allocated by the HAL located on RIVA SS - they must
- always be valid
- -----------------------------------------------------------------------*/
- if (( pwdiParam->ucSTAIdx == WDI_STA_INVALID_IDX) ||
- ( pwdiParam->ucSTAIdx >= pWDICtx->ucMaxStations ))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Station id sent by HAL is invalid - not OK");
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- ucSTAIdx = pwdiParam->ucSTAIdx;
-
- /*Since we are not the allocator of STA Ids but HAL is - just set flag to
- valid*/
- pSTATable[ucSTAIdx].valid = 1;
-
-
- // Save the STA type - this is used for lookup
- WDI_STATableSetStaType(pWDICtx, ucSTAIdx, pwdiParam->ucStaType);
- WDI_STATableSetStaQosEnabled(pWDICtx, ucSTAIdx,
- (wpt_uint8)(pwdiParam->ucWmmEnabled | pwdiParam->ucHTCapable) );
-
-#ifdef WLAN_PERF
- pWDICtx->uBdSigSerialNum ++;
-#endif
-
- wpalMemoryCopy(pSTATable[ucSTAIdx].macBSSID,
- pwdiParam->macBSSID, WDI_MAC_ADDR_LEN);
-
- /*------------------------------------------------------------------------
- Set DPU Related Information
- ------------------------------------------------------------------------*/
- pSTATable[ucSTAIdx].dpuIndex = pwdiParam->dpuIndex;
- pSTATable[ucSTAIdx].dpuSig = pwdiParam->dpuSig;
-
- pSTATable[ucSTAIdx].bcastDpuIndex = pwdiParam->bcastDpuIndex;
- pSTATable[ucSTAIdx].bcastDpuSignature = pwdiParam->bcastDpuSignature;
-
- pSTATable[ucSTAIdx].bcastMgmtDpuIndex = pwdiParam->bcastMgmtDpuIndex;
- pSTATable[ucSTAIdx].bcastMgmtDpuSignature = pwdiParam->bcastMgmtDpuSignature;
-
- /*Robust Mgmt Frame enabled */
- pSTATable[ucSTAIdx].rmfEnabled = pwdiParam->ucRmfEnabled;
-
- pSTATable[ucSTAIdx].bssIdx = pwdiParam->ucBSSIdx;
-
- /* Now update the STA entry with the new MAC address */
- if(WDI_STATUS_SUCCESS != WDI_STATableSetStaAddr( pWDICtx,
- ucSTAIdx,
- pwdiParam->staMacAddr))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Failed to update station entry - internal failure");
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- /* Now update the STA entry with the new BSSID address */
- if(WDI_STATUS_SUCCESS != WDI_STATableSetBSSID( pWDICtx,
- ucSTAIdx,
- pwdiParam->macBSSID))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "Failed to update station entry - internal failure");
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_AddSta*/
-
-/**
- @brief WDI_STATableDelSta - Function to Delete a Station
-
-
- @param pWDICtx: pointer to the WLAN DAL context
- ucSTAIdx: station to be deleted
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_STATableDelSta
-(
- WDI_ControlBlockType* pWDICtx,
- wpt_uint8 ucSTAIdx
-)
-{
- WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- /*-----------------------------------------------------------------------
- Sanity check
- - station ids are allocated by the HAL located on RIVA SS - they must
- always be valid
- -----------------------------------------------------------------------*/
- if(( ucSTAIdx == WDI_STA_INVALID_IDX )||
- ( ucSTAIdx >= pWDICtx->ucMaxStations ))
- {
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
- "STA Id invalid on Del STA - internal failure");
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
-
- wpalMemoryZero(&pSTATable[ucSTAIdx], sizeof(pSTATable[ucSTAIdx]));
- pSTATable->valid = 0;
- return WDI_STATUS_SUCCESS;
-}/*WDI_STATableDelSta*/
-
-/**
- @brief WDI_STATableBSSDelSta - Function to Delete Stations in this BSS
-
-
- @param pWDICtx: pointer to the WLAN DAL context
- ucBSSIdx: BSS index
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_STATableBSSDelSta
-(
- WDI_ControlBlockType* pWDICtx,
- wpt_uint8 ucBSSIdx
-)
-{
- WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
- wpt_uint8 ucSTAIdx;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- for (ucSTAIdx = 0; (ucSTAIdx < pWDICtx->ucMaxStations); ucSTAIdx++)
- {
- if( (pSTATable[ucSTAIdx].ucStaType == WDI_STA_ENTRY_PEER) &&
- (pSTATable[ucSTAIdx].bssIdx == ucBSSIdx))
- {
- WDI_STATableDelSta(pWDICtx, ucSTAIdx);
- }
- }
-
- return WDI_STATUS_SUCCESS;
-}/*WDI_STATableBSSDelSta*/
-
-
-/**
- @brief WDI_STATableGetStaBSSIDAddr - Gets the BSSID associated
- with this station
-
-
- @param pWDICtx: pointer to the WLAN DAL context
- ucSTAIdx: station index
- pmacBSSID: out BSSID for this STA
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_STATableGetStaBSSIDAddr
-(
- WDI_ControlBlockType* pWDICtx,
- wpt_uint8 ucSTAIdx,
- wpt_macAddr* pmacBSSID
-)
-{
- WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- if ((ucSTAIdx < pWDICtx->ucMaxStations) && (pSTATable[ucSTAIdx].valid))
- {
- wpalMemoryCopy(*pmacBSSID, pSTATable[ucSTAIdx].macBSSID, WDI_MAC_ADDR_LEN);
- return WDI_STATUS_SUCCESS;
- }
- else
- return WDI_STATUS_E_FAILURE;
-}/*WDI_STATableGetStaQosEnabled*/
-
-
-/**
- @brief WDI_STATableGetStaQosEnabled - Gets is qos is enabled
- for a sta
-
-
- @param pWDICtx: pointer to the WLAN DAL context
- ucSTAIdx: station index
- qosEnabled: out qos enabled
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_STATableGetStaQosEnabled
-(
- WDI_ControlBlockType* pWDICtx,
- wpt_uint8 ucSTAIdx,
- wpt_uint8* qosEnabled
-)
-{
- WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
- /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
- if ((ucSTAIdx < pWDICtx->ucMaxStations) && (pSTATable[ucSTAIdx].valid) && qosEnabled)
- {
- *qosEnabled = pSTATable[ucSTAIdx].qosEnabled;
- return WDI_STATUS_SUCCESS;
- }
- else
- return WDI_STATUS_E_FAILURE;
-}/*WDI_STATableGetStaQosEnabled*/
-
-/**
- @brief WDI_STATableSetStaQosEnabled - set qos mode for STA
-
-
- @param pWDICtx: pointer to the WLAN DAL context
- ucSTAIdx: station index
- qosEnabled: qos enabled
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_STATableSetStaQosEnabled
-(
- WDI_ControlBlockType* pWDICtx,
- wpt_uint8 ucSTAIdx,
- wpt_uint8 qosEnabled
-)
-{
- WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
- if ((ucSTAIdx < pWDICtx->ucMaxStations) && (pSTATable[ucSTAIdx].valid))
- {
- pSTATable[ucSTAIdx].qosEnabled = qosEnabled;
- return WDI_STATUS_SUCCESS;
- }
- else
- return WDI_STATUS_E_FAILURE;
-}/*WDI_STATableSetStaQosEnabled*/
-
-/**
- @brief WDI_STATableGetStaType - get sta type for STA
-
-
- @param pWDICtx: pointer to the WLAN DAL context
- ucSTAIdx: station index
- pStaType: qos enabled
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_STATableGetStaType
-(
- WDI_ControlBlockType* pWDICtx,
- wpt_uint8 ucSTAIdx,
- wpt_uint8* pStaType
-)
-{
- WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
- if ((ucSTAIdx < pWDICtx->ucMaxStations) && (pSTATable[ucSTAIdx].valid))
- {
- *pStaType = pSTATable[ucSTAIdx].ucStaType;
- return WDI_STATUS_SUCCESS;
- }
- else
- return WDI_STATUS_E_FAILURE;
-}/*WDI_STATableGetStaType*/
-
-/**
- @brief WDI_STATableSetStaType - sets sta type for STA
-
-
- @param pWDICtx: pointer to the WLAN DAL context
- ucSTAIdx: station index
- staType: sta type
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_STATableSetStaType
-(
- WDI_ControlBlockType* pWDICtx,
- wpt_uint8 ucSTAIdx,
- wpt_uint8 staType
-)
-{
- WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
- if ((ucSTAIdx < pWDICtx->ucMaxStations) && (pSTATable[ucSTAIdx].valid))
- {
- pSTATable[ucSTAIdx].ucStaType = staType;
- return WDI_STATUS_SUCCESS;
- }
- else
- return WDI_STATUS_E_FAILURE;
-}/*WDI_STATableSetStaType*/
-
-
-/**
- @brief WDI_CompareMacAddr - compare the MAC address
-
-
- @param addr1: address 1
- addr2: address 2
-
- @see
- @return Result of the function call
-*/
-WPT_STATIC WPT_INLINE wpt_uint8
-WDI_CompareMacAddr
-(
- wpt_uint8 addr1[],
- wpt_uint8 addr2[]
-)
-{
-#if defined( _X86_ )
- wpt_uint32 align = (0x3 & ((wpt_uint32) addr1 | (wpt_uint32) addr2 ));
-
- if( align ==0){
- return ((*((wpt_uint16 *) &(addr1[4])) == *((wpt_uint16 *) &(addr2[4])))&&
- (*((wpt_uint32 *) addr1) == *((wpt_uint32 *) addr2)));
- }else if(align == 2){
- return ((*((wpt_uint16 *) &addr1[4]) == *((wpt_uint16 *) &addr2[4])) &&
- (*((wpt_uint16 *) &addr1[2]) == *((wpt_uint16 *) &addr2[2])) &&
- (*((wpt_uint16 *) &addr1[0]) == *((wpt_uint16 *) &addr2[0])));
- }else{
- return ( (addr1[5]==addr2[5])&&
- (addr1[4]==addr2[4])&&
- (addr1[3]==addr2[3])&&
- (addr1[2]==addr2[2])&&
- (addr1[1]==addr2[1])&&
- (addr1[0]==addr2[0]));
- }
-#else
- return ( (addr1[0]==addr2[0])&&
- (addr1[1]==addr2[1])&&
- (addr1[2]==addr2[2])&&
- (addr1[3]==addr2[3])&&
- (addr1[4]==addr2[4])&&
- (addr1[5]==addr2[5]));
-#endif
-}/*WDI_CompareMacAddr*/
-
-
-/**
- @brief WDI_STATableFindStaidByAddr - Given a station mac address, search
- for the corresponding station index from the Station Table.
-
- @param pWDICtx: WDI Context pointer
- staAddr: station address
- pucStaId: output station id
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_STATableFindStaidByAddr
-(
- WDI_ControlBlockType* pWDICtx,
- wpt_macAddr staAddr,
- wpt_uint8* pucStaId
-)
-{
- WDI_Status wdiStatus = WDI_STATUS_E_FAILURE;
- wpt_uint8 i;
- WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
-
- for (i=0; i < pWDICtx->ucMaxStations; i++, pSTATable++)
- {
- if ( (pSTATable->valid == 1) && (WDI_CompareMacAddr(pSTATable->staAddr, staAddr)) )
- {
- *pucStaId = i;
- wdiStatus = WDI_STATUS_SUCCESS;
- break;
- }
- }
- return wdiStatus;
-}/*WDI_STATableFindStaidByAddr*/
-
-/**
- @brief WDI_STATableGetStaAddr - get station address
-
- @param pWDICtx: WDI Context pointer
- ucSTAIdx: station index
- pStaAddr: output station address
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_STATableGetStaAddr
-(
- WDI_ControlBlockType* pWDICtx,
- wpt_uint8 ucSTAIdx,
- wpt_uint8** pStaAddr
-)
-{
- WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
- if ((ucSTAIdx < pWDICtx->ucMaxStations) && (pSTATable[ucSTAIdx].valid))
- {
- *pStaAddr = pSTATable[ucSTAIdx].staAddr;
- return WDI_STATUS_SUCCESS;
- }
- else
- return WDI_STATUS_E_FAILURE;
-}/*WDI_STATableGetStaAddr*/
-
-/**
- @brief WDI_STATableSetStaAddr - set station address
-
- @param pWDICtx: WDI Context pointer
- ucSTAIdx: station index
- pStaAddr: output station address
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_STATableSetStaAddr
-(
- WDI_ControlBlockType* pWDICtx,
- wpt_uint8 ucSTAIdx,
- wpt_macAddr staAddr
-)
-{
- WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
- if ((ucSTAIdx < pWDICtx->ucMaxStations) && (pSTATable[ucSTAIdx].valid))
- {
- wpalMemoryCopy (pSTATable[ucSTAIdx].staAddr, staAddr, 6);
- return WDI_STATUS_SUCCESS;
- }
- else
- return WDI_STATUS_E_FAILURE;
-}/*WDI_STATableSetStaAddr*/
-
-/**
- @brief WDI_STATableSetBSSID - set station corresponding BSSID
-
- @param pWDICtx: WDI Context pointer
- ucSTAIdx: station index
- pStaAddr: output station address
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_STATableSetBSSID
-(
- WDI_ControlBlockType* pWDICtx,
- wpt_uint8 ucSTAIdx,
- wpt_macAddr macBSSID
-)
-{
- WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
- if ((ucSTAIdx < pWDICtx->ucMaxStations) && (pSTATable[ucSTAIdx].valid))
- {
- wpalMemoryCopy (pSTATable[ucSTAIdx].macBSSID, macBSSID, 6);
- return WDI_STATUS_SUCCESS;
- }
- else
- return WDI_STATUS_E_FAILURE;
-}/*WDI_STATableSetBSSID*/
-
-/**
- @brief WDI_STATableSetBSSIdx - set station corresponding BSS index
-
- @param pWDICtx: WDI Context pointer
- ucSTAIdx: station index
- ucBSSIdx: BSS index
-
- @see
- @return Result of the function call
-*/
-WDI_Status
-WDI_STATableSetBSSIdx
-(
- WDI_ControlBlockType* pWDICtx,
- wpt_uint8 ucSTAIdx,
- wpt_uint8 ucBSSIdx
-)
-{
- WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
- if ((ucSTAIdx < pWDICtx->ucMaxStations) && (pSTATable[ucSTAIdx].valid))
- {
- pSTATable[ucSTAIdx].bssIdx = ucBSSIdx;
- return WDI_STATUS_SUCCESS;
- }
- else
- return WDI_STATUS_E_FAILURE;
-}/*WDI_STATableSetBSSIdx*/
diff --git a/Kbuild b/Kbuild
index c4eecf2be895..b0e30052fe34 100644
--- a/Kbuild
+++ b/Kbuild
@@ -845,11 +845,6 @@ WDI_DIR := CORE/WDI
WDI_CP_INC := -I$(WLAN_ROOT)/$(WDI_DIR)/CP/inc/
-WDI_CP_SRC_DIR := $(WDI_DIR)/CP/src
-WDI_CP_OBJS := $(WDI_CP_SRC_DIR)/wlan_qct_wdi.o \
- $(WDI_CP_SRC_DIR)/wlan_qct_wdi_dp.o \
- $(WDI_CP_SRC_DIR)/wlan_qct_wdi_sta.o
-
WDI_DP_INC := -I$(WLAN_ROOT)/$(WDI_DIR)/DP/inc/
WDI_DP_SRC_DIR := $(WDI_DIR)/DP/src
@@ -890,8 +885,7 @@ WDI_INC := $(WDI_CP_INC) \
WDI_OBJS := $(WDI_WPAL_OBJS)
ifeq ($(CONFIG_QCA_WIFI_2_0), 0)
-WDI_OBJS += $(WDI_CP_OBJS) \
- $(WDI_DP_OBJS) \
+WDI_OBJS += $(WDI_DP_OBJS) \
$(WDI_TRP_OBJS)
endif