Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 58913efb authored by Yann Droneaud's avatar Yann Droneaud Committed by Roland Dreier
Browse files

IB/core: Use a common header for uverbs flow_specs



A common header will allows better checking of flow specs size, while
ensuring strict alignment to 64 bits.

Signed-off-by: default avatarYann Droneaud <ydroneaud@opteya.com>
Link: http://marc.info/?i=cover.1383773832.git.ydroneaud@opteya.com


Signed-off-by: default avatarRoland Dreier <roland@purestorage.com>
parent b68c9560
Loading
Loading
Loading
Loading
+40 −13
Original line number Diff line number Diff line
@@ -701,6 +701,14 @@ struct ib_uverbs_detach_mcast {
};

#ifdef CONFIG_INFINIBAND_EXPERIMENTAL_UVERBS_FLOW_STEERING
struct ib_uverbs_flow_spec_hdr {
	__u32 type;
	__u16 size;
	__u16 reserved;
	/* followed by flow_spec */
	__u64 flow_spec_data[0];
};

struct ib_uverbs_flow_eth_filter {
	__u8  dst_mac[6];
	__u8  src_mac[6];
@@ -709,9 +717,14 @@ struct ib_uverbs_flow_eth_filter {
};

struct ib_uverbs_flow_spec_eth {
	union {
		struct ib_uverbs_flow_spec_hdr hdr;
		struct {
			__u32 type;
			__u16 size;
			__u16 reserved;
		};
	};
	struct ib_uverbs_flow_eth_filter val;
	struct ib_uverbs_flow_eth_filter mask;
};
@@ -722,9 +735,14 @@ struct ib_uverbs_flow_ipv4_filter {
};

struct ib_uverbs_flow_spec_ipv4 {
	union {
		struct ib_uverbs_flow_spec_hdr hdr;
		struct {
			__u32 type;
			__u16 size;
			__u16 reserved;
		};
	};
	struct ib_uverbs_flow_ipv4_filter val;
	struct ib_uverbs_flow_ipv4_filter mask;
};
@@ -735,20 +753,28 @@ struct ib_uverbs_flow_tcp_udp_filter {
};

struct ib_uverbs_flow_spec_tcp_udp {
	union {
		struct ib_uverbs_flow_spec_hdr hdr;
		struct {
			__u32 type;
			__u16 size;
			__u16 reserved;
		};
	};
	struct ib_uverbs_flow_tcp_udp_filter val;
	struct ib_uverbs_flow_tcp_udp_filter mask;
};

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;
@@ -767,6 +793,7 @@ struct ib_uverbs_flow_attr {
	 * struct ib_flow_spec_xxx
	 * struct ib_flow_spec_yyy
	 */
	struct ib_uverbs_flow_spec_hdr flow_specs[0];
};

struct ib_uverbs_create_flow  {