Explorar o código

qcacld-3.0: Handle case when SAP assoc rsp tx complete failed

When DUT SAP assoc rsp tx complete failed, assoc failed, should send
disassoc and remove the sta peer, or hostapd will add a fake
peer and send EAPOL to it until timeout. When timeout, host will send
deauth to the peer which will stop new connecting from peer.

Change-Id: I9dc72bec2c67c93bd9749df30e93a0526796ee49
CRs-Fixed: 2779345
Jianmin Zhu %!s(int64=4) %!d(string=hai) anos
pai
achega
1e9696ee08
Modificáronse 1 ficheiros con 11 adicións e 0 borrados
  1. 11 0
      core/mac/src/pe/lim/lim_send_management_frames.c

+ 11 - 0
core/mac/src/pe/lim/lim_send_management_frames.c

@@ -1159,6 +1159,15 @@ static QDF_STATUS lim_assoc_rsp_tx_complete(
 		goto end;
 	}
 
+	if (tx_complete != WMI_MGMT_TX_COMP_TYPE_COMPLETE_OK) {
+		lim_send_disassoc_mgmt_frame(mac_ctx,
+					     REASON_DISASSOC_DUE_TO_INACTIVITY,
+					     sta_ds->staAddr,
+					     session_entry, false);
+		lim_trigger_sta_deletion(mac_ctx, sta_ds, session_entry);
+		goto free_buffers;
+	}
+
 	lim_assoc_ind = qdf_mem_malloc(sizeof(tLimMlmAssocInd));
 	if (!lim_assoc_ind) {
 		pe_err("lim assoc ind is NULL");
@@ -1191,6 +1200,8 @@ static QDF_STATUS lim_assoc_rsp_tx_complete(
 	lim_sys_process_mmh_msg_api(mac_ctx, &msg);
 
 	qdf_mem_free(lim_assoc_ind);
+
+free_buffers:
 	if (assoc_req->assocReqFrame) {
 		qdf_mem_free(assoc_req->assocReqFrame);
 		assoc_req->assocReqFrame = NULL;