]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - include/uapi/rdma/ib_user_verbs.h
Merge tag 'renesas-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm...
[karo-tx-linux.git] / include / uapi / rdma / ib_user_verbs.h
index 805711ea200596d3bba291f7a06902963316510b..0b233c56b0e402ef75f691b5dcf6c6f1cc87a01b 100644 (file)
@@ -43,6 +43,7 @@
  * compatibility are made.
  */
 #define IB_USER_VERBS_ABI_VERSION      6
+#define IB_USER_VERBS_CMD_THRESHOLD    50
 
 enum {
        IB_USER_VERBS_CMD_GET_CONTEXT,
@@ -85,7 +86,9 @@ enum {
        IB_USER_VERBS_CMD_OPEN_XRCD,
        IB_USER_VERBS_CMD_CLOSE_XRCD,
        IB_USER_VERBS_CMD_CREATE_XSRQ,
-       IB_USER_VERBS_CMD_OPEN_QP
+       IB_USER_VERBS_CMD_OPEN_QP,
+       IB_USER_VERBS_CMD_CREATE_FLOW = IB_USER_VERBS_CMD_THRESHOLD,
+       IB_USER_VERBS_CMD_DESTROY_FLOW
 };
 
 /*
@@ -123,6 +126,15 @@ struct ib_uverbs_cmd_hdr {
        __u16 out_words;
 };
 
+struct ib_uverbs_cmd_hdr_ex {
+       __u32 command;
+       __u16 in_words;
+       __u16 out_words;
+       __u16 provider_in_words;
+       __u16 provider_out_words;
+       __u32 cmd_hdr_reserved;
+};
+
 struct ib_uverbs_get_context {
        __u64 response;
        __u64 driver_data[0];
@@ -684,6 +696,91 @@ struct ib_uverbs_detach_mcast {
        __u64 driver_data[0];
 };
 
+struct ib_kern_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_kern_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_kern_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 {
+       union {
+               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_kern_flow_attr {
+       __u32 type;
+       __u16 size;
+       __u16 priority;
+       __u8  num_of_specs;
+       __u8  reserved[2];
+       __u8  port;
+       __u32 flags;
+       /* Following are the optional layers according to user request
+        * struct ib_flow_spec_xxx
+        * struct ib_flow_spec_yyy
+        */
+};
+
+struct ib_uverbs_create_flow  {
+       __u32 comp_mask;
+       __u64 response;
+       __u32 qp_handle;
+       struct ib_kern_flow_attr flow_attr;
+};
+
+struct ib_uverbs_create_flow_resp {
+       __u32 comp_mask;
+       __u32 flow_handle;
+};
+
+struct ib_uverbs_destroy_flow  {
+       __u32 comp_mask;
+       __u32 flow_handle;
+};
+
 struct ib_uverbs_create_srq {
        __u64 response;
        __u64 user_handle;