Message ID | 20230616200119.44163-2-saeed@kernel.org (mailing list archive) |
---|---|
State | Accepted |
Commit | 4e7401fc8c8d048a813e0221a706be84182a76c1 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net,01/12] net/mlx5e: XDP, Allow growing tail for XDP multi buffer | expand |
Hello: This series was applied to netdev/net.git (main) by Saeed Mahameed <saeedm@nvidia.com>: On Fri, 16 Jun 2023 13:01:08 -0700 you wrote: > From: Maxim Mikityanskiy <maxtram95@gmail.com> > > The cited commits missed passing frag_size to __xdp_rxq_info_reg, which > is required by bpf_xdp_adjust_tail to support growing the tail pointer > in fragmented packets. Pass the missing parameter when the current RQ > mode allows XDP multi buffer. > > [...] Here is the summary with links: - [net,01/12] net/mlx5e: XDP, Allow growing tail for XDP multi buffer https://git.kernel.org/netdev/net/c/4e7401fc8c8d - [net,02/12] net/mlx5e: xsk: Set napi_id to support busy polling on XSK RQ https://git.kernel.org/netdev/net/c/62a522d3354d - [net,03/12] net/mlx5: Fix driver load with single msix vector https://git.kernel.org/netdev/net/c/0ab999d4a1bf - [net,04/12] net/mlx5e: TC, Add null pointer check for hardware miss support https://git.kernel.org/netdev/net/c/b100573ab76e - [net,05/12] net/mlx5e: TC, Cleanup ct resources for nic flow https://git.kernel.org/netdev/net/c/fb7be476ab7e - [net,06/12] net/mlx5: DR, Support SW created encap actions for FW table https://git.kernel.org/netdev/net/c/87cd0649176c - [net,07/12] net/mlx5: DR, Fix wrong action data allocation in decap action https://git.kernel.org/netdev/net/c/ef4c5afc783d - [net,08/12] net/mlx5: Free IRQ rmap and notifier on kernel shutdown https://git.kernel.org/netdev/net/c/314ded538e5f - [net,09/12] net/mlx5e: Don't delay release of hardware objects https://git.kernel.org/netdev/net/c/cf5bb02320d4 - [net,10/12] net/mlx5e: Fix ESN update kernel panic https://git.kernel.org/netdev/net/c/fef06678931f - [net,11/12] net/mlx5e: Drop XFRM state lock when modifying flow steering https://git.kernel.org/netdev/net/c/c75b94255aaa - [net,12/12] net/mlx5e: Fix scheduling of IPsec ASO query while in atomic https://git.kernel.org/netdev/net/c/a128f9d4c122 You are awesome, thank you!
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/params.c b/drivers/net/ethernet/mellanox/mlx5/core/en/params.c index 9c94807097cb..5ce28ff7685f 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/params.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/params.c @@ -732,7 +732,8 @@ static void mlx5e_rx_compute_wqe_bulk_params(struct mlx5e_params *params, static int mlx5e_build_rq_frags_info(struct mlx5_core_dev *mdev, struct mlx5e_params *params, struct mlx5e_xsk_param *xsk, - struct mlx5e_rq_frags_info *info) + struct mlx5e_rq_frags_info *info, + u32 *xdp_frag_size) { u32 byte_count = MLX5E_SW2HW_MTU(params, params->sw_mtu); int frag_size_max = DEFAULT_FRAG_SIZE; @@ -845,6 +846,8 @@ static int mlx5e_build_rq_frags_info(struct mlx5_core_dev *mdev, info->log_num_frags = order_base_2(info->num_frags); + *xdp_frag_size = info->num_frags > 1 && params->xdp_prog ? PAGE_SIZE : 0; + return 0; } @@ -989,7 +992,8 @@ int mlx5e_build_rq_param(struct mlx5_core_dev *mdev, } default: /* MLX5_WQ_TYPE_CYCLIC */ MLX5_SET(wq, wq, log_wq_sz, params->log_rq_mtu_frames); - err = mlx5e_build_rq_frags_info(mdev, params, xsk, ¶m->frags_info); + err = mlx5e_build_rq_frags_info(mdev, params, xsk, ¶m->frags_info, + ¶m->xdp_frag_size); if (err) return err; ndsegs = param->frags_info.num_frags; diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/params.h b/drivers/net/ethernet/mellanox/mlx5/core/en/params.h index a5d20f6d6d9c..6800949dafbc 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/params.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/params.h @@ -24,6 +24,7 @@ struct mlx5e_rq_param { u32 rqc[MLX5_ST_SZ_DW(rqc)]; struct mlx5_wq_param wq; struct mlx5e_rq_frags_info frags_info; + u32 xdp_frag_size; }; struct mlx5e_sq_param { diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c index a7c526ee5024..a5bdf78955d7 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c @@ -641,7 +641,7 @@ static void mlx5e_free_mpwqe_rq_drop_page(struct mlx5e_rq *rq) } static int mlx5e_init_rxq_rq(struct mlx5e_channel *c, struct mlx5e_params *params, - struct mlx5e_rq *rq) + u32 xdp_frag_size, struct mlx5e_rq *rq) { struct mlx5_core_dev *mdev = c->mdev; int err; @@ -665,7 +665,8 @@ static int mlx5e_init_rxq_rq(struct mlx5e_channel *c, struct mlx5e_params *param if (err) return err; - return xdp_rxq_info_reg(&rq->xdp_rxq, rq->netdev, rq->ix, c->napi.napi_id); + return __xdp_rxq_info_reg(&rq->xdp_rxq, rq->netdev, rq->ix, c->napi.napi_id, + xdp_frag_size); } static int mlx5_rq_shampo_alloc(struct mlx5_core_dev *mdev, @@ -2240,7 +2241,7 @@ static int mlx5e_open_rxq_rq(struct mlx5e_channel *c, struct mlx5e_params *param { int err; - err = mlx5e_init_rxq_rq(c, params, &c->rq); + err = mlx5e_init_rxq_rq(c, params, rq_params->xdp_frag_size, &c->rq); if (err) return err;