root/include/uapi/rdma/rdma_user_rxe.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR Linux-OpenIB) */
   2 /*
   3  * Copyright (c) 2016 Mellanox Technologies Ltd. All rights reserved.
   4  *
   5  * This software is available to you under a choice of one of two
   6  * licenses.  You may choose to be licensed under the terms of the GNU
   7  * General Public License (GPL) Version 2, available from the file
   8  * COPYING in the main directory of this source tree, or the
   9  * OpenIB.org BSD license below:
  10  *
  11  *     Redistribution and use in source and binary forms, with or
  12  *     without modification, are permitted provided that the following
  13  *     conditions are met:
  14  *
  15  *      - Redistributions of source code must retain the above
  16  *        copyright notice, this list of conditions and the following
  17  *        disclaimer.
  18  *
  19  *      - Redistributions in binary form must reproduce the above
  20  *        copyright notice, this list of conditions and the following
  21  *        disclaimer in the documentation and/or other materials
  22  *        provided with the distribution.
  23  *
  24  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  25  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  26  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  27  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
  28  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
  29  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  30  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  31  * SOFTWARE.
  32  */
  33 
  34 #ifndef RDMA_USER_RXE_H
  35 #define RDMA_USER_RXE_H
  36 
  37 #include <linux/types.h>
  38 #include <linux/socket.h>
  39 #include <linux/in.h>
  40 #include <linux/in6.h>
  41 
  42 union rxe_gid {
  43         __u8    raw[16];
  44         struct {
  45                 __be64  subnet_prefix;
  46                 __be64  interface_id;
  47         } global;
  48 };
  49 
  50 struct rxe_global_route {
  51         union rxe_gid   dgid;
  52         __u32           flow_label;
  53         __u8            sgid_index;
  54         __u8            hop_limit;
  55         __u8            traffic_class;
  56 };
  57 
  58 struct rxe_av {
  59         __u8                    port_num;
  60         __u8                    network_type;
  61         __u8                    dmac[6];
  62         struct rxe_global_route grh;
  63         union {
  64                 struct sockaddr_in      _sockaddr_in;
  65                 struct sockaddr_in6     _sockaddr_in6;
  66         } sgid_addr, dgid_addr;
  67 };
  68 
  69 struct rxe_send_wr {
  70         __aligned_u64           wr_id;
  71         __u32                   num_sge;
  72         __u32                   opcode;
  73         __u32                   send_flags;
  74         union {
  75                 __be32          imm_data;
  76                 __u32           invalidate_rkey;
  77         } ex;
  78         union {
  79                 struct {
  80                         __aligned_u64 remote_addr;
  81                         __u32   rkey;
  82                         __u32   reserved;
  83                 } rdma;
  84                 struct {
  85                         __aligned_u64 remote_addr;
  86                         __aligned_u64 compare_add;
  87                         __aligned_u64 swap;
  88                         __u32   rkey;
  89                         __u32   reserved;
  90                 } atomic;
  91                 struct {
  92                         __u32   remote_qpn;
  93                         __u32   remote_qkey;
  94                         __u16   pkey_index;
  95                 } ud;
  96                 /* reg is only used by the kernel and is not part of the uapi */
  97                 struct {
  98                         union {
  99                                 struct ib_mr *mr;
 100                                 __aligned_u64 reserved;
 101                         };
 102                         __u32        key;
 103                         __u32        access;
 104                 } reg;
 105         } wr;
 106 };
 107 
 108 struct rxe_sge {
 109         __aligned_u64 addr;
 110         __u32   length;
 111         __u32   lkey;
 112 };
 113 
 114 struct mminfo {
 115         __aligned_u64           offset;
 116         __u32                   size;
 117         __u32                   pad;
 118 };
 119 
 120 struct rxe_dma_info {
 121         __u32                   length;
 122         __u32                   resid;
 123         __u32                   cur_sge;
 124         __u32                   num_sge;
 125         __u32                   sge_offset;
 126         __u32                   reserved;
 127         union {
 128                 __u8            inline_data[0];
 129                 struct rxe_sge  sge[0];
 130         };
 131 };
 132 
 133 struct rxe_send_wqe {
 134         struct rxe_send_wr      wr;
 135         struct rxe_av           av;
 136         __u32                   status;
 137         __u32                   state;
 138         __aligned_u64           iova;
 139         __u32                   mask;
 140         __u32                   first_psn;
 141         __u32                   last_psn;
 142         __u32                   ack_length;
 143         __u32                   ssn;
 144         __u32                   has_rd_atomic;
 145         struct rxe_dma_info     dma;
 146 };
 147 
 148 struct rxe_recv_wqe {
 149         __aligned_u64           wr_id;
 150         __u32                   num_sge;
 151         __u32                   padding;
 152         struct rxe_dma_info     dma;
 153 };
 154 
 155 struct rxe_create_cq_resp {
 156         struct mminfo mi;
 157 };
 158 
 159 struct rxe_resize_cq_resp {
 160         struct mminfo mi;
 161 };
 162 
 163 struct rxe_create_qp_resp {
 164         struct mminfo rq_mi;
 165         struct mminfo sq_mi;
 166 };
 167 
 168 struct rxe_create_srq_resp {
 169         struct mminfo mi;
 170         __u32 srq_num;
 171         __u32 reserved;
 172 };
 173 
 174 struct rxe_modify_srq_cmd {
 175         __aligned_u64 mmap_info_addr;
 176 };
 177 
 178 #endif /* RDMA_USER_RXE_H */

/* [<][>][^][v][top][bottom][index][help] */