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

Commit 2490f20b authored by Yann Droneaud's avatar Yann Droneaud Committed by Roland Dreier
Browse files

IB/core: Remove ib_uverbs_flow_spec structure from userspace



The structure holding any types of flow_spec is of no use to
userspace.  It would be wrong for userspace to do:

  struct ib_uverbs_flow_spec flow_spec;

  flow_spec.type = IB_FLOW_SPEC_TCP;
  flow_spec.size = sizeof(flow_spec);

Instead, userspace should use the dedicated flow_spec structure for
  - Ethernet : struct ib_uverbs_flow_spec_eth,
  - IPv4     : struct ib_uverbs_flow_spec_ipv4,
  - TCP/UDP  : struct ib_uverbs_flow_spec_tcp_udp.

In other words, struct ib_uverbs_flow_spec is a "virtual" data
structure that can only be use by the kernel as an alias to the other.

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 58913efb
Loading
Loading
Loading
Loading
+16 −0
Original line number Original line Diff line number Diff line
@@ -178,6 +178,22 @@ void ib_uverbs_event_handler(struct ib_event_handler *handler,
			     struct ib_event *event);
			     struct ib_event *event);
void ib_uverbs_dealloc_xrcd(struct ib_uverbs_device *dev, struct ib_xrcd *xrcd);
void ib_uverbs_dealloc_xrcd(struct ib_uverbs_device *dev, struct ib_xrcd *xrcd);


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;
	};
};

#define IB_UVERBS_DECLARE_CMD(name)					\
#define IB_UVERBS_DECLARE_CMD(name)					\
	ssize_t ib_uverbs_##name(struct ib_uverbs_file *file,		\
	ssize_t ib_uverbs_##name(struct ib_uverbs_file *file,		\
				 const char __user *buf, int in_len,	\
				 const char __user *buf, int in_len,	\
+0 −16
Original line number Original line Diff line number Diff line
@@ -765,22 +765,6 @@ struct ib_uverbs_flow_spec_tcp_udp {
	struct ib_uverbs_flow_tcp_udp_filter mask;
	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;
	};
};

struct ib_uverbs_flow_attr {
struct ib_uverbs_flow_attr {
	__u32 type;
	__u32 type;
	__u16 size;
	__u16 size;