Stanislav Fomichev <sdf@xxxxxxxxxx> writes: > On Thu, Jan 12, 2023 at 12:07 AM Tariq Toukan <ttoukan.linux@xxxxxxxxx> wrote: >> >> >> >> On 12/01/2023 2:32, Stanislav Fomichev wrote: >> > From: Toke Høiland-Jørgensen <toke@xxxxxxxxxx> >> > >> > Preparation for implementing HW metadata kfuncs. No functional change. >> > >> > Cc: Tariq Toukan <tariqt@xxxxxxxxxx> >> > Cc: Saeed Mahameed <saeedm@xxxxxxxxxx> >> > Cc: John Fastabend <john.fastabend@xxxxxxxxx> >> > Cc: David Ahern <dsahern@xxxxxxxxx> >> > Cc: Martin KaFai Lau <martin.lau@xxxxxxxxx> >> > Cc: Jakub Kicinski <kuba@xxxxxxxxxx> >> > Cc: Willem de Bruijn <willemb@xxxxxxxxxx> >> > Cc: Jesper Dangaard Brouer <brouer@xxxxxxxxxx> >> > Cc: Anatoly Burakov <anatoly.burakov@xxxxxxxxx> >> > Cc: Alexander Lobakin <alexandr.lobakin@xxxxxxxxx> >> > Cc: Magnus Karlsson <magnus.karlsson@xxxxxxxxx> >> > Cc: Maryam Tahhan <mtahhan@xxxxxxxxxx> >> > Cc: xdp-hints@xxxxxxxxxxxxxxx >> > Cc: netdev@xxxxxxxxxxxxxxx >> > Signed-off-by: Toke Høiland-Jørgensen <toke@xxxxxxxxxx> >> > Signed-off-by: Stanislav Fomichev <sdf@xxxxxxxxxx> >> > --- >> > drivers/net/ethernet/mellanox/mlx5/core/en.h | 1 + >> > .../net/ethernet/mellanox/mlx5/core/en/xdp.c | 3 +- >> > .../net/ethernet/mellanox/mlx5/core/en/xdp.h | 6 +- >> > .../ethernet/mellanox/mlx5/core/en/xsk/rx.c | 25 ++++---- >> > .../net/ethernet/mellanox/mlx5/core/en_rx.c | 58 +++++++++---------- >> > 5 files changed, 50 insertions(+), 43 deletions(-) >> > >> > diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en.h b/drivers/net/ethernet/mellanox/mlx5/core/en.h >> > index 2d77fb8a8a01..af663978d1b4 100644 >> > --- a/drivers/net/ethernet/mellanox/mlx5/core/en.h >> > +++ b/drivers/net/ethernet/mellanox/mlx5/core/en.h >> > @@ -469,6 +469,7 @@ struct mlx5e_txqsq { >> > union mlx5e_alloc_unit { >> > struct page *page; >> > struct xdp_buff *xsk; >> > + struct mlx5e_xdp_buff *mxbuf; >> >> In XSK files below you mix usage of both alloc_units[page_idx].mxbuf and >> alloc_units[page_idx].xsk, while both fields share the memory of a union. >> >> As struct mlx5e_xdp_buff wraps struct xdp_buff, I think that you just >> need to change the existing xsk field type from struct xdp_buff *xsk >> into struct mlx5e_xdp_buff *xsk and align the usage. > > Hmmm, good point. I'm actually not sure how it works currently. > mlx5e_alloc_unit.mxbuf doesn't seem to be initialized anywhere? Toke, > am I missing something? It's initialised piecemeal in different places; but yeah, we're mixing things a bit... > I'm thinking about something like this: > > diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en.h > b/drivers/net/ethernet/mellanox/mlx5/core/en.h > index af663978d1b4..2d77fb8a8a01 100644 > --- a/drivers/net/ethernet/mellanox/mlx5/core/en.h > +++ b/drivers/net/ethernet/mellanox/mlx5/core/en.h > @@ -469,7 +469,6 @@ struct mlx5e_txqsq { > union mlx5e_alloc_unit { > struct page *page; > struct xdp_buff *xsk; > - struct mlx5e_xdp_buff *mxbuf; > }; Hmm, for consistency with the non-XSK path we should rather go the other direction and lose the xsk member, moving everything to mxbuf? Let me give that a shot... -Toke