app/testpmd: add async flow create/destroy operations
[dpdk.git] / app / test / test_power_cpufreq.c
index c24b706..4d013cd 100644 (file)
@@ -55,18 +55,20 @@ check_cur_freq(unsigned int lcore_id, uint32_t idx, bool turbo)
        FILE *f;
        char fullpath[PATH_MAX];
        char buf[BUFSIZ];
+       enum power_management_env env;
        uint32_t cur_freq;
+       uint32_t freq_conv;
        int ret = -1;
        int i;
 
        if (snprintf(fullpath, sizeof(fullpath),
-               TEST_POWER_SYSFILE_SCALING_FREQ, lcore_id) < 0) {
+               TEST_POWER_SYSFILE_CPUINFO_FREQ, lcore_id) < 0) {
                return 0;
        }
        f = fopen(fullpath, "r");
        if (f == NULL) {
                if (snprintf(fullpath, sizeof(fullpath),
-                       TEST_POWER_SYSFILE_CPUINFO_FREQ, lcore_id) < 0) {
+                       TEST_POWER_SYSFILE_SCALING_FREQ, lcore_id) < 0) {
                        return 0;
                }
                f = fopen(fullpath, "r");
@@ -80,15 +82,18 @@ check_cur_freq(unsigned int lcore_id, uint32_t idx, bool turbo)
                        goto fail_all;
 
                cur_freq = strtoul(buf, NULL, TEST_POWER_CONVERT_TO_DECIMAL);
-
-               /* convert the frequency to nearest 100000 value
-                * Ex: if cur_freq=1396789 then freq_conv=1400000
-                * Ex: if cur_freq=800030 then freq_conv=800000
-                */
-               unsigned int freq_conv = 0;
-               freq_conv = (cur_freq + TEST_FREQ_ROUNDING_DELTA)
-                                       / TEST_ROUND_FREQ_TO_N_100000;
-               freq_conv = freq_conv * TEST_ROUND_FREQ_TO_N_100000;
+               freq_conv = cur_freq;
+
+               env = rte_power_get_env();
+               if (env == PM_ENV_CPPC_CPUFREQ || env == PM_ENV_PSTATE_CPUFREQ) {
+                       /* convert the frequency to nearest 100000 value
+                        * Ex: if cur_freq=1396789 then freq_conv=1400000
+                        * Ex: if cur_freq=800030 then freq_conv=800000
+                        */
+                       freq_conv = (cur_freq + TEST_FREQ_ROUNDING_DELTA)
+                                               / TEST_ROUND_FREQ_TO_N_100000;
+                       freq_conv = freq_conv * TEST_ROUND_FREQ_TO_N_100000;
+               }
 
                if (turbo)
                        ret = (freqs[idx] <= freq_conv ? 0 : -1);
@@ -436,6 +441,12 @@ check_power_turbo(void)
                                TEST_POWER_LCORE_ID);
                return -1;
        }
+       ret = rte_power_freq_max(TEST_POWER_LCORE_ID);
+       if (ret < 0) {
+               printf("Fail to scale up the freq to max on lcore %u\n",
+                                               TEST_POWER_LCORE_ID);
+               return -1;
+       }
 
        /* Check the current frequency */
        ret = check_cur_freq(TEST_POWER_LCORE_ID, 0, true);
@@ -455,6 +466,12 @@ check_power_turbo(void)
                                TEST_POWER_LCORE_ID);
                return -1;
        }
+       ret = rte_power_freq_max(TEST_POWER_LCORE_ID);
+       if (ret < 0) {
+               printf("Fail to scale up the freq to max on lcore %u\n",
+                                               TEST_POWER_LCORE_ID);
+               return -1;
+       }
 
        /* Check the current frequency */
        ret = check_cur_freq(TEST_POWER_LCORE_ID, 1, false);
@@ -484,7 +501,8 @@ test_power_cpufreq(void)
 
        /* Test environment configuration */
        env = rte_power_get_env();
-       if ((env != PM_ENV_ACPI_CPUFREQ) && (env != PM_ENV_PSTATE_CPUFREQ)) {
+       if ((env != PM_ENV_ACPI_CPUFREQ) && (env != PM_ENV_PSTATE_CPUFREQ) &&
+                       (env != PM_ENV_CPPC_CPUFREQ)) {
                printf("Unexpectedly got an environment other than ACPI/PSTATE\n");
                goto fail_all;
        }
@@ -641,7 +659,7 @@ test_power_cpufreq(void)
        /* test of exit power management for an invalid lcore */
        ret = rte_power_exit(TEST_POWER_LCORE_INVALID);
        if (ret == 0) {
-               printf("Unpectedly exit power management successfully for "
+               printf("Unexpectedly exit power management successfully for "
                                "lcore %u\n", TEST_POWER_LCORE_INVALID);
                rte_power_unset_env();
                return -1;