Jelajahi Sumber

qcacld-3.0: Provide correct status code in case of no ack

Currently, LIM_ACK_NOT_RCD is not handled while filling
status code due to which STATUS_UNSPECIFIED_FAILURE is
updated as part of default handling instead of
STATUS_AUTH_NO_ACK_RECEIVED. Don't overwrite previous
status code in case no ack received from peer.

Fix is to Handle LIM_ACK_NOT_RCD case while filling status
code and consider previous status code when no ack received
from peer.

Change-Id: I366d63ee3ff6abf8a36300451e7f0c46fcf47e39
CRs-Fixed: 3151992
Sheenam Monga 3 tahun lalu
induk
melakukan
1ac1276b1a

+ 3 - 1
core/mac/src/pe/lim/lim_process_mlm_req_messages.c

@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2011-2021 The Linux Foundation. All rights reserved.
- * Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
  *
  * Permission to use, copy, modify, and/or distribute this software for
  * any purpose with or without fee is hereby granted, provided that the
@@ -68,6 +68,7 @@ static void lim_fill_status_code(uint8_t frame_type,
 			*proto_status_code = STATUS_AUTH_TX_FAIL;
 			break;
 		case LIM_ACK_RCD_FAILURE:
+		case LIM_ACK_NOT_RCD:
 			*proto_status_code = STATUS_AUTH_NO_ACK_RECEIVED;
 			break;
 		case LIM_ACK_RCD_SUCCESS:
@@ -82,6 +83,7 @@ static void lim_fill_status_code(uint8_t frame_type,
 			*proto_status_code = STATUS_ASSOC_TX_FAIL;
 			break;
 		case LIM_ACK_RCD_FAILURE:
+		case LIM_ACK_NOT_RCD:
 			*proto_status_code = STATUS_ASSOC_NO_ACK_RECEIVED;
 			break;
 		case LIM_ACK_RCD_SUCCESS:

+ 1 - 2
core/mac/src/pe/lim/lim_send_management_frames.c

@@ -5993,7 +5993,6 @@ static void lim_tx_mgmt_frame(struct mac_context *mac_ctx, uint8_t vdev_id,
 	qdf_mtrace(QDF_MODULE_ID_PE, QDF_MODULE_ID_WMA, TRACE_CODE_TX_MGMT,
 		   session->peSessionId, 0);
 
-	mac_ctx->auth_ack_status = LIM_ACK_NOT_RCD;
 	min_rid = lim_get_min_session_txrate(session);
 
 	if (fc->subType == SIR_MAC_MGMT_AUTH &&
@@ -6148,6 +6147,6 @@ void lim_send_mgmt_frame_tx(struct mac_context *mac_ctx,
 			lim_handle_sae_auth_retry(mac_ctx, vdev_id,
 						  mb_msg->data, msg_len);
 	}
-
+	mac_ctx->auth_ack_status = LIM_ACK_NOT_RCD;
 	lim_send_frame(mac_ctx, vdev_id, mb_msg->data, msg_len);
 }