prima: WLAN Driver Release 3.1.7.9
This is the initial release of the Prima WLAN Driver
diff --git a/CORE/BAP/src/bapApiInfo.c b/CORE/BAP/src/bapApiInfo.c
new file mode 100644
index 0000000..4e43c84
--- /dev/null
+++ b/CORE/BAP/src/bapApiInfo.c
@@ -0,0 +1,605 @@
+/*
+ * Copyright (c) 2012, Code Aurora Forum. 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.
+ */
+
+/*===========================================================================
+
+ b a p A p i I n f o . C
+
+ OVERVIEW:
+
+ This software unit holds the implementation of the WLAN BAP modules
+ Information functions.
+
+ The functions externalized by this module are to be called ONLY by other
+ WLAN modules (HDD) that properly register with the BAP Layer initially.
+
+ DEPENDENCIES:
+
+ Are listed for each API below.
+
+
+ Copyright (c) 2008 QUALCOMM Incorporated.
+ All Rights Reserved.
+ Qualcomm Confidential and Proprietary
+===========================================================================*/
+
+/*===========================================================================
+
+ EDIT HISTORY FOR FILE
+
+
+ This section contains comments describing changes made to the module.
+ Notice that changes are listed in reverse chronological order.
+
+
+ $Header: /cygdrive/c/Dropbox/M7201JSDCAAPAD52240B/WM/platform/msm7200/Src/Drivers/SD/ClientDrivers/WLAN/QCT_BTAMP_PAL/CORE/BAP/src/bapApiInfo.c,v 1.2 2008/11/10 22:55:24 jzmuda Exp jzmuda $$DateTime$$Author: jzmuda $
+
+
+ when who what, where, why
+---------- --- --------------------------------------------------------
+2008-09-15 jez Created module
+
+===========================================================================*/
+
+/*----------------------------------------------------------------------------
+ * Include Files
+ * -------------------------------------------------------------------------*/
+//#include "wlan_qct_tl.h"
+#include "vos_trace.h"
+#include "sme_Api.h"
+/* BT-AMP PAL API header file */
+#include "bapApi.h"
+#include "bapInternal.h"
+
+//#define BAP_DEBUG
+/*----------------------------------------------------------------------------
+ * Preprocessor Definitions and Constants
+ * -------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+ * Type Declarations
+ * -------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+ * Global Data Definitions
+ * -------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+ * Static Variable Definitions
+ * -------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+ * Static Function Declarations and Definitions
+ * -------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+ * Externalized Function Definitions
+* -------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+ * Function Declarations and Documentation
+ * -------------------------------------------------------------------------*/
+
+
+/* Informational Parameters */
+
+/*----------------------------------------------------------------------------
+
+ FUNCTION WLAN_BAPReadLocalVersionInfo()
+
+ DESCRIPTION
+ Implements the actual HCI Read Local Version Info command. There
+ is no need for a callback because when this call returns the action
+ has been completed.
+
+ DEPENDENCIES
+ NA.
+
+ PARAMETERS
+
+ IN
+ btampHandle: pointer to the BAP handle. Returned from WLANBAP_GetNewHndl.
+ // There are really no input parameters in this command.
+ // Just the command opcode itself is sufficient.
+
+ IN/OUT
+ pBapHCIEvent: Return event value for the command complete event.
+ (The caller of this routine is responsible for sending
+ the Command Complete event up the HCI interface.)
+
+ RETURN VALUE
+ The result code associated with performing the operation
+
+ VOS_STATUS_E_FAULT: pointer to pBapHCIReadLocalVersionInfo is NULL
+ VOS_STATUS_SUCCESS: Success
+
+ SIDE EFFECTS
+
+----------------------------------------------------------------------------*/
+VOS_STATUS
+WLAN_BAPReadLocalVersionInfo
+(
+ ptBtampHandle btampHandle,
+ tpBtampHCI_Event pBapHCIEvent /* This now encodes ALL event types */
+ /* Including "Read" Command Complete*/
+)
+{
+
+ /* Validate params */
+ if (btampHandle == NULL) {
+ return VOS_STATUS_E_FAULT;
+ }
+
+
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_INFO_HIGH, "%s: btampHandle value: %x", __FUNCTION__, btampHandle);
+
+
+ /* Format the command complete event to return... */
+ pBapHCIEvent->bapHCIEventCode = BTAMP_TLV_HCI_COMMAND_COMPLETE_EVENT;
+ pBapHCIEvent->u.btampCommandCompleteEvent.present = 1;
+ pBapHCIEvent->u.btampCommandCompleteEvent.num_hci_command_packets = 1;
+ pBapHCIEvent->u.btampCommandCompleteEvent.command_opcode
+ = BTAMP_TLV_HCI_READ_LOCAL_VERSION_INFO_CMD;
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Read_Local_Version_Info.status
+ = WLANBAP_STATUS_SUCCESS;
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Read_Local_Version_Info.HC_HCI_Version
+ = WLANBAP_HCI_VERSION;
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Read_Local_Version_Info.HC_HCI_Revision
+ = WLANBAP_HCI_REVISION;
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Read_Local_Version_Info.HC_PAL_Version
+ = WLANBAP_PAL_VERSION;
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Read_Local_Version_Info.HC_Manufac_Name
+ = WLANBAP_QUALCOMM_COMPANY_ID;
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Read_Local_Version_Info.HC_PAL_Sub_Version
+ = WLANBAP_PAL_SUBVERSION;
+
+ return VOS_STATUS_SUCCESS;
+} /* WLAN_BAPReadLocalVersionInfo */
+
+/*----------------------------------------------------------------------------
+
+ FUNCTION WLAN_BAPReadLocalSupportedCmds()
+
+ DESCRIPTION
+ Implements the actual HCI Read Local Supported Commands. There
+ is no need for a callback because when this call returns the action
+ has been completed.
+
+ DEPENDENCIES
+ NA.
+
+ PARAMETERS
+
+ IN
+ btampHandle: pointer to the BAP handle. Returned from WLANBAP_GetNewHndl.
+ // There are really no input parameters in this command.
+ // Just the command opcode itself is sufficient.
+
+ IN/OUT
+ pBapHCIEvent: Return event value for the command complete event.
+ (The caller of this routine is responsible for sending
+ the Command Complete event up the HCI interface.)
+
+ RETURN VALUE
+ The result code associated with performing the operation
+
+ VOS_STATUS_E_FAULT: pointer to pBapHCIReadLocalSupportedCmds is NULL
+ VOS_STATUS_SUCCESS: Success
+
+ SIDE EFFECTS
+
+----------------------------------------------------------------------------*/
+VOS_STATUS
+WLAN_BAPReadLocalSupportedCmds
+(
+ ptBtampHandle btampHandle,
+ tpBtampHCI_Event pBapHCIEvent /* This now encodes ALL event types */
+ /* Including "Read" Command Complete*/
+)
+{
+ v_U8_t supportedCmds[] = WLANBAP_PAL_SUPPORTED_HCI_CMDS;
+ /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
+
+
+ /* Validate params */
+ if (btampHandle == NULL) {
+ return VOS_STATUS_E_FAULT;
+ }
+
+
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_INFO_HIGH, "%s: btampHandle value: %x", __FUNCTION__, btampHandle);
+
+
+ /* Format the command complete event to return... */
+ pBapHCIEvent->bapHCIEventCode = BTAMP_TLV_HCI_COMMAND_COMPLETE_EVENT;
+ pBapHCIEvent->u.btampCommandCompleteEvent.present = 1;
+ pBapHCIEvent->u.btampCommandCompleteEvent.num_hci_command_packets = 1;
+ pBapHCIEvent->u.btampCommandCompleteEvent.command_opcode
+ = BTAMP_TLV_HCI_READ_LOCAL_SUPPORTED_CMDS_CMD;
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Read_Local_Supported_Cmds.status
+ = WLANBAP_STATUS_SUCCESS;
+ /* Return the supported commands bitmask */
+ vos_mem_copy(
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Read_Local_Supported_Cmds.HC_Support_Cmds,
+ supportedCmds,
+ sizeof( supportedCmds));
+
+ return VOS_STATUS_SUCCESS;
+} /* WLAN_BAPReadLocalSupportedCmds */
+
+/*----------------------------------------------------------------------------
+
+ FUNCTION WLAN_BAPReadBufferSize()
+
+ DESCRIPTION
+ Implements the actual HCI Read Buffer Size command. There
+ is no need for a callback because when this call returns the action
+ has been completed.
+
+ DEPENDENCIES
+ NA.
+
+ PARAMETERS
+
+ IN
+ btampHandle: pointer to the BAP handle. Returned from WLANBAP_GetNewHndl.
+ pBapHCIReadBufferSize: pointer to the "HCI Read Buffer Size" Structure.
+
+ IN/OUT
+ pBapHCIEvent: Return event value for the command complete event.
+ (The caller of this routine is responsible for sending
+ the Command Complete event up the HCI interface.)
+
+ RETURN VALUE
+ The result code associated with performing the operation
+
+ VOS_STATUS_E_FAULT: pointer to pBapHCIReadBufferSize is NULL
+ VOS_STATUS_SUCCESS: Success
+
+ SIDE EFFECTS
+
+----------------------------------------------------------------------------*/
+VOS_STATUS
+WLAN_BAPReadBufferSize
+(
+ ptBtampHandle btampHandle,
+ tpBtampHCI_Event pBapHCIEvent /* This now encodes ALL event types */
+ /* Including "Read" Command Complete*/
+)
+{
+ /* Validate params */
+ if (btampHandle == NULL) {
+ return VOS_STATUS_E_FAULT;
+ }
+
+
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_INFO_HIGH, "%s: btampHandle value: %x", __FUNCTION__, btampHandle);
+
+
+ /* Format the command complete event to return... */
+ pBapHCIEvent->bapHCIEventCode = BTAMP_TLV_HCI_COMMAND_COMPLETE_EVENT;
+ pBapHCIEvent->u.btampCommandCompleteEvent.present = 1;
+ pBapHCIEvent->u.btampCommandCompleteEvent.num_hci_command_packets = 1;
+ pBapHCIEvent->u.btampCommandCompleteEvent.command_opcode
+ = BTAMP_TLV_HCI_READ_BUFFER_SIZE_CMD;
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Read_Buffer_Size.status
+ = WLANBAP_STATUS_SUCCESS;
+ /* Return the supported Buffer sizes */
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Read_Buffer_Size.HC_ACL_Data_Packet_Length
+ = WLANBAP_MAX_80211_PAL_PDU_SIZE;
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Read_Buffer_Size.HC_SCO_Packet_Length
+ = 0; /* Invalid assignment to Uint8, makes 0 */
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Read_Buffer_Size.HC_Total_Num_ACL_Packets
+ = 16;
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Read_Buffer_Size.HC_Total_Num_SCO_Packets
+ = 0;
+
+ return VOS_STATUS_SUCCESS;
+} /* WLAN_BAPReadBufferSize */
+
+/*----------------------------------------------------------------------------
+
+ FUNCTION WLAN_BAPReadDataBlockSize()
+
+ DESCRIPTION
+ Implements the actual HCI Read Data Block Size command. There
+ is no need for a callback because when this call returns the action
+ has been completed.
+
+ DEPENDENCIES
+ NA.
+
+ PARAMETERS
+
+ IN
+ btampHandle: pointer to the BAP handle. Returned from WLANBAP_GetNewHndl.
+
+ IN/OUT
+ pBapHCIEvent: Return event value for the command complete event.
+ (The caller of this routine is responsible for sending
+ the Command Complete event up the HCI interface.)
+
+ RETURN VALUE
+ The result code associated with performing the operation
+
+ VOS_STATUS_E_FAULT: pointer to pBapHCIReadDataBlockSize is NULL
+ VOS_STATUS_SUCCESS: Success
+
+ SIDE EFFECTS
+
+----------------------------------------------------------------------------*/
+VOS_STATUS
+WLAN_BAPReadDataBlockSize
+(
+ ptBtampHandle btampHandle,
+ tpBtampHCI_Event pBapHCIEvent /* This now encodes ALL event types */
+ /* Including "Read" Command Complete*/
+)
+{
+ /* Validate params */
+ if ((btampHandle == NULL) || (NULL == pBapHCIEvent))
+ {
+ return VOS_STATUS_E_FAULT;
+ }
+
+
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_INFO_HIGH, "%s: btampHandle value: %x", __FUNCTION__, btampHandle);
+
+
+ /* Format the command complete event to return... */
+ pBapHCIEvent->bapHCIEventCode = BTAMP_TLV_HCI_COMMAND_COMPLETE_EVENT;
+ pBapHCIEvent->u.btampCommandCompleteEvent.present = 1;
+ pBapHCIEvent->u.btampCommandCompleteEvent.num_hci_command_packets = 1;
+ pBapHCIEvent->u.btampCommandCompleteEvent.command_opcode
+ = BTAMP_TLV_HCI_READ_DATA_BLOCK_SIZE_CMD;
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Read_Data_Block_Size.status
+ = WLANBAP_STATUS_SUCCESS;
+ /* Return the supported Block sizes */
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Read_Data_Block_Size.HC_Data_Block_Length
+ = WLANBAP_MAX_80211_PAL_PDU_SIZE;
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Read_Data_Block_Size.HC_Max_ACL_Data_Packet_Length
+ = WLANBAP_MAX_80211_PAL_PDU_SIZE;
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Read_Data_Block_Size.HC_Total_Num_Data_Blocks
+ = 16;
+
+ return VOS_STATUS_SUCCESS;
+} /* WLAN_BAPReadDataBlockSize */
+
+
+/*----------------------------------------------------------------------------
+
+ FUNCTION WLAN_BAPSetConfig()
+
+ DESCRIPTION
+ The function updates some configuration for BAP module in SME during SMEs
+ close -> open sequence.
+
+ BAP applies the new configuration at the next transaction.
+
+
+ DEPENDENCIES
+ NA.
+
+ PARAMETERS
+
+ IN
+ btampHandle: pointer to the BAP handle. Returned from WLANBAP_GetNewHndl.
+ pBapHCIReadRSSI: pointer to the "HCI Read RSSI" structure.
+
+ IN
+ pConfig: a pointer to a caller allocated object of typedef struct WLANBAP_ConfigType.
+
+ RETURN VALUE
+ The result code associated with performing the operation
+
+ VOS_STATUS_E_FAULT: pConfig or btampHandle is NULL
+ VOS_STATUS_SUCCESS: Success
+
+ SIDE EFFECTS
+
+----------------------------------------------------------------------------*/
+VOS_STATUS
+WLAN_BAPSetConfig
+(
+ ptBtampHandle btampHandle,
+ WLANBAP_ConfigType *pConfig
+)
+{
+ ptBtampContext btampContext;
+ /* Validate params */
+ if ((NULL == btampHandle)|| (NULL == pConfig))
+ {
+ return VOS_STATUS_E_FAULT;
+ }
+ btampContext = (ptBtampContext) btampHandle; /* btampContext value */
+
+ btampContext->config.ucPreferredChannel = pConfig->ucPreferredChannel;
+ return VOS_STATUS_SUCCESS;
+}
+
+/*----------------------------------------------------------------------------
+
+ FUNCTION WLAN_BAPGetMask()
+
+ DESCRIPTION
+ The function gets the updated event mask from BAP core.
+
+
+
+ DEPENDENCIES
+ NA.
+
+ PARAMETERS
+
+ IN
+ btampHandle: pointer to the BAP handle. Returned from WLANBAP_GetNewHndl.
+
+
+ IN
+ pEvent_mask_page_2: a pointer to a caller allocated object of 8 bytes.
+
+ RETURN VALUE
+ The result code associated with performing the operation
+
+ VOS_STATUS_E_FAULT: pEvent_mask_page_2 or btampHandle is NULL
+ VOS_STATUS_SUCCESS: Success
+
+ SIDE EFFECTS
+
+----------------------------------------------------------------------------*/
+VOS_STATUS
+WLAN_BAPGetMask( ptBtampHandle btampHandle,
+ v_U8_t *pEvent_mask_page_2)
+{
+ ptBtampContext btampContext;
+ /* Validate params */
+ if ((NULL == btampHandle)|| (NULL == pEvent_mask_page_2))
+ {
+ return VOS_STATUS_E_FAULT;
+ }
+ btampContext = (ptBtampContext) btampHandle; /* btampContext value */
+
+ vos_mem_copy( pEvent_mask_page_2,
+ btampContext->event_mask_page_2,
+ 8 );
+ return VOS_STATUS_SUCCESS;
+}
+
+/*----------------------------------------------------------------------------
+
+ FUNCTION WLAN_BAPDisconnect()
+
+ DESCRIPTION
+ The function to request to BAP core to disconnect currecnt AMP connection.
+
+
+
+ DEPENDENCIES
+ NA.
+
+ PARAMETERS
+
+ IN
+ btampHandle: pointer to the BAP handle. Returned from WLANBAP_GetNewHndl.
+
+
+ RETURN VALUE
+ The result code associated with performing the operation
+
+ VOS_STATUS_E_FAULT: btampHandle is NULL
+ VOS_STATUS_SUCCESS: Success
+
+ SIDE EFFECTS
+
+----------------------------------------------------------------------------*/
+VOS_STATUS
+WLAN_BAPDisconnect
+(
+ ptBtampHandle btampHandle
+)
+{
+ ptBtampContext btampContext = (ptBtampContext) btampHandle;
+ tWLAN_BAPEvent bapEvent; /* State machine event */
+ v_U8_t status; /* return the BT-AMP status here */
+ VOS_STATUS vosStatus;
+ /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
+
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_FATAL, "%s: btampHandle value: %x", __FUNCTION__, btampHandle);
+
+ /* Validate params */
+ if (btampHandle == NULL)
+ {
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_FATAL,
+ "btampHandle is NULL in %s", __FUNCTION__);
+
+ return VOS_STATUS_E_FAULT;
+ }
+
+ /* Fill in the event structure */
+ bapEvent.event = eWLAN_BAP_MAC_INDICATES_MEDIA_DISCONNECTION;
+ bapEvent.params = NULL;
+
+
+ /* Handle event */
+ vosStatus = btampFsm(btampContext, &bapEvent, &status);
+
+
+ /* Fill in the event structure */
+ bapEvent.event = eWLAN_BAP_MAC_READY_FOR_CONNECTIONS;
+ bapEvent.params = NULL;
+
+ /* Handle event */
+ vosStatus = btampFsm(btampContext, &bapEvent, &status);
+
+
+ return VOS_STATUS_SUCCESS;
+}
+
+/*----------------------------------------------------------------------------
+
+ FUNCTION WLAN_BAPSessionOn()
+
+ DESCRIPTION
+ The function to check from BAP core if AMP connection is up right now.
+
+
+
+ DEPENDENCIES
+ NA.
+
+ PARAMETERS
+
+ IN
+ btampHandle: pointer to the BAP handle. Returned from WLANBAP_GetNewHndl.
+
+
+ RETURN VALUE
+ The result code associated with performing the operation
+
+ VOS_TRUE: AMP connection is on
+ VOS_FALSE: AMP connection is not on
+
+ SIDE EFFECTS
+
+----------------------------------------------------------------------------*/
+v_BOOL_t WLAN_BAPSessionOn
+(
+ ptBtampHandle btampHandle
+)
+{
+ ptBtampContext btampContext = (ptBtampContext) btampHandle;
+ /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
+
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_INFO_HIGH, "%s: btampHandle value: %x", __FUNCTION__, btampHandle);
+
+ /* Validate params */
+ if (btampHandle == NULL)
+ {
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR,
+ "btampHandle is NULL in %s", __FUNCTION__);
+
+ //?? shall we say true or false
+ return VOS_FALSE;
+ }
+
+ return btampContext->btamp_session_on;
+}