rxe_opcode.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. /* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */
  2. /*
  3. * Copyright (c) 2016 Mellanox Technologies Ltd. All rights reserved.
  4. * Copyright (c) 2015 System Fabric Works, Inc. All rights reserved.
  5. */
  6. #ifndef RXE_OPCODE_H
  7. #define RXE_OPCODE_H
  8. /*
  9. * contains header bit mask definitions and header lengths
  10. * declaration of the rxe_opcode_info struct and
  11. * rxe_wr_opcode_info struct
  12. */
  13. enum rxe_wr_mask {
  14. WR_INLINE_MASK = BIT(0),
  15. WR_ATOMIC_MASK = BIT(1),
  16. WR_SEND_MASK = BIT(2),
  17. WR_READ_MASK = BIT(3),
  18. WR_WRITE_MASK = BIT(4),
  19. WR_LOCAL_OP_MASK = BIT(5),
  20. WR_READ_OR_WRITE_MASK = WR_READ_MASK | WR_WRITE_MASK,
  21. WR_WRITE_OR_SEND_MASK = WR_WRITE_MASK | WR_SEND_MASK,
  22. WR_ATOMIC_OR_READ_MASK = WR_ATOMIC_MASK | WR_READ_MASK,
  23. };
  24. #define WR_MAX_QPT (8)
  25. struct rxe_wr_opcode_info {
  26. char *name;
  27. enum rxe_wr_mask mask[WR_MAX_QPT];
  28. };
  29. extern struct rxe_wr_opcode_info rxe_wr_opcode_info[];
  30. enum rxe_hdr_type {
  31. RXE_LRH,
  32. RXE_GRH,
  33. RXE_BTH,
  34. RXE_RETH,
  35. RXE_AETH,
  36. RXE_ATMETH,
  37. RXE_ATMACK,
  38. RXE_IETH,
  39. RXE_RDETH,
  40. RXE_DETH,
  41. RXE_IMMDT,
  42. RXE_PAYLOAD,
  43. NUM_HDR_TYPES
  44. };
  45. enum rxe_hdr_mask {
  46. RXE_LRH_MASK = BIT(RXE_LRH),
  47. RXE_GRH_MASK = BIT(RXE_GRH),
  48. RXE_BTH_MASK = BIT(RXE_BTH),
  49. RXE_IMMDT_MASK = BIT(RXE_IMMDT),
  50. RXE_RETH_MASK = BIT(RXE_RETH),
  51. RXE_AETH_MASK = BIT(RXE_AETH),
  52. RXE_ATMETH_MASK = BIT(RXE_ATMETH),
  53. RXE_ATMACK_MASK = BIT(RXE_ATMACK),
  54. RXE_IETH_MASK = BIT(RXE_IETH),
  55. RXE_RDETH_MASK = BIT(RXE_RDETH),
  56. RXE_DETH_MASK = BIT(RXE_DETH),
  57. RXE_PAYLOAD_MASK = BIT(RXE_PAYLOAD),
  58. RXE_REQ_MASK = BIT(NUM_HDR_TYPES + 0),
  59. RXE_ACK_MASK = BIT(NUM_HDR_TYPES + 1),
  60. RXE_SEND_MASK = BIT(NUM_HDR_TYPES + 2),
  61. RXE_WRITE_MASK = BIT(NUM_HDR_TYPES + 3),
  62. RXE_READ_MASK = BIT(NUM_HDR_TYPES + 4),
  63. RXE_ATOMIC_MASK = BIT(NUM_HDR_TYPES + 5),
  64. RXE_RWR_MASK = BIT(NUM_HDR_TYPES + 6),
  65. RXE_COMP_MASK = BIT(NUM_HDR_TYPES + 7),
  66. RXE_START_MASK = BIT(NUM_HDR_TYPES + 8),
  67. RXE_MIDDLE_MASK = BIT(NUM_HDR_TYPES + 9),
  68. RXE_END_MASK = BIT(NUM_HDR_TYPES + 10),
  69. RXE_LOOPBACK_MASK = BIT(NUM_HDR_TYPES + 12),
  70. RXE_READ_OR_ATOMIC_MASK = (RXE_READ_MASK | RXE_ATOMIC_MASK),
  71. RXE_WRITE_OR_SEND_MASK = (RXE_WRITE_MASK | RXE_SEND_MASK),
  72. RXE_READ_OR_WRITE_MASK = (RXE_READ_MASK | RXE_WRITE_MASK),
  73. };
  74. #define OPCODE_NONE (-1)
  75. #define RXE_NUM_OPCODE 256
  76. struct rxe_opcode_info {
  77. char *name;
  78. enum rxe_hdr_mask mask;
  79. int length;
  80. int offset[NUM_HDR_TYPES];
  81. };
  82. extern struct rxe_opcode_info rxe_opcode[RXE_NUM_OPCODE];
  83. #endif /* RXE_OPCODE_H */