Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e0973a42 authored by Toke Høiland-Jørgensen's avatar Toke Høiland-Jørgensen Committed by Daniel Borkmann
Browse files

libbpf: Remove getsockopt() check for XDP_OPTIONS



The xsk_socket__create() function fails and returns an error if it cannot
get the XDP_OPTIONS through getsockopt(). However, support for XDP_OPTIONS
was not added until kernel 5.3, so this means that creating XSK sockets
always fails on older kernels.

Since the option is just used to set the zero-copy flag in the xsk struct,
and that flag is not really used for anything yet, just remove the
getsockopt() call until a proper use for it is introduced.

Suggested-by: default avatarYonghong Song <yhs@fb.com>
Signed-off-by: default avatarToke Høiland-Jørgensen <toke@redhat.com>
Acked-by: default avatarAndrii Nakryiko <andriin@fb.com>
Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
parent 280ceaed
Loading
Loading
Loading
Loading
+0 −11
Original line number Diff line number Diff line
@@ -65,7 +65,6 @@ struct xsk_socket {
	int xsks_map_fd;
	__u32 queue_id;
	char ifname[IFNAMSIZ];
	bool zc;
};

struct xsk_nl_info {
@@ -491,7 +490,6 @@ int xsk_socket__create(struct xsk_socket **xsk_ptr, const char *ifname,
	void *rx_map = NULL, *tx_map = NULL;
	struct sockaddr_xdp sxdp = {};
	struct xdp_mmap_offsets off;
	struct xdp_options opts;
	struct xsk_socket *xsk;
	socklen_t optlen;
	int err;
@@ -611,15 +609,6 @@ int xsk_socket__create(struct xsk_socket **xsk_ptr, const char *ifname,

	xsk->prog_fd = -1;

	optlen = sizeof(opts);
	err = getsockopt(xsk->fd, SOL_XDP, XDP_OPTIONS, &opts, &optlen);
	if (err) {
		err = -errno;
		goto out_mmap_tx;
	}

	xsk->zc = opts.flags & XDP_OPTIONS_ZEROCOPY;

	if (!(xsk->config.libbpf_flags & XSK_LIBBPF_FLAGS__INHIBIT_PROG_LOAD)) {
		err = xsk_setup_xdp_prog(xsk);
		if (err)