summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaciej Fijalkowski <maciej.fijalkowski@intel.com>2026-03-16 17:05:57 +0300
committerAlexei Starovoitov <ast@kernel.org>2026-03-18 04:58:55 +0300
commit77378dabb50f593c756d393d8eacb0b91b758863 (patch)
tree385ae7589032f9cb0e495fe6869f099b5a57c860
parent2364959abecb052d7b798ae51d0626edec8b9288 (diff)
downloadlinux-77378dabb50f593c756d393d8eacb0b91b758863.tar.xz
xsk: use __xsk_rcv_zc_safe for ZC multi-buffer Rx processing
Commit f620af11c27b ("xsk: avoid double checking against rx queue being full") addressed a case in copy mode, when working with multi-buffer xdp_buff, where we were peeking onto XSK Rx queue twice, to find out if there is a space to produce descriptors. Adjust ZC path to follow the same principle. Signed-off-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com> Acked-by: Stanislav Fomichev <sdf@fomichev.me> Acked-by: Jakub Kicinski <kuba@kernel.org> Reviewed-by: Jason Xing <kerneljasonxing@gmail.com> Link: https://lore.kernel.org/r/20260316140557.461288-1-maciej.fijalkowski@intel.com Signed-off-by: Alexei Starovoitov <ast@kernel.org>
-rw-r--r--net/xdp/xsk.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/net/xdp/xsk.c b/net/xdp/xsk.c
index c078c9e4b243..fbc51a4062c4 100644
--- a/net/xdp/xsk.c
+++ b/net/xdp/xsk.c
@@ -196,13 +196,13 @@ static int xsk_rcv_zc(struct xdp_sock *xs, struct xdp_buff *xdp, u32 len)
goto err;
}
- __xsk_rcv_zc(xs, xskb, len, contd);
+ __xsk_rcv_zc_safe(xs, xskb, len, contd);
xskb_list = &xskb->pool->xskb_list;
list_for_each_entry_safe(pos, tmp, xskb_list, list_node) {
if (list_is_singular(xskb_list))
contd = 0;
len = pos->xdp.data_end - pos->xdp.data;
- __xsk_rcv_zc(xs, pos, len, contd);
+ __xsk_rcv_zc_safe(xs, pos, len, contd);
list_del_init(&pos->list_node);
}