浏览代码

qcacmn: Fix Tx queue selection when IPA is enable for V2 CPE

When IPA is enable and TX DATA ring mask is not set for
TX ring given to IPA, Host should not select the TX queue
which is given to IPA, hence override the TX queue to 0 if
TX queue id is same as IPA TX ALT data ring.

Change-Id: I37d4ed564ca3333effe83277469ae3a9aecf7295
CRs-Fixed: 3445325
Devender Kumar 2 年之前
父节点
当前提交
ba346d4cf9
共有 1 个文件被更改,包括 14 次插入0 次删除
  1. 14 0
      dp/wifi3.0/dp_tx.h

+ 14 - 0
dp/wifi3.0/dp_tx.h

@@ -823,6 +823,19 @@ static inline enum qdf_dp_tx_rx_status dp_tx_hw_to_qdf(uint16_t status)
  */
 #ifdef QCA_OL_TX_MULTIQ_SUPPORT
 #if defined(IPA_OFFLOAD) && defined(QCA_IPA_LL_TX_FLOW_CONTROL)
+#ifdef IPA_WDI3_TX_TWO_PIPES
+static inline void dp_tx_get_queue(struct dp_vdev *vdev,
+				   qdf_nbuf_t nbuf, struct dp_tx_queue *queue)
+{
+	queue->ring_id = qdf_get_cpu();
+	if (vdev->pdev->soc->wlan_cfg_ctx->ipa_enabled)
+		if ((queue->ring_id == IPA_TCL_DATA_RING_IDX) ||
+		    (queue->ring_id == IPA_TX_ALT_RING_IDX))
+			queue->ring_id = 0;
+
+	queue->desc_pool_id = queue->ring_id;
+}
+#else
 static inline void dp_tx_get_queue(struct dp_vdev *vdev,
 				   qdf_nbuf_t nbuf, struct dp_tx_queue *queue)
 {
@@ -833,6 +846,7 @@ static inline void dp_tx_get_queue(struct dp_vdev *vdev,
 
 	queue->desc_pool_id = queue->ring_id;
 }
+#endif
 #else
 static inline void dp_tx_get_queue(struct dp_vdev *vdev,
 				   qdf_nbuf_t nbuf, struct dp_tx_queue *queue)