Explorar el Código

qcacmn: resolve issue on updating protocol tag

Skip protocol tag updating from msdu end TLV protocol tag meta data
when there is RXDMA REO entrance push error on monitor destination ring.
The attention and msdu end TLV is not updated reliably when there
is RXDMA REO entrance push error such as FCS error on monitor
destination ring.

Change-Id: I4098c01251b4f4cb2e796d450c156ba8f2b9464d
Kai Chen hace 5 años
padre
commit
ee26d03b10
Se han modificado 2 ficheros con 5 adiciones y 1 borrados
  1. 1 1
      dp/inc/cdp_txrx_mon_struct.h
  2. 4 0
      dp/wifi3.0/dp_rx_mon_dest.c

+ 1 - 1
dp/inc/cdp_txrx_mon_struct.h

@@ -195,7 +195,7 @@ struct cdp_mon_status {
 	uint32_t cdp_rs_bw;
 	uint32_t cdp_rs_nss;
 	uint8_t  cdp_rs_fcs_err;
-
+	bool     cdp_rs_rxdma_err;
 };
 
 enum {

+ 4 - 0
dp/wifi3.0/dp_rx_mon_dest.c

@@ -184,6 +184,7 @@ dp_rx_mon_mpdu_pop(struct dp_soc *soc, uint32_t mac_id,
 	uint8_t bm_action = HAL_BM_ACTION_PUT_IN_IDLE_LIST;
 	uint64_t nbuf_paddr = 0;
 	uint32_t rx_link_buf_info[HAL_RX_BUFFINFO_NUM_DWORDS];
+	struct cdp_mon_status *rs;
 
 	if (qdf_unlikely(!dp_pdev)) {
 		QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_DEBUG,
@@ -197,6 +198,8 @@ dp_rx_mon_mpdu_pop(struct dp_soc *soc, uint32_t mac_id,
 
 	hal_rx_reo_ent_buf_paddr_get(rxdma_dst_ring_desc, &buf_info, &msdu_cnt);
 
+	rs = &dp_pdev->rx_mon_recv_status;
+	rs->cdp_rs_rxdma_err = false;
 	if ((hal_rx_reo_ent_rxdma_push_reason_get(rxdma_dst_ring_desc) ==
 		HAL_RX_WBM_RXDMA_PSH_RSN_ERROR)) {
 		uint8_t rxdma_err =
@@ -209,6 +212,7 @@ dp_rx_mon_mpdu_pop(struct dp_soc *soc, uint32_t mac_id,
 			drop_mpdu = true;
 			dp_pdev->rx_mon_stats.dest_mpdu_drop++;
 		}
+		rs->cdp_rs_rxdma_err = true;
 	}
 
 	is_frag = false;