Skip to content

Flow actions to mutate packets

Leon Romanovsky linux-rdma netdev 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest27 patches 3 repliesIn review

RFC -> v0 from the cover letter · 21 lines

* Patch 1 a new patch which refactors the logic
when getting a flow namespace.
* Patch 2 was split into two.
* Patch 3: Fixed a typo in commit message
* Patch 5: Updated commit message
* Patch 7: Updated commit message
Renamed:
- MLX5_FLOW_CONTEXT_ACTION_PACKET_REFORMAT_ID to MLX5_FLOW_CONTEXT_ACTION_PACKET_REFORMAT
- packet_reformat_id to reformat_id in struct mlx5_flow_act
- packet_reformat_id to encap_id in struct mlx5_esw_flow_attr
- packet_reformat_id to encap_id in struct mlx5e_encap_entry
- PACKET_REFORMAT to REFORMAT when printing trace points
* Patch 9: Updated commit message
Updated function declaration in mlx5_core.h, could of lead to compile error on bisection.
* Patch 11: Disallow egress rules insertion when in switchdev mode
* Patch 12: A new patch to deal with passing enum values using the IOCTL infrastructure.
* Patch 13: Use new enum value attribute when passing enum mlx5_ib_uapi_flow_table_type
* Patch 15: Don't set encap flags on flow tables if in switchdev mode
* Patch 17: Use new enum value attribute when passing enum mlx5_ib_uapi_flow_table_type and enum mlx5_ib_uapi_flow_action_packet_reformat_type
* Patch 19: Allow creation of both MLX5_IB_UAPI_FLOW_ACTION_PACKET_REFORMAT_TYPE_L2_TO_L3_TUNNEL and MLX5_IB_UAPI_FLOW_ACTION_PACKET_REFORMAT_TYPE_L3_TUNNEL_TO_L2 packet reformat actions.
* Patch 20: A new patch which allows attaching packet reformat actions to flow tables on NIC RX.

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/27net/mlx5: Cleanup flow namespace getter switch logicdrivers/net/ethernet/mellanox/mlx5/core/fs_core.c+9 -130 replies
2/27net/mlx5: Add proper NIC TX steering flow tables supportdrivers/net/ethernet/mellanox/mlx5/core/fs_cmd.c drivers/net/ethernet/mellanox/mlx5/core/fs_core.c include/linux/mlx5/device.h+32 -90 replies
3/27net/mlx5: Export modify header alloc/dealloc functionsdrivers/net/ethernet/mellanox/mlx5/core/fs_cmd.c drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h include/linux/mlx5/fs.h+8 -50 replies
4/27net/mlx5: Add support for more namespaces when allocating modify headerdrivers/net/ethernet/mellanox/mlx5/core/fs_cmd.c+5 -00 replies
5/27net/mlx5: Break encap/decap into two separated flow table creation flagsdrivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c drivers/net/ethernet/mellanox/mlx5/core/fs_cmd.c include/linux/mlx5/fs.h+8 -50 replies
6/27net/mlx5: Move header encap type to IFC header filedrivers/net/ethernet/mellanox/mlx5/core/en_tc.c include/linux/mlx5/mlx5_ifc.h+5 -50 replies
7/27{net, RDMA}/mlx5: Rename encap to reformat packetdrivers/infiniband/hw/mlx5/devx.c drivers/net/ethernet/mellanox/mlx5/core/cmd.c drivers/net/ethernet/mellanox/mlx5/core/diag/fs_tracepoint.h +8 more+106 -940 replies
8/27net/mlx5: Expose new packet reformat capabilitiesinclude/linux/mlx5/mlx5_ifc.h+16 -30 replies
9/27net/mlx5: Pass a namespace for packet reformat ID allocationdrivers/net/ethernet/mellanox/mlx5/core/en_tc.c drivers/net/ethernet/mellanox/mlx5/core/fs_cmd.c drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h+11 -10 replies
10/27net/mlx5: Export packet reformat alloc/dealloc functionsdrivers/net/ethernet/mellanox/mlx5/core/fs_cmd.c drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h include/linux/mlx5/fs.h+11 -80 replies
11/27RDMA/mlx5: Add NIC TX steering supportdrivers/infiniband/hw/mlx5/main.c drivers/infiniband/hw/mlx5/mlx5_ib.h+19 -100 replies
12/27RDMA/uverbs: Add UVERBS_ATTR_CONST_IN to the specs languagedrivers/infiniband/core/uverbs_ioctl.c include/rdma/uverbs_ioctl.h+51 -00 replies
13/27RDMA/mlx5: Add a new flow action verb, modify headerdrivers/infiniband/hw/mlx5/flow.c drivers/infiniband/hw/mlx5/main.c drivers/infiniband/hw/mlx5/mlx5_ib.h +2 more+162 -10 replies
14/27RDMA/mlx5: Enable attaching modify header to steering flowsdrivers/infiniband/hw/mlx5/main.c+8 -00 replies
15/27RDMA/mlx5: Enable decap and packet reformat on flow tablesdrivers/infiniband/hw/mlx5/main.c+13 -40 replies
16/27RDMA/uverbs: Add generic function to fill in flow action objectdrivers/infiniband/core/uverbs_std_types_flow_action.c drivers/infiniband/hw/mlx5/flow.c include/rdma/uverbs_std_types.h+17 -100 replies
17/27RDMA/mlx5: Add new flow action verb, packet reformatdrivers/infiniband/hw/mlx5/flow.c drivers/infiniband/hw/mlx5/mlx5_ib.h include/uapi/rdma/mlx5_user_ioctl_cmds.h +1 more+87 -10 replies
18/27RDMA/mlx5: Enable attaching DECAP action to steering flowsdrivers/infiniband/hw/mlx5/main.c+5 -00 replies
19/27RDMA/mlx5: Extend packet reformat verbsdrivers/infiniband/hw/mlx5/flow.c drivers/infiniband/hw/mlx5/mlx5_ib.h include/uapi/rdma/mlx5_user_ioctl_cmds.h +1 more+100 -00 replies
20/27RDMA/mlx5: Enable reformat on NIC RX if supporteddrivers/infiniband/hw/mlx5/main.c+4 -00 replies
21/27RDMA/mlx5: Enable attaching packet reformat action to steering flowsdrivers/infiniband/hw/mlx5/main.c+7 -00 replies
22/27IB/uverbs: Add IDRs array attribute type to ioctl() interfacedrivers/infiniband/core/uverbs_ioctl.c include/rdma/uverbs_ioctl.h include/uapi/rdma/rdma_user_ioctl_cmds.h+160 -40 replies
23/27RDMA/mlx5: Refactor flow action parsing to be more genericdrivers/infiniband/hw/mlx5/main.c drivers/infiniband/hw/mlx5/mlx5_ib.h+10 -60 replies
24/27RDMA/mlx5: Refactor DEVX flow creationdrivers/infiniband/hw/mlx5/flow.c drivers/infiniband/hw/mlx5/main.c drivers/infiniband/hw/mlx5/mlx5_ib.h+13 -70 replies
25/27RDMA/mlx5: Add flow actions support to DEVX create flowdrivers/infiniband/hw/mlx5/flow.c include/uapi/rdma/mlx5_user_ioctl_cmds.h+21 -10 replies
26/27RDMA/mlx5: Add NIC TX namespace when getting a flow tabledrivers/infiniband/hw/mlx5/flow.c drivers/infiniband/hw/mlx5/main.c drivers/infiniband/hw/mlx5/mlx5_ib.h+30 -100 replies
27/27RDMA/mlx5: Allow creating a matcher for a NIC TX flow tabledrivers/infiniband/hw/mlx5/flow.c drivers/infiniband/hw/mlx5/main.c include/uapi/rdma/mlx5_user_ioctl_cmds.h+46 -220 replies

