qcacmn: Disable Enhanced PPDU stats and low watermark interrupt
Disable Enhanced PPDU stats and low watermark interrupt for WKK CRs-Fixed: 3120686 Change-Id: I8eecd2e17cb0748d1e7d15b28ce3d16f69fe81d5
This commit is contained in:

committed by
Madan Koyyalamudi

parent
886ce189d0
commit
8e96dd29e8
@@ -173,6 +173,16 @@ dp_mon_buffers_replenish(struct dp_soc *dp_soc,
|
||||
|
||||
mon_srng = dp_mon_srng->hal_srng;
|
||||
|
||||
hal_srng_access_start(dp_soc->hal_soc, mon_srng);
|
||||
|
||||
num_entries_avail = hal_srng_src_num_avail(dp_soc->hal_soc,
|
||||
mon_srng, sync_hw_ptr);
|
||||
|
||||
if (num_entries_avail < num_req_buffers) {
|
||||
num_desc_to_free = num_req_buffers - num_entries_avail;
|
||||
num_req_buffers = num_entries_avail;
|
||||
}
|
||||
|
||||
/*
|
||||
* if desc_list is NULL, allocate the descs from freelist
|
||||
*/
|
||||
@@ -185,6 +195,7 @@ dp_mon_buffers_replenish(struct dp_soc *dp_soc,
|
||||
|
||||
if (!num_alloc_desc) {
|
||||
dp_mon_debug("%pK: no free rx_descs in freelist", dp_soc);
|
||||
hal_srng_access_end(dp_soc->hal_soc, mon_srng);
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
}
|
||||
|
||||
@@ -194,16 +205,7 @@ dp_mon_buffers_replenish(struct dp_soc *dp_soc,
|
||||
num_req_buffers = num_alloc_desc;
|
||||
}
|
||||
|
||||
hal_srng_access_start(dp_soc->hal_soc, mon_srng);
|
||||
num_entries_avail = hal_srng_src_num_avail(dp_soc->hal_soc,
|
||||
mon_srng, sync_hw_ptr);
|
||||
|
||||
if (num_entries_avail < num_req_buffers) {
|
||||
num_desc_to_free = num_req_buffers - num_entries_avail;
|
||||
num_req_buffers = num_entries_avail;
|
||||
}
|
||||
|
||||
while (count <= num_req_buffers - 1) {
|
||||
while (count < num_req_buffers - 1) {
|
||||
ret = dp_mon_frag_alloc_and_map(dp_soc,
|
||||
&mon_desc,
|
||||
mon_desc_pool);
|
||||
@@ -440,10 +442,11 @@ dp_set_bpr_enable_2_0(struct dp_pdev *pdev, int val)
|
||||
static
|
||||
QDF_STATUS dp_mon_soc_htt_srng_setup_2_0(struct dp_soc *soc)
|
||||
{
|
||||
QDF_STATUS status;
|
||||
#ifdef QCA_TXMON_HW_SUPPORT
|
||||
struct dp_mon_soc *mon_soc = soc->monitor_soc;
|
||||
struct dp_mon_soc_be *mon_soc_be = dp_get_be_mon_soc_from_dp_mon_soc(mon_soc);
|
||||
|
||||
QDF_STATUS status;
|
||||
#endif
|
||||
|
||||
hal_set_low_threshold(soc->rxdma_mon_buf_ring[0].hal_srng, 0);
|
||||
status = htt_srng_setup(soc->htt_handle, 0,
|
||||
@@ -455,6 +458,7 @@ QDF_STATUS dp_mon_soc_htt_srng_setup_2_0(struct dp_soc *soc)
|
||||
return status;
|
||||
}
|
||||
|
||||
#ifdef QCA_TXMON_HW_SUPPORT
|
||||
hal_set_low_threshold(mon_soc_be->tx_mon_buf_ring.hal_srng, 0);
|
||||
status = htt_srng_setup(soc->htt_handle, 0,
|
||||
mon_soc_be->tx_mon_buf_ring.hal_srng,
|
||||
@@ -464,6 +468,7 @@ QDF_STATUS dp_mon_soc_htt_srng_setup_2_0(struct dp_soc *soc)
|
||||
dp_err("Failed to send htt srng setup message for Tx mon buf ring");
|
||||
return status;
|
||||
}
|
||||
#endif
|
||||
|
||||
return status;
|
||||
}
|
||||
@@ -474,8 +479,10 @@ QDF_STATUS dp_mon_pdev_htt_srng_setup_2_0(struct dp_soc *soc,
|
||||
int mac_id,
|
||||
int mac_for_pdev)
|
||||
{
|
||||
#ifdef QCA_TXMON_HW_SUPPORT
|
||||
struct dp_mon_soc *mon_soc = soc->monitor_soc;
|
||||
struct dp_mon_soc_be *mon_soc_be = dp_get_be_mon_soc_from_dp_mon_soc(mon_soc);
|
||||
#endif
|
||||
QDF_STATUS status;
|
||||
|
||||
status = htt_srng_setup(soc->htt_handle, mac_for_pdev,
|
||||
@@ -487,6 +494,7 @@ QDF_STATUS dp_mon_pdev_htt_srng_setup_2_0(struct dp_soc *soc,
|
||||
return status;
|
||||
}
|
||||
|
||||
#ifdef QCA_TXMON_HW_SUPPORT
|
||||
status = htt_srng_setup(soc->htt_handle, mac_for_pdev,
|
||||
mon_soc_be->tx_mon_dst_ring[mac_id].hal_srng,
|
||||
TX_MONITOR_DST);
|
||||
@@ -495,6 +503,7 @@ QDF_STATUS dp_mon_pdev_htt_srng_setup_2_0(struct dp_soc *soc,
|
||||
dp_mon_err("Failed to send htt srng message for Tx mon dst ring");
|
||||
return status;
|
||||
}
|
||||
#endif
|
||||
|
||||
return status;
|
||||
}
|
||||
@@ -967,9 +976,11 @@ static void dp_mon_register_intr_ops_2_0(struct dp_soc *soc)
|
||||
struct dp_mon_soc *mon_soc = soc->monitor_soc;
|
||||
|
||||
mon_soc->mon_ops->rx_mon_refill_buf_ring =
|
||||
dp_rx_mon_refill_buf_ring_2_0,
|
||||
NULL,
|
||||
#ifdef QCA_TXMON_HW_SUPPORT
|
||||
mon_soc->mon_ops->tx_mon_refill_buf_ring =
|
||||
dp_tx_mon_refill_buf_ring_2_0,
|
||||
#endif
|
||||
mon_soc->mon_rx_process = dp_rx_mon_process_2_0;
|
||||
}
|
||||
|
||||
|
@@ -75,7 +75,7 @@ dp_rx_mon_srng_process_2_0(struct dp_soc *soc, struct dp_intr *int_ctx,
|
||||
}
|
||||
|
||||
while (qdf_likely((rx_mon_dst_ring_desc =
|
||||
(void *)hal_srng_dst_get_next(hal_soc, mon_dst_srng))
|
||||
(void *)hal_srng_dst_peek(hal_soc, mon_dst_srng))
|
||||
&& quota--)) {
|
||||
struct hal_mon_desc hal_mon_rx_desc;
|
||||
struct dp_mon_desc *mon_desc;
|
||||
@@ -106,12 +106,16 @@ dp_rx_mon_srng_process_2_0(struct dp_soc *soc, struct dp_intr *int_ctx,
|
||||
qdf_frag_free(mon_desc->buf_addr);
|
||||
dp_mon_add_to_free_desc_list(&desc_list, &tail, mon_desc);
|
||||
work_done++;
|
||||
hal_srng_dst_get_next(hal_soc, mon_dst_srng);
|
||||
}
|
||||
dp_srng_access_end(int_ctx, soc, mon_dst_srng);
|
||||
|
||||
if (desc_list)
|
||||
dp_mon_add_desc_list_to_free_list(soc, &desc_list,
|
||||
&tail, rx_mon_desc_pool);
|
||||
if (desc_list) {
|
||||
dp_mon_buffers_replenish(soc, &soc->rxdma_mon_buf_ring[0],
|
||||
rx_mon_desc_pool,
|
||||
work_done,
|
||||
&desc_list, &tail);
|
||||
}
|
||||
qdf_spin_unlock_bh(&mon_pdev->mon_lock);
|
||||
dp_mon_info("mac_id: %d, work_done:%d", mac_id, work_done);
|
||||
return work_done;
|
||||
|
@@ -78,9 +78,7 @@ dp_tx_mon_srng_process_2_0(struct dp_soc *soc, struct dp_intr *int_ctx,
|
||||
&& quota--)) {
|
||||
struct hal_mon_desc hal_mon_tx_desc;
|
||||
struct dp_mon_desc *mon_desc;
|
||||
struct dp_mon_desc_pool *tx_desc_pool;
|
||||
|
||||
tx_desc_pool = &mon_soc_be->tx_desc_mon;
|
||||
hal_be_get_mon_dest_status(soc->hal_soc,
|
||||
tx_mon_dst_ring_desc,
|
||||
&hal_mon_tx_desc);
|
||||
|
@@ -1668,6 +1668,10 @@ dp_enable_enhanced_stats(struct cdp_soc_t *soc, uint8_t pdev_id)
|
||||
dp_cal_client_timer_start(mon_pdev->cal_client_ctx);
|
||||
|
||||
mon_pdev->enhanced_stats_en = 1;
|
||||
pdev->enhanced_stats_en = true;
|
||||
|
||||
if (wlan_cfg_get_txmon_hw_support(pdev->soc->wlan_cfg_ctx))
|
||||
return QDF_STATUS_SUCCESS;
|
||||
|
||||
dp_mon_filter_setup_enhanced_stats(pdev);
|
||||
status = dp_mon_filter_update(pdev);
|
||||
@@ -1676,10 +1680,10 @@ dp_enable_enhanced_stats(struct cdp_soc_t *soc, uint8_t pdev_id)
|
||||
dp_mon_filter_reset_enhanced_stats(pdev);
|
||||
dp_cal_client_timer_stop(mon_pdev->cal_client_ctx);
|
||||
mon_pdev->enhanced_stats_en = 0;
|
||||
pdev->enhanced_stats_en = false;
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
pdev->enhanced_stats_en = true;
|
||||
if (is_ppdu_txrx_capture_enabled(pdev) && !mon_pdev->bpr_enable) {
|
||||
dp_h2t_cfg_stats_msg_send(pdev, DP_PPDU_STATS_CFG_ENH_STATS,
|
||||
pdev->pdev_id);
|
||||
@@ -1720,6 +1724,9 @@ dp_disable_enhanced_stats(struct cdp_soc_t *soc, uint8_t pdev_id)
|
||||
mon_pdev->enhanced_stats_en = 0;
|
||||
pdev->enhanced_stats_en = false;
|
||||
|
||||
if (wlan_cfg_get_txmon_hw_support(pdev->soc->wlan_cfg_ctx))
|
||||
return QDF_STATUS_SUCCESS;
|
||||
|
||||
if (is_ppdu_txrx_capture_enabled(pdev) && !mon_pdev->bpr_enable) {
|
||||
dp_h2t_cfg_stats_msg_send(pdev, 0, pdev->pdev_id);
|
||||
} else if (is_ppdu_txrx_capture_enabled(pdev) && mon_pdev->bpr_enable) {
|
||||
|
@@ -498,8 +498,10 @@ QDF_STATUS dp_mon_filter_update(struct dp_pdev *pdev)
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
#ifdef QCA_TXMON_HW_SUPPORT
|
||||
if (mon_ops && mon_ops->tx_mon_filter_update)
|
||||
mon_ops->tx_mon_filter_update(pdev);
|
||||
#endif
|
||||
|
||||
if (mon_ops && mon_ops->rx_mon_filter_update)
|
||||
mon_ops->rx_mon_filter_update(pdev);
|
||||
|
@@ -151,8 +151,12 @@ hal_be_get_mon_dest_status(hal_soc_handle_t hal_soc,
|
||||
{
|
||||
struct mon_destination_ring *desc = hw_desc;
|
||||
|
||||
status->buf_addr = ((u64)desc->stat_buf_virt_addr_31_0 |
|
||||
((u64)desc->stat_buf_virt_addr_63_32 << 32));
|
||||
status->buf_addr = HAL_RX_GET(desc, MON_DESTINATION_RING_STAT,
|
||||
BUF_VIRT_ADDR_31_0) |
|
||||
(((uint64_t)HAL_RX_GET(desc,
|
||||
MON_DESTINATION_RING_STAT,
|
||||
BUF_VIRT_ADDR_63_32)) << 32);
|
||||
|
||||
status->ppdu_id = desc->ppdu_id;
|
||||
status->end_offset = desc->end_offset;
|
||||
status->end_reason = desc->end_reason;
|
||||
@@ -177,8 +181,8 @@ void hal_mon_buff_addr_info_set(hal_soc_handle_t hal_soc_hdl,
|
||||
{
|
||||
uint32_t paddr_lo = ((u64)phy_addr & 0x00000000ffffffff);
|
||||
uint32_t paddr_hi = ((u64)phy_addr & 0xffffffff00000000) >> 32;
|
||||
uint32_t vaddr_lo = ((u64)(uintptr_t)mon_desc_addr & 0x00000000ffffffff);
|
||||
uint32_t vaddr_hi = ((u64)(uintptr_t)mon_desc_addr & 0xffffffff00000000) >> 32;
|
||||
uint32_t vaddr_lo = ((u64)mon_desc_addr & 0x00000000ffffffff);
|
||||
uint32_t vaddr_hi = ((u64)mon_desc_addr & 0xffffffff00000000) >> 32;
|
||||
|
||||
HAL_MON_PADDR_LO_SET(mon_entry, paddr_lo);
|
||||
HAL_MON_PADDR_HI_SET(mon_entry, paddr_hi);
|
||||
|
@@ -3378,3 +3378,5 @@ bool wlan_cfg_get_txmon_hw_support(struct wlan_cfg_dp_soc_ctxt *cfg)
|
||||
{
|
||||
return cfg->txmon_hw_support;
|
||||
}
|
||||
|
||||
qdf_export_symbol(wlan_cfg_get_txmon_hw_support);
|
||||
|
Reference in New Issue
Block a user