logo

oasis-root

Compiled tree of Oasis Linux based on own branch at <https://hacktivis.me/git/oasis/> git clone https://anongit.hacktivis.me/git/oasis-root.git

efa-abi.h (3646B)


  1. /* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) */
  2. /*
  3. * Copyright 2018-2024 Amazon.com, Inc. or its affiliates. All rights reserved.
  4. */
  5. #ifndef EFA_ABI_USER_H
  6. #define EFA_ABI_USER_H
  7. #include <linux/types.h>
  8. #include <rdma/ib_user_ioctl_cmds.h>
  9. /*
  10. * Increment this value if any changes that break userspace ABI
  11. * compatibility are made.
  12. */
  13. #define EFA_UVERBS_ABI_VERSION 1
  14. /*
  15. * Keep structs aligned to 8 bytes.
  16. * Keep reserved fields as arrays of __u8 named reserved_XXX where XXX is the
  17. * hex bit offset of the field.
  18. */
  19. enum {
  20. EFA_ALLOC_UCONTEXT_CMD_COMP_TX_BATCH = 1 << 0,
  21. EFA_ALLOC_UCONTEXT_CMD_COMP_MIN_SQ_WR = 1 << 1,
  22. };
  23. struct efa_ibv_alloc_ucontext_cmd {
  24. __u32 comp_mask;
  25. __u8 reserved_20[4];
  26. };
  27. enum efa_ibv_user_cmds_supp_udata {
  28. EFA_USER_CMDS_SUPP_UDATA_QUERY_DEVICE = 1 << 0,
  29. EFA_USER_CMDS_SUPP_UDATA_CREATE_AH = 1 << 1,
  30. };
  31. struct efa_ibv_alloc_ucontext_resp {
  32. __u32 comp_mask;
  33. __u32 cmds_supp_udata_mask;
  34. __u16 sub_cqs_per_cq;
  35. __u16 inline_buf_size;
  36. __u32 max_llq_size; /* bytes */
  37. __u16 max_tx_batch; /* units of 64 bytes */
  38. __u16 min_sq_wr;
  39. __u8 reserved_a0[4];
  40. };
  41. struct efa_ibv_alloc_pd_resp {
  42. __u32 comp_mask;
  43. __u16 pdn;
  44. __u8 reserved_30[2];
  45. };
  46. enum {
  47. EFA_CREATE_CQ_WITH_COMPLETION_CHANNEL = 1 << 0,
  48. EFA_CREATE_CQ_WITH_SGID = 1 << 1,
  49. };
  50. struct efa_ibv_create_cq {
  51. __u32 comp_mask;
  52. __u32 cq_entry_size;
  53. __u16 num_sub_cqs;
  54. __u8 flags;
  55. __u8 reserved_58[5];
  56. };
  57. enum {
  58. EFA_CREATE_CQ_RESP_DB_OFF = 1 << 0,
  59. };
  60. struct efa_ibv_create_cq_resp {
  61. __u32 comp_mask;
  62. __u8 reserved_20[4];
  63. __aligned_u64 q_mmap_key;
  64. __aligned_u64 q_mmap_size;
  65. __u16 cq_idx;
  66. __u8 reserved_d0[2];
  67. __u32 db_off;
  68. __aligned_u64 db_mmap_key;
  69. };
  70. enum {
  71. EFA_QP_DRIVER_TYPE_SRD = 0,
  72. };
  73. enum {
  74. EFA_CREATE_QP_WITH_UNSOLICITED_WRITE_RECV = 1 << 0,
  75. };
  76. struct efa_ibv_create_qp {
  77. __u32 comp_mask;
  78. __u32 rq_ring_size; /* bytes */
  79. __u32 sq_ring_size; /* bytes */
  80. __u32 driver_qp_type;
  81. __u16 flags;
  82. __u8 reserved_90[6];
  83. };
  84. struct efa_ibv_create_qp_resp {
  85. __u32 comp_mask;
  86. /* the offset inside the page of the rq db */
  87. __u32 rq_db_offset;
  88. /* the offset inside the page of the sq db */
  89. __u32 sq_db_offset;
  90. /* the offset inside the page of descriptors buffer */
  91. __u32 llq_desc_offset;
  92. __aligned_u64 rq_mmap_key;
  93. __aligned_u64 rq_mmap_size;
  94. __aligned_u64 rq_db_mmap_key;
  95. __aligned_u64 sq_db_mmap_key;
  96. __aligned_u64 llq_desc_mmap_key;
  97. __u16 send_sub_cq_idx;
  98. __u16 recv_sub_cq_idx;
  99. __u8 reserved_1e0[4];
  100. };
  101. struct efa_ibv_create_ah_resp {
  102. __u32 comp_mask;
  103. __u16 efa_address_handle;
  104. __u8 reserved_30[2];
  105. };
  106. enum {
  107. EFA_QUERY_DEVICE_CAPS_RDMA_READ = 1 << 0,
  108. EFA_QUERY_DEVICE_CAPS_RNR_RETRY = 1 << 1,
  109. EFA_QUERY_DEVICE_CAPS_CQ_NOTIFICATIONS = 1 << 2,
  110. EFA_QUERY_DEVICE_CAPS_CQ_WITH_SGID = 1 << 3,
  111. EFA_QUERY_DEVICE_CAPS_DATA_POLLING_128 = 1 << 4,
  112. EFA_QUERY_DEVICE_CAPS_RDMA_WRITE = 1 << 5,
  113. EFA_QUERY_DEVICE_CAPS_UNSOLICITED_WRITE_RECV = 1 << 6,
  114. };
  115. struct efa_ibv_ex_query_device_resp {
  116. __u32 comp_mask;
  117. __u32 max_sq_wr;
  118. __u32 max_rq_wr;
  119. __u16 max_sq_sge;
  120. __u16 max_rq_sge;
  121. __u32 max_rdma_size;
  122. __u32 device_caps;
  123. };
  124. enum {
  125. EFA_QUERY_MR_VALIDITY_RECV_IC_ID = 1 << 0,
  126. EFA_QUERY_MR_VALIDITY_RDMA_READ_IC_ID = 1 << 1,
  127. EFA_QUERY_MR_VALIDITY_RDMA_RECV_IC_ID = 1 << 2,
  128. };
  129. enum efa_query_mr_attrs {
  130. EFA_IB_ATTR_QUERY_MR_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
  131. EFA_IB_ATTR_QUERY_MR_RESP_IC_ID_VALIDITY,
  132. EFA_IB_ATTR_QUERY_MR_RESP_RECV_IC_ID,
  133. EFA_IB_ATTR_QUERY_MR_RESP_RDMA_READ_IC_ID,
  134. EFA_IB_ATTR_QUERY_MR_RESP_RDMA_RECV_IC_ID,
  135. };
  136. enum efa_mr_methods {
  137. EFA_IB_METHOD_MR_QUERY = (1U << UVERBS_ID_NS_SHIFT),
  138. };
  139. #endif /* EFA_ABI_USER_H */