blob: 70c2eb650efb2631da795883a29adfc4ad4304ed [file] [log] [blame]
/*
* Copyright (c) 2012-2015 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.
*/
#ifndef WLAN_QCT_DXE_H
#define WLAN_QCT_DXE_H
/**=========================================================================
@file wlan_qct_dxe.h
@brief
This file contains the external API exposed by the wlan data transfer abstraction layer module.
========================================================================*/
/*===========================================================================
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
-------- --- ----------------------------------------------------------
08/03/10 schang Created module.
===========================================================================*/
/*===========================================================================
INCLUDE FILES FOR MODULE
===========================================================================*/
/*----------------------------------------------------------------------------
* Include Files
* -------------------------------------------------------------------------*/
#include "wlan_qct_pal_api.h"
#include "wlan_qct_pal_packet.h"
#include "wlan_qct_pal_status.h"
#include "wlan_qct_pal_type.h"
#include "wlan_qct_pal_msg.h"
#include "wlan_qct_pal_sync.h"
#include "wlan_qct_wdi_dts.h"
/*----------------------------------------------------------------------------
* Type Declarations
* -------------------------------------------------------------------------*/
/* DXE Descriptor contents SWAP option flag */
//#define WLANDXE_ENDIAN_SWAP_ENABLE
/* Default RX OS frame buffer size
* Size must be same with Vos Packet Size */
#define WLANDXE_DEFAULT_RX_OS_BUFFER_SIZE (VPKT_SIZE_BUFFER)
/*reserve 30B of skb buff, to add NL header*/
#define WLANDXE_NL_HEADER_SZ (30)
/*MAX data transferred in one skb*/
#define WLANDXE_FW_LOGGING_XFSIZE (WLANDXE_DEFAULT_RX_OS_BUFFER_SIZE - \
WLANDXE_NL_HEADER_SZ)
/*The maximum number of packets that can be chained in dxe for the Low
priority channel
Note: Increased it to 240 from 128 for Windows(EA) becase Windows is
able to push 2~6 packet chain in one NET_BUFFER. It causes TX low
resource condition more easily than LA. It ends up to cause low
throughut number and spend more CPU time*/
#ifdef WINDOWS_DT
#define WLANDXE_LO_PRI_RES_NUM 240
#else
#define WLANDXE_LO_PRI_RES_NUM 128
#endif
/*The maximum number of packets that can be chained in dxe for the HI
priority channel */
#define WLANDXE_HI_PRI_RES_NUM 10
typedef enum
{
WLANDXE_POWER_STATE_FULL,
WLANDXE_POWER_STATE_IMPS,
WLANDXE_POWER_STATE_BMPS,
WLANDXE_POWER_STATE_BMPS_PENDING,
WLANDXE_POWER_STATE_DOWN,
WLANDXE_POWER_STATE_MAX
} WLANDXE_PowerStateType;
typedef enum
{
WLANDXE_RIVA_POWER_STATE_ACTIVE,
WLANDXE_RIVA_POWER_STATE_IMPS_UNKNOWN,
WLANDXE_RIVA_POWER_STATE_BMPS_UNKNOWN,
WLANDXE_RIVA_POWER_STATE_DOWN_UNKNOWN,
WLANDXE_RIVA_POWER_STATE_MAX
} WLANDXE_RivaPowerStateType;
/*==========================================================================
@ Type Name
WLANDXE_RxFrameReadyCbType
@ Description
RX Frame Ready indication CB
@ Parameters
pVoid pAdapter : Driver global control block pointer
palPacket pRXFramePtr : Received Frame Pointer
pVoid userCtxt : DTS user contect pointer
@ Return
wpt_status
===========================================================================*/
typedef WDTS_RxFrameReadyCbType WLANDXE_RxFrameReadyCbType;
/*==========================================================================
@ Type Name
WLANDXE_TxCompleteCbType
@ Description
TX complete indication CB
@ Parameters
pVoid pAdapter : Driver global control block pointer
void pTXFramePtr : Completed TX Frame Pointer
pVoid userCtxt : DTS user contect pointer
@ Return
wpt_status
===========================================================================*/
typedef WDTS_TxCompleteCbType WLANDXE_TxCompleteCbType;
/*==========================================================================
@ Type Name
WLANDXE_LowResourceCbType
@ Description
DXE Low resource indication CB
@ Parameters
pVoid pAdapter : Driver global control block pointer
BOOL lowResourceCondition : DXE low resource or not
pVoid userCtxt : DTS user contect pointer
@ Return
wpt_status
===========================================================================*/
typedef WDTS_LowResourceCbType WLANDXE_LowResourceCbType;
/*==========================================================================
@ Type Name
WLANDXE_MbReceiveMsgCbType
@ Description
DXE Mailbox mes receive indiacation
@ Parameters
void
@ Return
void
===========================================================================*/
typedef WDTS_MbReceiveMsgType WLANDXE_MbReceiveMsgCbType;
typedef WDTS_RxLogDoneType WLANDXE_RxLogDoneType;
/*==========================================================================
@ Type Name
WLANDXE_SetPowerStateCbType
@ Description
DXE Set power state ACK callback. This callback function should be
invoked by the DXE to notify WDI that set power state request is complete
@ Parameters
status status of the set operation
pUserData Cookie that should be passed back to the caller along with the
callback.
@ Return
None
===========================================================================*/
typedef WDTS_SetPSCbType WLANDXE_SetPowerStateCbType;
/*-------------------------------------------------------------------------
*Function declarations and documenation
*-------------------------------------------------------------------------*/
/*==========================================================================
@ Function Name
WLANDXE_Open
@ Description
Open host DXE driver, allocate DXE resources
Allocate, DXE local control block, DXE descriptor pool, DXE descriptor control block pool
@ Parameters
pVoid pAdapter : Driver global control block pointer
@ Return
pVoid DXE local module control block pointer
===========================================================================*/
void *WLANDXE_Open
(
void
);
/*==========================================================================
@ Function Name
WLANDXE_ClientRegistration
@ Description
Make callback functions registration into DXE driver from DXE driver client
@ Parameters
pVoid pDXEContext : DXE module control block
WDTS_ClientCallbacks WDTSCb : Callbacks to WDTS to indicate various events
void *userContext : DXE Cliennt control block
@ Return
wpt_status
===========================================================================*/
wpt_status WLANDXE_ClientRegistration
(
void *pDXEContext,
WDTS_ClientCallbacks WDTSCb,
void *userContext
);
/*==========================================================================
@ Function Name
WLANDXE_Start
@ Description
Start Host DXE driver
Initialize DXE channels and start channel
@ Parameters
pVoid pDXEContext : DXE module control block
@ Return
wpt_status
===========================================================================*/
wpt_status WLANDXE_Start
(
void *pDXEContext
);
/*==========================================================================
@ Function Name
WLANDXE_TXFrame
@ Description
Trigger frame transmit from host to RIVA
@ Parameters
pVoid pDXEContext : DXE Control Block
wpt_packet pPacket : transmit packet structure
WDTS_ChannelType channel : TX channel
@ Return
wpt_status
===========================================================================*/
wpt_status WLANDXE_TxFrame
(
void *pDXEContext,
wpt_packet *pPacket,
WDTS_ChannelType channel
);
/*==========================================================================
@ Function Name
WLANDXE_CompleteTX
@ Description
Informs DXE that the current series of Tx packets is complete
@ Parameters
pDXEContext : DXE Control Block
ucTxResReq TX resource number required by TL/WDI
@ Return
wpt_status
===========================================================================*/
wpt_status
WLANDXE_CompleteTX
(
void* pDXEContext,
wpt_uint32 ucTxResReq
);
/*==========================================================================
@ Function Name
WLANDXE_Stop
@ Description
Stop DXE channels and DXE engine operations
@ Parameters
pVoid pDXEContext : DXE Control Block
@ Return
wpt_status
===========================================================================*/
wpt_status WLANDXE_Stop
(
void *pDXEContext
);
/*==========================================================================
@ Function Name
WLANDXE_Close
@ Description
Close DXE channels
Free DXE related resources
DXE descriptor free
Descriptor control block free
Pre allocated RX buffer free
@ Parameters
pVoid pDXEContext : DXE Control Block
@ Return
wpt_status
===========================================================================*/
wpt_status WLANDXE_Close
(
void *pDXEContext
);
/*==========================================================================
@ Function Name
WLANDXE_TriggerTX
@ Description
TBD
@ Parameters
pVoid pDXEContext : DXE Control Block
@ Return
wpt_status
===========================================================================*/
wpt_status WLANDXE_TriggerTX
(
void *pDXEContext
);
/*==========================================================================
@ Function Name
WLANDXE_SetPowerState
@ Description
From Client let DXE knows what is the WLAN HW(RIVA) power state
@ Parameters
pVoid pDXEContext : DXE Control Block
WLANDXE_PowerStateType powerState
@ Return
wpt_status
===========================================================================*/
wpt_status WLANDXE_SetPowerState
(
void *pDXEContext,
WDTS_PowerStateType powerState,
WDTS_SetPSCbType cBack
);
/*==========================================================================
@ Function Name
WLANDXE_GetFreeTxDataResNumber
@ Description
Returns free descriptor numbers for TX data channel (TX high priority)
@ Parameters
pVoid pDXEContext : DXE Control Block
@ Return
wpt_uint32 Free descriptor number of TX high pri ch
===========================================================================*/
wpt_uint32 WLANDXE_GetFreeTxDataResNumber
(
void *pDXEContext
);
/*==========================================================================
@ Function Name
WLANDXE_ChannelDebug
@ Description
Display DXE Channel debugging information
User may request to display DXE channel snapshot
Or if host driver detects any abnormal stcuk may display
@ Parameters
displaySnapshot : Display DXE snapshot option
debugFlags : Enable stall detect features
defined by WPAL_DeviceDebugFlags
These features may effect
data performance.
@ Return
NONE
===========================================================================*/
void WLANDXE_ChannelDebug
(
wpt_boolean displaySnapshot,
wpt_uint8 debugFlags
);
/*==========================================================================
@ Function Name
WLANDXE_KickDxe
@ Description
Kick Dxe when HDD TX timeout happen
@ Parameters
NONE
@ Return
NONE
===========================================================================*/
void WLANDXE_KickDxe
(
void
);
wpt_uint32 WLANDXE_SetupLogTransfer
(
wpt_uint64 bufferAddr,
wpt_uint32 bufferLen
);
wpt_status WLANDXE_StartLogTransfer
(
void
);
#endif /* WLAN_QCT_DXE_H */