Reviews trailers per patch

4 of 27 patches have a Reviewed-by or Acked-by.

PatchOr Gerlitz
1/27
2/27
3/27
4/27R-b
5/27R-b
6/27R-b
7/27
8/27
9/27R-b
10/27
11/27
12/27
13/27
14/27
15/27
16/27
17/27
18/27
19/27
20/27
21/27
22/27
23/27
24/27
25/27
26/27
27/27

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v1 thread

Cover letter [PATCH rdma-next 00/27] Flow actions to mutate packets

From: Leon Romanovsky <[email protected]>

Hi,

This is PATCH variant of RFC posted in previous week to the ML.
https://patchwork.ozlabs.org/cover/944184/

Changelog:
RFC -> v0:
* Patch 1 a new patch which refactors the logic
when getting a flow namespace.
* Patch 2 was split into two.
* Patch 3: Fixed a typo in commit message
* Patch 5: Updated commit message
* Patch 7: Updated commit message
Renamed:
- MLX5_FLOW_CONTEXT_ACTION_PACKET_REFORMAT_ID to MLX5_FLOW_CONTEXT_ACTION_PACKET_REFORMAT
- packet_reformat_id to reformat_id in struct mlx5_flow_act
- packet_reformat_id to encap_id in struct mlx5_esw_flow_attr
- packet_reformat_id to encap_id in struct mlx5e_encap_entry
- PACKET_REFORMAT to REFORMAT when printing trace points
* Patch 9: Updated commit message
Updated function declaration in mlx5_core.h, could of lead to compile error on bisection.
* Patch 11: Disallow egress rules insertion when in switchdev mode
* Patch 12: A new patch to deal with passing enum values using the IOCTL infrastructure.
* Patch 13: Use new enum value attribute when passing enum mlx5_ib_uapi_flow_table_type
* Patch 15: Don't set encap flags on flow tables if in switchdev mode
* Patch 17: Use new enum value attribute when passing enum mlx5_ib_uapi_flow_table_type and enum mlx5_ib_uapi_flow_action_packet_reformat_type
* Patch 19: Allow creation of both MLX5_IB_UAPI_FLOW_ACTION_PACKET_REFORMAT_TYPE_L2_TO_L3_TUNNEL and MLX5_IB_UAPI_FLOW_ACTION_PACKET_REFORMAT_TYPE_L3_TUNNEL_TO_L2 packet reformat actions.
* Patch 20: A new patch which allows attaching packet reformat actions to flow tables on NIC RX.

