Lines Matching defs:xsk

19 u8 mlx5e_mpwrq_page_shift(struct mlx5_core_dev *mdev, struct mlx5e_xsk_param *xsk)
21 u8 req_page_shift = xsk ? order_base_2(xsk->chunk_size) : PAGE_SHIFT;
25 if (WARN_ON_ONCE(!xsk && req_page_shift < min_page_shift))
32 mlx5e_mpwrq_umr_mode(struct mlx5_core_dev *mdev, struct mlx5e_xsk_param *xsk)
43 u8 page_shift = mlx5e_mpwrq_page_shift(mdev, xsk);
44 bool unaligned = xsk ? xsk->unaligned : false;
47 if (xsk) {
48 oversized = xsk->chunk_size < (1 << page_shift);
49 WARN_ON_ONCE(xsk->chunk_size > (1 << page_shift));
65 if (xsk->chunk_size % 3 == 0 && is_power_of_2(xsk->chunk_size / 3))
219 struct mlx5e_xsk_param *xsk)
223 if (xsk)
224 return xsk->headroom;
236 struct mlx5e_xsk_param *xsk)
240 return xsk->headroom + hw_mtu;
257 struct mlx5e_xsk_param *xsk,
266 if (xsk)
267 return mpwqe ? 1 << mlx5e_mpwrq_page_shift(mdev, xsk) : PAGE_SIZE;
269 no_head_tail_room = params->xdp_prog && mpwqe && !mlx5e_rx_is_linear_skb(mdev, params, xsk);
285 struct mlx5e_xsk_param *xsk)
287 u32 linear_stride_sz = mlx5e_rx_get_linear_stride_sz(mdev, params, xsk, true);
288 enum mlx5e_mpwrq_umr_mode umr_mode = mlx5e_mpwrq_umr_mode(mdev, xsk);
289 u8 page_shift = mlx5e_mpwrq_page_shift(mdev, xsk);
297 struct mlx5e_xsk_param *xsk)
309 if (mlx5e_rx_get_linear_sz_skb(params, xsk) > PAGE_SIZE)
313 if (xsk && mlx5e_rx_get_linear_sz_xsk(params, xsk) > xsk->chunk_size)
343 struct mlx5e_xsk_param *xsk)
345 u8 log_wqe_num_of_strides = mlx5e_mpwqe_get_log_num_strides(mdev, params, xsk);
346 u8 log_wqe_stride_size = mlx5e_mpwqe_get_log_stride_size(mdev, params, xsk);
347 enum mlx5e_mpwrq_umr_mode umr_mode = mlx5e_mpwrq_umr_mode(mdev, xsk);
348 u8 page_shift = mlx5e_mpwrq_page_shift(mdev, xsk);
357 struct mlx5e_xsk_param *xsk)
359 enum mlx5e_mpwrq_umr_mode umr_mode = mlx5e_mpwrq_umr_mode(mdev, xsk);
360 u8 page_shift = mlx5e_mpwrq_page_shift(mdev, xsk);
365 if (!mlx5e_rx_is_linear_skb(mdev, params, xsk))
368 log_stride_sz = order_base_2(mlx5e_rx_get_linear_stride_sz(mdev, params, xsk, true));
383 struct mlx5e_xsk_param *xsk)
385 enum mlx5e_mpwrq_umr_mode umr_mode = mlx5e_mpwrq_umr_mode(mdev, xsk);
388 log_pkts_per_wqe = mlx5e_mpwqe_log_pkts_per_wqe(mdev, params, xsk);
389 page_shift = mlx5e_mpwrq_page_shift(mdev, xsk);
432 struct mlx5e_xsk_param *xsk)
434 if (mlx5e_rx_mpwqe_is_linear_skb(mdev, params, xsk))
435 return order_base_2(mlx5e_rx_get_linear_stride_sz(mdev, params, xsk, true));
446 struct mlx5e_xsk_param *xsk)
448 enum mlx5e_mpwrq_umr_mode umr_mode = mlx5e_mpwrq_umr_mode(mdev, xsk);
449 u8 page_shift = mlx5e_mpwrq_page_shift(mdev, xsk);
453 log_stride_size = mlx5e_mpwqe_get_log_stride_size(mdev, params, xsk);
455 "Log WQE size %u < log stride size %u (page shift %u, umr mode %d, xsk on? %d)\n",
456 log_wqe_size, log_stride_size, page_shift, umr_mode, !!xsk);
468 struct mlx5e_xsk_param *xsk)
470 u16 linear_headroom = mlx5e_get_linear_rq_headroom(params, xsk);
475 if (mlx5e_rx_mpwqe_is_linear_skb(mdev, params, xsk))
615 struct mlx5e_xsk_param *xsk)
617 enum mlx5e_mpwrq_umr_mode umr_mode = mlx5e_mpwrq_umr_mode(mdev, xsk);
618 u8 page_shift = mlx5e_mpwrq_page_shift(mdev, xsk);
627 if (!mlx5e_rx_mpwqe_is_linear_skb(mdev, params, xsk)) {
636 mlx5e_mpwrq_max_log_rq_pkts(mdev, page_shift, xsk->unaligned));
639 1 << params->log_rq_mtu_frames, xsk->chunk_size);
751 struct mlx5e_xsk_param *xsk,
763 if (mlx5e_rx_is_linear_skb(mdev, params, xsk)) {
766 frag_stride = mlx5e_rx_get_linear_stride_sz(mdev, params, xsk, false);
782 headroom = mlx5e_get_linear_rq_headroom(params, xsk);
898 struct mlx5e_xsk_param *xsk)
901 u16 num_strides = BIT(mlx5e_mpwqe_get_log_num_strides(mdev, params, xsk));
903 u8 log_stride_sz = mlx5e_mpwqe_get_log_stride_size(mdev, params, xsk);
904 int wq_size = BIT(mlx5e_mpwqe_get_log_rq_size(mdev, params, xsk));
915 struct mlx5e_xsk_param *xsk,
926 log_cq_size = mlx5e_shampo_get_log_cq_size(mdev, params, xsk);
928 log_cq_size = mlx5e_mpwqe_get_log_rq_size(mdev, params, xsk) +
929 mlx5e_mpwqe_get_log_num_strides(mdev, params, xsk);
961 struct mlx5e_xsk_param *xsk,
971 u8 log_wqe_num_of_strides = mlx5e_mpwqe_get_log_num_strides(mdev, params, xsk);
972 u8 log_wqe_stride_size = mlx5e_mpwqe_get_log_stride_size(mdev, params, xsk);
973 enum mlx5e_mpwrq_umr_mode umr_mode = mlx5e_mpwrq_umr_mode(mdev, xsk);
974 u8 page_shift = mlx5e_mpwrq_page_shift(mdev, xsk);
990 MLX5_SET(wq, wq, log_wq_sz, mlx5e_mpwqe_get_log_rq_size(mdev, params, xsk));
1011 err = mlx5e_build_rq_frags_info(mdev, params, xsk, &param->frags_info,
1027 mlx5e_build_rx_cq_param(mdev, params, xsk, &param->cqp);
1162 struct mlx5e_xsk_param *xsk)
1164 enum mlx5e_mpwrq_umr_mode umr_mode = mlx5e_mpwrq_umr_mode(mdev, xsk);
1165 u8 page_shift = mlx5e_mpwrq_page_shift(mdev, xsk);
1170 return umr_wqebbs * (1 << mlx5e_mpwqe_get_log_rq_size(mdev, params, xsk));
1203 struct mlx5e_xsk_param xsk = {
1210 mlx5e_mpwrq_total_umr_wqebbs(mdev, params, &xsk));
1213 xsk.unaligned = true;
1215 mlx5e_mpwrq_total_umr_wqebbs(mdev, params, &xsk));
1218 xsk.chunk_size -= 1;
1220 mlx5e_mpwrq_total_umr_wqebbs(mdev, params, &xsk));
1223 xsk.chunk_size = (1 << frame_shift) / 4 * 3;
1225 mlx5e_mpwrq_total_umr_wqebbs(mdev, params, &xsk));
1290 struct mlx5e_xsk_param *xsk,
1299 param->is_xdp_mb = !mlx5e_rx_is_linear_skb(mdev, params, xsk);