@@ -200,17 +200,21 @@ static inline ssize_t efa_rma_post_write(struct efa_base_ep *base_ep,
200
200
struct efa_conn * conn ;
201
201
#ifndef _WIN32
202
202
struct ibv_sge sge_list [msg -> iov_count ];
203
- struct ibv_data_buf inline_data_list [msg -> iov_count ];
204
203
#else
205
204
/* MSVC compiler does not support array declarations with runtime size, so hardcode
206
205
* the expected iov_limit/max_sq_sge from the lower-level efa provider.
207
206
*/
208
207
struct ibv_sge sge_list [EFA_DEV_ATTR_MAX_WR_SGE ];
209
208
struct ibv_data_buf inline_data_list [EFA_DEV_ATTR_MAX_WR_SGE ];
210
209
#endif
211
- size_t len ;
212
210
int i , err = 0 ;
213
211
212
+ if (flags & FI_INJECT ) {
213
+ EFA_WARN (FI_LOG_EP_DATA ,
214
+ "FI_INJECT is not supported by efa rma yet.\n" );
215
+ return - FI_ENOSYS ;
216
+ }
217
+
214
218
efa_tracepoint (write_begin_msg_context , (size_t ) msg -> context , (size_t ) msg -> addr );
215
219
216
220
qp = base_ep -> qp ;
@@ -230,24 +234,13 @@ static inline ssize_t efa_rma_post_write(struct efa_base_ep *base_ep,
230
234
ibv_wr_rdma_write (qp -> ibv_qp_ex , msg -> rma_iov [0 ].key , msg -> rma_iov [0 ].addr );
231
235
}
232
236
233
- len = ofi_total_iov_len (msg -> msg_iov , msg -> iov_count );
234
- if (len <= base_ep -> domain -> device -> efa_attr .inline_buf_size &&
235
- len <= base_ep -> inject_rma_size &&
236
- (!msg -> desc || !efa_mr_is_hmem (msg -> desc [0 ]))) {
237
- for (i = 0 ; i < msg -> iov_count ; i ++ ) {
238
- inline_data_list [i ].addr = msg -> msg_iov [i ].iov_base ;
239
- inline_data_list [i ].length = msg -> msg_iov [i ].iov_len ;
240
- }
241
- ibv_wr_set_inline_data_list (qp -> ibv_qp_ex , msg -> iov_count , inline_data_list );
242
- } else {
243
- for (i = 0 ; i < msg -> iov_count ; ++ i ) {
244
- sge_list [i ].addr = (uint64_t )msg -> msg_iov [i ].iov_base ;
245
- sge_list [i ].length = msg -> msg_iov [i ].iov_len ;
246
- assert (msg -> desc && msg -> desc [i ]);
247
- sge_list [i ].lkey = ((struct efa_mr * )msg -> desc [i ])-> ibv_mr -> lkey ;
248
- }
249
- ibv_wr_set_sge_list (qp -> ibv_qp_ex , msg -> iov_count , sge_list );
237
+ for (i = 0 ; i < msg -> iov_count ; ++ i ) {
238
+ sge_list [i ].addr = (uint64_t )msg -> msg_iov [i ].iov_base ;
239
+ sge_list [i ].length = msg -> msg_iov [i ].iov_len ;
240
+ assert (msg -> desc && msg -> desc [i ]);
241
+ sge_list [i ].lkey = ((struct efa_mr * )msg -> desc [i ])-> ibv_mr -> lkey ;
250
242
}
243
+ ibv_wr_set_sge_list (qp -> ibv_qp_ex , msg -> iov_count , sge_list );
251
244
252
245
conn = efa_av_addr_to_conn (base_ep -> av , msg -> addr );
253
246
assert (conn && conn -> ep_addr );
@@ -348,51 +341,6 @@ ssize_t efa_rma_writedata(struct fid_ep *ep_fid, const void *buf, size_t len,
348
341
return efa_rma_post_write (base_ep , & msg , FI_REMOTE_CQ_DATA | efa_tx_flags (base_ep ));
349
342
}
350
343
351
- ssize_t efa_rma_inject_write (struct fid_ep * ep_fid , const void * buf , size_t len ,
352
- fi_addr_t dest_addr , uint64_t addr , uint64_t key )
353
- {
354
- struct fi_msg_rma msg ;
355
- struct iovec iov ;
356
- struct fi_rma_iov rma_iov ;
357
- struct efa_base_ep * base_ep ;
358
- int err ;
359
-
360
- base_ep = container_of (ep_fid , struct efa_base_ep , util_ep .ep_fid );
361
- assert (len <= base_ep -> inject_rma_size );
362
- err = efa_rma_check_cap (base_ep );
363
- if (err )
364
- return err ;
365
-
366
- EFA_SETUP_IOV (iov , buf , len );
367
- EFA_SETUP_RMA_IOV (rma_iov , addr , len , key );
368
- EFA_SETUP_MSG_RMA (msg , & iov , NULL , 1 , dest_addr , & rma_iov , 1 , NULL , 0 );
369
-
370
- return efa_rma_post_write (base_ep , & msg , FI_INJECT );
371
- }
372
-
373
- ssize_t efa_rma_inject_writedata (struct fid_ep * ep_fid , const void * buf ,
374
- size_t len , uint64_t data , fi_addr_t dest_addr ,
375
- uint64_t addr , uint64_t key )
376
- {
377
- struct fi_msg_rma msg ;
378
- struct iovec iov ;
379
- struct fi_rma_iov rma_iov ;
380
- struct efa_base_ep * base_ep ;
381
- int err ;
382
-
383
- base_ep = container_of (ep_fid , struct efa_base_ep , util_ep .ep_fid );
384
- assert (len <= base_ep -> inject_rma_size );
385
- err = efa_rma_check_cap (base_ep );
386
- if (err )
387
- return err ;
388
-
389
- EFA_SETUP_IOV (iov , buf , len );
390
- EFA_SETUP_RMA_IOV (rma_iov , addr , len , key );
391
- EFA_SETUP_MSG_RMA (msg , & iov , NULL , 1 , dest_addr , & rma_iov , 1 , NULL , data );
392
-
393
- return efa_rma_post_write (base_ep , & msg , FI_INJECT | FI_REMOTE_CQ_DATA );
394
- }
395
-
396
344
struct fi_ops_rma efa_dgram_ep_rma_ops = {
397
345
.size = sizeof (struct fi_ops_rma ),
398
346
.read = fi_no_rma_read ,
@@ -414,7 +362,7 @@ struct fi_ops_rma efa_rma_ops = {
414
362
.write = efa_rma_write ,
415
363
.writev = efa_rma_writev ,
416
364
.writemsg = efa_rma_writemsg ,
417
- .inject = efa_rma_inject_write ,
365
+ .inject = fi_no_rma_inject ,
418
366
.writedata = efa_rma_writedata ,
419
- .injectdata = efa_rma_inject_writedata ,
367
+ .injectdata = fi_no_rma_injectdata ,
420
368
};
0 commit comments