qcacmn: Add fast TX support for STA mode
Add fast TX support for STA mode too Change-Id: I416076bf7faa2d48fa4d2749f4b08cee2767e279 CRs-Fixed: 3289179
This commit is contained in:

committed by
Madan Koyyalamudi

parent
a560466b61
commit
3366de83ac
@@ -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;
|
hal_ring_handle_t hal_ring_hdl = NULL;
|
||||||
uint32_t *hal_tx_desc_cached;
|
uint32_t *hal_tx_desc_cached;
|
||||||
void *hal_tx_desc;
|
void *hal_tx_desc;
|
||||||
|
uint8_t desc_size = DP_TX_FAST_DESC_SIZE;
|
||||||
|
|
||||||
if (qdf_unlikely(vdev_id >= MAX_VDEV_CNT))
|
if (qdf_unlikely(vdev_id >= MAX_VDEV_CNT))
|
||||||
return nbuf;
|
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->lmac_id << TCL_DATA_CMD_PMAC_ID_LSB;
|
||||||
hal_tx_desc_cached[5] |= vdev->vdev_id << TCL_DATA_CMD_VDEV_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);
|
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))) {
|
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;
|
tx_desc->flags |= DP_TX_DESC_FLAG_QUEUED_TX;
|
||||||
|
|
||||||
/* Sync cached descriptor with HW */
|
/* 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();
|
qdf_dsb();
|
||||||
|
|
||||||
DP_STATS_INC_PKT(vdev, tx_i.processed, 1, tx_desc->length);
|
DP_STATS_INC_PKT(vdev, tx_i.processed, 1, tx_desc->length);
|
||||||
|
@@ -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;
|
ctx->tx_fast = dp_tx_send_vdev_id_check;
|
||||||
} else {
|
} else {
|
||||||
ctx->tx = dp_tx_send;
|
ctx->tx = dp_tx_send;
|
||||||
if (vdev->opmode == wlan_op_mode_ap)
|
ctx->tx_fast = soc->arch_ops.dp_tx_send_fast;
|
||||||
ctx->tx_fast = soc->arch_ops.dp_tx_send_fast;
|
|
||||||
else
|
|
||||||
ctx->tx_fast = dp_tx_send;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Avoid check in regular exception Path */
|
/* Avoid check in regular exception Path */
|
||||||
|
Reference in New Issue
Block a user