diff options
Diffstat (limited to 'include/uapi/rdma/ib_user_verbs.h')
| -rw-r--r-- | include/uapi/rdma/ib_user_verbs.h | 89 | 
1 files changed, 53 insertions, 36 deletions
diff --git a/include/uapi/rdma/ib_user_verbs.h b/include/uapi/rdma/ib_user_verbs.h index 0b233c56b0e..cbfdd4ca951 100644 --- a/include/uapi/rdma/ib_user_verbs.h +++ b/include/uapi/rdma/ib_user_verbs.h @@ -87,8 +87,11 @@ enum {  	IB_USER_VERBS_CMD_CLOSE_XRCD,  	IB_USER_VERBS_CMD_CREATE_XSRQ,  	IB_USER_VERBS_CMD_OPEN_QP, -	IB_USER_VERBS_CMD_CREATE_FLOW = IB_USER_VERBS_CMD_THRESHOLD, -	IB_USER_VERBS_CMD_DESTROY_FLOW +}; + +enum { +	IB_USER_VERBS_EX_CMD_CREATE_FLOW = IB_USER_VERBS_CMD_THRESHOLD, +	IB_USER_VERBS_EX_CMD_DESTROY_FLOW  };  /* @@ -120,16 +123,20 @@ struct ib_uverbs_comp_event_desc {   * the rest of the command struct based on these value.   */ +#define IB_USER_VERBS_CMD_COMMAND_MASK 0xff +#define IB_USER_VERBS_CMD_FLAGS_MASK 0xff000000u +#define IB_USER_VERBS_CMD_FLAGS_SHIFT 24 + +#define IB_USER_VERBS_CMD_FLAG_EXTENDED 0x80 +  struct ib_uverbs_cmd_hdr {  	__u32 command;  	__u16 in_words;  	__u16 out_words;  }; -struct ib_uverbs_cmd_hdr_ex { -	__u32 command; -	__u16 in_words; -	__u16 out_words; +struct ib_uverbs_ex_cmd_hdr { +	__u64 response;  	__u16 provider_in_words;  	__u16 provider_out_words;  	__u32 cmd_hdr_reserved; @@ -696,61 +703,71 @@ struct ib_uverbs_detach_mcast {  	__u64 driver_data[0];  }; -struct ib_kern_eth_filter { +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];  	__be16 ether_type;  	__be16 vlan_tag;  }; -struct ib_kern_spec_eth { -	__u32  type; -	__u16  size; -	__u16  reserved; -	struct ib_kern_eth_filter val; -	struct ib_kern_eth_filter mask; +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;  }; -struct ib_kern_ipv4_filter { +struct ib_uverbs_flow_ipv4_filter {  	__be32 src_ip;  	__be32 dst_ip;  }; -struct ib_kern_spec_ipv4 { -	__u32  type; -	__u16  size; -	__u16  reserved; -	struct ib_kern_ipv4_filter val; -	struct ib_kern_ipv4_filter mask; +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;  }; -struct ib_kern_tcp_udp_filter { +struct ib_uverbs_flow_tcp_udp_filter {  	__be16 dst_port;  	__be16 src_port;  }; -struct ib_kern_spec_tcp_udp { -	__u32  type; -	__u16  size; -	__u16  reserved; -	struct ib_kern_tcp_udp_filter val; -	struct ib_kern_tcp_udp_filter mask; -}; - -struct ib_kern_spec { +struct ib_uverbs_flow_spec_tcp_udp {  	union { +		struct ib_uverbs_flow_spec_hdr hdr;  		struct {  			__u32 type;  			__u16 size;  			__u16 reserved;  		}; -		struct ib_kern_spec_eth	    eth; -		struct ib_kern_spec_ipv4    ipv4; -		struct ib_kern_spec_tcp_udp tcp_udp;  	}; +	struct ib_uverbs_flow_tcp_udp_filter val; +	struct ib_uverbs_flow_tcp_udp_filter mask;  }; -struct ib_kern_flow_attr { +struct ib_uverbs_flow_attr {  	__u32 type;  	__u16 size;  	__u16 priority; @@ -762,13 +779,13 @@ struct ib_kern_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  {  	__u32 comp_mask; -	__u64 response;  	__u32 qp_handle; -	struct ib_kern_flow_attr flow_attr; +	struct ib_uverbs_flow_attr flow_attr;  };  struct ib_uverbs_create_flow_resp {  | 
