mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-05 06:18:45 -04:00
net/mlx5e: XSK, Exclude tailroom from non-linear SKBs memory calculations
Packet data buffers lack reserved headroom or tailroom, and SKBs are allocated on a side memory when needed. Exclude the tailroom from the SKB size calculations. Signed-off-by: Carolina Jubran <cjubran@nvidia.com> Reviewed-by: Tariq Toukan <tariqt@nvidia.com> Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
This commit is contained in:
committed by
Saeed Mahameed
parent
917d1e799d
commit
fb3bfdfcd1
@@ -240,11 +240,14 @@ static u32 mlx5e_rx_get_linear_sz_xsk(struct mlx5e_params *params,
|
||||
return xsk->headroom + hw_mtu;
|
||||
}
|
||||
|
||||
static u32 mlx5e_rx_get_linear_sz_skb(struct mlx5e_params *params, bool xsk)
|
||||
static u32 mlx5e_rx_get_linear_sz_skb(struct mlx5e_params *params, bool no_head_tail_room)
|
||||
{
|
||||
/* SKBs built on XDP_PASS on XSK RQs don't have headroom. */
|
||||
u16 headroom = xsk ? 0 : mlx5e_get_linear_rq_headroom(params, NULL);
|
||||
u32 hw_mtu = MLX5E_SW2HW_MTU(params, params->sw_mtu);
|
||||
u16 headroom;
|
||||
|
||||
if (no_head_tail_room)
|
||||
return SKB_DATA_ALIGN(hw_mtu);
|
||||
headroom = mlx5e_get_linear_rq_headroom(params, NULL);
|
||||
|
||||
return MLX5_SKB_FRAG_SZ(headroom + hw_mtu);
|
||||
}
|
||||
@@ -289,7 +292,11 @@ bool mlx5e_rx_is_linear_skb(struct mlx5_core_dev *mdev,
|
||||
if (params->packet_merge.type != MLX5E_PACKET_MERGE_NONE)
|
||||
return false;
|
||||
|
||||
/* Both XSK and non-XSK cases allocate an SKB on XDP_PASS. Packet data
|
||||
/* Call mlx5e_rx_get_linear_sz_skb with the no_head_tail_room parameter set
|
||||
* to exclude headroom and tailroom from calculations.
|
||||
* no_head_tail_room is true when SKB is built on XDP_PASS on XSK RQs
|
||||
* since packet data buffers don't have headroom and tailroom resreved for the SKB.
|
||||
* Both XSK and non-XSK cases allocate an SKB on XDP_PASS. Packet data
|
||||
* must fit into a CPU page.
|
||||
*/
|
||||
if (mlx5e_rx_get_linear_sz_skb(params, xsk) > PAGE_SIZE)
|
||||
|
||||
Reference in New Issue
Block a user