qcacmn: Support REO2SW ring pointer update threshold configuration

Support REO2SW ring pointer update threshold configuration,
it is helpful for PCIe utilization improvement.
timer based threshold - M: issue pointer updates when M micro
seconds has elapsed.
number based threshold - N: issue pointer updates when N entries
updates occur.

Change-Id: I49ed388520fd52e97e303d6ea9c04ced6cb5cf5f
CRs-Fixed: 3420101
このコミットが含まれているのは:
Jinwei Chen
2023-02-28 05:13:24 -08:00
committed by Madan Koyyalamudi
コミット c2c0f7f7f9
9個のファイルの変更186行の追加2行の削除

ファイルの表示

@@ -1891,6 +1891,37 @@ static void dp_print_peer_table(struct dp_vdev *vdev)
DP_MOD_ID_GENERIC_STATS);
}
/**
* dp_srng_configure_pointer_update_thresholds() - Retrieve pointer
* update threshold value from wlan_cfg_ctx
* @soc: device handle
* @ring_params: per ring specific parameters
* @ring_type: Ring type
* @ring_num: Ring number for a given ring type
* @num_entries: number of entries to fill
*
* Fill the ring params with the pointer update threshold
* configuration parameters available in wlan_cfg_ctx
*
* Return: None
*/
static void
dp_srng_configure_pointer_update_thresholds(
struct dp_soc *soc,
struct hal_srng_params *ring_params,
int ring_type, int ring_num,
int num_entries)
{
if (ring_type == REO_DST) {
ring_params->pointer_timer_threshold =
wlan_cfg_get_pointer_timer_threshold_rx(
soc->wlan_cfg_ctx);
ring_params->pointer_num_threshold =
wlan_cfg_get_pointer_num_threshold_rx(
soc->wlan_cfg_ctx);
}
}
#ifdef WLAN_DP_PER_RING_TYPE_CONFIG
/**
* dp_srng_configure_interrupt_thresholds() - Retrieve interrupt
@@ -2407,6 +2438,9 @@ QDF_STATUS dp_srng_init_idx(struct dp_soc *soc, struct dp_srng *srng,
srng->num_entries);
dp_srng_set_nf_thresholds(soc, srng, &ring_params);
dp_srng_configure_pointer_update_thresholds(soc, &ring_params,
ring_type, ring_num,
srng->num_entries);
if (srng->cached)
ring_params.flags |= HAL_SRNG_CACHED_DESC;