RE: [PATCH bpf v3 6/9] i40e: use xdp.frame_sz as XDP RxQ info frag_size
From: Loktionov, Aleksandr <hidden>
Date: 2026-02-17 15:13:14
Also in:
bpf, imx, intel-wired-lan, linux-kselftest, lkml
quoted hunk ↗ jump to hunk
-----Original Message----- From: Zaremba, Larysa <redacted> Sent: Tuesday, February 17, 2026 2:25 PM To: bpf@vger.kernel.org Cc: Zaremba, Larysa <redacted>; Claudiu Manoil [off-list ref]; Vladimir Oltean [off-list ref]; Wei Fang [off-list ref]; Clark Wang [off-list ref]; Andrew Lunn [off-list ref]; David S. Miller [off-list ref]; Eric Dumazet [off-list ref]; Jakub Kicinski [off-list ref]; Paolo Abeni [off-list ref]; Nguyen, Anthony L [off-list ref]; Kitszel, Przemyslaw [off-list ref]; Alexei Starovoitov [off-list ref]; Daniel Borkmann [off-list ref]; Jesper Dangaard Brouer [off-list ref]; John Fastabend [off-list ref]; Stanislav Fomichev [off-list ref]; Andrii Nakryiko [off-list ref]; Martin KaFai Lau [off-list ref]; Eduard Zingerman [off-list ref]; Song Liu [off-list ref]; Yonghong Song [off-list ref]; KP Singh [off-list ref]; Hao Luo [off-list ref]; Jiri Olsa [off-list ref]; Simon Horman [off-list ref]; Shuah Khan [off-list ref]; Lobakin, Aleksander [off-list ref]; Fijalkowski, Maciej [off-list ref]; Bastien Curutchet (eBPF Foundation) [off-list ref]; Vyavahare, Tushar [off-list ref]; Jason Xing [off-list ref]; Ricardo B. Marlière [off-list ref]; Eelco Chaudron [off-list ref]; Lorenzo Bianconi [off-list ref]; Toke Hoiland-Jorgensen [off-list ref]; imx@lists.linux.dev; netdev@vger.kernel.org; linux-kernel@vger.kernel.org; intel-wired- lan@lists.osuosl.org; linux-kselftest@vger.kernel.org; Loktionov, Aleksandr [off-list ref]; Dragos Tatulea [off-list ref] Subject: [PATCH bpf v3 6/9] i40e: use xdp.frame_sz as XDP RxQ info frag_size The only user of frag_size field in XDP RxQ info is bpf_xdp_frags_increase_tail(). It clearly expects whole buffer size instead of DMA write size. Different assumptions in i40e driver configuration lead to negative tailroom. Set frag_size to the same value as frame_sz in shared pages mode, use new helper to set frag_size when AF_XDP ZC is active. Fixes: a045d2f2d03d ("i40e: set xdp_rxq_info::frag_size") Signed-off-by: Larysa Zaremba <redacted> --- drivers/net/ethernet/intel/i40e/i40e_main.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.cb/drivers/net/ethernet/intel/i40e/i40e_main.c index eaa5b65e6daf..e012a50a0448 100644--- a/drivers/net/ethernet/intel/i40e/i40e_main.c +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c@@ -3561,6 +3561,7 @@ static int i40e_configure_rx_ring(structi40e_ring *ring) struct i40e_vsi *vsi = ring->vsi; u32 chain_len = vsi->back->hw.func_caps.rx_buf_chain_len; u16 pf_q = vsi->base_queue + ring->queue_index; + u32 xdp_frame_sz = i40e_rx_pg_size(ring) / 2; struct i40e_hw *hw = &vsi->back->hw; struct i40e_hmc_obj_rxq rx_ctx; int err = 0;@@ -3579,11 +3580,12 @@ static int i40e_configure_rx_ring(structi40e_ring *ring) ring->xsk_pool = i40e_xsk_pool(ring); if (ring->xsk_pool) { + xdp_frame_sz = xsk_pool_get_rx_frag_step(ring-quoted
xsk_pool);ring->rx_buf_len = xsk_pool_get_rx_frame_size(ring-quoted
xsk_pool);err = __xdp_rxq_info_reg(&ring->xdp_rxq, ring->netdev, ring->queue_index, ring->q_vector->napi.napi_id, - ring->rx_buf_len); + xdp_frame_sz); if (err) return err; err = xdp_rxq_info_reg_mem_model(&ring->xdp_rxq,@@ -3599,7 +3601,7 @@ static int i40e_configure_rx_ring(structi40e_ring *ring) err = __xdp_rxq_info_reg(&ring->xdp_rxq, ring->netdev, ring->queue_index, ring->q_vector->napi.napi_id, - ring->rx_buf_len); + xdp_frame_sz); if (err) return err; err = xdp_rxq_info_reg_mem_model(&ring->xdp_rxq,@@ -3610,7 +3612,7 @@ static int i40e_configure_rx_ring(structi40e_ring *ring) } skip: - xdp_init_buff(&ring->xdp, i40e_rx_pg_size(ring) / 2, &ring-quoted
xdp_rxq);+ xdp_init_buff(&ring->xdp, xdp_frame_sz, &ring->xdp_rxq); rx_ctx.dbuff = DIV_ROUND_UP(ring->rx_buf_len, BIT_ULL(I40E_RXQ_CTX_DBUFF_SHIFT)); -- 2.52.0
Reviewed-by: Aleksandr Loktionov <redacted>