qcacmn: Add support to track high watermark for SRNGs
Add support to track the high watermark for the number of entries which are used at any given instant. This helps in identifying if the ring size is sufficient or is being full for certain use-cases. Change-Id: Id3ffa52c653696699fbcfbb556a815d5f7908863 CRs-Fixed: 3235115
这个提交包含在:
@@ -1485,6 +1485,37 @@ void hal_srng_last_desc_cleared_init(struct hal_srng *srng)
|
||||
}
|
||||
#endif /* CLEAR_SW2TCL_CONSUMED_DESC */
|
||||
|
||||
#ifdef WLAN_DP_SRNG_USAGE_WM_TRACKING
|
||||
static inline void hal_srng_update_high_wm_thresholds(struct hal_srng *srng)
|
||||
{
|
||||
srng->high_wm.bin_thresh[HAL_SRNG_HIGH_WM_BIN_90_to_100] =
|
||||
((srng->num_entries * 90) / 100);
|
||||
srng->high_wm.bin_thresh[HAL_SRNG_HIGH_WM_BIN_80_to_90] =
|
||||
((srng->num_entries * 80) / 100);
|
||||
srng->high_wm.bin_thresh[HAL_SRNG_HIGH_WM_BIN_70_to_80] =
|
||||
((srng->num_entries * 70) / 100);
|
||||
srng->high_wm.bin_thresh[HAL_SRNG_HIGH_WM_BIN_60_to_70] =
|
||||
((srng->num_entries * 60) / 100);
|
||||
srng->high_wm.bin_thresh[HAL_SRNG_HIGH_WM_BIN_50_to_60] =
|
||||
((srng->num_entries * 50) / 100);
|
||||
/* Below 50% threshold is not needed */
|
||||
srng->high_wm.bin_thresh[HAL_SRNG_HIGH_WM_BIN_BELOW_50_PERCENT] = 0;
|
||||
|
||||
hal_info("ring_id: %u, wm_thresh- <50:%u, 50-60:%u, 60-70:%u, 70-80:%u, 80-90:%u, 90-100:%u",
|
||||
srng->ring_id,
|
||||
srng->high_wm.bin_thresh[HAL_SRNG_HIGH_WM_BIN_BELOW_50_PERCENT],
|
||||
srng->high_wm.bin_thresh[HAL_SRNG_HIGH_WM_BIN_50_to_60],
|
||||
srng->high_wm.bin_thresh[HAL_SRNG_HIGH_WM_BIN_60_to_70],
|
||||
srng->high_wm.bin_thresh[HAL_SRNG_HIGH_WM_BIN_70_to_80],
|
||||
srng->high_wm.bin_thresh[HAL_SRNG_HIGH_WM_BIN_80_to_90],
|
||||
srng->high_wm.bin_thresh[HAL_SRNG_HIGH_WM_BIN_90_to_100]);
|
||||
}
|
||||
#else
|
||||
static inline void hal_srng_update_high_wm_thresholds(struct hal_srng *srng)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* hal_srng_setup - Initialize HW SRNG ring.
|
||||
* @hal_soc: Opaque HAL SOC handle
|
||||
@@ -1547,6 +1578,7 @@ void *hal_srng_setup(void *hal_soc, int ring_type, int ring_num,
|
||||
srng->prefetch_timer = ring_params->prefetch_timer;
|
||||
srng->hal_soc = hal_soc;
|
||||
hal_srng_set_msi2_params(srng, ring_params);
|
||||
hal_srng_update_high_wm_thresholds(srng);
|
||||
|
||||
for (i = 0 ; i < MAX_SRNG_REG_GROUPS; i++) {
|
||||
srng->hwreg_base[i] = dev_base_addr + ring_config->reg_start[i]
|
||||
|
在新工单中引用
屏蔽一个用户