Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bce2b2bf authored by Tariq Toukan's avatar Tariq Toukan Committed by Saeed Mahameed
Browse files

net/mlx5e: Enhance RX SKB headroom logic



In the RX memory scheme of non Striding RQ, we use linear SKBs.
Keeping NET_IP_ALIGN in headroom can improve performance on some archs.
In addition, take this headroom into account when calculating the
LRO WQE size.

These are not needed in Striding RQ as they're done implicitly
within the non-linear SKB allocation.

Fixes: 1bfecfca ("net/mlx5e: Build RX SKB on demand")
Signed-off-by: default avatarTariq Toukan <tariqt@mellanox.com>
Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
parent 78aedd32
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -217,6 +217,7 @@ struct mlx5e_cq_moder {
struct mlx5e_params {
	u8  log_sq_size;
	u8  rq_wq_type;
	u16 rq_headroom;
	u8  mpwqe_log_stride_sz;
	u8  mpwqe_log_num_strides;
	u8  log_rq_size;
+6 −8
Original line number Diff line number Diff line
@@ -96,9 +96,12 @@ void mlx5e_set_rq_type_params(struct mlx5_core_dev *mdev,
		params->log_rq_size = is_kdump_kernel() ?
			MLX5E_PARAMS_MINIMUM_LOG_RQ_SIZE :
			MLX5E_PARAMS_DEFAULT_LOG_RQ_SIZE;
		params->rq_headroom = params->xdp_prog ?
			XDP_PACKET_HEADROOM : MLX5_RX_HEADROOM;
		params->rq_headroom += NET_IP_ALIGN;

		/* Extra room needed for build_skb */
		params->lro_wqe_sz -= MLX5_RX_HEADROOM +
		params->lro_wqe_sz -= params->rq_headroom +
			SKB_DATA_ALIGN(sizeof(struct skb_shared_info));
	}

@@ -579,13 +582,8 @@ static int mlx5e_alloc_rq(struct mlx5e_channel *c,
		goto err_rq_wq_destroy;
	}

	if (rq->xdp_prog) {
		rq->buff.map_dir = DMA_BIDIRECTIONAL;
		rq->rx_headroom = XDP_PACKET_HEADROOM;
	} else {
		rq->buff.map_dir = DMA_FROM_DEVICE;
		rq->rx_headroom = MLX5_RX_HEADROOM;
	}
	rq->buff.map_dir = rq->xdp_prog ? DMA_BIDIRECTIONAL : DMA_FROM_DEVICE;
	rq->rx_headroom = params->rq_headroom;

	switch (rq->wq_type) {
	case MLX5_WQ_TYPE_LINKED_LIST_STRIDING_RQ: