Merge "qcacmn: Enable SW2TCL_CMD ring for data"
This commit is contained in:

committed by
Gerrit - the friendly Code Review server

commit
782c0802c6
@@ -1139,8 +1139,10 @@ static QDF_STATUS dp_tx_hw_enqueue(struct dp_soc *soc, struct dp_vdev *vdev,
|
|||||||
tx_exc_metadata->sec_type : vdev->sec_type);
|
tx_exc_metadata->sec_type : vdev->sec_type);
|
||||||
|
|
||||||
/* Return Buffer Manager ID */
|
/* Return Buffer Manager ID */
|
||||||
uint8_t bm_id = ring_id;
|
uint8_t bm_id = dp_tx_get_rbm_id(soc, ring_id);
|
||||||
hal_ring_handle_t hal_ring_hdl = soc->tcl_data_ring[ring_id].hal_srng;
|
|
||||||
|
hal_ring_handle_t hal_ring_hdl = NULL;
|
||||||
|
|
||||||
QDF_STATUS status = QDF_STATUS_E_RESOURCES;
|
QDF_STATUS status = QDF_STATUS_E_RESOURCES;
|
||||||
|
|
||||||
if (!dp_tx_is_desc_id_valid(soc, tx_desc->id)) {
|
if (!dp_tx_is_desc_id_valid(soc, tx_desc->id)) {
|
||||||
@@ -1210,7 +1212,8 @@ static QDF_STATUS dp_tx_hw_enqueue(struct dp_soc *soc, struct dp_vdev *vdev,
|
|||||||
length, type, (uint64_t)dma_addr,
|
length, type, (uint64_t)dma_addr,
|
||||||
tx_desc->pkt_offset, tx_desc->id);
|
tx_desc->pkt_offset, tx_desc->id);
|
||||||
|
|
||||||
hal_ring_hdl = soc->tcl_data_ring[ring_id].hal_srng;
|
hal_ring_hdl = dp_tx_get_hal_ring_hdl(soc, ring_id);
|
||||||
|
|
||||||
if (qdf_unlikely(hal_srng_access_start(soc->hal_soc, hal_ring_hdl))) {
|
if (qdf_unlikely(hal_srng_access_start(soc->hal_soc, hal_ring_hdl))) {
|
||||||
QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_ERROR,
|
QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_ERROR,
|
||||||
"%s %d : HAL RING Access Failed -- %pK",
|
"%s %d : HAL RING Access Failed -- %pK",
|
||||||
|
@@ -316,12 +316,43 @@ static inline void dp_tx_get_queue(struct dp_vdev *vdev,
|
|||||||
DP_TX_QUEUE_MASK;
|
DP_TX_QUEUE_MASK;
|
||||||
|
|
||||||
queue->desc_pool_id = queue_offset;
|
queue->desc_pool_id = queue_offset;
|
||||||
queue->ring_id = vdev->pdev->soc->tx_ring_map[queue_offset];
|
queue->ring_id = qdf_get_cpu();
|
||||||
|
|
||||||
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_DEBUG,
|
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_DEBUG,
|
||||||
"%s, pool_id:%d ring_id: %d",
|
"%s, pool_id:%d ring_id: %d",
|
||||||
__func__, queue->desc_pool_id, queue->ring_id);
|
__func__, queue->desc_pool_id, queue->ring_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* dp_tx_get_hal_ring_hdl()- Get the hal_tx_ring_hdl for data transmission
|
||||||
|
* @dp_soc - DP soc structure pointer
|
||||||
|
* @ring_id - Transmit Queue/ring_id to be used when XPS is enabled
|
||||||
|
*
|
||||||
|
* Return - HAL ring handle
|
||||||
|
*/
|
||||||
|
static inline hal_ring_handle_t dp_tx_get_hal_ring_hdl(struct dp_soc *soc,
|
||||||
|
uint8_t ring_id)
|
||||||
|
{
|
||||||
|
if (ring_id == soc->num_tcl_data_rings)
|
||||||
|
return soc->tcl_cmd_credit_ring.hal_srng;
|
||||||
|
|
||||||
|
return soc->tcl_data_ring[ring_id].hal_srng;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* dp_tx_get_rbm_id()- Get the RBM ID for data transmission completion.
|
||||||
|
* @dp_soc - DP soc structure pointer
|
||||||
|
* @ring_id - Transmit Queue/ring_id to be used when XPS is enabled
|
||||||
|
*
|
||||||
|
* Return - HAL ring handle
|
||||||
|
*/
|
||||||
|
static inline uint8_t dp_tx_get_rbm_id(struct dp_soc *doc,
|
||||||
|
uint8_t ring_id)
|
||||||
|
{
|
||||||
|
return (ring_id ? HAL_WBM_SW0_BM_ID + (ring_id - 1) :
|
||||||
|
HAL_WBM_SW2_BM_ID);
|
||||||
|
}
|
||||||
|
|
||||||
#else /* QCA_OL_TX_MULTIQ_SUPPORT */
|
#else /* QCA_OL_TX_MULTIQ_SUPPORT */
|
||||||
static inline void dp_tx_get_queue(struct dp_vdev *vdev,
|
static inline void dp_tx_get_queue(struct dp_vdev *vdev,
|
||||||
qdf_nbuf_t nbuf, struct dp_tx_queue *queue)
|
qdf_nbuf_t nbuf, struct dp_tx_queue *queue)
|
||||||
@@ -334,6 +365,18 @@ static inline void dp_tx_get_queue(struct dp_vdev *vdev,
|
|||||||
"%s, pool_id:%d ring_id: %d",
|
"%s, pool_id:%d ring_id: %d",
|
||||||
__func__, queue->desc_pool_id, queue->ring_id);
|
__func__, queue->desc_pool_id, queue->ring_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline hal_ring_handle_t dp_tx_get_hal_ring_hdl(struct dp_soc *soc,
|
||||||
|
uint8_t ring_id)
|
||||||
|
{
|
||||||
|
return soc->tcl_data_ring[ring_id].hal_srng;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline uint8_t dp_tx_get_rbm_id(struct dp_soc *soc,
|
||||||
|
uint8_t ring_id)
|
||||||
|
{
|
||||||
|
return (ring_id + HAL_WBM_SW0_BM_ID);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef FEATURE_PERPKT_INFO
|
#ifdef FEATURE_PERPKT_INFO
|
||||||
QDF_STATUS
|
QDF_STATUS
|
||||||
|
@@ -101,7 +101,7 @@ void hal_tx_comp_get_status_generic(void *desc,
|
|||||||
* Return: void
|
* Return: void
|
||||||
*/
|
*/
|
||||||
static inline void hal_tx_desc_set_buf_addr_generic(void *desc,
|
static inline void hal_tx_desc_set_buf_addr_generic(void *desc,
|
||||||
dma_addr_t paddr, uint8_t pool_id,
|
dma_addr_t paddr, uint8_t rbm_id,
|
||||||
uint32_t desc_id, uint8_t type)
|
uint32_t desc_id, uint8_t type)
|
||||||
{
|
{
|
||||||
/* Set buffer_addr_info.buffer_addr_31_0 */
|
/* Set buffer_addr_info.buffer_addr_31_0 */
|
||||||
@@ -114,11 +114,11 @@ static inline void hal_tx_desc_set_buf_addr_generic(void *desc,
|
|||||||
HAL_TX_SM(UNIFIED_BUFFER_ADDR_INFO_1, BUFFER_ADDR_39_32,
|
HAL_TX_SM(UNIFIED_BUFFER_ADDR_INFO_1, BUFFER_ADDR_39_32,
|
||||||
(((uint64_t) paddr) >> 32));
|
(((uint64_t) paddr) >> 32));
|
||||||
|
|
||||||
/* Set buffer_addr_info.return_buffer_manager = pool id */
|
/* Set buffer_addr_info.return_buffer_manager = rbm id */
|
||||||
HAL_SET_FLD(desc, UNIFIED_TCL_DATA_CMD_1,
|
HAL_SET_FLD(desc, UNIFIED_TCL_DATA_CMD_1,
|
||||||
BUFFER_ADDR_INFO_BUF_ADDR_INFO) |=
|
BUFFER_ADDR_INFO_BUF_ADDR_INFO) |=
|
||||||
HAL_TX_SM(UNIFIED_BUFFER_ADDR_INFO_1,
|
HAL_TX_SM(UNIFIED_BUFFER_ADDR_INFO_1,
|
||||||
RETURN_BUFFER_MANAGER, (pool_id + HAL_WBM_SW0_BM_ID));
|
RETURN_BUFFER_MANAGER, rbm_id);
|
||||||
|
|
||||||
/* Set buffer_addr_info.sw_buffer_cookie = desc_id */
|
/* Set buffer_addr_info.sw_buffer_cookie = desc_id */
|
||||||
HAL_SET_FLD(desc, UNIFIED_TCL_DATA_CMD_1,
|
HAL_SET_FLD(desc, UNIFIED_TCL_DATA_CMD_1,
|
||||||
|
Reference in New Issue
Block a user