Commit 240ae00e authored by Matan Barak's avatar Matan Barak Committed by Roland Dreier

IB/core: Add support for IB L2 device-managed steering

This patch adds preliminary support for IB L2 device-managed steering,
currently exposed only in the kernel.

This flow spec can be used by low-level drivers that need to indicate
the link layer type when creating device-managed flow rules.
Signed-off-by: default avatarMatan Barak <matanb@mellanox.com>
Signed-off-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: default avatarRoland Dreier <roland@purestorage.com>
parent 90f1d1b4
...@@ -1100,13 +1100,14 @@ enum ib_flow_attr_type { ...@@ -1100,13 +1100,14 @@ enum ib_flow_attr_type {
enum ib_flow_spec_type { enum ib_flow_spec_type {
/* L2 headers*/ /* L2 headers*/
IB_FLOW_SPEC_ETH = 0x20, IB_FLOW_SPEC_ETH = 0x20,
IB_FLOW_SPEC_IB = 0x22,
/* L3 header*/ /* L3 header*/
IB_FLOW_SPEC_IPV4 = 0x30, IB_FLOW_SPEC_IPV4 = 0x30,
/* L4 headers*/ /* L4 headers*/
IB_FLOW_SPEC_TCP = 0x40, IB_FLOW_SPEC_TCP = 0x40,
IB_FLOW_SPEC_UDP = 0x41 IB_FLOW_SPEC_UDP = 0x41
}; };
#define IB_FLOW_SPEC_LAYER_MASK 0xF0
#define IB_FLOW_SPEC_SUPPORT_LAYERS 4 #define IB_FLOW_SPEC_SUPPORT_LAYERS 4
/* Flow steering rule priority is set according to it's domain. /* Flow steering rule priority is set according to it's domain.
...@@ -1134,6 +1135,18 @@ struct ib_flow_spec_eth { ...@@ -1134,6 +1135,18 @@ struct ib_flow_spec_eth {
struct ib_flow_eth_filter mask; struct ib_flow_eth_filter mask;
}; };
struct ib_flow_ib_filter {
__be16 dlid;
__u8 sl;
};
struct ib_flow_spec_ib {
enum ib_flow_spec_type type;
u16 size;
struct ib_flow_ib_filter val;
struct ib_flow_ib_filter mask;
};
struct ib_flow_ipv4_filter { struct ib_flow_ipv4_filter {
__be32 src_ip; __be32 src_ip;
__be32 dst_ip; __be32 dst_ip;
...@@ -1164,6 +1177,7 @@ union ib_flow_spec { ...@@ -1164,6 +1177,7 @@ union ib_flow_spec {
u16 size; u16 size;
}; };
struct ib_flow_spec_eth eth; struct ib_flow_spec_eth eth;
struct ib_flow_spec_ib ib;
struct ib_flow_spec_ipv4 ipv4; struct ib_flow_spec_ipv4 ipv4;
struct ib_flow_spec_tcp_udp tcp_udp; struct ib_flow_spec_tcp_udp tcp_udp;
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment