Procházet zdrojové kódy

qcacld-3.0: Optimize the critical update feature

1\ Optimize the log output;
2\ Remove the duplicate code;
3\ Fix issue about processing partner link in probe response frame.

Change-Id: I05a67cf9ee7c017c6f76924f9cf08bbe2185b81c
CRs-Fixed: 3410878
Paul Zhang před 2 roky
rodič
revize
ceb51f6e10

+ 11 - 8
core/mac/src/pe/lim/lim_mlo.c

@@ -57,8 +57,10 @@ QDF_STATUS lim_cu_info_from_rnr_per_link_id(const uint8_t *rnr,
 		tbtt_len = neighbor_ap_info->tbtt_header.tbtt_info_length;
 		tbtt_type = neighbor_ap_info->tbtt_header.tbbt_info_fieldtype;
 		len = tbtt_len * (tbtt_count + 1) + nbr_ap_info_len;
-		if (data + len > rnr_end)
+		if (data + len > rnr_end) {
+			pe_debug("error about rnr length");
 			return QDF_STATUS_E_INVAL;
+		}
 
 		if (tbtt_len >=
 		    TBTT_NEIGHBOR_AP_BSSID_S_SSID_BSS_PARAM_20MHZ_PSD_MLD_PARAM)
@@ -105,6 +107,7 @@ QDF_STATUS lim_get_bpcc_from_mlo_ie(tSchBeaconStruct *bcn, uint8_t *bpcc)
 	if (mlo_ie->mlo_ie_present &&
 	    mlo_ie->mlo_ie.bss_param_change_cnt_present) {
 		*bpcc = mlo_ie->mlo_ie.bss_param_change_count;
+		pe_debug("mlie bpcc %d", *bpcc);
 		status = QDF_STATUS_SUCCESS;
 	} else {
 		*bpcc = 0;
@@ -131,8 +134,8 @@ bool lim_check_cu_happens(struct wlan_objmgr_vdev *vdev, uint8_t new_bpcc)
 	if (new_bpcc == 0 && bpcc == 0)
 		return false;
 
-	pe_debug("new bpcc %d, old bpcc %d, vdev id %d",
-		 new_bpcc, bpcc, vdev_id);
+	pe_debug_rl("vdev id %d new bpcc %d, old bpcc %d",
+		    vdev_id, new_bpcc, bpcc);
 	if (new_bpcc && new_bpcc < bpcc)
 		return false;
 
@@ -545,7 +548,7 @@ QDF_STATUS lim_mlo_proc_assoc_req_frm(struct wlan_objmgr_vdev *vdev,
 	tSirMacFrameCtl fc;
 	tpSirAssocReq assoc_req;
 	QDF_STATUS status;
-	qdf_size_t link_frame_len;
+	qdf_size_t link_frame_len = 0;
 	struct qdf_mac_addr link_bssid;
 
 	if (!vdev) {
@@ -1099,8 +1102,8 @@ QDF_STATUS lim_store_mlo_ie_raw_info(uint8_t *ie, uint8_t *sta_prof_ie,
 	}
 	ml_ie_len = total_len - frag_num * MIN_IE_LEN;
 
-	pe_debug("ml_ie_len: %d, total_len: %d, frag_num: %d", ml_ie_len,
-		 total_len, frag_num);
+	pe_debug_rl("ml_ie_len: %d, total_len: %d, frag_num: %d", ml_ie_len,
+		    total_len, frag_num);
 
 	buf = qdf_mem_malloc(total_len);
 	if (!buf)
@@ -1154,8 +1157,8 @@ QDF_STATUS lim_store_mlo_ie_raw_info(uint8_t *ie, uint8_t *sta_prof_ie,
 			}
 			pfrm += pfrm[TAG_LEN_POS] + MIN_IE_LEN;
 		} while (frag);
-		pe_debug("sta index: %d, sta_data len: %d, copied: %d",
-			 sta_index, index, copied);
+		pe_debug_rl("sta index: %d, sta_data len: %d, copied: %d",
+			    sta_index, index, copied);
 		sta_index++;
 	}
 

+ 0 - 2
core/mac/src/pe/lim/lim_process_beacon_frame.c

@@ -461,8 +461,6 @@ lim_process_beacon_frame(struct mac_context *mac_ctx, uint8_t *rx_pkt_info,
 	if (QDF_IS_STATUS_SUCCESS(lim_check_for_ml_probe_req(session)))
 		goto end;
 
-	lim_process_beacon_eht(mac_ctx, session, bcn_ptr);
-
 	/*
 	 * during scanning, when any session is active, and
 	 * beacon/Pr belongs to one of the session, fill up the

+ 14 - 9
core/mac/src/pe/lim/lim_process_probe_rsp_frame.c

@@ -165,7 +165,7 @@ void lim_process_gen_probe_rsp_frame(struct mac_context *mac_ctx,
 				     uint8_t *bcn_probe, uint32_t len)
 {
 	tSirProbeRespBeacon *probe_rsp;
-	tpSirMacMgmtHdr header;
+	struct wlan_frame_hdr *header;
 	QDF_STATUS status;
 
 	if (!bcn_probe || !len) {
@@ -184,9 +184,15 @@ void lim_process_gen_probe_rsp_frame(struct mac_context *mac_ctx,
 		return;
 	}
 
-	header = (tpSirMacMgmtHdr)(bcn_probe);
-	pe_debug("Generate Probe Resp(len %d): " QDF_MAC_ADDR_FMT,
-		 len, QDF_MAC_ADDR_REF(header->bssId));
+	header = (struct wlan_frame_hdr *)(bcn_probe);
+	pe_debug("Generate Probe Resp for cu (len %d): " QDF_MAC_ADDR_FMT,
+		 len, QDF_MAC_ADDR_REF(header->i_addr3));
+
+	QDF_TRACE_HEX_DUMP(QDF_MODULE_ID_PE, QDF_TRACE_LEVEL_DEBUG,
+			   bcn_probe, len);
+
+	bcn_probe = (uint8_t *)(bcn_probe + sizeof(*header));
+	len -= sizeof(*header);
 
 	status = sir_convert_probe_frame2_struct(mac_ctx,
 						 bcn_probe, len, probe_rsp);
@@ -258,7 +264,7 @@ lim_process_probe_rsp_frame(struct mac_context *mac_ctx, uint8_t *rx_Packet_info
 
 	frame_len = WMA_GET_RX_PAYLOAD_LEN(rx_Packet_info);
 	pe_debug("Probe Resp(len %d): " QDF_MAC_ADDR_FMT " RSSI %d",
-		 WMA_GET_RX_MPDU_LEN(rx_Packet_info),
+		 WMA_GET_RX_PAYLOAD_LEN(rx_Packet_info),
 		 QDF_MAC_ADDR_REF(header->bssId),
 		 (uint)abs(mac_ctx->lim.bss_rssi));
 	/* Get pointer to Probe Response frame body */
@@ -284,12 +290,11 @@ lim_process_probe_rsp_frame(struct mac_context *mac_ctx, uint8_t *rx_Packet_info
 	if (mlo_is_mld_sta(session_entry->vdev)) {
 		cu_flag = false;
 		status = lim_get_bpcc_from_mlo_ie(probe_rsp, &bpcc);
-		if (QDF_IS_STATUS_SUCCESS(status)) {
+		if (QDF_IS_STATUS_SUCCESS(status))
 			cu_flag = lim_check_cu_happens(session_entry->vdev,
 						       bpcc);
-			lim_process_cu_for_probe_rsp(mac_ctx, session_entry,
-						     body, frame_len);
-		}
+		lim_process_cu_for_probe_rsp(mac_ctx, session_entry,
+					     body, frame_len);
 	}
 
 	if (session_entry->limMlmState ==