Merge "qcacmn: Enable SW2TCL_CMD ring for data"

Bu işleme şunda yer alıyor:
Linux Build Service Account
2020-04-08 09:17:04 -07:00
işlemeyi yapan: Gerrit - the friendly Code Review server
işleme 782c0802c6
3 değiştirilmiş dosya ile 53 ekleme ve 7 silme

Dosyayı Görüntüle

@@ -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",

Dosyayı Görüntüle

@@ -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

Dosyayı Görüntüle

@@ -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,