浏览代码

qcacmn: Consider TID from skb mark even when tid_override is enabled

Consider TID from skb mark when tid_override is enabled along
with SAWF.

Change-Id: I2d1b55017f7c1de6fa3305aa903b8a97edca501c
CRs-Fixed: 3421733
Harsh Kumar Bijlani 2 年之前
父节点
当前提交
ef49de7005
共有 2 个文件被更改,包括 26 次插入8 次删除
  1. 19 4
      dp/wifi3.0/be/dp_be_tx.c
  2. 7 4
      dp/wifi3.0/li/dp_li_tx.c

+ 19 - 4
dp/wifi3.0/be/dp_be_tx.c

@@ -917,8 +917,20 @@ bool dp_tx_mlo_is_mcast_primary_be(struct dp_soc *soc,
 #endif
 
 #ifdef CONFIG_SAWF
+/**
+ * dp_sawf_config_be - Configure sawf specific fields in tcl
+ *
+ * @soc: DP soc handle
+ * @hal_tx_desc_cached: tx descriptor
+ * @fw_metadata: firmware metadata
+ * @nbuf: skb buffer
+ * @msdu_info: msdu info
+ *
+ * Return: void
+ */
 void dp_sawf_config_be(struct dp_soc *soc, uint32_t *hal_tx_desc_cached,
-		       uint16_t *fw_metadata, qdf_nbuf_t nbuf)
+		       uint16_t *fw_metadata, qdf_nbuf_t nbuf,
+		       struct dp_tx_msdu_info_s *msdu_info)
 {
 	uint8_t q_id = 0;
 
@@ -930,6 +942,7 @@ void dp_sawf_config_be(struct dp_soc *soc, uint32_t *hal_tx_desc_cached,
 
 	if (q_id == DP_SAWF_DEFAULT_Q_INVALID)
 		return;
+	msdu_info->tid = (q_id & (CDP_DATA_TID_MAX - 1));
 	hal_tx_desc_set_hlos_tid(hal_tx_desc_cached,
 				 (q_id & (CDP_DATA_TID_MAX - 1)));
 	hal_tx_desc_set_flow_override_enable(hal_tx_desc_cached,
@@ -944,7 +957,8 @@ void dp_sawf_config_be(struct dp_soc *soc, uint32_t *hal_tx_desc_cached,
 
 static inline
 void dp_sawf_config_be(struct dp_soc *soc, uint32_t *hal_tx_desc_cached,
-		       uint16_t *fw_metadata, qdf_nbuf_t nbuf)
+		       uint16_t *fw_metadata, qdf_nbuf_t nbuf,
+		       struct dp_tx_msdu_info_s *msdu_info)
 {
 }
 
@@ -1141,7 +1155,7 @@ dp_tx_hw_enqueue_be(struct dp_soc *soc, struct dp_vdev *vdev,
 	int coalesce = 0;
 	struct dp_tx_queue *tx_q = &msdu_info->tx_queue;
 	uint8_t ring_id = tx_q->ring_id;
-	uint8_t tid = msdu_info->tid;
+	uint8_t tid;
 	struct dp_vdev_be *be_vdev;
 	uint8_t cached_desc[HAL_TX_DESC_LEN_BYTES] = { 0 };
 	uint8_t bm_id = dp_tx_get_rbm_id_be(soc, ring_id);
@@ -1178,7 +1192,7 @@ dp_tx_hw_enqueue_be(struct dp_soc *soc, struct dp_vdev *vdev,
 
 	if (dp_sawf_tag_valid_get(tx_desc->nbuf)) {
 		dp_sawf_config_be(soc, hal_tx_desc_cached,
-				  &fw_metadata, tx_desc->nbuf);
+				  &fw_metadata, tx_desc->nbuf, msdu_info);
 		dp_sawf_tx_enqueue_peer_stats(soc, tx_desc);
 	}
 
@@ -1217,6 +1231,7 @@ dp_tx_hw_enqueue_be(struct dp_soc *soc, struct dp_vdev *vdev,
 
 	dp_tx_vdev_id_set_hal_tx_desc(hal_tx_desc_cached, vdev, msdu_info);
 
+	tid = msdu_info->tid;
 	if (tid != HTT_TX_EXT_TID_INVALID)
 		hal_tx_desc_set_hlos_tid(hal_tx_desc_cached, tid);
 

+ 7 - 4
dp/wifi3.0/li/dp_li_tx.c

@@ -377,13 +377,14 @@ QDF_STATUS dp_tx_compute_hw_delay_li(struct dp_soc *soc,
  * @fw_metadata: firmware metadata
  * @vdev_id: vdev id
  * @nbuf: skb buffer
+ * @msdu_info: msdu info
  *
  * Return: void
  */
 static inline
 void dp_sawf_config_li(struct dp_soc *soc, uint32_t *hal_tx_desc_cached,
 		       uint16_t *fw_metadata, uint16_t vdev_id,
-		       qdf_nbuf_t nbuf)
+		       qdf_nbuf_t nbuf, struct dp_tx_msdu_info_s *msdu_info)
 {
 	uint8_t q_id = 0;
 	uint32_t search_index;
@@ -399,6 +400,7 @@ void dp_sawf_config_li(struct dp_soc *soc, uint32_t *hal_tx_desc_cached,
 
 	search_index = dp_sawf_get_search_index(soc, nbuf, vdev_id,
 						q_id);
+	msdu_info->tid = (q_id & (CDP_DATA_TID_MAX - 1));
 	hal_tx_desc_set_hlos_tid(hal_tx_desc_cached,
 				 (q_id & (CDP_DATA_TID_MAX - 1)));
 	hal_tx_desc_set_search_type_li(soc->hal_soc, hal_tx_desc_cached,
@@ -410,7 +412,7 @@ void dp_sawf_config_li(struct dp_soc *soc, uint32_t *hal_tx_desc_cached,
 static inline
 void dp_sawf_config_li(struct dp_soc *soc, uint32_t *hal_tx_desc_cached,
 		       uint16_t *fw_metadata, uint16_t vdev_id,
-		       qdf_nbuf_t nbuf)
+		       qdf_nbuf_t nbuf, struct dp_tx_msdu_info_s *msdu_info)
 {
 }
 
@@ -429,7 +431,7 @@ dp_tx_hw_enqueue_li(struct dp_soc *soc, struct dp_vdev *vdev,
 	int coalesce = 0;
 	struct dp_tx_queue *tx_q = &msdu_info->tx_queue;
 	uint8_t ring_id = tx_q->ring_id & DP_TX_QUEUE_MASK;
-	uint8_t tid = msdu_info->tid;
+	uint8_t tid;
 
 	/*
 	 * Setting it initialization statically here to avoid
@@ -474,7 +476,7 @@ dp_tx_hw_enqueue_li(struct dp_soc *soc, struct dp_vdev *vdev,
 
 	if (dp_sawf_tag_valid_get(tx_desc->nbuf)) {
 		dp_sawf_config_li(soc, hal_tx_desc_cached, &fw_metadata,
-				  vdev->vdev_id, tx_desc->nbuf);
+				  vdev->vdev_id, tx_desc->nbuf, msdu_info);
 		dp_sawf_tx_enqueue_peer_stats(soc, tx_desc);
 	}
 
@@ -496,6 +498,7 @@ dp_tx_hw_enqueue_li(struct dp_soc *soc, struct dp_vdev *vdev,
 		hal_tx_desc_set_l4_checksum_en(hal_tx_desc_cached, 1);
 	}
 
+	tid = msdu_info->tid;
 	if (tid != HTT_TX_EXT_TID_INVALID)
 		hal_tx_desc_set_hlos_tid(hal_tx_desc_cached, tid);