diff --git a/dpdk/drivers/net/mlx5/linux/mlx5_ethdev_os.c b/dpdk/drivers/net/mlx5/linux/mlx5_ethdev_os.c index b15fc7e5e..0327451b7 100644 --- a/dpdk/drivers/net/mlx5/linux/mlx5_ethdev_os.c +++ b/dpdk/drivers/net/mlx5/linux/mlx5_ethdev_os.c @@ -23,6 +23,7 @@ #include #include #include +#include #include #include @@ -1070,6 +1071,7 @@ mlx5_sysfs_check_switch_info(bool device_dir, * @return * 0 on success, a negative errno value otherwise and rte_errno is set. */ +static int (*real_if_indextoname)(unsigned int, char *); int mlx5_sysfs_switch_info(unsigned int ifindex, struct mlx5_switch_info *info) { @@ -1088,7 +1090,16 @@ mlx5_sysfs_switch_info(unsigned int ifindex, struct mlx5_switch_info *info) bool device_dir = false; char c; - if (!if_indextoname(ifindex, ifname)) { + // for ff tools + if (!real_if_indextoname) { + real_if_indextoname = dlsym(RTLD_NEXT, "if_indextoname"); + if (!real_if_indextoname) { + rte_errno = errno; + return -rte_errno; + } + } + + if (!real_if_indextoname(ifindex, ifname)) { rte_errno = errno; return -rte_errno; }