diff options
| author | Rajesh Chauhan <rajeshc@qca.qualcomm.com> | 2014-02-25 16:49:45 -0800 |
|---|---|---|
| committer | Akash Patel <c_akashp@qca.qualcomm.com> | 2014-02-26 18:49:02 -0800 |
| commit | 65e266bb9bcd99be96e35a68bdd4ed1aa9da1394 (patch) | |
| tree | 0c938bcdc3fb82c88cd0dfc3e412ca7bc690e2f5 | |
| parent | 69cd62645db3217127220e16ca35b75b1562cb22 (diff) | |
qcacld: Fix issue of incorrect report of OTA Tx completion failure
Update sessoin id in lim before calling halTxFrame function to
avoid a race conditon where OTA Tx completion callback can get
called before halTxFrame returns and thus can lead to reporting
of OTA Tx failure even though frame was successfully sent OTA.
Change-Id: I42fd5adfa65ed64923d8f8d655e19b3eaaea35d8
CRs-Fixed: 605689
| -rw-r--r-- | CORE/MAC/src/pe/lim/limProcessTdls.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/CORE/MAC/src/pe/lim/limProcessTdls.c b/CORE/MAC/src/pe/lim/limProcessTdls.c index ba810514221a..fede7f85bdce 100644 --- a/CORE/MAC/src/pe/lim/limProcessTdls.c +++ b/CORE/MAC/src/pe/lim/limProcessTdls.c @@ -638,6 +638,7 @@ tSirRetStatus limSendTdlsDisReqFrame(tpAniSirGlobal pMac, tSirMacAddr peer_mac, LIM_LOG_TDLS(VOS_TRACE(VOS_MODULE_ID_PE, TDLS_DEBUG_LOG_LEVEL, ("[TDLS] action %d (%s) -AP-> OTA "), SIR_MAC_TDLS_DIS_REQ, limTraceTdlsActionString(SIR_MAC_TDLS_DIS_REQ) )); + pMac->lim.mgmtFrameSessionId = psessionEntry->peSessionId; halstatus = halTxFrameWithTxComplete( pMac, pPacket, ( tANI_U16 ) nBytes, HAL_TXRX_FRM_802_11_DATA, ANI_TXDIR_TODS, @@ -652,7 +653,6 @@ tSirRetStatus limSendTdlsDisReqFrame(tpAniSirGlobal pMac, tSirMacAddr peer_mac, limLog( pMac, LOGE, FL("could not send TDLS Dis Request frame!" )); return eSIR_FAILURE; } - pMac->lim.mgmtFrameSessionId = psessionEntry->peSessionId; return eSIR_SUCCESS; @@ -1150,6 +1150,7 @@ static tSirRetStatus limSendTdlsDisRspFrame(tpAniSirGlobal pMac, SIR_MAC_TDLS_DIS_RSP, limTraceTdlsActionString(SIR_MAC_TDLS_DIS_RSP) )); + pMac->lim.mgmtFrameSessionId = psessionEntry->peSessionId; /* * Transmit Discovery response and watch if this is delivered to * peer STA. @@ -1181,7 +1182,6 @@ static tSirRetStatus limSendTdlsDisRspFrame(tpAniSirGlobal pMac, limLog( pMac, LOGE, FL("could not send TDLS Dis Request frame!" )); return eSIR_FAILURE; } - pMac->lim.mgmtFrameSessionId = psessionEntry->peSessionId; return eSIR_SUCCESS; @@ -1427,6 +1427,7 @@ tSirRetStatus limSendTdlsLinkSetupReqFrame(tpAniSirGlobal pMac, LIM_LOG_TDLS(VOS_TRACE(VOS_MODULE_ID_PE, TDLS_DEBUG_LOG_LEVEL, ("[TDLS] action %d (%s) -AP-> OTA"), SIR_MAC_TDLS_SETUP_REQ, limTraceTdlsActionString(SIR_MAC_TDLS_SETUP_REQ) )); + pMac->lim.mgmtFrameSessionId = psessionEntry->peSessionId; halstatus = halTxFrameWithTxComplete( pMac, pPacket, ( tANI_U16 ) nBytes, HAL_TXRX_FRM_802_11_DATA, ANI_TXDIR_TODS, @@ -1442,7 +1443,6 @@ tSirRetStatus limSendTdlsLinkSetupReqFrame(tpAniSirGlobal pMac, limLog( pMac, LOGE, FL("could not send TDLS Dis Request frame!" )); return eSIR_FAILURE; } - pMac->lim.mgmtFrameSessionId = psessionEntry->peSessionId; return eSIR_SUCCESS; @@ -1632,6 +1632,7 @@ tSirRetStatus limSendTdlsTeardownFrame(tpAniSirGlobal pMac, SIR_MAC_TDLS_TEARDOWN, limTraceTdlsActionString(SIR_MAC_TDLS_TEARDOWN), (reason == eSIR_MAC_TDLS_TEARDOWN_PEER_UNREACHABLE) ? "AP": "DIRECT" )); + pMac->lim.mgmtFrameSessionId = psessionEntry->peSessionId; halstatus = halTxFrameWithTxComplete( pMac, pPacket, ( tANI_U16 ) nBytes, HAL_TXRX_FRM_802_11_DATA, ANI_TXDIR_TODS, @@ -1647,7 +1648,6 @@ tSirRetStatus limSendTdlsTeardownFrame(tpAniSirGlobal pMac, return eSIR_FAILURE; } - pMac->lim.mgmtFrameSessionId = psessionEntry->peSessionId; return eSIR_SUCCESS; } @@ -1852,6 +1852,7 @@ static tSirRetStatus limSendTdlsSetupRspFrame(tpAniSirGlobal pMac, LIM_LOG_TDLS(VOS_TRACE(VOS_MODULE_ID_PE, TDLS_DEBUG_LOG_LEVEL, ("[TDLS] action %d (%s) -AP-> OTA"), SIR_MAC_TDLS_SETUP_RSP, limTraceTdlsActionString(SIR_MAC_TDLS_SETUP_RSP) )); + pMac->lim.mgmtFrameSessionId = psessionEntry->peSessionId; halstatus = halTxFrameWithTxComplete( pMac, pPacket, ( tANI_U16 ) nBytes, HAL_TXRX_FRM_802_11_DATA, ANI_TXDIR_TODS, @@ -1867,7 +1868,6 @@ static tSirRetStatus limSendTdlsSetupRspFrame(tpAniSirGlobal pMac, limLog( pMac, LOGE, FL("could not send TDLS Dis Request frame!" )); return eSIR_FAILURE; } - pMac->lim.mgmtFrameSessionId = psessionEntry->peSessionId; return eSIR_SUCCESS; @@ -2086,6 +2086,7 @@ tSirRetStatus limSendTdlsLinkSetupCnfFrame(tpAniSirGlobal pMac, tSirMacAddr peer LIM_LOG_TDLS(VOS_TRACE(VOS_MODULE_ID_PE, TDLS_DEBUG_LOG_LEVEL, ("[TDLS] action %d (%s) -AP-> OTA"), SIR_MAC_TDLS_SETUP_CNF, limTraceTdlsActionString(SIR_MAC_TDLS_SETUP_CNF) )); + pMac->lim.mgmtFrameSessionId = psessionEntry->peSessionId; halstatus = halTxFrameWithTxComplete( pMac, pPacket, ( tANI_U16 ) nBytes, HAL_TXRX_FRM_802_11_DATA, ANI_TXDIR_TODS, @@ -2103,7 +2104,6 @@ tSirRetStatus limSendTdlsLinkSetupCnfFrame(tpAniSirGlobal pMac, tSirMacAddr peer return eSIR_FAILURE; } - pMac->lim.mgmtFrameSessionId = psessionEntry->peSessionId; return eSIR_SUCCESS; } |
