eal: fix querying DPDK version at runtime
authorBruce Richardson <bruce.richardson@intel.com>
Tue, 16 Feb 2021 15:13:29 +0000 (15:13 +0000)
committerThomas Monjalon <thomas@monjalon.net>
Mon, 15 Mar 2021 22:22:14 +0000 (23:22 +0100)
commit5b637a848195c139829c4a7778528eba1978b50e
treef48930eb4cd5e8684f59f52defe82d349215c4fc
parent5d20515e0c260377fcd23fab785070c4391cc59d
eal: fix querying DPDK version at runtime

For using a DPDK application, such as OVS, which is dynamically linked, the
DPDK version in use should always report the actual version, not the
version used at build time. This incorrect behaviour can be seen by
building OVS against one version of DPDK and running it against a later
one. Using "ovs-vsctl list Open_vSwitch" to query basic info, the
dpdk_version returned will be the build version not the currently running
one - which can be verified using the DPDK telemetry library client.

  $ sudo ovs-vsctl list Open_vSwitch | grep dpdk_version
  dpdk_version        : "DPDK 20.11.0-rc4"

  $ echo quit | sudo dpdk-telemetry.py
  Connecting to /var/run/dpdk/rte/dpdk_telemetry.v2
  {"version": "DPDK 21.02.0-rc2", "pid": 405659, "max_output_len": 16384}
  -->

To fix this, we need to convert the rte_version() function, and any other
necessary parts of the rte_version.h, to be actual functions in EAL, not
just inlines/macros. The only complication in doing so is that telemetry
library cannot call rte_version() directly, and instead needs the version
string passed in on init.

Fixes: af75078fece3 ("first public release")
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
lib/librte_eal/common/meson.build
lib/librte_eal/common/rte_version.c [new file with mode: 0644]
lib/librte_eal/freebsd/eal.c
lib/librte_eal/include/rte_version.h
lib/librte_eal/linux/eal.c
lib/librte_eal/version.map
lib/librte_telemetry/rte_telemetry.h
lib/librte_telemetry/telemetry.c