You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

nodnic_shomron_prm.h 4.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. /*
  2. * Copyright (C) 2015 Mellanox Technologies Ltd.
  3. *
  4. * This program is free software; you can redistribute it and/or
  5. * modify it under the terms of the GNU General Public License as
  6. * published by the Free Software Foundation; either version 2 of the
  7. * License, or any later version.
  8. *
  9. * This program is distributed in the hope that it will be useful, but
  10. * WITHOUT ANY WARRANTY; without even the implied warranty of
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  12. * General Public License for more details.
  13. *
  14. * You should have received a copy of the GNU General Public License
  15. * along with this program; if not, write to the Free Software
  16. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
  17. * 02110-1301, USA.
  18. */
  19. FILE_LICENCE ( GPL2_OR_LATER );
  20. #ifndef SRC_DRIVERS_INFINIBAND_MLX_NODNIC_INCLUDE_PRM_NODNIC_SHOMRON_PRM_H_
  21. #define SRC_DRIVERS_INFINIBAND_MLX_NODNIC_INCLUDE_PRM_NODNIC_SHOMRON_PRM_H_
  22. #include "nodnic_prm.h"
  23. #define SHOMRON_MAX_GATHER 1
  24. /* Send wqe segment ctrl */
  25. struct shomronprm_wqe_segment_ctrl_send_st { /* Little Endian */
  26. pseudo_bit_t opcode[0x00008];
  27. pseudo_bit_t wqe_index[0x00010];
  28. pseudo_bit_t reserved1[0x00008];
  29. /* -------------- */
  30. pseudo_bit_t ds[0x00006]; /* descriptor (wqe) size in 16bytes chunk */
  31. pseudo_bit_t reserved2[0x00002];
  32. pseudo_bit_t qpn[0x00018];
  33. /* -------------- */
  34. pseudo_bit_t reserved3[0x00002];
  35. pseudo_bit_t ce[0x00002];
  36. pseudo_bit_t reserved4[0x0001c];
  37. /* -------------- */
  38. pseudo_bit_t reserved5[0x00040];
  39. /* -------------- */
  40. pseudo_bit_t mss[0x0000e];
  41. pseudo_bit_t reserved6[0x0000e];
  42. pseudo_bit_t cs13_inner[0x00001];
  43. pseudo_bit_t cs14_inner[0x00001];
  44. pseudo_bit_t cs13[0x00001];
  45. pseudo_bit_t cs14[0x00001];
  46. /* -------------- */
  47. pseudo_bit_t reserved7[0x00020];
  48. /* -------------- */
  49. pseudo_bit_t inline_headers1[0x00010];
  50. pseudo_bit_t inline_headers_size[0x0000a]; //sum size of inline_hdr1+inline_hdrs (0x10)
  51. pseudo_bit_t reserved8[0x00006];
  52. /* -------------- */
  53. pseudo_bit_t inline_headers2[0x00020];
  54. /* -------------- */
  55. pseudo_bit_t inline_headers3[0x00020];
  56. /* -------------- */
  57. pseudo_bit_t inline_headers4[0x00020];
  58. /* -------------- */
  59. pseudo_bit_t inline_headers5[0x00020];
  60. };
  61. /* Completion Queue Entry Format #### michal - fixed by gdror */
  62. struct shomronprm_completion_queue_entry_st { /* Little Endian */
  63. pseudo_bit_t reserved1[0x00080];
  64. /* -------------- */
  65. pseudo_bit_t reserved2[0x00010];
  66. pseudo_bit_t ml_path[0x00007];
  67. pseudo_bit_t reserved3[0x00009];
  68. /* -------------- */
  69. pseudo_bit_t slid[0x00010];
  70. pseudo_bit_t reserved4[0x00010];
  71. /* -------------- */
  72. pseudo_bit_t rqpn[0x00018];
  73. pseudo_bit_t sl[0x00004];
  74. pseudo_bit_t l3_hdr[0x00002];
  75. pseudo_bit_t reserved5[0x00002];
  76. /* -------------- */
  77. pseudo_bit_t reserved10[0x00020];
  78. /* -------------- */
  79. pseudo_bit_t srqn[0x00018];
  80. pseudo_bit_t reserved11[0x0008];
  81. /* -------------- */
  82. pseudo_bit_t pkey_index[0x00020];
  83. /* -------------- */
  84. pseudo_bit_t reserved6[0x00020];
  85. /* -------------- */
  86. pseudo_bit_t byte_cnt[0x00020];
  87. /* -------------- */
  88. pseudo_bit_t reserved7[0x00040];
  89. /* -------------- */
  90. pseudo_bit_t qpn[0x00018];
  91. pseudo_bit_t rx_drop_counter[0x00008];
  92. /* -------------- */
  93. pseudo_bit_t owner[0x00001];
  94. pseudo_bit_t reserved8[0x00003];
  95. pseudo_bit_t opcode[0x00004];
  96. pseudo_bit_t reserved9[0x00008];
  97. pseudo_bit_t wqe_counter[0x00010];
  98. };
  99. /* Completion with Error CQE #### michal - gdror fixed */
  100. struct shomronprm_completion_with_error_st { /* Little Endian */
  101. pseudo_bit_t reserved1[0x001a0];
  102. /* -------------- */
  103. pseudo_bit_t syndrome[0x00008];
  104. pseudo_bit_t vendor_error_syndrome[0x00008];
  105. pseudo_bit_t reserved2[0x00010];
  106. /* -------------- */
  107. pseudo_bit_t reserved3[0x00040];
  108. };
  109. struct MLX_DECLARE_STRUCT ( shomronprm_wqe_segment_ctrl_send );
  110. struct MLX_DECLARE_STRUCT ( shomronprm_completion_queue_entry );
  111. struct MLX_DECLARE_STRUCT ( shomronprm_completion_with_error );
  112. struct shomron_nodnic_eth_send_wqe {
  113. struct shomronprm_wqe_segment_ctrl_send ctrl;
  114. struct nodnic_wqe_segment_data_ptr data[SHOMRON_MAX_GATHER];
  115. } __attribute__ (( packed ));
  116. union shomronprm_completion_entry {
  117. struct shomronprm_completion_queue_entry normal;
  118. struct shomronprm_completion_with_error error;
  119. } __attribute__ (( packed ));
  120. #endif /* SRC_DRIVERS_INFINIBAND_MLX_NODNIC_INCLUDE_PRM_NODNIC_SHOMRON_PRM_H_ */