For virtual interfaces, like a veth or a tap used in OVS unit tests,
plugging a af_xdp port on them results in an error level message:

dpdk|ERR|EAL: eal_parse_sysfs_value(): cannot open sysfs value
        /sys/class/net/ovs-tap1/device/numa_node
netdev_dpdk|INFO|Device 'net_af_xdptap1,iface=ovs-tap1' attached to DPDK

Avoid this error by checking if the sysfs file exists, like what is done
in DPDK bus drivers using eal_parse_sysfs_value().

Fixes: 3d28387cbc48 ("net/af_xdp: parse NUMA node ID from sysfs")

Signed-off-by: David Marchand <david.march...@redhat.com>
---
 drivers/net/af_xdp/rte_eth_af_xdp.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/af_xdp/rte_eth_af_xdp.c 
b/drivers/net/af_xdp/rte_eth_af_xdp.c
index 0cc51223ba..353c8688ec 100644
--- a/drivers/net/af_xdp/rte_eth_af_xdp.c
+++ b/drivers/net/af_xdp/rte_eth_af_xdp.c
@@ -2399,7 +2399,7 @@ rte_pmd_af_xdp_probe(struct rte_vdev_device *dev)
 
                snprintf(numa_path, sizeof(numa_path), 
"/sys/class/net/%s/device/numa_node",
                         if_name);
-               if (eal_parse_sysfs_value(numa_path, &numa) != 0)
+               if (access(numa_path, R_OK) != 0 || 
eal_parse_sysfs_value(numa_path, &numa) != 0)
                        dev->device.numa_node = rte_socket_id();
                else
                        dev->device.numa_node = numa;
-- 
2.41.0

Reply via email to