summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/mac/src/pe/lim/lim_ft_preauth.c4
-rw-r--r--core/mac/src/pe/lim/lim_process_assoc_rsp_frame.c11
-rw-r--r--core/mac/src/pe/lim/lim_process_auth_frame.c46
-rw-r--r--core/mac/src/pe/lim/lim_process_mlm_req_messages.c4
-rw-r--r--core/mac/src/pe/lim/lim_send_management_frames.c112
-rw-r--r--core/mac/src/pe/lim/lim_types.h4
-rw-r--r--core/mac/src/pe/lim/lim_utils.h23
7 files changed, 129 insertions, 75 deletions
diff --git a/core/mac/src/pe/lim/lim_ft_preauth.c b/core/mac/src/pe/lim/lim_ft_preauth.c
index 920874c13772..61664b194ec0 100644
--- a/core/mac/src/pe/lim/lim_ft_preauth.c
+++ b/core/mac/src/pe/lim/lim_ft_preauth.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2017 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -299,7 +299,7 @@ void lim_perform_ft_pre_auth(tpAniSirGlobal pMac, QDF_STATUS status,
lim_send_auth_mgmt_frame(pMac, &authFrame,
psessionEntry->ftPEContext.pFTPreAuthReq->preAuthbssId,
- LIM_NO_WEP_IN_FC, psessionEntry, false);
+ LIM_NO_WEP_IN_FC, psessionEntry);
return;
diff --git a/core/mac/src/pe/lim/lim_process_assoc_rsp_frame.c b/core/mac/src/pe/lim/lim_process_assoc_rsp_frame.c
index 39ecda57c34e..6e2305d58510 100644
--- a/core/mac/src/pe/lim/lim_process_assoc_rsp_frame.c
+++ b/core/mac/src/pe/lim/lim_process_assoc_rsp_frame.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011-2016 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2011-2017 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -853,13 +853,14 @@ lim_process_assoc_rsp_frame(tpAniSirGlobal mac_ctx,
return;
}
}
+
+ lim_diag_event_report(mac_ctx, WLAN_PE_DIAG_ROAM_ASSOC_COMP_EVENT,
+ session_entry, assoc_rsp->statusCode ? eSIR_FAILURE :
+ eSIR_SUCCESS, assoc_rsp->statusCode);
+
if (subtype == LIM_REASSOC) {
lim_log
(mac_ctx, LOG1, FL("Successfully Reassociated with BSS"));
-#ifdef FEATURE_WLAN_DIAG_SUPPORT
- lim_diag_event_report(mac_ctx, WLAN_PE_DIAG_ROAM_ASSOC_COMP_EVENT,
- session_entry, eSIR_SUCCESS, eSIR_SUCCESS);
-#endif
#ifdef FEATURE_WLAN_ESE
if (assoc_rsp->tsmPresent)
lim_update_ese_tsm(mac_ctx, session_entry, assoc_rsp);
diff --git a/core/mac/src/pe/lim/lim_process_auth_frame.c b/core/mac/src/pe/lim/lim_process_auth_frame.c
index 4cb0205354f2..921e4f2ecb8c 100644
--- a/core/mac/src/pe/lim/lim_process_auth_frame.c
+++ b/core/mac/src/pe/lim/lim_process_auth_frame.c
@@ -140,7 +140,7 @@ static void lim_process_auth_shared_system_algo(tpAniSirGlobal mac_ctx,
lim_send_auth_mgmt_frame(mac_ctx, auth_frame,
mac_hdr->sa, LIM_NO_WEP_IN_FC,
- pe_session, false);
+ pe_session);
return;
} else {
/* Create entry for this STA in pre-auth list */
@@ -188,7 +188,7 @@ static void lim_process_auth_shared_system_algo(tpAniSirGlobal mac_ctx,
lim_send_auth_mgmt_frame(mac_ctx, auth_frame,
mac_hdr->sa, LIM_NO_WEP_IN_FC,
- pe_session, false);
+ pe_session);
lim_delete_pre_auth_node(mac_ctx, mac_hdr->sa);
return;
}
@@ -220,7 +220,7 @@ static void lim_process_auth_shared_system_algo(tpAniSirGlobal mac_ctx,
SIR_MAC_AUTH_CHALLENGE_LENGTH);
lim_send_auth_mgmt_frame(mac_ctx, auth_frame,
mac_hdr->sa, LIM_NO_WEP_IN_FC,
- pe_session, false);
+ pe_session);
}
}
@@ -264,7 +264,7 @@ static void lim_process_auth_open_system_algo(tpAniSirGlobal mac_ctx,
auth_frame->authStatusCode = eSIR_MAC_SUCCESS_STATUS;
lim_send_auth_mgmt_frame(mac_ctx, auth_frame, mac_hdr->sa,
LIM_NO_WEP_IN_FC,
- pe_session, false);
+ pe_session);
}
static void lim_process_auth_frame_type1(tpAniSirGlobal mac_ctx,
@@ -430,7 +430,7 @@ static void lim_process_auth_frame_type1(tpAniSirGlobal mac_ctx,
lim_send_auth_mgmt_frame(mac_ctx, auth_frame,
mac_hdr->sa, LIM_NO_WEP_IN_FC,
- pe_session, false);
+ pe_session);
return;
}
/* No Pre-auth context exists for the STA. */
@@ -449,7 +449,7 @@ static void lim_process_auth_frame_type1(tpAniSirGlobal mac_ctx,
lim_send_auth_mgmt_frame(mac_ctx, auth_frame,
mac_hdr->sa, LIM_NO_WEP_IN_FC,
- pe_session, false);
+ pe_session);
return;
}
@@ -486,7 +486,7 @@ static void lim_process_auth_frame_type1(tpAniSirGlobal mac_ctx,
eSIR_MAC_AUTH_ALGO_NOT_SUPPORTED_STATUS;
lim_send_auth_mgmt_frame(mac_ctx, auth_frame,
mac_hdr->sa, LIM_NO_WEP_IN_FC,
- pe_session, false);
+ pe_session);
return;
}
} else {
@@ -510,7 +510,7 @@ static void lim_process_auth_frame_type1(tpAniSirGlobal mac_ctx,
lim_send_auth_mgmt_frame(mac_ctx, auth_frame,
mac_hdr->sa,
LIM_NO_WEP_IN_FC,
- pe_session, false);
+ pe_session);
return;
}
}
@@ -691,7 +691,7 @@ static void lim_process_auth_frame_type2(tpAniSirGlobal mac_ctx,
eSIR_MAC_AUTH_ALGO_NOT_SUPPORTED_STATUS;
lim_send_auth_mgmt_frame(mac_ctx, auth_frame,
mac_hdr->sa, LIM_NO_WEP_IN_FC,
- pe_session, false);
+ pe_session);
return;
}
if (rx_auth_frm_body->type != SIR_MAC_CHALLENGE_TEXT_EID) {
@@ -725,7 +725,7 @@ static void lim_process_auth_frame_type2(tpAniSirGlobal mac_ctx,
lim_send_auth_mgmt_frame(mac_ctx,
auth_frame, mac_hdr->sa,
LIM_NO_WEP_IN_FC,
- pe_session, false);
+ pe_session);
lim_restore_from_auth_state(mac_ctx,
eSIR_SME_INVALID_WEP_DEFAULT_KEY,
eSIR_MAC_UNSPEC_FAILURE_REASON,
@@ -759,7 +759,7 @@ static void lim_process_auth_frame_type2(tpAniSirGlobal mac_ctx,
lim_send_auth_mgmt_frame(mac_ctx,
(tpSirMacAuthFrameBody)encr_auth_frame,
mac_hdr->sa, LIM_WEP_IN_FC,
- pe_session, false);
+ pe_session);
return;
}
@@ -791,7 +791,7 @@ static void lim_process_auth_frame_type3(tpAniSirGlobal mac_ctx,
eSIR_MAC_AUTH_FRAME_OUT_OF_SEQ_STATUS;
lim_send_auth_mgmt_frame(mac_ctx, auth_frame,
mac_hdr->sa, LIM_NO_WEP_IN_FC,
- pe_session, false);
+ pe_session);
return;
}
@@ -816,7 +816,7 @@ static void lim_process_auth_frame_type3(tpAniSirGlobal mac_ctx,
lim_send_auth_mgmt_frame(mac_ctx, auth_frame,
mac_hdr->sa,
LIM_NO_WEP_IN_FC,
- pe_session, false);
+ pe_session);
return;
}
@@ -838,7 +838,7 @@ static void lim_process_auth_frame_type3(tpAniSirGlobal mac_ctx,
eSIR_MAC_AUTH_FRAME_OUT_OF_SEQ_STATUS;
lim_send_auth_mgmt_frame(mac_ctx, auth_frame,
mac_hdr->sa, LIM_NO_WEP_IN_FC,
- pe_session, false);
+ pe_session);
return;
}
@@ -860,7 +860,7 @@ static void lim_process_auth_frame_type3(tpAniSirGlobal mac_ctx,
lim_send_auth_mgmt_frame(mac_ctx, auth_frame,
mac_hdr->sa, LIM_NO_WEP_IN_FC,
- pe_session, false);
+ pe_session);
/* Delete pre-auth context of STA */
lim_delete_pre_auth_node(mac_ctx, mac_hdr->sa);
return;
@@ -906,7 +906,7 @@ static void lim_process_auth_frame_type3(tpAniSirGlobal mac_ctx,
eSIR_MAC_SUCCESS_STATUS;
lim_send_auth_mgmt_frame(mac_ctx, auth_frame,
mac_hdr->sa, LIM_NO_WEP_IN_FC,
- pe_session, false);
+ pe_session);
return;
} else {
lim_log(mac_ctx, LOGW,
@@ -927,7 +927,7 @@ static void lim_process_auth_frame_type3(tpAniSirGlobal mac_ctx,
eSIR_MAC_CHALLENGE_FAILURE_STATUS;
lim_send_auth_mgmt_frame(mac_ctx, auth_frame,
mac_hdr->sa, LIM_NO_WEP_IN_FC,
- pe_session, false);
+ pe_session);
return;
}
}
@@ -1173,7 +1173,7 @@ lim_process_auth_frame(tpAniSirGlobal mac_ctx, uint8_t *rx_pkt_info,
GET_LIM_SYSTEM_ROLE(pe_session), mac_hdr->sa);
lim_send_auth_mgmt_frame(mac_ctx, &auth_frame,
mac_hdr->sa, LIM_NO_WEP_IN_FC,
- pe_session, false);
+ pe_session);
return;
}
@@ -1219,7 +1219,7 @@ lim_process_auth_frame(tpAniSirGlobal mac_ctx, uint8_t *rx_pkt_info,
eSIR_MAC_CHALLENGE_FAILURE_STATUS;
lim_send_auth_mgmt_frame(mac_ctx, &auth_frame,
mac_hdr->sa, LIM_NO_WEP_IN_FC,
- pe_session, false);
+ pe_session);
return;
}
@@ -1247,7 +1247,7 @@ lim_process_auth_frame(tpAniSirGlobal mac_ctx, uint8_t *rx_pkt_info,
eSIR_MAC_AUTH_FRAME_OUT_OF_SEQ_STATUS;
lim_send_auth_mgmt_frame(mac_ctx, &auth_frame,
mac_hdr->sa, LIM_NO_WEP_IN_FC,
- pe_session, false);
+ pe_session);
return;
}
/* Change the auth-response timeout */
@@ -1277,7 +1277,7 @@ lim_process_auth_frame(tpAniSirGlobal mac_ctx, uint8_t *rx_pkt_info,
lim_send_auth_mgmt_frame(mac_ctx, &auth_frame,
mac_hdr->sa, LIM_NO_WEP_IN_FC,
- pe_session, false);
+ pe_session);
return;
}
@@ -1306,7 +1306,7 @@ lim_process_auth_frame(tpAniSirGlobal mac_ctx, uint8_t *rx_pkt_info,
eSIR_MAC_CHALLENGE_FAILURE_STATUS;
lim_send_auth_mgmt_frame(mac_ctx, &auth_frame,
mac_hdr->sa, LIM_NO_WEP_IN_FC,
- pe_session, false);
+ pe_session);
return;
}
@@ -1330,7 +1330,7 @@ lim_process_auth_frame(tpAniSirGlobal mac_ctx, uint8_t *rx_pkt_info,
lim_send_auth_mgmt_frame(mac_ctx, &auth_frame,
mac_hdr->sa, LIM_NO_WEP_IN_FC,
- pe_session, false);
+ pe_session);
return;
}
if ((sir_convert_auth_frame2_struct(mac_ctx, plainbody,
diff --git a/core/mac/src/pe/lim/lim_process_mlm_req_messages.c b/core/mac/src/pe/lim/lim_process_mlm_req_messages.c
index 0a0038392bf4..8957b2f7e0b9 100644
--- a/core/mac/src/pe/lim/lim_process_mlm_req_messages.c
+++ b/core/mac/src/pe/lim/lim_process_mlm_req_messages.c
@@ -1128,7 +1128,7 @@ static void lim_process_mlm_auth_req(tpAniSirGlobal mac_ctx, uint32_t *msg)
mac_ctx->auth_ack_status = LIM_AUTH_ACK_NOT_RCD;
lim_send_auth_mgmt_frame(mac_ctx,
&auth_frame_body, mac_ctx->lim.gpLimMlmAuthReq->peerMacAddr,
- LIM_NO_WEP_IN_FC, session, true);
+ LIM_NO_WEP_IN_FC, session);
/* assign appropriate session_id to the timer object */
mac_ctx->lim.limTimers.gLimAuthFailureTimer.sessionId = session_id;
@@ -2351,7 +2351,7 @@ static void lim_process_auth_retry_timer(tpAniSirGlobal mac_ctx)
lim_send_auth_mgmt_frame(mac_ctx,
&auth_frame,
mac_ctx->lim.gpLimMlmAuthReq->peerMacAddr,
- LIM_NO_WEP_IN_FC, session_entry, true);
+ LIM_NO_WEP_IN_FC, session_entry);
}
lim_deactivate_and_change_timer(mac_ctx, eLIM_AUTH_RETRY_TIMER);
diff --git a/core/mac/src/pe/lim/lim_send_management_frames.c b/core/mac/src/pe/lim/lim_send_management_frames.c
index 09efc4a08669..f12b99201b21 100644
--- a/core/mac/src/pe/lim/lim_send_management_frames.c
+++ b/core/mac/src/pe/lim/lim_send_management_frames.c
@@ -1624,6 +1624,36 @@ lim_send_delts_req_action_frame(tpAniSirGlobal pMac,
} /* End lim_send_delts_req_action_frame. */
/**
+ * lim_assoc_tx_complete_cnf()- Confirmation for assoc sent over the air
+ *
+ * @mac_ctx: pointer to global mac
+ * @tx_complete : Sent status
+ *
+ * Return: This returns QDF_STATUS
+ */
+
+static QDF_STATUS lim_assoc_tx_complete_cnf(tpAniSirGlobal mac_ctx,
+ uint32_t tx_complete)
+{
+ uint16_t assoc_ack_status;
+ uint16_t reason_code;
+
+ lim_log(mac_ctx, LOG1,
+ FL("tx_complete= %d"), tx_complete);
+ if (tx_complete) {
+ assoc_ack_status = ACKED;
+ reason_code = eSIR_SUCCESS;
+ } else {
+ assoc_ack_status = NOT_ACKED;
+ reason_code = eSIR_FAILURE;
+ }
+
+ lim_diag_event_report(mac_ctx, WLAN_PE_DIAG_ASSOC_ACK_EVENT,
+ NULL, assoc_ack_status, reason_code);
+ return QDF_STATUS_SUCCESS;
+}
+
+/**
* lim_send_assoc_req_mgmt_frame() - Send association request
* @mac_ctx: Handle to MAC context
* @mlm_assoc_req: Association request information
@@ -1648,7 +1678,7 @@ lim_send_assoc_req_mgmt_frame(tpAniSirGlobal mac_ctx,
uint8_t qos_enabled, wme_enabled, wsm_enabled;
void *packet;
QDF_STATUS qdf_status;
- uint16_t add_ie_len;
+ uint16_t add_ie_len, assoc_ack_status;
uint8_t *add_ie;
uint8_t *wps_ie = NULL;
uint8_t power_caps = false;
@@ -2046,22 +2076,28 @@ lim_send_assoc_req_mgmt_frame(tpAniSirGlobal mac_ctx,
mac_hdr = (tpSirMacMgmtHdr) frame;
MTRACE(qdf_trace(QDF_MODULE_ID_PE, TRACE_CODE_TX_MGMT,
pe_session->peSessionId, mac_hdr->fc.subType));
- qdf_status =
- wma_tx_frame(mac_ctx, packet,
- (uint16_t) (sizeof(tSirMacMgmtHdr) + payload),
- TXRX_FRM_802_11_MGMT, ANI_TXDIR_TODS, 7,
- lim_tx_complete, frame, tx_flag, sme_sessionid, 0);
- MTRACE(qdf_trace
- (QDF_MODULE_ID_PE, TRACE_CODE_TX_COMPLETE,
- pe_session->peSessionId, qdf_status));
+
+ qdf_status = wma_tx_frameWithTxComplete(mac_ctx, packet,
+ (uint16_t) (sizeof(tSirMacMgmtHdr) + payload),
+ TXRX_FRM_802_11_MGMT, ANI_TXDIR_TODS, 7,
+ lim_tx_complete, frame,
+ lim_assoc_tx_complete_cnf,
+ tx_flag, sme_sessionid, false, 0);
+ MTRACE(qdf_trace(QDF_MODULE_ID_PE, TRACE_CODE_TX_COMPLETE,
+ pe_session->peSessionId, qdf_status));
+
if (!QDF_IS_STATUS_SUCCESS(qdf_status)) {
lim_log(mac_ctx, LOGE,
FL("Failed to send Association Request (%X)!"),
qdf_status);
+ assoc_ack_status = SENT_FAIL;
+ lim_diag_event_report(mac_ctx, WLAN_PE_DIAG_ASSOC_ACK_EVENT,
+ pe_session, assoc_ack_status, eSIR_FAILURE);
/* Pkt will be freed up by the callback */
qdf_mem_free(frm);
return;
}
+
/* Free up buffer allocated for mlm_assoc_req */
qdf_mem_free(mlm_assoc_req);
mlm_assoc_req = NULL;
@@ -2081,15 +2117,25 @@ lim_send_assoc_req_mgmt_frame(tpAniSirGlobal mac_ctx,
static QDF_STATUS lim_auth_tx_complete_cnf(tpAniSirGlobal mac_ctx,
uint32_t tx_complete)
{
+ uint16_t auth_ack_status;
+ uint16_t reason_code;
+
lim_log(mac_ctx, LOG1,
FL("tx_complete= %d"), tx_complete);
if (tx_complete) {
mac_ctx->auth_ack_status = LIM_AUTH_ACK_RCD_SUCCESS;
+ auth_ack_status = ACKED;
+ reason_code = eSIR_SUCCESS;
/* 'Change' timer for future activations */
lim_deactivate_and_change_timer(mac_ctx, eLIM_AUTH_RETRY_TIMER);
} else {
mac_ctx->auth_ack_status = LIM_AUTH_ACK_RCD_FAILURE;
+ auth_ack_status = NOT_ACKED;
+ reason_code = eSIR_FAILURE;
}
+
+ lim_diag_event_report(mac_ctx, WLAN_PE_DIAG_AUTH_ACK_EVENT,
+ NULL, auth_ack_status, reason_code);
return QDF_STATUS_SUCCESS;
}
@@ -2113,7 +2159,7 @@ lim_send_auth_mgmt_frame(tpAniSirGlobal mac_ctx,
tpSirMacAuthFrameBody auth_frame,
tSirMacAddr peer_addr,
uint8_t wep_bit,
- tpPESession session, bool wait_for_ack)
+ tpPESession session)
{
uint8_t *frame, *body;
uint32_t frame_len = 0, body_len = 0;
@@ -2122,7 +2168,7 @@ lim_send_auth_mgmt_frame(tpAniSirGlobal mac_ctx,
QDF_STATUS qdf_status;
uint8_t tx_flag = 0;
uint8_t sme_sessionid = 0;
- uint16_t ft_ies_length = 0;
+ uint16_t ft_ies_length = 0, auth_ack_status;
if (NULL == session) {
lim_log(mac_ctx, LOGE, FL("Error: psession Entry is NULL"));
@@ -2142,9 +2188,8 @@ lim_send_auth_mgmt_frame(tpAniSirGlobal mac_ctx,
* 4 bytes each for IV & ICV.
*/
lim_log(mac_ctx, LOG1,
- FL("Sending encrypted auth frame to " MAC_ADDRESS_STR
- "- wait_for_ack %d"), MAC_ADDR_ARRAY(peer_addr),
- wait_for_ack);
+ FL("Sending encrypted auth frame to " MAC_ADDRESS_STR),
+ MAC_ADDR_ARRAY(peer_addr));
frame_len = sizeof(tSirMacMgmtHdr) + LIM_ENCR_AUTH_BODY_LEN;
body_len = LIM_ENCR_AUTH_BODY_LEN;
@@ -2153,12 +2198,11 @@ lim_send_auth_mgmt_frame(tpAniSirGlobal mac_ctx,
}
lim_log(mac_ctx, LOG1,
- FL("Sending Auth seq# %d status %d (%d) wait_for_ack %d to "
+ FL("Sending Auth seq# %d status %d (%d) to "
MAC_ADDRESS_STR),
auth_frame->authTransactionSeqNumber,
auth_frame->authStatusCode,
(auth_frame->authStatusCode == eSIR_MAC_SUCCESS_STATUS),
- wait_for_ack,
MAC_ADDR_ARRAY(peer_addr));
switch (auth_frame->authTransactionSeqNumber) {
@@ -2371,35 +2415,23 @@ alloc_packet:
MTRACE(qdf_trace(QDF_MODULE_ID_PE, TRACE_CODE_TX_MGMT,
session->peSessionId, mac_hdr->fc.subType));
- if (wait_for_ack) {
- mac_ctx->auth_ack_status = LIM_AUTH_ACK_NOT_RCD;
- qdf_status = wma_tx_frameWithTxComplete(mac_ctx, packet,
+ mac_ctx->auth_ack_status = LIM_AUTH_ACK_NOT_RCD;
+ qdf_status = wma_tx_frameWithTxComplete(mac_ctx, packet,
(uint16_t)frame_len,
TXRX_FRM_802_11_MGMT, ANI_TXDIR_TODS,
7, lim_tx_complete, frame,
lim_auth_tx_complete_cnf,
tx_flag, sme_sessionid, false, 0);
- MTRACE(qdf_trace(QDF_MODULE_ID_PE, TRACE_CODE_TX_COMPLETE,
- session->peSessionId, qdf_status));
- if (!QDF_IS_STATUS_SUCCESS(qdf_status)) {
- lim_log(mac_ctx, LOGE,
- FL("*** Could not send Auth frame, retCode=%X ***"),
- qdf_status);
- mac_ctx->auth_ack_status = LIM_AUTH_ACK_RCD_FAILURE;
- /* Pkt will be freed up by the callback */
- }
- } else {
- /* Queue Authentication frame in high priority WQ */
- qdf_status = wma_tx_frame(mac_ctx, packet, (uint16_t) frame_len,
- TXRX_FRM_802_11_MGMT,
- ANI_TXDIR_TODS, 7, lim_tx_complete,
- frame, tx_flag, sme_sessionid, 0);
- MTRACE(qdf_trace(QDF_MODULE_ID_PE, TRACE_CODE_TX_COMPLETE,
- session->peSessionId, qdf_status));
- if (!QDF_IS_STATUS_SUCCESS(qdf_status))
- lim_log(mac_ctx, LOGE,
- FL("*** Could not send Auth frame, retCode=%X ***"),
- qdf_status);
+ MTRACE(qdf_trace(QDF_MODULE_ID_PE, TRACE_CODE_TX_COMPLETE,
+ session->peSessionId, qdf_status));
+ if (!QDF_IS_STATUS_SUCCESS(qdf_status)) {
+ lim_log(mac_ctx, LOGE,
+ FL("*** Could not send Auth frame, retCode=%X ***"),
+ qdf_status);
+ mac_ctx->auth_ack_status = LIM_AUTH_ACK_RCD_FAILURE;
+ auth_ack_status = SENT_FAIL;
+ lim_diag_event_report(mac_ctx, WLAN_PE_DIAG_AUTH_ACK_EVENT,
+ session, auth_ack_status, eSIR_FAILURE);
}
return;
}
diff --git a/core/mac/src/pe/lim/lim_types.h b/core/mac/src/pe/lim/lim_types.h
index 99952bc233a0..eb3321a9d5a6 100644
--- a/core/mac/src/pe/lim/lim_types.h
+++ b/core/mac/src/pe/lim/lim_types.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012-2016 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2017 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -464,7 +464,7 @@ tSirRetStatus lim_send_probe_req_mgmt_frame(tpAniSirGlobal, tSirMacSSid *,
void lim_send_probe_rsp_mgmt_frame(tpAniSirGlobal, tSirMacAddr, tpAniSSID, short,
uint8_t, tpPESession, uint8_t);
void lim_send_auth_mgmt_frame(tpAniSirGlobal, tSirMacAuthFrameBody *, tSirMacAddr,
- uint8_t, tpPESession, bool wait_for_ack);
+ uint8_t, tpPESession);
void lim_send_assoc_req_mgmt_frame(tpAniSirGlobal, tLimMlmAssocReq *, tpPESession);
#ifdef WLAN_FEATURE_HOST_ROAM
void lim_send_reassoc_req_with_ft_ies_mgmt_frame(tpAniSirGlobal pMac,
diff --git a/core/mac/src/pe/lim/lim_utils.h b/core/mac/src/pe/lim/lim_utils.h
index 1c66d88da52e..09bca083ab25 100644
--- a/core/mac/src/pe/lim/lim_utils.h
+++ b/core/mac/src/pe/lim/lim_utils.h
@@ -476,7 +476,21 @@ bool lim_check_membership_user_position(tpAniSirGlobal pMac,
uint32_t membership, uint32_t userPosition,
uint8_t staId);
-#ifdef FEATURE_WLAN_DIAG_SUPPORT
+/**
+ * enum ack_status - Indicate TX status of ASSOC/AUTH
+ * @ACKED : Ack is received.
+ * @NOT_ACKED : No Ack received.
+ * @SENT_FAIL : Failure while sending.
+ *
+ * Indicate if driver is waiting for ACK status of assoc/auth or ACK received
+ * for ASSOC/AUTH OR NO ACK is received for the assoc/auth sent or assoc/auth
+ * sent failed.
+ */
+enum assoc_ack_status {
+ ACKED,
+ NOT_ACKED,
+ SENT_FAIL,
+};
typedef enum {
WLAN_PE_DIAG_SCAN_REQ_EVENT = 0,
@@ -557,11 +571,18 @@ typedef enum {
WLAN_PE_DIAG_AUTH_TIMEOUT,
WLAN_PE_DIAG_DEAUTH_FRAME_EVENT,
WLAN_PE_DIAG_DISASSOC_FRAME_EVENT,
+ WLAN_PE_DIAG_AUTH_ACK_EVENT,
+ WLAN_PE_DIAG_ASSOC_ACK_EVENT,
} WLAN_PE_DIAG_EVENT_TYPE;
+#ifdef FEATURE_WLAN_DIAG_SUPPORT
void lim_diag_event_report(tpAniSirGlobal pMac, uint16_t eventType,
tpPESession pSessionEntry, uint16_t status,
uint16_t reasonCode);
+#else
+static inline void lim_diag_event_report(tpAniSirGlobal pMac, uint16_t
+ eventType, tpPESession pSessionEntry, uint16_t status,
+ uint16_t reasonCode) {}
#endif /* FEATURE_WLAN_DIAG_SUPPORT */
void pe_set_resume_channel(tpAniSirGlobal pMac, uint16_t channel,