diff --git a/lib/event/dpdk_governor.c b/lib/event/dpdk_governor.c index a3fe595f3..484f2947b 100644 --- a/lib/event/dpdk_governor.c +++ b/lib/event/dpdk_governor.c @@ -49,7 +49,25 @@ _get_core_freqs(uint32_t lcore_id, uint32_t *freqs, uint32_t num) static uint32_t _get_core_curr_freq(uint32_t lcore_id) { - return rte_power_get_freq(lcore_id); + const uint32_t MAX_CORE_FREQ_NUM = 64; + uint32_t freqs[MAX_CORE_FREQ_NUM]; + uint32_t freq_index; + int rc; + + rc = rte_power_freqs(lcore_id, freqs, MAX_CORE_FREQ_NUM); + if (!rc) { + SPDK_ERRLOG("Unable to get current core frequency array for core %d\n.", lcore_id); + + return 0; + } + freq_index = rte_power_get_freq(lcore_id); + if (freq_index >= MAX_CORE_FREQ_NUM) { + SPDK_ERRLOG("Unable to get current core frequency for core %d\n.", lcore_id); + + return 0; + } + + return freqs[freq_index]; } static int