Merge "qcacmn: Enable SW2TCL_CMD ring for data"
Bu işleme şunda yer alıyor:

işlemeyi yapan:
Gerrit - the friendly Code Review server

işleme
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);
|
||||
|
||||
/* Return Buffer Manager ID */
|
||||
uint8_t bm_id = ring_id;
|
||||
hal_ring_handle_t hal_ring_hdl = soc->tcl_data_ring[ring_id].hal_srng;
|
||||
uint8_t bm_id = dp_tx_get_rbm_id(soc, ring_id);
|
||||
|
||||
hal_ring_handle_t hal_ring_hdl = NULL;
|
||||
|
||||
QDF_STATUS status = QDF_STATUS_E_RESOURCES;
|
||||
|
||||
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,
|
||||
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))) {
|
||||
QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_ERROR,
|
||||
"%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;
|
||||
|
||||
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,
|
||||
"%s, pool_id:%d ring_id: %d",
|
||||
__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 */
|
||||
static inline void dp_tx_get_queue(struct dp_vdev *vdev,
|
||||
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",
|
||||
__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
|
||||
#ifdef FEATURE_PERPKT_INFO
|
||||
QDF_STATUS
|
||||
|
@@ -101,7 +101,7 @@ void hal_tx_comp_get_status_generic(void *desc,
|
||||
* Return: void
|
||||
*/
|
||||
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)
|
||||
{
|
||||
/* 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,
|
||||
(((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,
|
||||
BUFFER_ADDR_INFO_BUF_ADDR_INFO) |=
|
||||
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 */
|
||||
HAL_SET_FLD(desc, UNIFIED_TCL_DATA_CMD_1,
|
||||
|
Yeni konuda referans
Bir kullanıcı engelle