Browse Source

qcacmn: Remove unnecessary msdu count check in mdpu desc

Remove uncessary msdu count check against msdu count in
mpdu desc info while processing REO Rx err pkts.
As per h/w team msdu count can be obtained from msdu link
desc instead of mpdu desc info.
SOC level Rx err stat rx.err.msdu_count_mismatch is
incremented to log this condition.

Change-Id: I4f7d2df7335778f2f2d28e542da17fc7f6970009
CRs-Fixed: 2729693
Nisha Menon 5 năm trước cách đây
mục cha
commit
a24579c66f
3 tập tin đã thay đổi với 7 bổ sung1 xóa
  1. 2 1
      dp/wifi3.0/dp_rx_err.c
  2. 2 0
      dp/wifi3.0/dp_types.h
  3. 3 0
      hal/wifi3.0/hal_rx.h

+ 2 - 1
dp/wifi3.0/dp_rx_err.c

@@ -571,7 +571,8 @@ more_msdu_link_desc:
 
 	dp_rx_link_desc_return_by_addr(soc, buf_addr_info,
 				       HAL_BM_ACTION_PUT_IN_IDLE_LIST);
-	QDF_BUG(msdu_processed == mpdu_desc_info->msdu_count);
+	if (qdf_unlikely(msdu_processed != mpdu_desc_info->msdu_count))
+		DP_STATS_INC(soc, rx.err.msdu_count_mismatch, 1);
 
 	return rx_bufs_used;
 }

+ 2 - 0
dp/wifi3.0/dp_types.h

@@ -847,6 +847,8 @@ struct dp_soc_stats {
 			uint32_t reo_err_oor_sg_count;
 			/* RX msdu rejected count on delivery to vdev stack_fn*/
 			uint32_t rejected;
+			/* Incorrect msdu count in MPDU desc info */
+			uint32_t msdu_count_mismatch;
 		} err;
 
 		/* packet count per core - per ring */

+ 3 - 0
hal/wifi3.0/hal_rx.h

@@ -1833,6 +1833,9 @@ static inline void hal_rx_msdu_list_get(hal_soc_handle_t hal_soc_hdl,
 		/* num_msdus received in mpdu descriptor may be incorrect
 		 * sometimes due to HW issue. Check msdu buffer address also
 		 */
+		if (!i && (HAL_RX_BUFFER_ADDR_31_0_GET(
+			&msdu_details[i].buffer_addr_info_details) == 0))
+			break;
 		if (HAL_RX_BUFFER_ADDR_31_0_GET(
 			&msdu_details[i].buffer_addr_info_details) == 0) {
 			/* set the last msdu bit in the prev msdu_desc_info */