]> git.baikalelectronics.ru Git - kernel.git/commit
libbpf: Only create rx and tx XDP rings when necessary
authorCiara Loftus <ciara.loftus@intel.com>
Wed, 31 Mar 2021 06:12:18 +0000 (06:12 +0000)
committerAlexei Starovoitov <ast@kernel.org>
Thu, 1 Apr 2021 21:45:43 +0000 (14:45 -0700)
commitd8fb3a554c0fee8ca983725c28aa675b9b6acc39
tree818d93eb379796febf71ff998a0c7edd0490e4f0
parenta98c68a79810d98d5046aa5301cbdacc3521bb9b
libbpf: Only create rx and tx XDP rings when necessary

Prior to this commit xsk_socket__create(_shared) always attempted to create
the rx and tx rings for the socket. However this causes an issue when the
socket being setup is that which shares the fd with the UMEM. If a
previous call to this function failed with this socket after the rings were
set up, a subsequent call would always fail because the rings are not torn
down after the first call and when we try to set them up again we encounter
an error because they already exist. Solve this by remembering whether the
rings were set up by introducing new bools to struct xsk_umem which
represent the ring setup status and using them to determine whether or
not to set up the rings.

Fixes: 1630fbcf169a ("libbpf: add support for using AF_XDP sockets")
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20210331061218.1647-4-ciara.loftus@intel.com
tools/lib/bpf/xsk.c