浏览代码

qcacmn: Skip duplicate destination ring desc in WKK RxMON

Skip duplicate destination ring desc in WKK RxMON

CRs-Fixed: 3162134
Change-Id: I38e7855a9d4fd19a4aaa476fbeeaa0c4a8e309e2
Amir Patel 3 年之前
父节点
当前提交
67d1b9bf12
共有 2 个文件被更改,包括 13 次插入0 次删除
  1. 2 0
      dp/wifi3.0/monitor/2.0/dp_mon_2.0.h
  2. 11 0
      dp/wifi3.0/monitor/2.0/dp_rx_mon_2.0.c

+ 2 - 0
dp/wifi3.0/monitor/2.0/dp_mon_2.0.h

@@ -134,6 +134,8 @@ struct dp_mon_pdev_be {
 	struct dp_lite_mon_rx_config *lite_mon_rx_config;
 	struct dp_lite_mon_tx_config *lite_mon_tx_config;
 #endif
+	void *prev_rxmon_desc;
+	uint32_t prev_rxmon_cookie;
 };
 
 /**

+ 11 - 0
dp/wifi3.0/monitor/2.0/dp_rx_mon_2.0.c

@@ -448,6 +448,17 @@ dp_rx_mon_srng_process_2_0(struct dp_soc *soc, struct dp_intr *int_ctx,
 		mon_desc = (struct dp_mon_desc *)(uintptr_t)(hal_mon_rx_desc.buf_addr);
 		qdf_assert_always(mon_desc);
 
+		if ((mon_desc == mon_pdev_be->prev_rxmon_desc) &&
+		    (mon_desc->cookie == mon_pdev_be->prev_rxmon_cookie)) {
+			dp_mon_err("duplicate descritout found mon_pdev: %pK mon_desc: %pK cookie: %d",
+				   mon_pdev, mon_desc, mon_desc->cookie);
+			mon_pdev->rx_mon_stats.dup_mon_buf_cnt++;
+			hal_srng_dst_get_next(hal_soc, mon_dst_srng);
+			continue;
+		}
+		mon_pdev_be->prev_rxmon_desc = mon_desc;
+		mon_pdev_be->prev_rxmon_cookie = mon_desc->cookie;
+
 		if (!mon_desc->unmapped) {
 			qdf_mem_unmap_page(soc->osdev, mon_desc->paddr,
 					   rx_mon_desc_pool->buf_size,