diff options
author | Benoît Ganne <bganne@cisco.com> | 2020-10-19 09:49:09 +0200 |
---|---|---|
committer | Damjan Marion <dmarion@me.com> | 2020-10-21 11:05:37 +0000 |
commit | 4317b8efb1c4a4163b2585b9abd71ec38cd0862c (patch) | |
tree | 7d947df3968e6c28e502f60bf181fa0a0f43972d /src/plugins | |
parent | 5004b0d2f27476eb751cdfe4000236b28cba2064 (diff) |
af_xdp: fix NUMA node parsing
Non-NUMA systems might report -1 as NUMA node.
Type: fix
Change-Id: I092c817ea670009d6f530cc70ad13d45e15fd363
Signed-off-by: Benoît Ganne <bganne@cisco.com>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/af_xdp/device.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/src/plugins/af_xdp/device.c b/src/plugins/af_xdp/device.c index 9bca41c962c..c750e8dd8bd 100644 --- a/src/plugins/af_xdp/device.c +++ b/src/plugins/af_xdp/device.c @@ -22,6 +22,7 @@ #include <vlib/vlib.h> #include <vlib/unix/unix.h> #include <vlib/pci/pci.h> +#include <vppinfra/linux/sysfs.h> #include <vppinfra/unix.h> #include <vnet/ethernet/ethernet.h> #include "af_xdp.h" @@ -260,21 +261,18 @@ err0: static int af_xdp_get_numa (const char *ifname) { - FILE *fptr; + char *path; + clib_error_t *err; int numa; - char *s; - s = (char *) format (0, "/sys/class/net/%s/device/numa_node%c", ifname, 0); - fptr = fopen (s, "rb"); - vec_free (s); - - if (!fptr) - return 0; - - if (fscanf (fptr, "%d\n", &numa) != 1) + path = + (char *) format (0, "/sys/class/net/%s/device/numa_node%c", ifname, 0); + err = clib_sysfs_read (path, "%d", &numa); + if (err || numa < 0) numa = 0; - fclose (fptr); + clib_error_free (err); + vec_free (path); return numa; } |