rdma_sys/
opcode.rs

1pub mod ibv_opcode {
2    use paste::paste;
3    pub type Type = std::os::raw::c_int;
4    macro_rules! concat_ibv_opcode {
5        ($transport: expr, $op : expr ) => {
6            paste! {
7                pub const [<IBV_OPCODE_ $transport _ $op>]: Type = [<IBV_OPCODE_ $transport>] + [<IBV_OPCODE_ $op>] ;
8            }
9        };
10    }
11
12    /* transport types -- just used to define real constants */
13    pub const IBV_OPCODE_RC: Type = 0x00;
14    pub const IBV_OPCODE_UC: Type = 0x20;
15    pub const IBV_OPCODE_RD: Type = 0x40;
16    pub const IBV_OPCODE_UD: Type = 0x60;
17    /* operations -- just used to define real constants */
18    pub const IBV_OPCODE_SEND_FIRST: Type = 0x00;
19    pub const IBV_OPCODE_SEND_MIDDLE: Type = 0x01;
20    pub const IBV_OPCODE_SEND_LAST: Type = 0x02;
21    pub const IBV_OPCODE_SEND_LAST_WITH_IMMEDIATE: Type = 0x03;
22    pub const IBV_OPCODE_SEND_ONLY: Type = 0x04;
23    pub const IBV_OPCODE_SEND_ONLY_WITH_IMMEDIATE: Type = 0x05;
24    pub const IBV_OPCODE_RDMA_WRITE_FIRST: Type = 0x06;
25    pub const IBV_OPCODE_RDMA_WRITE_MIDDLE: Type = 0x07;
26    pub const IBV_OPCODE_RDMA_WRITE_LAST: Type = 0x08;
27    pub const IBV_OPCODE_RDMA_WRITE_LAST_WITH_IMMEDIATE: Type = 0x09;
28    pub const IBV_OPCODE_RDMA_WRITE_ONLY: Type = 0x0a;
29    pub const IBV_OPCODE_RDMA_WRITE_ONLY_WITH_IMMEDIATE: Type = 0x0b;
30    pub const IBV_OPCODE_RDMA_READ_REQUEST: Type = 0x0c;
31    pub const IBV_OPCODE_RDMA_READ_RESPONSE_FIRST: Type = 0x0d;
32    pub const IBV_OPCODE_RDMA_READ_RESPONSE_MIDDLE: Type = 0x0e;
33    pub const IBV_OPCODE_RDMA_READ_RESPONSE_LAST: Type = 0x0f;
34    pub const IBV_OPCODE_RDMA_READ_RESPONSE_ONLY: Type = 0x10;
35    pub const IBV_OPCODE_ACKNOWLEDGE: Type = 0x11;
36    pub const IBV_OPCODE_ATOMIC_ACKNOWLEDGE: Type = 0x12;
37    pub const IBV_OPCODE_COMPARE_SWAP: Type = 0x13;
38    pub const IBV_OPCODE_FETCH_ADD: Type = 0x14;
39
40    /* RC */
41    concat_ibv_opcode!(RC, SEND_FIRST);
42    concat_ibv_opcode!(RC, SEND_MIDDLE);
43    concat_ibv_opcode!(RC, SEND_LAST);
44    concat_ibv_opcode!(RC, SEND_LAST_WITH_IMMEDIATE);
45    concat_ibv_opcode!(RC, SEND_ONLY);
46    concat_ibv_opcode!(RC, SEND_ONLY_WITH_IMMEDIATE);
47    concat_ibv_opcode!(RC, RDMA_WRITE_FIRST);
48    concat_ibv_opcode!(RC, RDMA_WRITE_MIDDLE);
49    concat_ibv_opcode!(RC, RDMA_WRITE_LAST);
50    concat_ibv_opcode!(RC, RDMA_WRITE_LAST_WITH_IMMEDIATE);
51    concat_ibv_opcode!(RC, RDMA_WRITE_ONLY);
52    concat_ibv_opcode!(RC, RDMA_WRITE_ONLY_WITH_IMMEDIATE);
53    concat_ibv_opcode!(RC, RDMA_READ_REQUEST);
54    concat_ibv_opcode!(RC, RDMA_READ_RESPONSE_FIRST);
55    concat_ibv_opcode!(RC, RDMA_READ_RESPONSE_MIDDLE);
56    concat_ibv_opcode!(RC, RDMA_READ_RESPONSE_LAST);
57    concat_ibv_opcode!(RC, RDMA_READ_RESPONSE_ONLY);
58    concat_ibv_opcode!(RC, ACKNOWLEDGE);
59    concat_ibv_opcode!(RC, ATOMIC_ACKNOWLEDGE);
60    concat_ibv_opcode!(RC, COMPARE_SWAP);
61    concat_ibv_opcode!(RC, FETCH_ADD);
62
63    /* UC */
64    concat_ibv_opcode!(UC, SEND_FIRST);
65    concat_ibv_opcode!(UC, SEND_MIDDLE);
66    concat_ibv_opcode!(UC, SEND_LAST);
67    concat_ibv_opcode!(UC, SEND_LAST_WITH_IMMEDIATE);
68    concat_ibv_opcode!(UC, SEND_ONLY);
69    concat_ibv_opcode!(UC, SEND_ONLY_WITH_IMMEDIATE);
70    concat_ibv_opcode!(UC, RDMA_WRITE_FIRST);
71    concat_ibv_opcode!(UC, RDMA_WRITE_MIDDLE);
72    concat_ibv_opcode!(UC, RDMA_WRITE_LAST);
73    concat_ibv_opcode!(UC, RDMA_WRITE_LAST_WITH_IMMEDIATE);
74    concat_ibv_opcode!(UC, RDMA_WRITE_ONLY);
75    concat_ibv_opcode!(UC, RDMA_WRITE_ONLY_WITH_IMMEDIATE);
76
77    /* RD */
78    concat_ibv_opcode!(RD, SEND_FIRST);
79    concat_ibv_opcode!(RD, SEND_MIDDLE);
80    concat_ibv_opcode!(RD, SEND_LAST);
81    concat_ibv_opcode!(RD, SEND_LAST_WITH_IMMEDIATE);
82    concat_ibv_opcode!(RD, SEND_ONLY);
83    concat_ibv_opcode!(RD, SEND_ONLY_WITH_IMMEDIATE);
84    concat_ibv_opcode!(RD, RDMA_WRITE_FIRST);
85    concat_ibv_opcode!(RD, RDMA_WRITE_MIDDLE);
86    concat_ibv_opcode!(RD, RDMA_WRITE_LAST);
87    concat_ibv_opcode!(RD, RDMA_WRITE_LAST_WITH_IMMEDIATE);
88    concat_ibv_opcode!(RD, RDMA_WRITE_ONLY);
89    concat_ibv_opcode!(RD, RDMA_WRITE_ONLY_WITH_IMMEDIATE);
90    concat_ibv_opcode!(RD, RDMA_READ_REQUEST);
91    concat_ibv_opcode!(RD, RDMA_READ_RESPONSE_FIRST);
92    concat_ibv_opcode!(RD, RDMA_READ_RESPONSE_MIDDLE);
93    concat_ibv_opcode!(RD, RDMA_READ_RESPONSE_LAST);
94    concat_ibv_opcode!(RD, RDMA_READ_RESPONSE_ONLY);
95    concat_ibv_opcode!(RD, ACKNOWLEDGE);
96    concat_ibv_opcode!(RD, ATOMIC_ACKNOWLEDGE);
97    concat_ibv_opcode!(RD, COMPARE_SWAP);
98    concat_ibv_opcode!(RD, FETCH_ADD);
99
100    /* UD */
101    concat_ibv_opcode!(UD, SEND_ONLY);
102    concat_ibv_opcode!(UD, SEND_ONLY_WITH_IMMEDIATE);
103}