Since 20.05, l3fwd-power has become much more stringent about whether it allows initialization without initializing the librte_power library with it. This means that while previously the app could have been used to test RX interrupts functionality even if the app itself was in a half-working state, it is now no longer possible to do so.
To address this use case, we're adding an interrupt-only mode that does not rely on librte_power or telemetry. This enables using l3fwd-power in environments where librte_power is not expected to work (such as inside a VM or on non-IA architectures). The RX/TX path is basically copy paste from legacy RX/TX path but with librte_power bits taken out. There seem to be two opposing schools of thought on whether we should have more or less examples. This patchset goes in the "less" direction where we add a new mode to an existing app, rather than creating a new one like it could be argued it deserves. v2: - Add API to probe support for a specific power env - Add autodetection for the default mode - Add ability to request legacy mode specifically - Fix some code style issues Anatoly Burakov (7): l3fwd-power: disable interrupts by default l3fwd-power: only allow supported power library envs l3fwd-power: code style and flow fixes l3fwd-power: add support for requesting legacy mode l3fwd-power: add interrupt-only mode power: add API to probe support for a specific env l3fwd-power: add auto-selection of default mode examples/l3fwd-power/main.c | 267 ++++++++++++++++++++++-- lib/librte_power/Makefile | 1 + lib/librte_power/guest_channel.c | 26 +++ lib/librte_power/guest_channel.h | 12 ++ lib/librte_power/meson.build | 3 +- lib/librte_power/power_acpi_cpufreq.c | 7 + lib/librte_power/power_acpi_cpufreq.h | 10 + lib/librte_power/power_common.c | 52 +++++ lib/librte_power/power_common.h | 3 + lib/librte_power/power_kvm_vm.c | 5 + lib/librte_power/power_kvm_vm.h | 10 + lib/librte_power/power_pstate_cpufreq.c | 7 + lib/librte_power/power_pstate_cpufreq.h | 10 + lib/librte_power/rte_power.c | 17 ++ lib/librte_power/rte_power.h | 18 ++ lib/librte_power/rte_power_version.map | 1 + 16 files changed, 429 insertions(+), 20 deletions(-) create mode 100644 lib/librte_power/power_common.c -- 2.17.1