From: Chen Yahui Date: Fri, 16 Sep 2022 13:07:57 +0000 (+0800) Subject: af_xdp: change RLIMIT_MEMLOCK before load bpf program X-Git-Tag: v23.06-rc0~233 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F38%2F37138%2F6;p=vpp.git af_xdp: change RLIMIT_MEMLOCK before load bpf program default RLIMIT_MEMLOCK is 64. if we use multi af_xdp interfaces or load complex bpf program, libbpf will return permission error. root cause is default 64 is not large enough. So we change it before load bpf program. Type: fix Change-Id: Ia6aed19c9256c498cf1155586a54a32b3f444105 Signed-off-by: Chen Yahui --- diff --git a/src/plugins/af_xdp/device.c b/src/plugins/af_xdp/device.c index a571155a707..cccbf69cfdc 100644 --- a/src/plugins/af_xdp/device.c +++ b/src/plugins/af_xdp/device.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -197,6 +198,12 @@ static int af_xdp_load_program (af_xdp_create_if_args_t * args, af_xdp_device_t * ad) { int fd; + struct rlimit r = { RLIM_INFINITY, RLIM_INFINITY }; + + if (setrlimit (RLIMIT_MEMLOCK, &r)) + af_xdp_log (VLIB_LOG_LEVEL_WARNING, ad, + "setrlimit(%s) failed: %s (errno %d)", ad->linux_ifname, + strerror (errno), errno); ad->linux_ifindex = if_nametoindex (ad->linux_ifname); if (!ad->linux_ifindex)