aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenoît Ganne <bganne@cisco.com>2020-10-19 09:49:09 +0200
committerDamjan Marion <dmarion@me.com>2020-10-21 11:05:37 +0000
commit4317b8efb1c4a4163b2585b9abd71ec38cd0862c (patch)
tree7d947df3968e6c28e502f60bf181fa0a0f43972d
parent5004b0d2f27476eb751cdfe4000236b28cba2064 (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>
-rw-r--r--src/plugins/af_xdp/device.c20
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;
}