summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/mac/src/pe/lim/lim_p2p.c29
1 files changed, 22 insertions, 7 deletions
diff --git a/core/mac/src/pe/lim/lim_p2p.c b/core/mac/src/pe/lim/lim_p2p.c
index cda4b103c845..9485f127d6e1 100644
--- a/core/mac/src/pe/lim/lim_p2p.c
+++ b/core/mac/src/pe/lim/lim_p2p.c
@@ -412,16 +412,31 @@ void lim_send_sme_mgmt_frame_ind(tpAniSirGlobal pMac, uint8_t frameType,
QDF_STATUS lim_p2p_action_cnf(tpAniSirGlobal pMac, uint32_t txCompleteSuccess)
{
- if (pMac->lim.mgmtFrameSessionId != 0xff) {
- /* The session entry might be invalid(0xff) action confirmation received after
- * remain on channel timer expired */
- if (pMac->p2p_ack_ind_cb)
- pMac->p2p_ack_ind_cb(pMac->lim.mgmtFrameSessionId,
- txCompleteSuccess);
+ QDF_STATUS status;
+ uint32_t mgmt_frame_sessionId;
+
+ status = pe_acquire_global_lock(&pMac->lim);
+ if (QDF_IS_STATUS_SUCCESS(status)) {
+ mgmt_frame_sessionId = pMac->lim.mgmtFrameSessionId;
pMac->lim.mgmtFrameSessionId = 0xff;
+ pe_release_global_lock(&pMac->lim);
+
+ if (mgmt_frame_sessionId != 0xff) {
+ /*
+ * The session entry might be invalid(0xff)
+ * action confirmation received after
+ * remain on channel timer expired.
+ */
+ lim_log(pMac, LOG1,
+ FL("mgmt_frame_sessionId %d"),
+ mgmt_frame_sessionId);
+ if (pMac->p2p_ack_ind_cb)
+ pMac->p2p_ack_ind_cb(mgmt_frame_sessionId,
+ txCompleteSuccess);
+ }
}
- return QDF_STATUS_SUCCESS;
+ return status;
}
/**