mbox series

[mlx5-next,0/5] mlx5-next updates 2022-07-03

Message ID 20220703205407.110890-1-saeed@kernel.org (mailing list archive)
Headers show
Series mlx5-next updates 2022-07-03 | expand

Message

Saeed Mahameed July 3, 2022, 8:54 p.m. UTC
From: Saeed Mahameed <saeedm@nvidia.com>

Mark Bloch Says:
================
Expose steering anchor

Expose a steering anchor per priority to allow users to re-inject
packets back into default NIC pipeline for additional processing.

MLX5_IB_METHOD_STEERING_ANCHOR_CREATE returns a flow table ID which
a user can use to re-inject packets at a specific priority.

A FTE (flow table entry) can be created and the flow table ID
used as a destination.

When a packet is taken into a RDMA-controlled steering domain (like
software steering) there may be a need to insert the packet back into
the default NIC pipeline. This exposes a flow table ID to the user that can
be used as a destination in a flow table entry.

With this new method priorities that are exposed to users via
MLX5_IB_METHOD_FLOW_MATCHER_CREATE can be reached from a non-zero UID.

As user-created flow tables (via RDMA DEVX) are created with a non-zero UID
thus it's impossible to point to a NIC core flow table (core driver flow tables
are created with UID value of zero) from userspace.
Create flow tables that are exposed to users with the shared UID, this
allows users to point to default NIC flow tables.

Steering loops are prevented at FW level as FW enforces that no flow
table at level X can point to a table at level lower than X. 

===============

Mark Bloch (5):
  net/mlx5: Expose the ability to point to any UID from shared UID
  net/mlx5: fs, expose flow table ID to users
  net/mlx5: fs, allow flow table creation with a UID
  RDMA/mlx5: Refactor get flow table function
  RDMA/mlx5: Expose steering anchor to userspace

 drivers/infiniband/hw/mlx5/fs.c               | 159 ++++++++++++++++--
 drivers/infiniband/hw/mlx5/mlx5_ib.h          |   6 +
 .../net/ethernet/mellanox/mlx5/core/fs_cmd.c  |  16 +-
 .../net/ethernet/mellanox/mlx5/core/fs_cmd.h  |   2 +-
 .../net/ethernet/mellanox/mlx5/core/fs_core.c |   8 +-
 .../mellanox/mlx5/core/steering/dr_cmd.c      |   1 +
 .../mellanox/mlx5/core/steering/dr_table.c    |   8 +-
 .../mellanox/mlx5/core/steering/dr_types.h    |   1 +
 .../mellanox/mlx5/core/steering/fs_dr.c       |   7 +-
 .../mellanox/mlx5/core/steering/mlx5dr.h      |   3 +-
 include/linux/mlx5/fs.h                       |   2 +
 include/linux/mlx5/mlx5_ifc.h                 |   6 +-
 include/uapi/rdma/mlx5_user_ioctl_cmds.h      |  17 ++
 13 files changed, 204 insertions(+), 32 deletions(-)

Comments

Leon Romanovsky July 19, 2022, 5:54 p.m. UTC | #1
On Sun, Jul 03, 2022 at 01:54:02PM -0700, Saeed Mahameed wrote:
> From: Saeed Mahameed <saeedm@nvidia.com>
> 
> Mark Bloch Says:
> ================
> Expose steering anchor
> 
> Expose a steering anchor per priority to allow users to re-inject
> packets back into default NIC pipeline for additional processing.
> 
> MLX5_IB_METHOD_STEERING_ANCHOR_CREATE returns a flow table ID which
> a user can use to re-inject packets at a specific priority.
> 
> A FTE (flow table entry) can be created and the flow table ID
> used as a destination.
> 
> When a packet is taken into a RDMA-controlled steering domain (like
> software steering) there may be a need to insert the packet back into
> the default NIC pipeline. This exposes a flow table ID to the user that can
> be used as a destination in a flow table entry.
> 
> With this new method priorities that are exposed to users via
> MLX5_IB_METHOD_FLOW_MATCHER_CREATE can be reached from a non-zero UID.
> 
> As user-created flow tables (via RDMA DEVX) are created with a non-zero UID
> thus it's impossible to point to a NIC core flow table (core driver flow tables
> are created with UID value of zero) from userspace.
> Create flow tables that are exposed to users with the shared UID, this
> allows users to point to default NIC flow tables.
> 
> Steering loops are prevented at FW level as FW enforces that no flow
> table at level X can point to a table at level lower than X. 
> 
> ===============
> 
> Mark Bloch (5):
>   net/mlx5: Expose the ability to point to any UID from shared UID
>   net/mlx5: fs, expose flow table ID to users
>   net/mlx5: fs, allow flow table creation with a UID
>   RDMA/mlx5: Refactor get flow table function
>   RDMA/mlx5: Expose steering anchor to userspace
> 

Thanks, applied.