Skip to content

Add flow tag support to flow specification

Leon Romanovsky linux-rdma 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest5 patches 1 replyIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/5net/mlx5: Consolidate flow rules regardless their flow tagdrivers/net/ethernet/mellanox/mlx5/core/fs_core.c+10 -20 replies
2/5IB/core: Introduce flow tag specificationinclude/rdma/ib_verbs.h+9 -00 replies
3/5IB/uverbs: Add support for flow tagdrivers/infiniband/core/uverbs.h drivers/infiniband/core/uverbs_cmd.c include/uapi/rdma/ib_user_verbs.h+47 -20 replies
4/5IB/mlx5: Add flow tag supportdrivers/infiniband/hw/mlx5/main.c+23 -30 replies
5/5IB/mlx5: Replace ENOTSUPP usage with EOPNOTSUPPdrivers/infiniband/hw/mlx5/main.c+6 -60 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [PATCH rdma-next 0/5] Add flow tag support to flow specification

Hi Doug,

The flow tag feature allows an application to request to add an action to tag all the packets that matches this rule.

The tag is a number that will came as a metadata with every packet in the CQE.

The tag rule == 0 is chosen as the default tag and application can use it in order to avoid the need to classify the packets that came with a tag while continuing to benefit from this tag mechanism.

struct definition:

struct ib_uverbs_flow_spec_action_tag {
     union {
          struct ib_uverbs_flow_spec_hdr hdr;
          struct {
              __u32 type;
              __u16 size;
              __u16 reserved;
          };
     };
     __be32                   tag_id;
     __u32                    reserved1;
};
struct ib_uverbs_flow_spec {
     union {
          union {
              struct ib_uverbs_flow_spec_hdr hdr;
              struct {
                   __u32 type;
                   __u16 size;
                   __u16 reserved;
              };
          };
          struct ib_uverbs_flow_spec_eth     eth;
          struct ib_uverbs_flow_spec_ipv4    ipv4;
          struct ib_uverbs_flow_spec_tcp_udp tcp_udp;
          struct ib_uverbs_flow_spec_ipv6    ipv6;
          struct ib_uverbs_flow_spec_action_tag flow_tag;
     };
};

Where:

* type, size, reserved fields are identical to the rest of the
* protocols,
and are used to identify the spec.
* flow_tag is a spec of type 'action'
* the ib_uverbs_flow_spec_hdr is identical to the rest of the specs.
* tag_id - is the value of the stream defined by the specs.

Thanks,
Moses

CC: Rony Efraim <ronye-VPRAkNaXOzVWk0Htik3J/[email protected]>
----

Doug,
I used this opportunity and fixed parse_flow_attr(..) return values. Adjusting this fix to this series minimizes chances of possible merge conflicts between different series.

This patchset was generated against commit
f502d834950a ("net/mlx5: Activate support for 4K UARs") and it applies cleanly on k.o/for-4.11 branch.

Available in the "topic/flow-tag" topic branch of this git repo:
git://git.kernel.org/pub/scm/linux/kernel/git/leon/linux-rdma.git

Or for browsing:
https://git.kernel.org/cgit/linux/kernel/git/leon/linux-rdma.git/log/?h=topic/flow-tag

Leon Romanovsky (1):
IB/mlx5: Replace ENOTSUPP usage with EOPNOTSUPP

Maor Gottlieb (1):
net/mlx5: Consolidate flow rules regardless their flow tag

Moses Reuben (3):
IB/core: Introduce flow tag specification
IB/uverbs: Add support for flow tag
IB/mlx5: Add flow tag support

 drivers/infiniband/core/uverbs.h                  |  1 +
 drivers/infiniband/core/uverbs_cmd.c              | 35 +++++++++++++++++++--
 drivers/infiniband/hw/mlx5/main.c                 | 38 +++++++++++++++++------
 drivers/net/ethernet/mellanox/mlx5/core/fs_core.c | 12 +++++--
 include/rdma/ib_verbs.h                           |  9 ++++++
 include/uapi/rdma/ib_user_verbs.h                 | 13 ++++++++
 6 files changed, 95 insertions(+), 13 deletions(-)

--
2.10.2

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html