Commit a72c6a2b authored by Maor Gottlieb's avatar Maor Gottlieb Committed by Doug Ledford

IB/core: Add more fields to IPv6 flow specification

Add the following fields to IPv6 flow filter specification:
1. Traffic Class
2. Flow Label
3. Next Header
4. Hop Limit
Signed-off-by: default avatarMaor Gottlieb <maorg@mellanox.com>
Reviewed-by: default avatarSagi Grimberg <sagi@grimberg.me>
Signed-off-by: default avatarLeon Romanovsky <leon@kernel.org>
Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
parent 989a3a8f
...@@ -3158,6 +3158,10 @@ static int kern_spec_to_ib_spec(struct ib_uverbs_flow_spec *kern_spec, ...@@ -3158,6 +3158,10 @@ static int kern_spec_to_ib_spec(struct ib_uverbs_flow_spec *kern_spec,
ib_spec->size = sizeof(struct ib_flow_spec_ipv6); ib_spec->size = sizeof(struct ib_flow_spec_ipv6);
memcpy(&ib_spec->ipv6.val, kern_spec_val, actual_filter_sz); memcpy(&ib_spec->ipv6.val, kern_spec_val, actual_filter_sz);
memcpy(&ib_spec->ipv6.mask, kern_spec_mask, actual_filter_sz); memcpy(&ib_spec->ipv6.mask, kern_spec_mask, actual_filter_sz);
if ((ntohl(ib_spec->ipv6.mask.flow_label)) >= BIT(20) ||
(ntohl(ib_spec->ipv6.val.flow_label)) >= BIT(20))
return -EINVAL;
break; break;
case IB_FLOW_SPEC_TCP: case IB_FLOW_SPEC_TCP:
case IB_FLOW_SPEC_UDP: case IB_FLOW_SPEC_UDP:
......
...@@ -1676,6 +1676,10 @@ struct ib_flow_spec_ipv4 { ...@@ -1676,6 +1676,10 @@ struct ib_flow_spec_ipv4 {
struct ib_flow_ipv6_filter { struct ib_flow_ipv6_filter {
u8 src_ip[16]; u8 src_ip[16];
u8 dst_ip[16]; u8 dst_ip[16];
__be32 flow_label;
u8 next_hdr;
u8 traffic_class;
u8 hop_limit;
/* Must be last */ /* Must be last */
u8 real_sz[0]; u8 real_sz[0];
}; };
......
...@@ -886,8 +886,13 @@ struct ib_uverbs_flow_spec_tcp_udp { ...@@ -886,8 +886,13 @@ struct ib_uverbs_flow_spec_tcp_udp {
}; };
struct ib_uverbs_flow_ipv6_filter { struct ib_uverbs_flow_ipv6_filter {
__u8 src_ip[16]; __u8 src_ip[16];
__u8 dst_ip[16]; __u8 dst_ip[16];
__be32 flow_label;
__u8 next_hdr;
__u8 traffic_class;
__u8 hop_limit;
__u8 reserved;
}; };
struct ib_uverbs_flow_spec_ipv6 { struct ib_uverbs_flow_spec_ipv6 {
......
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