From d20a5a657cdcdd95f88e7863bbab90f6e222b06c Mon Sep 17 00:00:00 2001 From: Santosh Anbu Date: Wed, 1 Mar 2023 18:26:00 +0530 Subject: [PATCH] qcacmn: York Scan radio monitor mode bringup Initial changes for York scan radio bringup in monitor mode. Update monitor filter settings. Change-Id: Ib9468f11b71d0439d0bd63526f64f454ed6b5b4d CRs-Fixed: 3421412 --- dp/wifi3.0/monitor/1.0/dp_mon_1.0.c | 9 +++++++-- dp/wifi3.0/monitor/1.0/dp_mon_filter_1.0.c | 4 +++- dp/wifi3.0/monitor/dp_mon_filter.c | 8 +++++++- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/dp/wifi3.0/monitor/1.0/dp_mon_1.0.c b/dp/wifi3.0/monitor/1.0/dp_mon_1.0.c index e1b0880186..fae34af3d1 100644 --- a/dp/wifi3.0/monitor/1.0/dp_mon_1.0.c +++ b/dp/wifi3.0/monitor/1.0/dp_mon_1.0.c @@ -400,12 +400,17 @@ QDF_STATUS dp_vdev_set_monitor_mode_rings(struct dp_pdev *pdev, struct dp_srng *mon_buf_ring; uint32_t num_entries; struct dp_mon_pdev *mon_pdev = pdev->monitor_pdev; - + uint32_t target_type = hal_get_target_type(soc->hal_soc); /* If monitor rings are already initialized, return from here */ if (mon_pdev->pdev_mon_init) return QDF_STATUS_SUCCESS; + if (target_type == TARGET_TYPE_QCN9160) { + dp_alert("Mon SOC:%pK config, skip desc pool alloc", soc); + goto pass; + } + for (mac_id = 0; mac_id < NUM_RXDMA_RINGS_PER_PDEV; mac_id++) { mac_for_pdev = dp_get_lmac_id_for_pdev_id(pdev->soc, mac_id, pdev->pdev_id); @@ -457,8 +462,8 @@ QDF_STATUS dp_vdev_set_monitor_mode_rings(struct dp_pdev *pdev, soc->rxdma_mon_dst_ring[mac_for_pdev].hal_srng, RXDMA_MONITOR_DST); } +pass: mon_pdev->pdev_mon_init = 1; - return QDF_STATUS_SUCCESS; fail0: diff --git a/dp/wifi3.0/monitor/1.0/dp_mon_filter_1.0.c b/dp/wifi3.0/monitor/1.0/dp_mon_filter_1.0.c index e4979f0289..6e513ce365 100644 --- a/dp/wifi3.0/monitor/1.0/dp_mon_filter_1.0.c +++ b/dp/wifi3.0/monitor/1.0/dp_mon_filter_1.0.c @@ -915,6 +915,7 @@ static QDF_STATUS dp_mon_filter_dest_update(struct dp_pdev *pdev, struct dp_mon_pdev *mon_pdev = pdev->monitor_pdev; enum dp_mon_filter_srng_type srng_type; QDF_STATUS status = QDF_STATUS_SUCCESS; + uint32_t target_type = hal_get_target_type(soc->hal_soc); srng_type = ((soc->wlan_cfg_ctx->rxdma1_enable) ? DP_MON_FILTER_SRNG_TYPE_RXDMA_MON_BUF : @@ -932,7 +933,8 @@ static QDF_STATUS dp_mon_filter_dest_update(struct dp_pdev *pdev, * For WIN case the monitor buffer ring is used and it does need * reset when monitor mode gets enabled/disabled. */ - if (soc->wlan_cfg_ctx->rxdma1_enable) { + if (soc->wlan_cfg_ctx->rxdma1_enable || + target_type == TARGET_TYPE_QCN9160) { if (mon_pdev->monitor_configured || *pmon_mode_set) { status = dp_mon_ht2_rx_ring_cfg(soc, pdev, srng_type, diff --git a/dp/wifi3.0/monitor/dp_mon_filter.c b/dp/wifi3.0/monitor/dp_mon_filter.c index 97b162cbc7..f85122ff9b 100644 --- a/dp/wifi3.0/monitor/dp_mon_filter.c +++ b/dp/wifi3.0/monitor/dp_mon_filter.c @@ -272,6 +272,7 @@ dp_mon_ht2_rx_ring_cfg(struct dp_soc *soc, int mac_id; int max_mac_rings = wlan_cfg_get_num_mac_rings(pdev->wlan_cfg_ctx); QDF_STATUS status = QDF_STATUS_SUCCESS; + uint32_t target_type = hal_get_target_type(soc->hal_soc); /* * Overwrite the max_mac_rings for the status rings. @@ -295,7 +296,12 @@ dp_mon_ht2_rx_ring_cfg(struct dp_soc *soc, switch (srng_type) { case DP_MON_FILTER_SRNG_TYPE_RXDMA_BUF: - hal_ring_hdl = pdev->rx_mac_buf_ring[lmac_id].hal_srng; + if (target_type == TARGET_TYPE_QCN9160) + hal_ring_hdl = + soc->rx_refill_buf_ring[lmac_id].hal_srng; + else + hal_ring_hdl = + pdev->rx_mac_buf_ring[lmac_id].hal_srng; hal_ring_type = RXDMA_BUF; ring_buf_size = RX_DATA_BUFFER_SIZE; break;