summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRajesh Chauhan <rajeshc@qca.qualcomm.com>2014-02-25 16:49:45 -0800
committerAkash Patel <c_akashp@qca.qualcomm.com>2014-02-26 18:49:02 -0800
commit65e266bb9bcd99be96e35a68bdd4ed1aa9da1394 (patch)
tree0c938bcdc3fb82c88cd0dfc3e412ca7bc690e2f5
parent69cd62645db3217127220e16ca35b75b1562cb22 (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.c12
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;
}