> -----Original Message-----
> From: Intel-wired-lan <[email protected]> On Behalf
> Of Kohei Enju
> Sent: Thursday, March 19, 2026 6:17 PM
> To: [email protected]; [email protected]
> Cc: Nguyen, Anthony L <[email protected]>; Kitszel,
> Przemyslaw <[email protected]>; Andrew Lunn
> <[email protected]>; David S. Miller <[email protected]>; Eric
> Dumazet <[email protected]>; Jakub Kicinski <[email protected]>; Paolo
> Abeni <[email protected]>; [email protected]; Kohei Enju
> <[email protected]>
> Subject: [Intel-wired-lan] [PATCH iwl-next v1 1/3] i40e: prepare for
> XDP metadata ops support
>
> Prepare 'struct i40e_xdp_buff' that contains an xdp_buff and a pointer
> to i40e_rx_desc in order to pass the RX descriptor to the XDP kfuncs.
> Also in ZC path, use XSK_CHECK_PRIV_TYPE() to ensure i40e_xdp_buff
> doesn't exceed the offset of cb in xdp_buff_xsk.
>
> No functional changes.
>
> Signed-off-by: Kohei Enju <[email protected]>
> ---
> drivers/net/ethernet/intel/i40e/i40e_main.c | 2 +-
> drivers/net/ethernet/intel/i40e/i40e_txrx.c | 5 ++++-
> drivers/net/ethernet/intel/i40e/i40e_txrx.h | 7 ++++++-
> drivers/net/ethernet/intel/i40e/i40e_xsk.c | 12 ++++++++++++
> 4 files changed, 23 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c
> b/drivers/net/ethernet/intel/i40e/i40e_main.c
> index 31a42ee18aa0..7966d9cb8009 100644
> --- a/drivers/net/ethernet/intel/i40e/i40e_main.c
> +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
> @@ -3619,7 +3619,7 @@ static int i40e_configure_rx_ring(struct
> i40e_ring *ring)
> }
>
> skip:
> - xdp_init_buff(&ring->xdp, xdp_frame_sz, &ring->xdp_rxq);
> + xdp_init_buff(&ring->xdp_ctx.xdp, xdp_frame_sz, &ring-
> >xdp_rxq);
>
> rx_ctx.dbuff = DIV_ROUND_UP(ring->rx_buf_len,
> BIT_ULL(I40E_RXQ_CTX_DBUFF_SHIFT));
> diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c
> b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
> index 4ffdb007c41a..cfaf724ee7ff 100644
> --- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c
> +++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
> @@ -2438,10 +2438,11 @@ static int i40e_clean_rx_irq(struct i40e_ring
> *rx_ring, int budget,
> unsigned int *rx_cleaned)
> {
> unsigned int total_rx_bytes = 0, total_rx_packets = 0;
...
> xdp_res = i40e_run_xdp_zc(rx_ring, first, xdp_prog);
> i40e_handle_xdp_result_zc(rx_ring, first, rx_desc,
> &rx_packets,
> &rx_bytes, xdp_res, &failure);
> --
> 2.51.0
Reviewed-by: Aleksandr Loktionov <[email protected]>