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;
|
int i;
|
||||||
QDF_STATUS status = QDF_STATUS_SUCCESS;
|
QDF_STATUS status = QDF_STATUS_SUCCESS;
|
||||||
|
|
||||||
for (i = 0; i < MAX_PDEV_CNT; i++) {
|
for (i = 0; i < MAX_PDEV_CNT; i++) {
|
||||||
struct dp_pdev *pdev = soc->pdev_list[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 mac_for_pdev;
|
||||||
int lmac_id;
|
int lmac_id;
|
||||||
|
|
||||||
|
/* Configure monitor mode rings */
|
||||||
|
dp_monitor_soc_htt_srng_setup(soc);
|
||||||
|
|
||||||
for (i = 0; i < MAX_PDEV_CNT; i++) {
|
for (i = 0; i < MAX_PDEV_CNT; i++) {
|
||||||
struct dp_pdev *pdev = soc->pdev_list[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_config_debug_sniffer = dp_config_debug_sniffer,
|
||||||
.mon_flush_rings = dp_flush_monitor_rings,
|
.mon_flush_rings = dp_flush_monitor_rings,
|
||||||
#if !defined(DISABLE_MON_CONFIG)
|
#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
|
#endif
|
||||||
#if defined(DP_CON_MON)
|
#if defined(DP_CON_MON)
|
||||||
.mon_service_rings = dp_service_mon_rings,
|
.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
|
#ifndef DISABLE_MON_CONFIG
|
||||||
static
|
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,
|
struct dp_pdev *pdev,
|
||||||
int mac_id,
|
int mac_id,
|
||||||
int mac_for_pdev)
|
int mac_for_pdev)
|
||||||
@@ -565,14 +594,6 @@ QDF_STATUS dp_mon_soc_init_2_0(struct dp_soc *soc)
|
|||||||
goto fail;
|
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;
|
return QDF_STATUS_SUCCESS;
|
||||||
fail:
|
fail:
|
||||||
dp_mon_soc_deinit_2_0(soc);
|
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_config_debug_sniffer = dp_config_debug_sniffer,
|
||||||
.mon_flush_rings = NULL,
|
.mon_flush_rings = NULL,
|
||||||
#if !defined(DISABLE_MON_CONFIG)
|
#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
|
#endif
|
||||||
#if defined(DP_CON_MON)
|
#if defined(DP_CON_MON)
|
||||||
.mon_service_rings = NULL,
|
.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;
|
struct dp_mon_ops *mon_ops;
|
||||||
|
|
||||||
mon_ops = dp_mon_ops_get(soc);
|
mon_ops = dp_mon_ops_get(soc);
|
||||||
if (mon_ops && mon_ops->mon_htt_srng_setup)
|
if (mon_ops && mon_ops->mon_pdev_htt_srng_setup)
|
||||||
return mon_ops->mon_htt_srng_setup(soc, pdev, mac_id, mac_for_pdev);
|
return mon_ops->mon_pdev_htt_srng_setup(soc, pdev,
|
||||||
|
mac_id, mac_for_pdev);
|
||||||
|
|
||||||
return QDF_STATUS_E_FAILURE;
|
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);
|
QDF_STATUS (*mon_config_debug_sniffer)(struct dp_pdev *pdev, int val);
|
||||||
void (*mon_flush_rings)(struct dp_soc *soc);
|
void (*mon_flush_rings)(struct dp_soc *soc);
|
||||||
#if !defined(DISABLE_MON_CONFIG)
|
#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,
|
struct dp_pdev *pdev,
|
||||||
int mac_id,
|
int mac_id,
|
||||||
int mac_for_pdev);
|
int mac_for_pdev);
|
||||||
|
QDF_STATUS (*mon_soc_htt_srng_setup)(struct dp_soc *soc);
|
||||||
#endif
|
#endif
|
||||||
#if !defined(DISABLE_MON_CONFIG) && defined(MON_ENABLE_DROP_FOR_MAC)
|
#if !defined(DISABLE_MON_CONFIG) && defined(MON_ENABLE_DROP_FOR_MAC)
|
||||||
uint32_t (*mon_drop_packets_for_mac)(struct dp_pdev *pdev,
|
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;
|
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");
|
dp_mon_debug("callback not registered");
|
||||||
return QDF_STATUS_E_FAILURE;
|
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);
|
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
|
#else
|
||||||
static inline QDF_STATUS dp_monitor_htt_srng_setup(struct dp_soc *soc,
|
static inline QDF_STATUS dp_monitor_htt_srng_setup(struct dp_soc *soc,
|
||||||
struct dp_pdev *pdev,
|
struct dp_pdev *pdev,
|
||||||
|
Reference in New Issue
Block a user