prima: Changes to pass the txBdToken to firmware.
Enhanced txBd completion requires passing the txBdToken to fw.
This gerrit has to changes to initialize and pass the txBdToken
to fw.
Change-Id: I83ec9a27e2325cb70562f65778f19794971959b4
CRs-Fixed: 812924
diff --git a/CORE/MAC/inc/aniGlobal.h b/CORE/MAC/inc/aniGlobal.h
index bd11297..dfe0169 100644
--- a/CORE/MAC/inc/aniGlobal.h
+++ b/CORE/MAC/inc/aniGlobal.h
@@ -926,6 +926,7 @@
* debug marker frame.
*/
tANI_U32 remOnChnSeqNum;
+ tANI_U32 txBdToken;
} tAniSirLim, *tpAniSirLim;
typedef struct sLimMgmtFrameRegistration
diff --git a/CORE/MAC/src/pe/lim/limApi.c b/CORE/MAC/src/pe/lim/limApi.c
index 75b56eb..2759743 100644
--- a/CORE/MAC/src/pe/lim/limApi.c
+++ b/CORE/MAC/src/pe/lim/limApi.c
@@ -351,6 +351,7 @@
pMac->lim.gScanInPowersave = 0;
pMac->lim.probeCounter = 0;
pMac->lim.maxProbe = 0;
+ pMac->lim.txBdToken = 0;
}
static void __limInitAssocVars(tpAniSirGlobal pMac)
diff --git a/CORE/MAC/src/pe/lim/limP2P.c b/CORE/MAC/src/pe/lim/limP2P.c
index bea1899..b23b55e 100644
--- a/CORE/MAC/src/pe/lim/limP2P.c
+++ b/CORE/MAC/src/pe/lim/limP2P.c
@@ -1255,7 +1255,7 @@
halstatus = halTxFrameWithTxComplete( pMac, pPacket, (tANI_U16)nBytes,
HAL_TXRX_FRM_802_11_MGMT, ANI_TXDIR_TODS,
7,/*SMAC_SWBD_TX_TID_MGMT_HIGH */ limTxComplete, pFrame,
- limP2PActionCnf, txFlag );
+ limP2PActionCnf, txFlag, pMac->lim.txBdToken++ );
if ( ! HAL_STATUS_SUCCESS ( halstatus ) )
{
diff --git a/CORE/MAC/src/pe/lim/limProcessTdls.c b/CORE/MAC/src/pe/lim/limProcessTdls.c
index b486788..68c4258 100644
--- a/CORE/MAC/src/pe/lim/limProcessTdls.c
+++ b/CORE/MAC/src/pe/lim/limProcessTdls.c
@@ -757,7 +757,8 @@
TID_AC_VI,
limTxComplete, pFrame,
limMgmtTXComplete,
- HAL_USE_BD_RATE2_FOR_MANAGEMENT_FRAME);
+ HAL_USE_BD_RATE2_FOR_MANAGEMENT_FRAME,
+ pMac->lim.txBdToken++);
if ( ! HAL_STATUS_SUCCESS ( halstatus ) )
{
pMac->lim.mgmtFrameSessionId = 0xff;
@@ -1278,7 +1279,8 @@
0,
limTxComplete, pFrame,
limMgmtTXComplete,
- HAL_USE_SELF_STA_REQUESTED_MASK );
+ HAL_USE_SELF_STA_REQUESTED_MASK,
+ pMac->lim.txBdToken++);
if ( ! HAL_STATUS_SUCCESS ( halstatus ) )
{
pMac->lim.mgmtFrameSessionId = 0xff;
@@ -1579,7 +1581,8 @@
TID_AC_BK,
limTxComplete, pFrame,
limMgmtTXComplete,
- HAL_USE_BD_RATE2_FOR_MANAGEMENT_FRAME );
+ HAL_USE_BD_RATE2_FOR_MANAGEMENT_FRAME,
+ pMac->lim.txBdToken++);
if ( ! HAL_STATUS_SUCCESS ( halstatus ) )
{
@@ -1772,7 +1775,8 @@
TID_AC_VI,
limTxComplete, pFrame,
limMgmtTXComplete,
- HAL_USE_BD_RATE2_FOR_MANAGEMENT_FRAME );
+ HAL_USE_BD_RATE2_FOR_MANAGEMENT_FRAME,
+ pMac->lim.txBdToken++);
if ( ! HAL_STATUS_SUCCESS ( halstatus ) )
{
pMac->lim.mgmtFrameSessionId = 0xff;
@@ -2030,7 +2034,8 @@
TID_AC_BK,
limTxComplete, pFrame,
limMgmtTXComplete,
- HAL_USE_BD_RATE2_FOR_MANAGEMENT_FRAME );
+ HAL_USE_BD_RATE2_FOR_MANAGEMENT_FRAME,
+ pMac->lim.txBdToken++);
if ( ! HAL_STATUS_SUCCESS ( halstatus ) )
{
pMac->lim.mgmtFrameSessionId = 0xff;
@@ -2274,7 +2279,8 @@
TID_AC_VI,
limTxComplete, pFrame,
limMgmtTXComplete,
- HAL_USE_BD_RATE2_FOR_MANAGEMENT_FRAME );
+ HAL_USE_BD_RATE2_FOR_MANAGEMENT_FRAME,
+ pMac->lim.txBdToken++);
if ( ! HAL_STATUS_SUCCESS ( halstatus ) )
diff --git a/CORE/MAC/src/pe/lim/limSendManagementFrames.c b/CORE/MAC/src/pe/lim/limSendManagementFrames.c
index a8e65e6..9f4b197 100644
--- a/CORE/MAC/src/pe/lim/limSendManagementFrames.c
+++ b/CORE/MAC/src/pe/lim/limSendManagementFrames.c
@@ -4256,7 +4256,8 @@
ANI_TXDIR_TODS,
7,//SMAC_SWBD_TX_TID_MGMT_HIGH,
limTxComplete, pFrame, limDisassocTxCompleteCnf,
- txFlag );
+ txFlag,
+ pMac->lim.txBdToken++);
MTRACE(macTrace(pMac, TRACE_CODE_TX_COMPLETE,
psessionEntry->peSessionId,
halstatus));
@@ -4466,7 +4467,8 @@
HAL_TXRX_FRM_802_11_MGMT,
ANI_TXDIR_TODS,
7,//SMAC_SWBD_TX_TID_MGMT_HIGH,
- limTxComplete, pFrame, limDeauthTxCompleteCnf, txFlag );
+ limTxComplete, pFrame, limDeauthTxCompleteCnf, txFlag,
+ pMac->lim.txBdToken++);
MTRACE(macTrace(pMac, TRACE_CODE_TX_COMPLETE,
psessionEntry->peSessionId,
halstatus));
diff --git a/CORE/TL/inc/wlan_qct_tl.h b/CORE/TL/inc/wlan_qct_tl.h
index 46c070b..034e058 100644
--- a/CORE/TL/inc/wlan_qct_tl.h
+++ b/CORE/TL/inc/wlan_qct_tl.h
@@ -456,6 +456,7 @@
v_BOOL_t bMorePackets;
/* notifying TL if this is an ARP frame or not */
v_U8_t ucIsArp;
+ v_U32_t ucTxBdToken;
}WLANTL_MetaInfoType;
/*---------------------------------------------------------------------------
@@ -2034,7 +2035,8 @@
v_U8_t tid,
WLANTL_TxCompCBType pfnCompTxFunc,
v_PVOID_t voosBDHeader,
- v_U32_t ucAckResponse
+ v_U32_t ucAckResponse,
+ v_U32_t ucTxBdToken
);
diff --git a/CORE/TL/src/wlan_qct_tl.c b/CORE/TL/src/wlan_qct_tl.c
index 3366c58..fd189a2 100644
--- a/CORE/TL/src/wlan_qct_tl.c
+++ b/CORE/TL/src/wlan_qct_tl.c
@@ -2607,7 +2607,8 @@
ucWDSEnabled, extraHeadSpace, pMetaInfo->ucType,
&pTLCb->atlSTAClients[ucStaId]->wSTADesc.vSelfMACAddress,
pMetaInfo->ucTID, 0 /* No ACK */, pMetaInfo->usTimeStamp,
- pMetaInfo->ucIsEapol || pMetaInfo->ucIsWai, pMetaInfo->ucUP );
+ pMetaInfo->ucIsEapol || pMetaInfo->ucIsWai, pMetaInfo->ucUP,
+ pMetaInfo->ucTxBdToken);
if ( VOS_STATUS_SUCCESS != vosStatus )
{
@@ -3423,7 +3424,8 @@
v_U8_t ucTid,
WLANTL_TxCompCBType pfnCompTxFunc,
v_PVOID_t pvBDHeader,
- v_U32_t ucAckResponse
+ v_U32_t ucAckResponse,
+ v_U32_t ucTxBdToken
)
{
WLANTL_CbType* pTLCb = NULL;
@@ -3547,7 +3549,7 @@
vosStatus = WDA_DS_BuildTxPacketInfo( pvosGCtx, vosFrmBuf , &vDestMacAddr,
1 /* always 802.11 frames*/, &usPktLen, uQosHdr /*qos not enabled !!!*/,
0 /* WDS off */, 0, wFrmType, pvAddr2MacAddr, ucTid,
- ucAckResponse, usTimeStamp, 0, 0 );
+ ucAckResponse, usTimeStamp, 0, 0, ucTxBdToken);
if ( !VOS_IS_STATUS_SUCCESS(vosStatus) )
@@ -7653,7 +7655,8 @@
extraHeadSpace,
ucTypeSubtype, &pClientSTA->wSTADesc.vSelfMACAddress,
ucTid, txFlag,
- tlMetaInfo.usTimeStamp, tlMetaInfo.ucIsEapol || tlMetaInfo.ucIsWai, tlMetaInfo.ucUP );
+ tlMetaInfo.usTimeStamp, tlMetaInfo.ucIsEapol || tlMetaInfo.ucIsWai, tlMetaInfo.ucUP,
+ tlMetaInfo.ucTxBdToken);
if ( VOS_STATUS_SUCCESS != vosStatus )
{
@@ -8113,7 +8116,8 @@
extraHeadSpace,
ucTypeSubtype, &pStaClient->wSTADesc.vSelfMACAddress,
ucTid, ucTxFlag, tlMetaInfo.usTimeStamp,
- tlMetaInfo.ucIsEapol, tlMetaInfo.ucUP );
+ tlMetaInfo.ucIsEapol, tlMetaInfo.ucUP,
+ tlMetaInfo.ucTxBdToken);
if(!VOS_IS_STATUS_SUCCESS(vosStatus))
{
diff --git a/CORE/WDA/inc/wlan_qct_wda.h b/CORE/WDA/inc/wlan_qct_wda.h
index e71ea6d..cf9c3c1 100644
--- a/CORE/WDA/inc/wlan_qct_wda.h
+++ b/CORE/WDA/inc/wlan_qct_wda.h
@@ -604,7 +604,9 @@
pWDATxRxCompFunc pCompFunc,
void *pData,
pWDAAckFnTxComp pAckTxComp,
- tANI_U32 txFlag);
+ tANI_U32 txFlag,
+ tANI_U32 txBdToken
+ );
/*
* FUNCTION: WDA_PostMsgApi
@@ -1293,9 +1295,10 @@
(pCompFunc),\
(pData),\
(NULL), \
- (txFlag)) )
+ (txFlag), \
+ (0)) )
-#define halTxFrameWithTxComplete(hHal, pFrmBuf, frmLen, frmType, txDir, tid, pCompFunc, pData, pCBackFnTxComp, txFlag) \
+#define halTxFrameWithTxComplete(hHal, pFrmBuf, frmLen, frmType, txDir, tid, pCompFunc, pData, pCBackFnTxComp, txFlag, txBdToken) \
(eHalStatus)( WDA_TxPacket(\
vos_get_context(VOS_MODULE_ID_WDA, vos_get_global_context(VOS_MODULE_ID_WDA, (hHal))),\
(pFrmBuf),\
@@ -1306,7 +1309,8 @@
(pCompFunc),\
(pData),\
(pCBackFnTxComp), \
- (txFlag)) )
+ (txFlag), \
+ (txBdToken)) )
/* -----------------------------------------------------------------
WDA data path API's for TL
@@ -1553,7 +1557,8 @@
v_U32_t txFlag,
v_U32_t timeStamp,
v_U8_t ucIsEapol,
- v_U8_t ucUP
+ v_U8_t ucUP,
+ v_U32_t ucTxBdToken
);
/*==========================================================================
diff --git a/CORE/WDA/src/wlan_qct_wda.c b/CORE/WDA/src/wlan_qct_wda.c
index edfca0a..61c60bb 100644
--- a/CORE/WDA/src/wlan_qct_wda.c
+++ b/CORE/WDA/src/wlan_qct_wda.c
@@ -12894,7 +12894,9 @@
pWDATxRxCompFunc pCompFunc,
void *pData,
pWDAAckFnTxComp pAckTxComp,
- tANI_U32 txFlag)
+ tANI_U32 txFlag,
+ tANI_U32 txBdToken
+ )
{
VOS_STATUS status = VOS_STATUS_SUCCESS ;
tpSirMacFrameCtl pFc = (tpSirMacFrameCtl ) pData;
@@ -12902,6 +12904,7 @@
tANI_U8 eventIdx = 0;
tBssSystemRole systemRole = eSYSTEM_UNKNOWN_ROLE;
tpAniSirGlobal pMac;
+
if((NULL == pWDA)||(NULL == pFrmBuf))
{
VOS_TRACE( VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_ERROR,
@@ -12912,7 +12915,8 @@
}
VOS_TRACE( VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_INFO_HIGH,
- "Tx Mgmt Frame Subtype: %d alloc(%p)", pFc->subType, pFrmBuf);
+ "Tx Mgmt Frame Subtype: %d alloc(%p) txBdToken = %u",
+ pFc->subType, pFrmBuf, txBdToken);
pMac = (tpAniSirGlobal )VOS_GET_MAC_CTXT(pWDA->pVosContext);
if(NULL == pMac)
{
@@ -13030,8 +13034,8 @@
if((status = WLANTL_TxMgmtFrm(pWDA->pVosContext, (vos_pkt_t *)pFrmBuf,
- frmLen, ucTypeSubType, tid,
- WDA_TxComplete, NULL, txFlag)) != VOS_STATUS_SUCCESS)
+ frmLen, ucTypeSubType, tid, WDA_TxComplete, NULL, txFlag,
+ txBdToken))!= VOS_STATUS_SUCCESS)
{
VOS_TRACE( VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_ERROR,
"Sending Mgmt Frame failed - status = %d", status);
diff --git a/CORE/WDA/src/wlan_qct_wda_ds.c b/CORE/WDA/src/wlan_qct_wda_ds.c
index 603675e..716efa1 100644
--- a/CORE/WDA/src/wlan_qct_wda_ds.c
+++ b/CORE/WDA/src/wlan_qct_wda_ds.c
@@ -421,7 +421,8 @@
v_U32_t txFlag,
v_U32_t timeStamp,
v_U8_t ucIsEapol,
- v_U8_t ucUP
+ v_U8_t ucUP,
+ v_U32_t ucTxBdToken
)
{
VOS_STATUS vosStatus;
@@ -466,7 +467,7 @@
pTxMetaInfo->fdisableFrmXlt = ucDisableFrmXtl;
pTxMetaInfo->frmType = ( ( typeSubtype & 0x30 ) >> 4 );
pTxMetaInfo->typeSubtype = typeSubtype;
-
+ pTxMetaInfo->txBdToken = ucTxBdToken;
/* Length = MAC header + payload */
vos_pkt_get_packet_length( vosDataBuff, pusPktLen);
pTxMetaInfo->fPktlen = *pusPktLen;
diff --git a/CORE/WDI/CP/inc/wlan_qct_wdi_bd.h b/CORE/WDI/CP/inc/wlan_qct_wdi_bd.h
index 560b848..59de6aa 100644
--- a/CORE/WDI/CP/inc/wlan_qct_wdi_bd.h
+++ b/CORE/WDI/CP/inc/wlan_qct_wdi_bd.h
@@ -1151,6 +1151,7 @@
wpt_uint32 csuTcpUdpStartOffset:10;
#endif
#endif /*WCN_PRONTO*/
+ wpt_uint32 txBdToken;
} WDI_TxBdType;
diff --git a/CORE/WDI/CP/inc/wlan_qct_wdi_dp.h b/CORE/WDI/CP/inc/wlan_qct_wdi_dp.h
index 4881a93..9d13ed8 100644
--- a/CORE/WDI/CP/inc/wlan_qct_wdi_dp.h
+++ b/CORE/WDI/CP/inc/wlan_qct_wdi_dp.h
@@ -426,7 +426,8 @@
wpt_uint8 ucProtMgmtFrame,
wpt_uint32 uTimeStamp,
wpt_uint8 isEapol,
- wpt_uint8* staIndex
+ wpt_uint8* staIndex,
+ wpt_uint32 txBdToken
);
/**
diff --git a/CORE/WDI/CP/src/wlan_qct_wdi_dp.c b/CORE/WDI/CP/src/wlan_qct_wdi_dp.c
index 3a78059..8db73aa 100644
--- a/CORE/WDI/CP/src/wlan_qct_wdi_dp.c
+++ b/CORE/WDI/CP/src/wlan_qct_wdi_dp.c
@@ -386,7 +386,8 @@
wpt_uint8 ucProtMgmtFrame,
wpt_uint32 uTimeStamp,
wpt_uint8 isEapol,
- wpt_uint8* staIndex
+ wpt_uint8* staIndex,
+ wpt_uint32 txBdToken
)
{
wpt_uint8 ucTid = *pTid;
@@ -407,6 +408,7 @@
/*------------------------------------------------------------------------
Get type and subtype of the frame first
------------------------------------------------------------------------*/
+ pBd->txBdToken = txBdToken;
ucType = (ucTypeSubtype & WDI_FRAME_TYPE_MASK) >> WDI_FRAME_TYPE_OFFSET;
ucSubType = (ucTypeSubtype & WDI_FRAME_SUBTYPE_MASK);
diff --git a/CORE/WDI/DP/inc/wlan_qct_wdi_ds.h b/CORE/WDI/DP/inc/wlan_qct_wdi_ds.h
index 39c9810..92dfa70 100644
--- a/CORE/WDI/DP/inc/wlan_qct_wdi_ds.h
+++ b/CORE/WDI/DP/inc/wlan_qct_wdi_ds.h
@@ -68,6 +68,7 @@
wpt_uint16 fPktlen;
wpt_status txCompleteStatus;
wpt_uint8 staIdx;
+ wpt_uint32 txBdToken;
} WDI_DS_TxMetaInfoType;
diff --git a/CORE/WDI/DP/src/wlan_qct_wdi_ds.c b/CORE/WDI/DP/src/wlan_qct_wdi_ds.c
index 7f993aa..1865ee3 100644
--- a/CORE/WDI/DP/src/wlan_qct_wdi_ds.c
+++ b/CORE/WDI/DP/src/wlan_qct_wdi_ds.c
@@ -210,7 +210,8 @@
"Packet Length is %d\n", pTxMetadata->fPktlen);
}
wdiStatus = WDI_FillTxBd(pContext, ucTypeSubtype, pSTAMACAddress, pAddr2MACAddress,
- &ucUP, 1, pvBDHeader, ucTxFlag /* No ACK */, ucProtMgmtFrame, 0, isEapol, &staId);
+ &ucUP, 1, pvBDHeader, ucTxFlag /* No ACK */, ucProtMgmtFrame, 0, isEapol, &staId,
+ pTxMetadata->txBdToken);
if(WDI_STATUS_SUCCESS != wdiStatus)
{