Lines Matching refs:xsk

20 u8 mlx5e_mpwrq_page_shift(struct mlx5_core_dev *mdev, struct mlx5e_xsk_param *xsk)
22 u8 req_page_shift = xsk ? order_base_2(xsk->chunk_size) : PAGE_SHIFT;
26 if (WARN_ON_ONCE(!xsk && req_page_shift < min_page_shift))
33 mlx5e_mpwrq_umr_mode(struct mlx5_core_dev *mdev, struct mlx5e_xsk_param *xsk)
44 u8 page_shift = mlx5e_mpwrq_page_shift(mdev, xsk);
45 bool unaligned = xsk ? xsk->unaligned : false;
48 if (xsk) {
49 oversized = xsk->chunk_size < (1 << page_shift);
50 WARN_ON_ONCE(xsk->chunk_size > (1 << page_shift));
66 if (xsk->chunk_size % 3 == 0 && is_power_of_2(xsk->chunk_size / 3))
220 struct mlx5e_xsk_param *xsk)
224 if (xsk)
225 return xsk->headroom;
237 struct mlx5e_xsk_param *xsk)
241 return xsk->headroom + hw_mtu;
258 struct mlx5e_xsk_param *xsk,
267 if (xsk)
268 return mpwqe ? 1 << mlx5e_mpwrq_page_shift(mdev, xsk) : PAGE_SIZE;
270 no_head_tail_room = params->xdp_prog && mpwqe && !mlx5e_rx_is_linear_skb(mdev, params, xsk);
286 struct mlx5e_xsk_param *xsk)
288 u32 linear_stride_sz = mlx5e_rx_get_linear_stride_sz(mdev, params, xsk, true);
289 enum mlx5e_mpwrq_umr_mode umr_mode = mlx5e_mpwrq_umr_mode(mdev, xsk);
290 u8 page_shift = mlx5e_mpwrq_page_shift(mdev, xsk);
298 struct mlx5e_xsk_param *xsk)
310 if (mlx5e_rx_get_linear_sz_skb(params, xsk) > PAGE_SIZE)
314 if (xsk && mlx5e_rx_get_linear_sz_xsk(params, xsk) > xsk->chunk_size)
344 struct mlx5e_xsk_param *xsk)
346 u8 log_wqe_num_of_strides = mlx5e_mpwqe_get_log_num_strides(mdev, params, xsk);
347 u8 log_wqe_stride_size = mlx5e_mpwqe_get_log_stride_size(mdev, params, xsk);
348 enum mlx5e_mpwrq_umr_mode umr_mode = mlx5e_mpwrq_umr_mode(mdev, xsk);
349 u8 page_shift = mlx5e_mpwrq_page_shift(mdev, xsk);
358 struct mlx5e_xsk_param *xsk)
360 enum mlx5e_mpwrq_umr_mode umr_mode = mlx5e_mpwrq_umr_mode(mdev, xsk);
361 u8 page_shift = mlx5e_mpwrq_page_shift(mdev, xsk);
366 if (!mlx5e_rx_is_linear_skb(mdev, params, xsk))
369 log_stride_sz = order_base_2(mlx5e_rx_get_linear_stride_sz(mdev, params, xsk, true));
384 struct mlx5e_xsk_param *xsk)
386 enum mlx5e_mpwrq_umr_mode umr_mode = mlx5e_mpwrq_umr_mode(mdev, xsk);
389 log_pkts_per_wqe = mlx5e_mpwqe_log_pkts_per_wqe(mdev, params, xsk);
390 page_shift = mlx5e_mpwrq_page_shift(mdev, xsk);
433 struct mlx5e_xsk_param *xsk)
435 if (mlx5e_rx_mpwqe_is_linear_skb(mdev, params, xsk))
436 return order_base_2(mlx5e_rx_get_linear_stride_sz(mdev, params, xsk, true));
447 struct mlx5e_xsk_param *xsk)
449 enum mlx5e_mpwrq_umr_mode umr_mode = mlx5e_mpwrq_umr_mode(mdev, xsk);
450 u8 page_shift = mlx5e_mpwrq_page_shift(mdev, xsk);
454 log_stride_size = mlx5e_mpwqe_get_log_stride_size(mdev, params, xsk);
456 "Log WQE size %u < log stride size %u (page shift %u, umr mode %d, xsk on? %d)\n",
457 log_wqe_size, log_stride_size, page_shift, umr_mode, !!xsk);
469 struct mlx5e_xsk_param *xsk)
471 u16 linear_headroom = mlx5e_get_linear_rq_headroom(params, xsk);
476 if (mlx5e_rx_mpwqe_is_linear_skb(mdev, params, xsk))
545 struct mlx5e_xsk_param *xsk)
547 enum mlx5e_mpwrq_umr_mode umr_mode = mlx5e_mpwrq_umr_mode(mdev, xsk);
548 u8 page_shift = mlx5e_mpwrq_page_shift(mdev, xsk);
557 if (!mlx5e_rx_mpwqe_is_linear_skb(mdev, params, xsk)) {
566 mlx5e_mpwrq_max_log_rq_pkts(mdev, page_shift, xsk->unaligned));
569 1 << params->log_rq_mtu_frames, xsk->chunk_size);
681 struct mlx5e_xsk_param *xsk,
693 if (mlx5e_rx_is_linear_skb(mdev, params, xsk)) {
696 frag_stride = mlx5e_rx_get_linear_stride_sz(mdev, params, xsk, false);
712 headroom = mlx5e_get_linear_rq_headroom(params, xsk);
828 struct mlx5e_xsk_param *xsk)
831 u16 num_strides = BIT(mlx5e_mpwqe_get_log_num_strides(mdev, params, xsk));
833 u8 log_stride_sz = mlx5e_mpwqe_get_log_stride_size(mdev, params, xsk);
834 int wq_size = BIT(mlx5e_mpwqe_get_log_rq_size(mdev, params, xsk));
845 struct mlx5e_xsk_param *xsk,
856 log_cq_size = mlx5e_shampo_get_log_cq_size(mdev, params, xsk);
858 log_cq_size = mlx5e_mpwqe_get_log_rq_size(mdev, params, xsk) +
859 mlx5e_mpwqe_get_log_num_strides(mdev, params, xsk);
891 struct mlx5e_xsk_param *xsk,
901 u8 log_wqe_num_of_strides = mlx5e_mpwqe_get_log_num_strides(mdev, params, xsk);
902 u8 log_wqe_stride_size = mlx5e_mpwqe_get_log_stride_size(mdev, params, xsk);
903 enum mlx5e_mpwrq_umr_mode umr_mode = mlx5e_mpwrq_umr_mode(mdev, xsk);
904 u8 page_shift = mlx5e_mpwrq_page_shift(mdev, xsk);
920 MLX5_SET(wq, wq, log_wq_sz, mlx5e_mpwqe_get_log_rq_size(mdev, params, xsk));
941 err = mlx5e_build_rq_frags_info(mdev, params, xsk, &param->frags_info,
957 mlx5e_build_rx_cq_param(mdev, params, xsk, &param->cqp);
1092 struct mlx5e_xsk_param *xsk)
1094 enum mlx5e_mpwrq_umr_mode umr_mode = mlx5e_mpwrq_umr_mode(mdev, xsk);
1095 u8 page_shift = mlx5e_mpwrq_page_shift(mdev, xsk);
1100 return umr_wqebbs * (1 << mlx5e_mpwqe_get_log_rq_size(mdev, params, xsk));
1133 struct mlx5e_xsk_param xsk = {
1140 mlx5e_mpwrq_total_umr_wqebbs(mdev, params, &xsk));
1143 xsk.unaligned = true;
1145 mlx5e_mpwrq_total_umr_wqebbs(mdev, params, &xsk));
1148 xsk.chunk_size -= 1;
1150 mlx5e_mpwrq_total_umr_wqebbs(mdev, params, &xsk));
1153 xsk.chunk_size = (1 << frame_shift) / 4 * 3;
1155 mlx5e_mpwrq_total_umr_wqebbs(mdev, params, &xsk));
1220 struct mlx5e_xsk_param *xsk,
1229 param->is_xdp_mb = !mlx5e_rx_is_linear_skb(mdev, params, xsk);