diff options
author | Maciej Fijalkowski <maciej.fijalkowski@intel.com> | 2024-10-07 14:24:56 +0200 |
---|---|---|
committer | Daniel Borkmann <daniel@iogearbox.net> | 2024-10-14 17:23:30 +0200 |
commit | 6e126872191df946a6fe01b79273119d32d96711 (patch) | |
tree | 77fe816aa03a10195c558d1262a2031c22176002 /net/xdp | |
parent | bea14124bacbe5c9366381e62635eed28ac892ae (diff) | |
download | linux-stable-6e126872191df946a6fe01b79273119d32d96711.tar.gz linux-stable-6e126872191df946a6fe01b79273119d32d96711.tar.bz2 linux-stable-6e126872191df946a6fe01b79273119d32d96711.zip |
xsk: Carry a copy of xdp_zc_max_segs within xsk_buff_pool
This so we avoid dereferencing struct net_device within hot path.
Signed-off-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Magnus Karlsson <magnus.karlsson@intel.com>
Link: https://lore.kernel.org/bpf/20241007122458.282590-5-maciej.fijalkowski@intel.com
Diffstat (limited to 'net/xdp')
-rw-r--r-- | net/xdp/xsk_buff_pool.c | 1 | ||||
-rw-r--r-- | net/xdp/xsk_queue.h | 2 |
2 files changed, 2 insertions, 1 deletions
diff --git a/net/xdp/xsk_buff_pool.c b/net/xdp/xsk_buff_pool.c index 7ecd4ccd2473..e946ba4a5ccf 100644 --- a/net/xdp/xsk_buff_pool.c +++ b/net/xdp/xsk_buff_pool.c @@ -229,6 +229,7 @@ int xp_assign_dev(struct xsk_buff_pool *pool, goto err_unreg_xsk; } pool->umem->zc = true; + pool->xdp_zc_max_segs = netdev->xdp_zc_max_segs; return 0; err_unreg_xsk: diff --git a/net/xdp/xsk_queue.h b/net/xdp/xsk_queue.h index 406b20dfee8d..46d87e961ad6 100644 --- a/net/xdp/xsk_queue.h +++ b/net/xdp/xsk_queue.h @@ -260,7 +260,7 @@ u32 xskq_cons_read_desc_batch(struct xsk_queue *q, struct xsk_buff_pool *pool, nr_frags = 0; } else { nr_frags++; - if (nr_frags == pool->netdev->xdp_zc_max_segs) { + if (nr_frags == pool->xdp_zc_max_segs) { nr_frags = 0; break; } |