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: Matan Barak <matanb@mellanox.com> Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
This commit is contained in:
parent
90f1d1b41b
commit
240ae00e4d
1 changed files with 15 additions and 1 deletions
|
@ -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 {
|
||||||
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 {
|
||||||
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;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Reference in a new issue