diff --git a/dp/wifi3.0/be/dp_be_tx.c b/dp/wifi3.0/be/dp_be_tx.c index 283cb75960..aef488c745 100644 --- a/dp/wifi3.0/be/dp_be_tx.c +++ b/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); diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c index da60fd02f1..c40bd05540 100644 --- a/dp/wifi3.0/dp_main.c +++ b/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 */