浏览代码

qca-wifi: support flush tlv in tx capture

all pending excess retries  ppdu desc are handled
for flush tlv

Change-Id: Id34664eec0680cd3712d14e9abd6329f7d1b10aa
nobelj 5 年之前
父节点
当前提交
da95696a44
共有 1 个文件被更改,包括 37 次插入0 次删除
  1. 37 0
      dp/wifi3.0/dp_tx_capture.c

+ 37 - 0
dp/wifi3.0/dp_tx_capture.c

@@ -1797,6 +1797,35 @@ dp_tx_mon_proc_pending_ppdus(struct dp_pdev *pdev, struct dp_tx_tid *tx_tid,
 	}
 	}
 }
 }
 
 
+/**
+ * dp_tx_ppdu_stats_flush(): Function to flush pending retried ppdu desc
+ * @pdev: DP pdev handle
+ * @nbuf: ppdu_desc
+ *
+ * return: void
+ */
+static void
+dp_tx_ppdu_stats_flush(struct dp_pdev *pdev,
+		       struct cdp_tx_completion_ppdu *ppdu_desc)
+{
+	struct dp_peer *peer;
+
+	peer = dp_peer_find_by_id(pdev->soc,
+				  ppdu_desc->user[0].peer_id);
+
+	if (!peer)
+		return;
+
+	/*
+	 * for all drop reason we are invoking
+	 * proc xretries
+	 */
+	dp_tx_mon_proc_xretries(pdev, peer, ppdu_desc->user[0].tid);
+
+	dp_peer_unref_del_find_by_id(peer);
+	return;
+}
+
 /**
 /**
  * dp_check_ppdu_and_deliver(): Check PPDUs for any holes and deliver
  * dp_check_ppdu_and_deliver(): Check PPDUs for any holes and deliver
  * to upper layer if complete
  * to upper layer if complete
@@ -1834,6 +1863,14 @@ dp_check_ppdu_and_deliver(struct dp_pdev *pdev,
 
 
 		ppdu_id = ppdu_desc->ppdu_id;
 		ppdu_id = ppdu_desc->ppdu_id;
 
 
+		if (ppdu_desc->is_flush) {
+			dp_tx_ppdu_stats_flush(pdev, ppdu_desc);
+			tmp_nbuf = nbuf_ppdu_desc_list[desc_cnt];
+			nbuf_ppdu_desc_list[desc_cnt] = NULL;
+			qdf_nbuf_free(tmp_nbuf);
+			continue;
+		}
+
 		if (ppdu_desc->frame_type == CDP_PPDU_FTYPE_CTRL ||
 		if (ppdu_desc->frame_type == CDP_PPDU_FTYPE_CTRL ||
 		    ppdu_desc->htt_frame_type ==
 		    ppdu_desc->htt_frame_type ==
 			HTT_STATS_FTYPE_SGEN_QOS_NULL) {
 			HTT_STATS_FTYPE_SGEN_QOS_NULL) {