Sfoglia il codice sorgente

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 4 anni fa
parent
commit
1e9696ee08
1 ha cambiato i file con 11 aggiunte e 0 eliminazioni
  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;