qcacmn: Datapath init-deinit changes
Do a logical split of dp_soc_attach and dp_pdev_attach into Allocation and initialization and dp_soc_detach and dp_pdev_detach into de-initialization and free routines Change-Id: I23bdca0ca86db42a4d0b2554cd60d99bb207a647
This commit is contained in:

committed by
Gerrit - the friendly Code Review server

parent
e4a31a803d
commit
1f3652debc
@@ -2488,21 +2488,6 @@ QDF_STATUS dp_rx_vdev_detach(struct dp_vdev *vdev)
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* dp_rx_pdev_detach() - detach dp rx
|
||||
* @pdev: core txrx pdev context
|
||||
*
|
||||
* This function will detach DP RX into main device context
|
||||
* will free DP Rx resources.
|
||||
*
|
||||
* Return: void
|
||||
*/
|
||||
void
|
||||
dp_rx_pdev_detach(struct dp_pdev *pdev)
|
||||
{
|
||||
dp_rx_pdev_desc_pool_free(pdev);
|
||||
}
|
||||
|
||||
static QDF_STATUS
|
||||
dp_pdev_nbuf_alloc_and_map(struct dp_soc *dp_soc, qdf_nbuf_t *nbuf,
|
||||
struct dp_pdev *dp_pdev,
|
||||
@@ -2566,6 +2551,8 @@ dp_pdev_rx_buffers_attach(struct dp_soc *dp_soc, uint32_t mac_id,
|
||||
int page_idx, total_pages;
|
||||
union dp_rx_desc_list_elem_t *desc_list = NULL;
|
||||
union dp_rx_desc_list_elem_t *tail = NULL;
|
||||
int sync_hw_ptr = 1;
|
||||
uint32_t num_entries_avail;
|
||||
|
||||
if (qdf_unlikely(!rxdma_srng)) {
|
||||
DP_STATS_INC(dp_pdev, replenish.rxdma_err, num_req_buffers);
|
||||
@@ -2574,6 +2561,20 @@ dp_pdev_rx_buffers_attach(struct dp_soc *dp_soc, uint32_t mac_id,
|
||||
|
||||
dp_debug("requested %u RX buffers for driver attach", num_req_buffers);
|
||||
|
||||
hal_srng_access_start(dp_soc->hal_soc, rxdma_srng);
|
||||
num_entries_avail = hal_srng_src_num_avail(dp_soc->hal_soc,
|
||||
rxdma_srng,
|
||||
sync_hw_ptr);
|
||||
hal_srng_access_end(dp_soc->hal_soc, rxdma_srng);
|
||||
|
||||
if (!num_entries_avail) {
|
||||
dp_err("Num of available entries is zero, nothing to do");
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
}
|
||||
|
||||
if (num_entries_avail < num_req_buffers)
|
||||
num_req_buffers = num_entries_avail;
|
||||
|
||||
nr_descs = dp_rx_get_free_desc_list(dp_soc, mac_id, rx_desc_pool,
|
||||
num_req_buffers, &desc_list, &tail);
|
||||
if (!nr_descs) {
|
||||
@@ -2697,7 +2698,7 @@ dp_rx_pdev_desc_pool_alloc(struct dp_pdev *pdev)
|
||||
if (wlan_cfg_get_dp_pdev_nss_enabled(pdev->wlan_cfg_ctx)) {
|
||||
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_INFO,
|
||||
"nss-wifi<4> skip Rx refil %d", mac_for_pdev);
|
||||
status = QDF_STATUS_SUCCESS;
|
||||
return status;
|
||||
}
|
||||
|
||||
dp_rxdma_srng = &soc->rx_refill_buf_ring[mac_for_pdev];
|
||||
@@ -2712,10 +2713,6 @@ dp_rx_pdev_desc_pool_alloc(struct dp_pdev *pdev)
|
||||
if (status != QDF_STATUS_SUCCESS)
|
||||
return status;
|
||||
|
||||
rx_desc_pool->owner = DP_WBM2SW_RBM;
|
||||
rx_desc_pool->buf_size = RX_DATA_BUFFER_SIZE;
|
||||
rx_desc_pool->buf_alignment = RX_DATA_BUFFER_ALIGNMENT;
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
@@ -2770,6 +2767,10 @@ QDF_STATUS dp_rx_pdev_desc_pool_init(struct dp_pdev *pdev)
|
||||
rx_sw_desc_weight =
|
||||
wlan_cfg_get_dp_soc_rx_sw_desc_weight(soc->wlan_cfg_ctx);
|
||||
|
||||
rx_desc_pool->owner = DP_WBM2SW_RBM;
|
||||
rx_desc_pool->buf_size = RX_DATA_BUFFER_SIZE;
|
||||
rx_desc_pool->buf_alignment = RX_DATA_BUFFER_ALIGNMENT;
|
||||
|
||||
dp_rx_desc_pool_init(soc, mac_for_pdev,
|
||||
rx_sw_desc_weight * rxdma_entries,
|
||||
rx_desc_pool);
|
||||
@@ -2794,50 +2795,6 @@ void dp_rx_pdev_desc_pool_deinit(struct dp_pdev *pdev)
|
||||
dp_rx_desc_pool_deinit(soc, rx_desc_pool);
|
||||
}
|
||||
|
||||
/**
|
||||
* dp_rx_attach() - attach DP RX
|
||||
* @pdev: core txrx pdev context
|
||||
*
|
||||
* This function will attach a DP RX instance into the main
|
||||
* device (SOC) context. Will allocate dp rx resource and
|
||||
* initialize resources.
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS: success
|
||||
* QDF_STATUS_E_RESOURCES: Error return
|
||||
*/
|
||||
QDF_STATUS
|
||||
dp_rx_pdev_attach(struct dp_pdev *pdev)
|
||||
{
|
||||
struct dp_soc *soc = pdev->soc;
|
||||
QDF_STATUS ret_val;
|
||||
|
||||
if (wlan_cfg_get_dp_pdev_nss_enabled(pdev->wlan_cfg_ctx)) {
|
||||
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_INFO,
|
||||
"nss-wifi<4> skip Rx refil %d",
|
||||
pdev->pdev_id);
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
if (!dp_is_soc_reinit(soc)) {
|
||||
ret_val = dp_rx_pdev_desc_pool_alloc(pdev);
|
||||
if (ret_val != QDF_STATUS_SUCCESS)
|
||||
return ret_val;
|
||||
}
|
||||
|
||||
dp_rx_pdev_desc_pool_init(pdev);
|
||||
|
||||
ret_val = dp_rx_fst_attach(soc, pdev);
|
||||
if ((ret_val != QDF_STATUS_SUCCESS) &&
|
||||
(ret_val != QDF_STATUS_E_NOSUPPORT)) {
|
||||
QDF_TRACE(QDF_MODULE_ID_ANY, QDF_TRACE_LEVEL_ERROR,
|
||||
"RX Flow Search Table attach failed: pdev %d err %d",
|
||||
pdev->pdev_id, ret_val);
|
||||
return ret_val;
|
||||
}
|
||||
|
||||
return dp_rx_pdev_buffers_alloc(pdev);
|
||||
}
|
||||
|
||||
/*
|
||||
* dp_rx_pdev_buffers_alloc() - Allocate nbufs (skbs) and replenish RxDMA ring
|
||||
*
|
||||
|
Reference in New Issue
Block a user