qcacld-3.0: use tdls_frm_session_id while sending resp to sme
This change addresses below two issues.
1) pe session entry may not exist in some cases where PE receives
ack cnf after deleting the pe session. So use
"lim.tdls_frm_session_id" instead of peSessionId while sending
the tdls mgmt frames.
2) PE sends eWNI_SME_TDLS_SEND_MGMT_RSP with failure status to SME
if mgmt tx fails before calling WDA_TxPacket. But SME is
ignoring this failure and not indicating ack conf failure to HDD.
Change-Id: I089be87fef71ebfb0327c47a301aaf5ede59d031
CRs-Fixed: 887676
diff --git a/core/mac/src/pe/lim/lim_process_tdls.c b/core/mac/src/pe/lim/lim_process_tdls.c
index 1a5d46f..ea04082 100644
--- a/core/mac/src/pe/lim/lim_process_tdls.c
+++ b/core/mac/src/pe/lim/lim_process_tdls.c
@@ -515,24 +515,15 @@
uint32_t tx_complete,
void *params)
{
- tpPESession session_entry = NULL;
tpAniSirGlobal mac_ctx = (tpAniSirGlobal)context;
lim_log(mac_ctx, LOG1, FL("tdls_frm_session_id %x tx_complete %x"),
mac_ctx->lim.tdls_frm_session_id, tx_complete);
if (NO_SESSION != mac_ctx->lim.tdls_frm_session_id) {
- session_entry = pe_find_session_by_session_id(mac_ctx,
- mac_ctx->lim.tdls_frm_session_id);
- if (!session_entry) {
- lim_log(mac_ctx, LOGE, FL("session id %d is not found"),
- mac_ctx->lim.tdls_frm_session_id);
- if (buf)
- qdf_nbuf_free(buf);
- return QDF_STATUS_E_FAILURE;
- }
- lim_send_sme_mgmt_tx_completion(mac_ctx, session_entry,
- tx_complete);
+ lim_send_sme_mgmt_tx_completion(mac_ctx,
+ mac_ctx->lim.tdls_frm_session_id,
+ tx_complete);
mac_ctx->lim.tdls_frm_session_id = NO_SESSION;
}
@@ -711,7 +702,7 @@
lim_trace_tdls_action_string(SIR_MAC_TDLS_DIS_REQ),
MAC_ADDR_ARRAY(peer_mac.bytes));
- pMac->lim.tdls_frm_session_id = psessionEntry->peSessionId;
+ pMac->lim.tdls_frm_session_id = psessionEntry->smeSessionId;
qdf_status = wma_tx_frameWithTxComplete(pMac, pPacket,
(uint16_t) nBytes,
TXRX_FRM_802_11_DATA,
@@ -1031,7 +1022,7 @@
lim_trace_tdls_action_string(SIR_MAC_TDLS_DIS_RSP),
MAC_ADDR_ARRAY(peer_mac.bytes));
- pMac->lim.tdls_frm_session_id = psessionEntry->peSessionId;
+ pMac->lim.tdls_frm_session_id = psessionEntry->smeSessionId;
/*
* Transmit Discovery response and watch if this is delivered to
* peer STA.
@@ -1425,7 +1416,7 @@
lim_trace_tdls_action_string(SIR_MAC_TDLS_SETUP_REQ),
MAC_ADDR_ARRAY(peer_mac.bytes));
- pMac->lim.tdls_frm_session_id = psessionEntry->peSessionId;
+ pMac->lim.tdls_frm_session_id = psessionEntry->smeSessionId;
qdf_status = wma_tx_frame_with_tx_complete_send(pMac, pPacket,
(uint16_t) nBytes,
@@ -1635,7 +1626,7 @@
"DIRECT"),
MAC_ADDR_ARRAY(peer_mac.bytes));
- pMac->lim.tdls_frm_session_id = psessionEntry->peSessionId;
+ pMac->lim.tdls_frm_session_id = psessionEntry->smeSessionId;
qdf_status = wma_tx_frame_with_tx_complete_send(pMac, pPacket,
(uint16_t) nBytes,
@@ -1913,7 +1904,7 @@
lim_trace_tdls_action_string(SIR_MAC_TDLS_SETUP_RSP),
MAC_ADDR_ARRAY(peer_mac.bytes));
- pMac->lim.tdls_frm_session_id = psessionEntry->peSessionId;
+ pMac->lim.tdls_frm_session_id = psessionEntry->smeSessionId;
qdf_status = wma_tx_frame_with_tx_complete_send(pMac, pPacket,
(uint16_t) nBytes,
@@ -2130,7 +2121,7 @@
lim_trace_tdls_action_string(SIR_MAC_TDLS_SETUP_CNF),
MAC_ADDR_ARRAY(peer_mac.bytes));
- pMac->lim.tdls_frm_session_id = psessionEntry->peSessionId;
+ pMac->lim.tdls_frm_session_id = psessionEntry->smeSessionId;
qdf_status = wma_tx_frame_with_tx_complete_send(pMac, pPacket,
(uint16_t) nBytes,