Просмотр исходного кода

qcacld-3.0: Fix invalid peer create after vdev down

qcacld-2.0 to qcacld-3.0 propagation

In a SNS case, driver receives ASSOC Req during the SAP
Stopping. The SAP stopping will issue WMI_VDEV_DOWN_CMDID
WMI command to firmware. And ASSOC req frame processing
will issue a WMI_PEER_CREATE_CMDID WMI command to firmware.
Then the firmware crash happens because firmware can't find
the necessary BSS information to create the peer. Firmware
doesn't support peer create after BSS down.
The fix is to ignore the ASSOC Req frame while the deleting
BSS is ongoing.

Change-Id: Ib517642da4fc6b4778ef1ce4e6afd92fa3edb112
CRs-Fixed: 1053809
(cherry picked from commit 2118b5d37d9294a22cff60ec5bd2b7baf4a34cae)
Liangwei Dong 8 лет назад
Родитель
Сommit
9028d75166
1 измененных файлов с 9 добавлено и 0 удалено
  1. 9 0
      core/mac/src/pe/lim/lim_process_assoc_req_frame.c

+ 9 - 0
core/mac/src/pe/lim/lim_process_assoc_req_frame.c

@@ -1775,6 +1775,15 @@ void lim_process_assoc_req_frame(tpAniSirGlobal mac_ctx, uint8_t *rx_pkt_info,
 			     WMA_GET_RX_MPDU_DATA(rx_pkt_info), frame_len);
 		return;
 	}
+	if (session->limMlmState == eLIM_MLM_WT_DEL_BSS_RSP_STATE) {
+		lim_log(mac_ctx, LOGE, FL("drop ASSOC REQ on sessionid: %d "
+			"role=%d from: "MAC_ADDRESS_STR" in limMlmState %d"),
+			session->peSessionId,
+			GET_LIM_SYSTEM_ROLE(session),
+			MAC_ADDR_ARRAY(hdr->sa),
+			eLIM_MLM_WT_DEL_BSS_RSP_STATE);
+		return;
+	}
 
 	/*
 	 * If a STA is already present in DPH and it is initiating a Assoc