qcacmn: Add support for BE Monitor soc attach
- Change to allocate BE specific monitor soc - Allocate, initialize soc and pdev level monitor rings - HTT srng setup for source ring - Dummy APIs to allocate, initialize sw desc pool Change-Id: Icf90994e7bd76017cf3c83ae00449d839967321d CRs-Fixed: 2991298
This commit is contained in:
@@ -78,7 +78,28 @@ QDF_STATUS dp_mon_htt_srng_setup_2_0(struct dp_soc *soc,
|
|||||||
int mac_id,
|
int mac_id,
|
||||||
int mac_for_pdev)
|
int mac_for_pdev)
|
||||||
{
|
{
|
||||||
return QDF_STATUS_SUCCESS;
|
struct dp_soc_be *be_soc = dp_get_be_soc_from_dp_soc(soc);
|
||||||
|
struct dp_mon_soc_be *mon_soc = be_soc->monitor_soc_be;
|
||||||
|
QDF_STATUS status;
|
||||||
|
|
||||||
|
status = htt_srng_setup(soc->htt_handle, mac_for_pdev,
|
||||||
|
soc->rxdma_mon_dst_ring[mac_id].hal_srng,
|
||||||
|
RXDMA_MONITOR_DST);
|
||||||
|
|
||||||
|
if (status != QDF_STATUS_SUCCESS) {
|
||||||
|
dp_mon_err("Failed to send htt srng setup message for Rxdma dst ring");
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
status = htt_srng_setup(soc->htt_handle, mac_for_pdev,
|
||||||
|
mon_soc->tx_mon_dst_ring[mac_id].hal_srng,
|
||||||
|
TX_MONITOR_DST);
|
||||||
|
|
||||||
|
if (status != QDF_STATUS_SUCCESS) {
|
||||||
|
dp_mon_err("Failed to send htt srng message for Tx mon dst ring");
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint32_t
|
static uint32_t
|
||||||
@@ -95,28 +116,139 @@ dp_tx_mon_process(struct dp_soc *soc, struct dp_intr *int_ctx,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static
|
|
||||||
QDF_STATUS dp_mon_soc_attach_2_0(struct dp_soc *soc)
|
|
||||||
{
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
static
|
static
|
||||||
QDF_STATUS dp_mon_soc_detach_2_0(struct dp_soc *soc)
|
QDF_STATUS dp_mon_soc_detach_2_0(struct dp_soc *soc)
|
||||||
{
|
{
|
||||||
return status;
|
struct dp_soc_be *be_soc = dp_get_be_soc_from_dp_soc(soc);
|
||||||
|
struct dp_mon_soc_be *mon_soc = be_soc->monitor_soc_be;
|
||||||
|
|
||||||
|
dp_tx_mon_buffers_free(soc);
|
||||||
|
dp_rx_mon_buffers_free(soc);
|
||||||
|
dp_tx_mon_buf_desc_pool_free(soc);
|
||||||
|
dp_rx_mon_buf_desc_pool_free(soc);
|
||||||
|
|
||||||
|
if (mon_soc) {
|
||||||
|
dp_srng_free(soc, &soc->rxdma_mon_buf_ring[0]);
|
||||||
|
dp_srng_free(soc, &mon_soc->tx_mon_buf_ring);
|
||||||
|
qdf_mem_free(be_soc->monitor_soc_be);
|
||||||
|
}
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static
|
static
|
||||||
QDF_STATUS dp_mon_soc_init_2_0(struct dp_soc *soc)
|
QDF_STATUS dp_mon_soc_attach_2_0(struct dp_soc *soc)
|
||||||
{
|
{
|
||||||
return status;
|
struct dp_soc_be *be_soc = dp_get_be_soc_from_dp_soc(soc);
|
||||||
|
struct dp_mon_soc_be *mon_soc = NULL;
|
||||||
|
int entries = 8192;
|
||||||
|
|
||||||
|
mon_soc = (struct dp_mon_soc_be *)qdf_mem_malloc(sizeof(*mon_soc));
|
||||||
|
if (!mon_soc) {
|
||||||
|
dp_mon_err("%pK: mem allocation failed", soc);
|
||||||
|
return QDF_STATUS_E_NOMEM;
|
||||||
|
}
|
||||||
|
qdf_mem_zero(mon_soc, sizeof(*mon_soc));
|
||||||
|
be_soc->monitor_soc_be = mon_soc;
|
||||||
|
|
||||||
|
if (dp_srng_alloc(soc, &soc->rxdma_mon_buf_ring[0],
|
||||||
|
RXDMA_MONITOR_BUF, entries, 0)) {
|
||||||
|
dp_mon_err("%pK: " RNG_ERR "rx_mon_buf_ring", soc);
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dp_srng_alloc(soc, &mon_soc->tx_mon_buf_ring,
|
||||||
|
TX_MONITOR_BUF, entries, 0)) {
|
||||||
|
dp_mon_err("%pK: " RNG_ERR "tx_mon_buf_ring", soc);
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* sw desc pool for src ring */
|
||||||
|
if (dp_rx_mon_buf_desc_pool_alloc(soc)) {
|
||||||
|
dp_mon_err("%pK: Rx mon desc pool allocation failed", soc);
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dp_tx_mon_buf_desc_pool_alloc(soc)) {
|
||||||
|
dp_mon_err("%pK: Tx mon desc pool allocation failed", soc);
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* monitor buffers for src */
|
||||||
|
if (dp_rx_mon_buffers_alloc(soc)) {
|
||||||
|
dp_mon_err("%pK: Rx mon buffers allocation failed", soc);
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dp_tx_mon_buffers_alloc(soc)) {
|
||||||
|
dp_mon_err("%pK: Tx mon buffers allocation failed", soc);
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
fail:
|
||||||
|
dp_mon_soc_detach_2_0(soc);
|
||||||
|
return QDF_STATUS_E_NOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
static
|
static
|
||||||
QDF_STATUS dp_mon_soc_deinit_2_0(struct dp_soc *soc)
|
QDF_STATUS dp_mon_soc_deinit_2_0(struct dp_soc *soc)
|
||||||
{
|
{
|
||||||
return status;
|
struct dp_soc_be *be_soc = dp_get_be_soc_from_dp_soc(soc);
|
||||||
|
struct dp_mon_soc_be *mon_soc = be_soc->monitor_soc_be;
|
||||||
|
|
||||||
|
dp_tx_mon_buf_desc_pool_deinit(soc);
|
||||||
|
dp_rx_mon_buf_desc_pool_deinit(soc);
|
||||||
|
|
||||||
|
dp_srng_deinit(soc, &soc->rxdma_mon_buf_ring[0],
|
||||||
|
RXDMA_MONITOR_BUF, 0);
|
||||||
|
|
||||||
|
dp_srng_deinit(soc, &mon_soc->tx_mon_buf_ring,
|
||||||
|
TX_MONITOR_BUF, 0);
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
static
|
||||||
|
QDF_STATUS dp_mon_soc_init_2_0(struct dp_soc *soc)
|
||||||
|
{
|
||||||
|
struct dp_soc_be *be_soc = dp_get_be_soc_from_dp_soc(soc);
|
||||||
|
struct dp_mon_soc_be *mon_soc = be_soc->monitor_soc_be;
|
||||||
|
|
||||||
|
if (dp_srng_init(soc, &soc->rxdma_mon_buf_ring[0],
|
||||||
|
RXDMA_MONITOR_BUF, 0, 0)) {
|
||||||
|
dp_mon_err("%pK: " RNG_ERR "rx_mon_buf_ring", soc);
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dp_srng_init(soc, &mon_soc->tx_mon_buf_ring,
|
||||||
|
TX_MONITOR_BUF, 0, 0)) {
|
||||||
|
dp_mon_err("%pK: " RNG_ERR "tx_mon_buf_ring", soc);
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dp_tx_mon_buf_desc_pool_init(soc)) {
|
||||||
|
dp_mon_err("%pK: " RNG_ERR "tx mon desc pool init", soc);
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dp_rx_mon_buf_desc_pool_init(soc)) {
|
||||||
|
dp_mon_err("%pK: " RNG_ERR "rx mon desc pool init", soc);
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
|
htt_srng_setup(soc->htt_handle, 0,
|
||||||
|
soc->rxdma_mon_buf_ring[0].hal_srng,
|
||||||
|
RXDMA_MONITOR_BUF);
|
||||||
|
|
||||||
|
htt_srng_setup(soc->htt_handle, 0,
|
||||||
|
mon_soc->tx_mon_buf_ring.hal_srng,
|
||||||
|
TX_MONITOR_BUF);
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
fail:
|
||||||
|
dp_mon_soc_deinit_2_0(soc);
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static
|
static
|
||||||
@@ -141,6 +273,31 @@ QDF_STATUS dp_pdev_mon_rings_alloc(struct dp_soc *soc, struct dp_pdev *pdev)
|
|||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static
|
||||||
|
void dp_mon_pdev_free_2_0(struct dp_pdev *pdev)
|
||||||
|
{
|
||||||
|
struct dp_pdev_be *be_pdev = dp_get_be_pdev_from_dp_pdev(pdev);
|
||||||
|
|
||||||
|
qdf_mem_free(be_pdev->monitor_pdev_be);
|
||||||
|
be_pdev->monitor_pdev_be = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static
|
||||||
|
QDF_STATUS dp_mon_pdev_alloc_2_0(struct dp_pdev *pdev)
|
||||||
|
{
|
||||||
|
struct dp_mon_pdev_be *mon_pdev = NULL;
|
||||||
|
struct dp_pdev_be *be_pdev = dp_get_be_pdev_from_dp_pdev(pdev);
|
||||||
|
|
||||||
|
mon_pdev = (struct dp_mon_pdev_be *)qdf_mem_malloc(sizeof(*mon_pdev));
|
||||||
|
if (!mon_pdev) {
|
||||||
|
dp_mon_err("%pK: mem allocation failed", pdev);
|
||||||
|
return QDF_STATUS_E_NOMEM;
|
||||||
|
}
|
||||||
|
qdf_mem_zero(mon_pdev, sizeof(*mon_pdev));
|
||||||
|
be_pdev->monitor_pdev_be = mon_pdev;
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
static inline
|
static inline
|
||||||
QDF_STATUS dp_mon_htt_srng_setup_2_0(struct dp_soc *soc,
|
QDF_STATUS dp_mon_htt_srng_setup_2_0(struct dp_soc *soc,
|
||||||
@@ -210,18 +367,18 @@ QDF_STATUS dp_pdev_mon_rings_alloc(struct dp_soc *soc, struct dp_pdev *pdev)
|
|||||||
{
|
{
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
static inline
|
static inline
|
||||||
void dp_mon_pdev_free(struct dp_pdev *pdev)
|
void dp_mon_pdev_free_2_0(struct dp_pdev *pdev)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline
|
static inline
|
||||||
QDF_STATUS dp_mon_pdev_alloc(struct dp_pdev *pdev)
|
QDF_STATUS dp_mon_pdev_alloc_2_0(struct dp_pdev *pdev)
|
||||||
{
|
{
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
struct dp_mon_ops monitor_ops_2_0 = {
|
struct dp_mon_ops monitor_ops_2_0 = {
|
||||||
.mon_soc_cfg_init = dp_mon_soc_cfg_init,
|
.mon_soc_cfg_init = dp_mon_soc_cfg_init,
|
||||||
@@ -266,7 +423,7 @@ struct dp_mon_ops monitor_ops_2_0 = {
|
|||||||
#endif
|
#endif
|
||||||
#if defined(WDI_EVENT_ENABLE) &&\
|
#if defined(WDI_EVENT_ENABLE) &&\
|
||||||
(defined(QCA_ENHANCED_STATS_SUPPORT) || !defined(REMOVE_PKT_LOG))
|
(defined(QCA_ENHANCED_STATS_SUPPORT) || !defined(REMOVE_PKT_LOG))
|
||||||
.mon_ppdu_stats_ind_handler = dp_ppdu_stats_ind_handler,
|
.mon_ppdu_stats_ind_handler = NULL,
|
||||||
#endif
|
#endif
|
||||||
.mon_htt_ppdu_stats_attach = dp_htt_ppdu_stats_attach,
|
.mon_htt_ppdu_stats_attach = dp_htt_ppdu_stats_attach,
|
||||||
.mon_htt_ppdu_stats_detach = dp_htt_ppdu_stats_detach,
|
.mon_htt_ppdu_stats_detach = dp_htt_ppdu_stats_detach,
|
||||||
@@ -276,7 +433,7 @@ struct dp_mon_ops monitor_ops_2_0 = {
|
|||||||
.mon_config_enh_tx_capture = dp_config_enh_tx_capture,
|
.mon_config_enh_tx_capture = dp_config_enh_tx_capture,
|
||||||
#endif
|
#endif
|
||||||
#ifdef WLAN_RX_PKT_CAPTURE_ENH
|
#ifdef WLAN_RX_PKT_CAPTURE_ENH
|
||||||
.mon_config_enh_rx_capture = dp_config_enh_rx_capture,
|
.mon_config_enh_rx_capture = NULL,
|
||||||
#endif
|
#endif
|
||||||
#ifdef QCA_SUPPORT_BPR
|
#ifdef QCA_SUPPORT_BPR
|
||||||
.mon_set_bpr_enable = dp_set_bpr_enable_2_0,
|
.mon_set_bpr_enable = dp_set_bpr_enable_2_0,
|
||||||
@@ -384,5 +541,5 @@ struct dp_mon_ops *dp_mon_ops_get_2_0(void)
|
|||||||
|
|
||||||
struct cdp_mon_ops *dp_mon_cdp_ops_get_2_0(void)
|
struct cdp_mon_ops *dp_mon_cdp_ops_get_2_0(void)
|
||||||
{
|
{
|
||||||
return &monitor_ops_2_0;
|
return &dp_ops_mon_2_0;
|
||||||
}
|
}
|
||||||
|
@@ -14,14 +14,56 @@
|
|||||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <dp_types.h>
|
||||||
|
#include "dp_rx.h"
|
||||||
|
#include "dp_peer.h"
|
||||||
|
#include <dp_htt.h>
|
||||||
|
#include <dp_mon_filter.h>
|
||||||
|
#include <dp_mon.h>
|
||||||
|
#include <dp_rx_mon.h>
|
||||||
|
#include <dp_rx_mon_2.0.h>
|
||||||
|
#include <dp_mon_2.0.h>
|
||||||
|
#include <dp_mon_filter_2.0.h>
|
||||||
|
|
||||||
|
#include "htt_ppdu_stats.h"
|
||||||
|
#include "dp_cal_client_api.h"
|
||||||
|
#if defined(DP_CON_MON)
|
||||||
|
#ifndef REMOVE_PKT_LOG
|
||||||
|
#include <pktlog_ac_api.h>
|
||||||
|
#include <pktlog_ac.h>
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#ifdef FEATURE_PERPKT_INFO
|
||||||
|
#include "dp_ratetable.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
void
|
void
|
||||||
dp_rx_mon_buffers_free(struct dp_pdev *pdev)
|
dp_rx_mon_buf_desc_pool_deinit(struct dp_soc *soc)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
dp_rx_mon_buf_desc_pool_init(struct dp_soc *soc)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void dp_rx_mon_buf_desc_pool_free(struct dp_soc *soc)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
QDF_STATUS
|
QDF_STATUS
|
||||||
dp_rx_mon_buffers_alloc(struct dp_pdev *pdev)
|
dp_rx_mon_buf_desc_pool_alloc(struct dp_soc *soc)
|
||||||
{
|
{
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
dp_rx_mon_buffers_free(struct dp_soc *soc)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
QDF_STATUS
|
||||||
|
dp_rx_mon_buffers_alloc(struct dp_soc *soc)
|
||||||
|
{
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
@@ -17,4 +17,55 @@
|
|||||||
#ifndef _DP_RX_MON_2_0_H_
|
#ifndef _DP_RX_MON_2_0_H_
|
||||||
#define _DP_RX_MON_2_0_H_
|
#define _DP_RX_MON_2_0_H_
|
||||||
|
|
||||||
|
/*
|
||||||
|
* dp_rx_mon_buffers_alloc() - allocate rx monitor buffers
|
||||||
|
* @soc: DP soc handle
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS: Success
|
||||||
|
* QDF_STATUS_E_FAILURE: Error
|
||||||
|
*/
|
||||||
|
QDF_STATUS
|
||||||
|
dp_rx_mon_buffers_alloc(struct dp_soc *soc);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* dp_rx_mon_buffers_free() - free rx monitor buffers
|
||||||
|
* @soc: dp soc handle
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
dp_rx_mon_buffers_free(struct dp_soc *soc);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* dp_rx_mon_desc_pool_deinit() - deinit rx monitor descriptor pool
|
||||||
|
* @soc: dp soc handle
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
dp_rx_mon_buf_desc_pool_deinit(struct dp_soc *soc);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* dp_rx_mon_desc_pool_deinit() - deinit rx monitor descriptor pool
|
||||||
|
* @soc: dp soc handle
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
dp_rx_mon_buf_desc_pool_init(struct dp_soc *soc);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* dp_rx_mon_buf_desc_pool_free() - free rx monitor descriptor pool
|
||||||
|
* @soc: dp soc handle
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void dp_rx_mon_buf_desc_pool_free(struct dp_soc *soc);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* dp_rx_mon_buf_desc_pool_alloc() - allocate rx monitor descriptor pool
|
||||||
|
* @soc: DP soc handle
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS: Success
|
||||||
|
* QDF_STATUS_E_FAILURE: Error
|
||||||
|
*/
|
||||||
|
QDF_STATUS
|
||||||
|
dp_rx_mon_buf_desc_pool_alloc(struct dp_soc *soc);
|
||||||
|
|
||||||
#endif /* _DP_RX_MON_2_0_H_ */
|
#endif /* _DP_RX_MON_2_0_H_ */
|
||||||
|
@@ -14,14 +14,42 @@
|
|||||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <dp_types.h>
|
||||||
|
#include "dp_rx.h"
|
||||||
|
#include "dp_peer.h"
|
||||||
|
#include <dp_htt.h>
|
||||||
|
#include <dp_mon_filter.h>
|
||||||
|
#include <dp_mon.h>
|
||||||
|
#include <dp_tx_mon_2.0.h>
|
||||||
|
#include <dp_mon_2.0.h>
|
||||||
|
|
||||||
void
|
void
|
||||||
dp_tx_mon_buffers_free(struct dp_pdev *pdev)
|
dp_tx_mon_buf_desc_pool_deinit(struct dp_soc *soc)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
dp_tx_mon_buf_desc_pool_init(struct dp_soc *soc)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void dp_tx_mon_buf_desc_pool_free(struct dp_soc *soc)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
QDF_STATUS
|
QDF_STATUS
|
||||||
dp_tx_mon_buffers_alloc(struct dp_pdev *pdev)
|
dp_tx_mon_buf_desc_pool_alloc(struct dp_soc *soc)
|
||||||
{
|
{
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
dp_tx_mon_buffers_free(struct dp_soc *soc)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
QDF_STATUS
|
||||||
|
dp_tx_mon_buffers_alloc(struct dp_soc *soc)
|
||||||
|
{
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
@@ -17,4 +17,55 @@
|
|||||||
#ifndef _DP_TX_MON_2_0_H_
|
#ifndef _DP_TX_MON_2_0_H_
|
||||||
#define _DP_TX_MON_2_0_H_
|
#define _DP_TX_MON_2_0_H_
|
||||||
|
|
||||||
|
/*
|
||||||
|
* dp_tx_mon_buffers_alloc() - allocate tx monitor buffers
|
||||||
|
* @soc: DP soc handle
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS: Success
|
||||||
|
* QDF_STATUS_E_FAILURE: Error
|
||||||
|
*/
|
||||||
|
QDF_STATUS
|
||||||
|
dp_tx_mon_buffers_alloc(struct dp_soc *soc);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* dp_tx_mon_buffers_free() - free tx monitor buffers
|
||||||
|
* @soc: dp soc handle
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
dp_tx_mon_buffers_free(struct dp_soc *soc);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* dp_tx_mon_desc_pool_deinit() - deinit tx monitor descriptor pool
|
||||||
|
* @soc: dp soc handle
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
dp_tx_mon_buf_desc_pool_deinit(struct dp_soc *soc);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* dp_tx_mon_desc_pool_deinit() - deinit tx monitor descriptor pool
|
||||||
|
* @soc: dp soc handle
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
dp_tx_mon_buf_desc_pool_init(struct dp_soc *soc);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* dp_tx_mon_buf_desc_pool_free() - free tx monitor descriptor pool
|
||||||
|
* @soc: dp soc handle
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void dp_tx_mon_buf_desc_pool_free(struct dp_soc *soc);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* dp_tx_mon_buf_desc_pool_alloc() - allocate tx monitor descriptor pool
|
||||||
|
* @soc: DP soc handle
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS: Success
|
||||||
|
* QDF_STATUS_E_FAILURE: Error
|
||||||
|
*/
|
||||||
|
QDF_STATUS
|
||||||
|
dp_tx_mon_buf_desc_pool_alloc(struct dp_soc *soc);
|
||||||
|
|
||||||
#endif /* _DP_TX_MON_2_0_H_ */
|
#endif /* _DP_TX_MON_2_0_H_ */
|
||||||
|
@@ -2081,7 +2081,7 @@ QDF_STATUS dp_mon_pdev_attach(struct dp_pdev *pdev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (mon_ops->mon_pdev_alloc) {
|
if (mon_ops->mon_pdev_alloc) {
|
||||||
if (mon_ops->mon_rings_alloc(soc, pdev)) {
|
if (mon_ops->mon_pdev_alloc(pdev)) {
|
||||||
dp_mon_err("%pK: MONITOR pdev alloc failed", pdev);
|
dp_mon_err("%pK: MONITOR pdev alloc failed", pdev);
|
||||||
goto fail1;
|
goto fail1;
|
||||||
}
|
}
|
||||||
@@ -2095,8 +2095,8 @@ QDF_STATUS dp_mon_pdev_attach(struct dp_pdev *pdev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Rx monitor mode specific init */
|
/* Rx monitor mode specific init */
|
||||||
if (mon_ops->rx_pdev_mon_desc_pool_alloc) {
|
if (mon_ops->rx_mon_desc_pool_alloc) {
|
||||||
if (mon_ops->rx_pdev_mon_desc_pool_alloc(pdev)) {
|
if (mon_ops->rx_mon_desc_pool_alloc(pdev)) {
|
||||||
dp_mon_err("%pK: dp_rx_pdev_mon_attach failed", pdev);
|
dp_mon_err("%pK: dp_rx_pdev_mon_attach failed", pdev);
|
||||||
goto fail3;
|
goto fail3;
|
||||||
}
|
}
|
||||||
@@ -2134,8 +2134,8 @@ QDF_STATUS dp_mon_pdev_detach(struct dp_pdev *pdev)
|
|||||||
return QDF_STATUS_E_FAILURE;
|
return QDF_STATUS_E_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mon_ops->rx_pdev_mon_desc_pool_free)
|
if (mon_ops->rx_mon_desc_pool_free)
|
||||||
mon_ops->rx_pdev_mon_desc_pool_free(pdev);
|
mon_ops->rx_mon_desc_pool_free(pdev);
|
||||||
if (mon_ops->mon_rings_free)
|
if (mon_ops->mon_rings_free)
|
||||||
mon_ops->mon_rings_free(pdev);
|
mon_ops->mon_rings_free(pdev);
|
||||||
if (mon_ops->mon_pdev_free)
|
if (mon_ops->mon_pdev_free)
|
||||||
@@ -2214,12 +2214,12 @@ QDF_STATUS dp_mon_pdev_init(struct dp_pdev *pdev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* initialize sw monitor rx descriptors */
|
/* initialize sw monitor rx descriptors */
|
||||||
if (mon_ops->rx_pdev_mon_desc_pool_init)
|
if (mon_ops->rx_mon_desc_pool_init)
|
||||||
mon_ops->rx_pdev_mon_desc_pool_init(pdev);
|
mon_ops->rx_mon_desc_pool_init(pdev);
|
||||||
|
|
||||||
/* allocate buffers and replenish the monitor RxDMA ring */
|
/* allocate buffers and replenish the monitor RxDMA ring */
|
||||||
if (mon_ops->rx_pdev_mon_buffers_alloc)
|
if (mon_ops->rx_mon_buffers_alloc)
|
||||||
mon_ops->rx_pdev_mon_buffers_alloc(pdev);
|
mon_ops->rx_mon_buffers_alloc(pdev);
|
||||||
|
|
||||||
dp_tx_ppdu_stats_attach(pdev);
|
dp_tx_ppdu_stats_attach(pdev);
|
||||||
mon_pdev->is_dp_mon_pdev_initialized = true;
|
mon_pdev->is_dp_mon_pdev_initialized = true;
|
||||||
@@ -2250,10 +2250,10 @@ QDF_STATUS dp_mon_pdev_deinit(struct dp_pdev *pdev)
|
|||||||
|
|
||||||
dp_tx_ppdu_stats_detach(pdev);
|
dp_tx_ppdu_stats_detach(pdev);
|
||||||
|
|
||||||
if (mon_ops->rx_pdev_mon_buffers_free)
|
if (mon_ops->rx_mon_buffers_free)
|
||||||
mon_ops->rx_pdev_mon_buffers_free(pdev);
|
mon_ops->rx_mon_buffers_free(pdev);
|
||||||
if (mon_ops->rx_pdev_mon_desc_pool_deinit)
|
if (mon_ops->rx_mon_desc_pool_deinit)
|
||||||
mon_ops->rx_pdev_mon_desc_pool_deinit(pdev);
|
mon_ops->rx_mon_desc_pool_deinit(pdev);
|
||||||
if (mon_ops->mon_rings_deinit)
|
if (mon_ops->mon_rings_deinit)
|
||||||
mon_ops->mon_rings_deinit(pdev);
|
mon_ops->mon_rings_deinit(pdev);
|
||||||
dp_cal_client_detach(&mon_pdev->cal_client_ctx);
|
dp_cal_client_detach(&mon_pdev->cal_client_ctx);
|
||||||
|
@@ -346,7 +346,7 @@ struct dp_mon_ops {
|
|||||||
QDF_STATUS (*mon_soc_init)(struct dp_soc *soc);
|
QDF_STATUS (*mon_soc_init)(struct dp_soc *soc);
|
||||||
QDF_STATUS (*mon_soc_deinit)(struct dp_soc *soc);
|
QDF_STATUS (*mon_soc_deinit)(struct dp_soc *soc);
|
||||||
QDF_STATUS (*mon_pdev_alloc)(struct dp_pdev *pdev);
|
QDF_STATUS (*mon_pdev_alloc)(struct dp_pdev *pdev);
|
||||||
QDF_STATUS (*mon_pdev_free)(struct dp_pdev *pdev);
|
void (*mon_pdev_free)(struct dp_pdev *pdev);
|
||||||
QDF_STATUS (*mon_pdev_attach)(struct dp_pdev *pdev);
|
QDF_STATUS (*mon_pdev_attach)(struct dp_pdev *pdev);
|
||||||
QDF_STATUS (*mon_pdev_detach)(struct dp_pdev *pdev);
|
QDF_STATUS (*mon_pdev_detach)(struct dp_pdev *pdev);
|
||||||
QDF_STATUS (*mon_pdev_init)(struct dp_pdev *pdev);
|
QDF_STATUS (*mon_pdev_init)(struct dp_pdev *pdev);
|
||||||
|
Reference in New Issue
Block a user