ionic-abi.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
  2. /* Copyright (C) 2018-2025, Advanced Micro Devices, Inc */
  3. #ifndef IONIC_ABI_H
  4. #define IONIC_ABI_H
  5. #include <linux/types.h>
  6. #define IONIC_ABI_VERSION 1
  7. #define IONIC_EXPDB_64 1
  8. #define IONIC_EXPDB_128 2
  9. #define IONIC_EXPDB_256 4
  10. #define IONIC_EXPDB_512 8
  11. #define IONIC_EXPDB_SQ 1
  12. #define IONIC_EXPDB_RQ 2
  13. #define IONIC_CMB_ENABLE 1
  14. #define IONIC_CMB_REQUIRE 2
  15. #define IONIC_CMB_EXPDB 4
  16. #define IONIC_CMB_WC 8
  17. #define IONIC_CMB_UC 16
  18. struct ionic_ctx_req {
  19. __u32 rsvd[2];
  20. };
  21. struct ionic_ctx_resp {
  22. __u32 rsvd;
  23. __u32 page_shift;
  24. __aligned_u64 dbell_offset;
  25. __u16 version;
  26. __u8 qp_opcodes;
  27. __u8 admin_opcodes;
  28. __u8 sq_qtype;
  29. __u8 rq_qtype;
  30. __u8 cq_qtype;
  31. __u8 admin_qtype;
  32. __u8 max_stride;
  33. __u8 max_spec;
  34. __u8 udma_count;
  35. __u8 expdb_mask;
  36. __u8 expdb_qtypes;
  37. __u8 rsvd2[3];
  38. };
  39. struct ionic_qdesc {
  40. __aligned_u64 addr;
  41. __u32 size;
  42. __u16 mask;
  43. __u8 depth_log2;
  44. __u8 stride_log2;
  45. };
  46. struct ionic_ah_resp {
  47. __u32 ahid;
  48. __u32 pad;
  49. };
  50. struct ionic_cq_req {
  51. struct ionic_qdesc cq[2];
  52. __u8 udma_mask;
  53. __u8 rsvd[7];
  54. };
  55. struct ionic_cq_resp {
  56. __u32 cqid[2];
  57. __u8 udma_mask;
  58. __u8 rsvd[7];
  59. };
  60. struct ionic_qp_req {
  61. struct ionic_qdesc sq;
  62. struct ionic_qdesc rq;
  63. __u8 sq_spec;
  64. __u8 rq_spec;
  65. __u8 sq_cmb;
  66. __u8 rq_cmb;
  67. __u8 udma_mask;
  68. __u8 rsvd[3];
  69. };
  70. struct ionic_qp_resp {
  71. __u32 qpid;
  72. __u8 sq_cmb;
  73. __u8 rq_cmb;
  74. __u8 udma_idx;
  75. __u8 rsvd[1];
  76. __aligned_u64 sq_cmb_offset;
  77. __aligned_u64 rq_cmb_offset;
  78. };
  79. struct ionic_srq_req {
  80. struct ionic_qdesc rq;
  81. __u8 rq_spec;
  82. __u8 rq_cmb;
  83. __u8 udma_mask;
  84. __u8 rsvd[5];
  85. };
  86. struct ionic_srq_resp {
  87. __u32 qpid;
  88. __u8 rq_cmb;
  89. __u8 udma_idx;
  90. __u8 rsvd[2];
  91. __aligned_u64 rq_cmb_offset;
  92. };
  93. #endif /* IONIC_ABI_H */