| 269 | return SRQ; |
| 270 | } |
| 271 | void PostReceive(TPtrArg<TMemoryRegion> mem, ui64 id, const void* buf, size_t len) { |
| 272 | Y_ASSERT(mem->IsCovered(buf, len)); |
| 273 | ibv_recv_wr wr, *bad; |
| 274 | ibv_sge sg; |
| 275 | sg.addr = reinterpret_cast<ui64>(buf) / sizeof(char); |
| 276 | sg.length = len; |
| 277 | sg.lkey = mem->GetLKey(); |
| 278 | Zero(wr); |
| 279 | wr.wr_id = id; |
| 280 | wr.sg_list = &sg; |
| 281 | wr.num_sge = 1; |
| 282 | CHECK_Z(ibv_post_srq_recv(SRQ, &wr, &bad)); |
| 283 | } |
| 284 | }; |
| 285 | |
| 286 | inline void MakeAH(ibv_ah_attr* res, TPtrArg<TIBPort> port, int lid, int serviceLevel) { |