xsk: Fix offset calculation in unaligned mode
Bring back previous offset calculation behaviour
in AF_XDP unaligned umem mode.
In unaligned mode, upper 16 bits should contain
data offset, lower 48 bits should contain
only specific chunk location without offset.
Remove pool->headroom duplication into 48bit address.
Signed-off-by: Eryk Kubanski <e.kubanski@partner.samsung.com>
Fixes: bea14124ba ("xsk: Get rid of xdp_buff_xsk::orig_addr")
Acked-by: Magnus Karlsson <magnus.karlsson@intel.com>
Link: https://patch.msgid.link/20250416112925.7501-1-e.kubanski@partner.samsung.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
a1356ac774
commit
bf20af0790
@@ -240,8 +240,8 @@ static inline u64 xp_get_handle(struct xdp_buff_xsk *xskb,
|
||||
return orig_addr;
|
||||
|
||||
offset = xskb->xdp.data - xskb->xdp.data_hard_start;
|
||||
orig_addr -= offset;
|
||||
offset += pool->headroom;
|
||||
orig_addr -= offset;
|
||||
return orig_addr + (offset << XSK_UNALIGNED_BUF_OFFSET_SHIFT);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user