qcacmn: Add HTT ring setup for monitor rings
Add HTT ring setup for monitor source and destination rings CRs-Fixed: 3010856 Change-Id: Ice96ed938a25069fd60f07e2a4bebd9ad0184200
This commit is contained in:
@@ -5442,6 +5442,7 @@ static QDF_STATUS dp_rxdma_ring_config(struct dp_soc *soc)
|
||||
{
|
||||
int i;
|
||||
QDF_STATUS status = QDF_STATUS_SUCCESS;
|
||||
|
||||
for (i = 0; i < MAX_PDEV_CNT; i++) {
|
||||
struct dp_pdev *pdev = soc->pdev_list[i];
|
||||
|
||||
@@ -5542,6 +5543,9 @@ static QDF_STATUS dp_rxdma_ring_config(struct dp_soc *soc)
|
||||
int mac_for_pdev;
|
||||
int lmac_id;
|
||||
|
||||
/* Configure monitor mode rings */
|
||||
dp_monitor_soc_htt_srng_setup(soc);
|
||||
|
||||
for (i = 0; i < MAX_PDEV_CNT; i++) {
|
||||
struct dp_pdev *pdev = soc->pdev_list[i];
|
||||
|
||||
|
@@ -3235,7 +3235,7 @@ struct dp_mon_ops monitor_ops_1_0 = {
|
||||
.mon_config_debug_sniffer = dp_config_debug_sniffer,
|
||||
.mon_flush_rings = dp_flush_monitor_rings,
|
||||
#if !defined(DISABLE_MON_CONFIG)
|
||||
.mon_htt_srng_setup = dp_mon_htt_srng_setup_1_0,
|
||||
.mon_pdev_htt_srng_setup = dp_mon_htt_srng_setup_1_0,
|
||||
#endif
|
||||
#if defined(DP_CON_MON)
|
||||
.mon_service_rings = dp_service_mon_rings,
|
||||
|
@@ -341,7 +341,36 @@ dp_set_bpr_enable_2_0(struct dp_pdev *pdev, int val)
|
||||
|
||||
#ifndef DISABLE_MON_CONFIG
|
||||
static
|
||||
QDF_STATUS dp_mon_htt_srng_setup_2_0(struct dp_soc *soc,
|
||||
QDF_STATUS dp_mon_soc_htt_srng_setup_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;
|
||||
|
||||
QDF_STATUS status;
|
||||
|
||||
status = htt_srng_setup(soc->htt_handle, 0,
|
||||
soc->rxdma_mon_buf_ring[0].hal_srng,
|
||||
RXDMA_MONITOR_BUF);
|
||||
|
||||
if (status != QDF_STATUS_SUCCESS) {
|
||||
dp_err("Failed to send htt srng setup message for Rx mon buf ring");
|
||||
return status;
|
||||
}
|
||||
|
||||
status = htt_srng_setup(soc->htt_handle, 0,
|
||||
mon_soc->tx_mon_buf_ring.hal_srng,
|
||||
TX_MONITOR_BUF);
|
||||
|
||||
if (status != QDF_STATUS_SUCCESS) {
|
||||
dp_err("Failed to send htt srng setup message for Tx mon buf ring");
|
||||
return status;
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
static
|
||||
QDF_STATUS dp_mon_pdev_htt_srng_setup_2_0(struct dp_soc *soc,
|
||||
struct dp_pdev *pdev,
|
||||
int mac_id,
|
||||
int mac_for_pdev)
|
||||
@@ -565,14 +594,6 @@ QDF_STATUS dp_mon_soc_init_2_0(struct dp_soc *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);
|
||||
@@ -809,7 +830,8 @@ struct dp_mon_ops monitor_ops_2_0 = {
|
||||
.mon_config_debug_sniffer = dp_config_debug_sniffer,
|
||||
.mon_flush_rings = NULL,
|
||||
#if !defined(DISABLE_MON_CONFIG)
|
||||
.mon_htt_srng_setup = dp_mon_htt_srng_setup_2_0,
|
||||
.mon_pdev_htt_srng_setup = dp_mon_pdev_htt_srng_setup_2_0,
|
||||
.mon_soc_htt_srng_setup = dp_mon_soc_htt_srng_setup_2_0,
|
||||
#endif
|
||||
#if defined(DP_CON_MON)
|
||||
.mon_service_rings = NULL,
|
||||
|
@@ -1989,8 +1989,9 @@ QDF_STATUS dp_mon_htt_srng_setup(struct dp_soc *soc,
|
||||
struct dp_mon_ops *mon_ops;
|
||||
|
||||
mon_ops = dp_mon_ops_get(soc);
|
||||
if (mon_ops && mon_ops->mon_htt_srng_setup)
|
||||
return mon_ops->mon_htt_srng_setup(soc, pdev, mac_id, mac_for_pdev);
|
||||
if (mon_ops && mon_ops->mon_pdev_htt_srng_setup)
|
||||
return mon_ops->mon_pdev_htt_srng_setup(soc, pdev,
|
||||
mac_id, mac_for_pdev);
|
||||
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
@@ -358,10 +358,11 @@ struct dp_mon_ops {
|
||||
QDF_STATUS (*mon_config_debug_sniffer)(struct dp_pdev *pdev, int val);
|
||||
void (*mon_flush_rings)(struct dp_soc *soc);
|
||||
#if !defined(DISABLE_MON_CONFIG)
|
||||
QDF_STATUS (*mon_htt_srng_setup)(struct dp_soc *soc,
|
||||
QDF_STATUS (*mon_pdev_htt_srng_setup)(struct dp_soc *soc,
|
||||
struct dp_pdev *pdev,
|
||||
int mac_id,
|
||||
int mac_for_pdev);
|
||||
QDF_STATUS (*mon_soc_htt_srng_setup)(struct dp_soc *soc);
|
||||
#endif
|
||||
#if !defined(DISABLE_MON_CONFIG) && defined(MON_ENABLE_DROP_FOR_MAC)
|
||||
uint32_t (*mon_drop_packets_for_mac)(struct dp_pdev *pdev,
|
||||
@@ -1689,14 +1690,33 @@ static inline QDF_STATUS dp_monitor_htt_srng_setup(struct dp_soc *soc,
|
||||
}
|
||||
|
||||
monitor_ops = mon_soc->mon_ops;
|
||||
if (!monitor_ops || !monitor_ops->mon_htt_srng_setup) {
|
||||
if (!monitor_ops || !monitor_ops->mon_pdev_htt_srng_setup) {
|
||||
dp_mon_debug("callback not registered");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
return monitor_ops->mon_htt_srng_setup(soc, pdev, mac_id,
|
||||
return monitor_ops->mon_pdev_htt_srng_setup(soc, pdev, mac_id,
|
||||
mac_for_pdev);
|
||||
}
|
||||
|
||||
static inline QDF_STATUS dp_monitor_soc_htt_srng_setup(struct dp_soc *soc)
|
||||
{
|
||||
struct dp_mon_ops *monitor_ops;
|
||||
struct dp_mon_soc *mon_soc = soc->monitor_soc;
|
||||
|
||||
if (!mon_soc) {
|
||||
dp_mon_debug("monitor soc is NULL");
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
monitor_ops = mon_soc->mon_ops;
|
||||
if (!monitor_ops || !monitor_ops->mon_soc_htt_srng_setup) {
|
||||
dp_mon_debug("callback not registered");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
return monitor_ops->mon_soc_htt_srng_setup(soc);
|
||||
}
|
||||
#else
|
||||
static inline QDF_STATUS dp_monitor_htt_srng_setup(struct dp_soc *soc,
|
||||
struct dp_pdev *pdev,
|
||||
|
Reference in New Issue
Block a user