فهرست منبع

qcacmn: Add fast TX support for STA mode

Add fast TX support for STA mode too

Change-Id: I416076bf7faa2d48fa4d2749f4b08cee2767e279
CRs-Fixed: 3289179
Tallapragada Kalyan 2 سال پیش
والد
کامیت
3366de83ac
2فایلهای تغییر یافته به همراه10 افزوده شده و 5 حذف شده
  1. 9 1
      dp/wifi3.0/be/dp_be_tx.c
  2. 1 4
      dp/wifi3.0/dp_main.c

+ 9 - 1
dp/wifi3.0/be/dp_be_tx.c

@@ -1363,6 +1363,7 @@ qdf_nbuf_t dp_tx_fast_send_be(struct cdp_soc_t *soc_hdl, uint8_t vdev_id,
 	hal_ring_handle_t hal_ring_hdl = NULL;
 	uint32_t *hal_tx_desc_cached;
 	void *hal_tx_desc;
+	uint8_t desc_size = DP_TX_FAST_DESC_SIZE;
 
 	if (qdf_unlikely(vdev_id >= MAX_VDEV_CNT))
 		return nbuf;
@@ -1431,6 +1432,13 @@ qdf_nbuf_t dp_tx_fast_send_be(struct cdp_soc_t *soc_hdl, uint8_t vdev_id,
 	hal_tx_desc_cached[5] = vdev->lmac_id << TCL_DATA_CMD_PMAC_ID_LSB;
 	hal_tx_desc_cached[5] |= vdev->vdev_id << TCL_DATA_CMD_VDEV_ID_LSB;
 
+	if (vdev->opmode == wlan_op_mode_sta) {
+		hal_tx_desc_cached[6] = vdev->bss_ast_idx |
+			((vdev->bss_ast_hash & 0xF) <<
+			 TCL_DATA_CMD_CACHE_SET_NUM_LSB);
+		desc_size = DP_TX_FAST_DESC_SIZE + 4;
+	}
+
 	hal_ring_hdl = dp_tx_get_hal_ring_hdl(soc, desc_pool_id);
 
 	if (qdf_unlikely(dp_tx_hal_ring_access_start(soc, hal_ring_hdl))) {
@@ -1451,7 +1459,7 @@ qdf_nbuf_t dp_tx_fast_send_be(struct cdp_soc_t *soc_hdl, uint8_t vdev_id,
 	tx_desc->flags |= DP_TX_DESC_FLAG_QUEUED_TX;
 
 	/* Sync cached descriptor with HW */
-	qdf_mem_copy(hal_tx_desc, hal_tx_desc_cached, DP_TX_FAST_DESC_SIZE);
+	qdf_mem_copy(hal_tx_desc, hal_tx_desc_cached, desc_size);
 	qdf_dsb();
 
 	DP_STATS_INC_PKT(vdev, tx_i.processed, 1, tx_desc->length);

+ 1 - 4
dp/wifi3.0/dp_main.c

@@ -7185,10 +7185,7 @@ static inline void dp_vdev_fetch_tx_handler(struct dp_vdev *vdev,
 		ctx->tx_fast = dp_tx_send_vdev_id_check;
 	} else {
 		ctx->tx = dp_tx_send;
-		if (vdev->opmode == wlan_op_mode_ap)
-			ctx->tx_fast = soc->arch_ops.dp_tx_send_fast;
-		else
-			ctx->tx_fast = dp_tx_send;
+		ctx->tx_fast = soc->arch_ops.dp_tx_send_fast;
 	}
 
 	/* Avoid check in regular exception Path */