bpf_prog_run_xdp() may change the start/length values in xdp.
Adjust the umem handle so it reflects the possibly updated values.

Signed-off-by: Jonathan Lemon <jonathan.le...@gmail.com>
---
 drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c 
b/drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c
index 78f39af8541f..9ae1eb8239e7 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c
@@ -115,7 +115,7 @@ bool mlx5e_xdp_handle(struct mlx5e_rq *rq, struct 
mlx5e_dma_info *di,
 
        act = bpf_prog_run_xdp(prog, &xdp);
        if (xsk)
-               xdp.handle = di->xsk.handle + *rx_headroom;
+               xdp.handle += xdp.data - xdp.data_hard_start;
        switch (act) {
        case XDP_PASS:
                *rx_headroom = xdp.data - xdp.data_hard_start;
-- 
2.17.1

Reply via email to