Thanks

------------------------------------------------------------------------

Quoted 1 line

From Mark:

This series exposes the ability to create flow actions which can mutate packet headers. We do that by exposing two new verbs:
* modify header - can change existing packet headers. packet
* reformat - can encapsulate or decapsulate a packet.
Once created a flow action must be attached to a steering rule for it to take effect.

Thanks

Guy Levi (1):
IB/uverbs: Add IDRs array attribute type to ioctl() interface

Mark Bloch (26):
net/mlx5: Cleanup flow namespace getter switch logic net/mlx5: Add proper NIC TX steering flow tables support net/mlx5: Export modify header alloc/dealloc functions net/mlx5: Add support for more namespaces when allocating modify
header
net/mlx5: Break encap/decap into two separated flow table creation
flags
net/mlx5: Move header encap type to IFC header file
{net, RDMA}/mlx5: Rename encap to reformat packet net/mlx5: Expose new packet reformat capabilities net/mlx5: Pass a namespace for packet reformat ID allocation net/mlx5: Export packet reformat alloc/dealloc functions RDMA/mlx5: Add NIC TX steering support
RDMA/uverbs: Add UVERBS_ATTR_CONST_IN to the specs language RDMA/mlx5: Add a new flow action verb, modify header RDMA/mlx5: Enable attaching modify header to steering flows RDMA/mlx5: Enable decap and packet reformat on flow tables RDMA/uverbs: Add generic function to fill in flow action object RDMA/mlx5: Add new flow action verb, packet reformat RDMA/mlx5: Enable attaching DECAP action to steering flows RDMA/mlx5: Extend packet reformat verbs
RDMA/mlx5: Enable reformat on NIC RX if supported RDMA/mlx5: Enable attaching packet reformat action to steering flows RDMA/mlx5: Refactor flow action parsing to be more generic RDMA/mlx5: Refactor DEVX flow creation
RDMA/mlx5: Add flow actions support to DEVX create flow RDMA/mlx5: Add NIC TX namespace when getting a flow table RDMA/mlx5: Allow creating a matcher for a NIC TX flow table

 drivers/infiniband/core/uverbs_ioctl.c             | 115 ++++++-
 .../infiniband/core/uverbs_std_types_flow_action.c |   7 +-
 drivers/infiniband/hw/mlx5/devx.c                  |   6 +-
 drivers/infiniband/hw/mlx5/flow.c                  | 351 ++++++++++++++++++++-
 drivers/infiniband/hw/mlx5/main.c                  | 140 +++++---
 drivers/infiniband/hw/mlx5/mlx5_ib.h               |  26 +-
 drivers/net/ethernet/mellanox/mlx5/core/cmd.c      |   8 +-
 .../mellanox/mlx5/core/diag/fs_tracepoint.h        |   2 +-
 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c    |  50 +--
 drivers/net/ethernet/mellanox/mlx5/core/eswitch.c  |   2 +-
 .../ethernet/mellanox/mlx5/core/eswitch_offloads.c |   9 +-
 drivers/net/ethernet/mellanox/mlx5/core/fs_cmd.c   |  87 +++--
 drivers/net/ethernet/mellanox/mlx5/core/fs_core.c  |  57 ++--
 .../net/ethernet/mellanox/mlx5/core/mlx5_core.h    |  11 -
 include/linux/mlx5/device.h                        |   6 +
 include/linux/mlx5/fs.h                            |  20 +-
 include/linux/mlx5/mlx5_ifc.h                      |  70 ++--
 include/rdma/uverbs_ioctl.h                        |  98 +++++-
 include/rdma/uverbs_std_types.h                    |  12 +
 include/uapi/rdma/mlx5_user_ioctl_cmds.h           |  20 ++
 include/uapi/rdma/mlx5_user_ioctl_verbs.h          |  12 +
 include/uapi/rdma/rdma_user_ioctl_cmds.h           |   2 +-
 22 files changed, 928 insertions(+), 183 deletions(-)