usnic: Fix compile errors related to r32196
This commit was SVN r32198. The following SVN revision numbers were found above: r32196 --> open-mpi/ompi@a14e0f10d4
Этот коммит содержится в:
родитель
75230ee574
Коммит
3c4674484d
@ -147,7 +147,7 @@ ompi_btl_usnic_handle_ack(
|
|||||||
* lines below.
|
* lines below.
|
||||||
*/
|
*/
|
||||||
if (frag->sf_ack_bytes_left == bytes_acked &&
|
if (frag->sf_ack_bytes_left == bytes_acked &&
|
||||||
((frag->sf_base.uf_dst_seg[0].seg_addr.pval != NULL) ||
|
((frag->sf_base.uf_remote_seg[0].seg_addr.pval != NULL) ||
|
||||||
(frag->sf_base.uf_base.des_flags &
|
(frag->sf_base.uf_base.des_flags &
|
||||||
MCA_BTL_DES_SEND_ALWAYS_CALLBACK))) {
|
MCA_BTL_DES_SEND_ALWAYS_CALLBACK))) {
|
||||||
OMPI_BTL_USNIC_DO_SEND_FRAG_CB(module, frag, "send completion");
|
OMPI_BTL_USNIC_DO_SEND_FRAG_CB(module, frag, "send completion");
|
||||||
|
@ -1482,7 +1482,7 @@ static void dump_endpoint(ompi_btl_usnic_endpoint_t *endpoint)
|
|||||||
|
|
||||||
case OMPI_BTL_USNIC_FRAG_PUT_DEST:
|
case OMPI_BTL_USNIC_FRAG_PUT_DEST:
|
||||||
/* put_dest frags are just a typedef to generic frags */
|
/* put_dest frags are just a typedef to generic frags */
|
||||||
snprintf(tmp, sizeof(tmp), " put_addr=%p\n", frag->uf_dst_seg[0].seg_addr.pval);
|
snprintf(tmp, sizeof(tmp), " put_addr=%p\n", frag->uf_remote_seg[0].seg_addr.pval);
|
||||||
strncat(str, tmp, sizeof(str) - strlen(str) - 1);
|
strncat(str, tmp, sizeof(str) - strlen(str) - 1);
|
||||||
opal_output(0, "%s", str);
|
opal_output(0, "%s", str);
|
||||||
break;
|
break;
|
||||||
|
@ -161,11 +161,11 @@ send_frag_constructor(ompi_btl_usnic_send_frag_t *frag)
|
|||||||
|
|
||||||
/* Fill in source descriptor */
|
/* Fill in source descriptor */
|
||||||
desc = &frag->sf_base.uf_base;
|
desc = &frag->sf_base.uf_base;
|
||||||
desc->des_local = frag->sf_base.uf_src_seg;
|
desc->des_local = frag->sf_base.uf_local_seg;
|
||||||
frag->sf_base.uf_src_seg[0].seg_len = 0;
|
frag->sf_base.uf_local_seg[0].seg_len = 0;
|
||||||
frag->sf_base.uf_src_seg[1].seg_len = 0;
|
frag->sf_base.uf_local_seg[1].seg_len = 0;
|
||||||
desc->des_local_count = 2;
|
desc->des_local_count = 2;
|
||||||
desc->des_remote = frag->sf_base.uf_dst_seg;
|
desc->des_remote = frag->sf_base.uf_remote_seg;
|
||||||
desc->des_remote_count = 0;
|
desc->des_remote_count = 0;
|
||||||
|
|
||||||
desc->order = MCA_BTL_NO_ORDER;
|
desc->order = MCA_BTL_NO_ORDER;
|
||||||
@ -182,8 +182,8 @@ send_frag_destructor(ompi_btl_usnic_send_frag_t *frag)
|
|||||||
|
|
||||||
/* make sure nobody twiddled these values after the constructor */
|
/* make sure nobody twiddled these values after the constructor */
|
||||||
desc = &frag->sf_base.uf_base;
|
desc = &frag->sf_base.uf_base;
|
||||||
assert(desc->des_local == frag->sf_base.uf_src_seg);
|
assert(desc->des_local == frag->sf_base.uf_local_seg);
|
||||||
assert(0 == frag->sf_base.uf_src_seg[0].seg_len);
|
assert(0 == frag->sf_base.uf_local_seg[0].seg_len);
|
||||||
/* PML may change desc->des_remote to point elsewhere, cannot assert that it
|
/* PML may change desc->des_remote to point elsewhere, cannot assert that it
|
||||||
* still points to our embedded segment */
|
* still points to our embedded segment */
|
||||||
|
|
||||||
@ -208,7 +208,7 @@ small_send_frag_constructor(ompi_btl_usnic_small_send_frag_t *frag)
|
|||||||
frag->ssf_segment.ss_send_desc.send_flags = IBV_SEND_SIGNALED;
|
frag->ssf_segment.ss_send_desc.send_flags = IBV_SEND_SIGNALED;
|
||||||
|
|
||||||
/* save data pointer for PML */
|
/* save data pointer for PML */
|
||||||
frag->ssf_base.sf_base.uf_src_seg[0].seg_addr.pval =
|
frag->ssf_base.sf_base.uf_local_seg[0].seg_addr.pval =
|
||||||
fseg->ss_base.us_payload.raw;
|
fseg->ss_base.us_payload.raw;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -220,7 +220,7 @@ small_send_frag_destructor(ompi_btl_usnic_small_send_frag_t *frag)
|
|||||||
fseg = &frag->ssf_segment;
|
fseg = &frag->ssf_segment;
|
||||||
assert(fseg->ss_parent_frag == (struct ompi_btl_usnic_send_frag_t *)frag);
|
assert(fseg->ss_parent_frag == (struct ompi_btl_usnic_send_frag_t *)frag);
|
||||||
assert(frag->ssf_base.sf_base.uf_type == OMPI_BTL_USNIC_FRAG_SMALL_SEND);
|
assert(frag->ssf_base.sf_base.uf_type == OMPI_BTL_USNIC_FRAG_SMALL_SEND);
|
||||||
assert(frag->ssf_base.sf_base.uf_src_seg[0].seg_addr.pval ==
|
assert(frag->ssf_base.sf_base.uf_local_seg[0].seg_addr.pval ==
|
||||||
fseg->ss_base.us_payload.raw);
|
fseg->ss_base.us_payload.raw);
|
||||||
OBJ_DESTRUCT(fseg);
|
OBJ_DESTRUCT(fseg);
|
||||||
}
|
}
|
||||||
@ -231,7 +231,7 @@ large_send_frag_constructor(ompi_btl_usnic_large_send_frag_t *lfrag)
|
|||||||
lfrag->lsf_base.sf_base.uf_type = OMPI_BTL_USNIC_FRAG_LARGE_SEND;
|
lfrag->lsf_base.sf_base.uf_type = OMPI_BTL_USNIC_FRAG_LARGE_SEND;
|
||||||
|
|
||||||
/* save data pointer for upper layer */
|
/* save data pointer for upper layer */
|
||||||
lfrag->lsf_base.sf_base.uf_src_seg[0].seg_addr.pval =
|
lfrag->lsf_base.sf_base.uf_local_seg[0].seg_addr.pval =
|
||||||
&lfrag->lsf_ompi_header;
|
&lfrag->lsf_ompi_header;
|
||||||
|
|
||||||
lfrag->lsf_buffer = NULL;
|
lfrag->lsf_buffer = NULL;
|
||||||
@ -245,14 +245,14 @@ put_dest_frag_constructor(ompi_btl_usnic_put_dest_frag_t *pfrag)
|
|||||||
pfrag->uf_type = OMPI_BTL_USNIC_FRAG_PUT_DEST;
|
pfrag->uf_type = OMPI_BTL_USNIC_FRAG_PUT_DEST;
|
||||||
|
|
||||||
/* point dest to our utility segment */
|
/* point dest to our utility segment */
|
||||||
pfrag->uf_base.des_local = pfrag->uf_dst_seg;
|
pfrag->uf_base.des_local = pfrag->uf_remote_seg;
|
||||||
pfrag->uf_base.des_local_count = 1;
|
pfrag->uf_base.des_local_count = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
put_dest_frag_destructor(ompi_btl_usnic_put_dest_frag_t *pfrag)
|
put_dest_frag_destructor(ompi_btl_usnic_put_dest_frag_t *pfrag)
|
||||||
{
|
{
|
||||||
assert(pfrag->uf_base.des_local == pfrag->uf_dst_seg);
|
assert(pfrag->uf_base.des_local == pfrag->uf_remote_seg);
|
||||||
assert(1 == pfrag->uf_base.des_local_count);
|
assert(1 == pfrag->uf_base.des_local_count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -236,8 +236,8 @@ typedef struct ompi_btl_usnic_frag_t {
|
|||||||
ompi_btl_usnic_frag_type_t uf_type;
|
ompi_btl_usnic_frag_type_t uf_type;
|
||||||
|
|
||||||
/* utility segments */
|
/* utility segments */
|
||||||
mca_btl_base_segment_t uf_src_seg[2];
|
mca_btl_base_segment_t uf_local_seg[2];
|
||||||
mca_btl_base_segment_t uf_dst_seg[1];
|
mca_btl_base_segment_t uf_remote_seg[1];
|
||||||
|
|
||||||
/* freelist this came from */
|
/* freelist this came from */
|
||||||
ompi_free_list_t *uf_freelist;
|
ompi_free_list_t *uf_freelist;
|
||||||
@ -294,8 +294,8 @@ typedef struct ompi_btl_usnic_large_send_frag_t {
|
|||||||
|
|
||||||
/* Shortcut member macros. Access uf_src_seg array instead of the descriptor's
|
/* Shortcut member macros. Access uf_src_seg array instead of the descriptor's
|
||||||
* des_src ptr to save a deref. */
|
* des_src ptr to save a deref. */
|
||||||
#define lsf_des_src lsf_base.sf_base.uf_src_seg
|
#define lsf_des_src lsf_base.sf_base.uf_local_seg
|
||||||
#define lsf_des_src_cnt lsf_base.sf_base.uf_base.des_src_cnt
|
#define lsf_des_local_cnt lsf_base.sf_base.uf_base.des_local_count
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* small send fragment
|
* small send fragment
|
||||||
@ -454,8 +454,8 @@ ompi_btl_usnic_frag_return(
|
|||||||
opal_output(0, "freeing frag %p, type %s\n", (void *)frag,
|
opal_output(0, "freeing frag %p, type %s\n", (void *)frag,
|
||||||
usnic_frag_type(frag->uf_type));
|
usnic_frag_type(frag->uf_type));
|
||||||
#endif
|
#endif
|
||||||
frag->uf_src_seg[0].seg_len = 0;
|
frag->uf_local_seg[0].seg_len = 0;
|
||||||
frag->uf_src_seg[1].seg_len = 0;
|
frag->uf_local_seg[1].seg_len = 0;
|
||||||
|
|
||||||
/* If this is a large fragment, we need to free any
|
/* If this is a large fragment, we need to free any
|
||||||
* attached storage
|
* attached storage
|
||||||
@ -469,7 +469,7 @@ ompi_btl_usnic_frag_return(
|
|||||||
}
|
}
|
||||||
lfrag->lsf_pack_on_the_fly = false;
|
lfrag->lsf_pack_on_the_fly = false;
|
||||||
|
|
||||||
if (2 == lfrag->lsf_des_src_cnt &&
|
if (2 == lfrag->lsf_des_local_cnt &&
|
||||||
NULL == lfrag->lsf_des_src[1].seg_addr.pval) {
|
NULL == lfrag->lsf_des_src[1].seg_addr.pval) {
|
||||||
opal_convertor_cleanup(&lfrag->lsf_base.sf_convertor);
|
opal_convertor_cleanup(&lfrag->lsf_base.sf_convertor);
|
||||||
}
|
}
|
||||||
|
@ -74,11 +74,11 @@ static inline void compute_sf_size(ompi_btl_usnic_send_frag_t *sfrag)
|
|||||||
assert(frag->uf_base.des_local_count <= 2);
|
assert(frag->uf_base.des_local_count <= 2);
|
||||||
|
|
||||||
/* belt and suspenders: second len should be zero if only one SGE */
|
/* belt and suspenders: second len should be zero if only one SGE */
|
||||||
assert(2 == frag->uf_base.des_local_count || 0 == frag->uf_src_seg[1].seg_len);
|
assert(2 == frag->uf_base.des_local_count || 0 == frag->uf_local_seg[1].seg_len);
|
||||||
|
|
||||||
sfrag->sf_size = 0;
|
sfrag->sf_size = 0;
|
||||||
sfrag->sf_size += frag->uf_src_seg[0].seg_len;
|
sfrag->sf_size += frag->uf_local_seg[0].seg_len;
|
||||||
sfrag->sf_size += frag->uf_src_seg[1].seg_len;
|
sfrag->sf_size += frag->uf_local_seg[1].seg_len;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -664,19 +664,19 @@ prepare_src_small(
|
|||||||
assert(payload_len <= module->max_frag_payload);
|
assert(payload_len <= module->max_frag_payload);
|
||||||
usnic_convertor_pack_simple(
|
usnic_convertor_pack_simple(
|
||||||
convertor,
|
convertor,
|
||||||
(IOVBASE_TYPE*)(intptr_t)(frag->sf_base.uf_src_seg[0].seg_addr.lval + reserve),
|
(IOVBASE_TYPE*)(intptr_t)(frag->sf_base.uf_local_seg[0].seg_addr.lval + reserve),
|
||||||
*size,
|
*size,
|
||||||
size);
|
size);
|
||||||
payload_len = reserve + *size;
|
payload_len = reserve + *size;
|
||||||
frag->sf_base.uf_base.des_local_count = 1;
|
frag->sf_base.uf_base.des_local_count = 1;
|
||||||
/* PML will copy header into beginning of segment */
|
/* PML will copy header into beginning of segment */
|
||||||
frag->sf_base.uf_src_seg[0].seg_len = payload_len;
|
frag->sf_base.uf_local_seg[0].seg_len = payload_len;
|
||||||
} else {
|
} else {
|
||||||
opal_convertor_get_current_pointer(convertor,
|
opal_convertor_get_current_pointer(convertor,
|
||||||
&sfrag->ssf_base.sf_base.uf_src_seg[1].seg_addr.pval);
|
&sfrag->ssf_base.sf_base.uf_local_seg[1].seg_addr.pval);
|
||||||
frag->sf_base.uf_base.des_local_count = 2;
|
frag->sf_base.uf_base.des_local_count = 2;
|
||||||
frag->sf_base.uf_src_seg[0].seg_len = reserve;
|
frag->sf_base.uf_local_seg[0].seg_len = reserve;
|
||||||
frag->sf_base.uf_src_seg[1].seg_len = *size;
|
frag->sf_base.uf_local_seg[1].seg_len = *size;
|
||||||
}
|
}
|
||||||
|
|
||||||
frag->sf_base.uf_base.des_flags = flags;
|
frag->sf_base.uf_base.des_flags = flags;
|
||||||
@ -895,8 +895,8 @@ prepare_src_large(
|
|||||||
frag->sf_base.uf_base.des_local_count = 2;
|
frag->sf_base.uf_base.des_local_count = 2;
|
||||||
|
|
||||||
/* stash header location, PML will write here */
|
/* stash header location, PML will write here */
|
||||||
frag->sf_base.uf_src_seg[0].seg_addr.pval = &lfrag->lsf_ompi_header;
|
frag->sf_base.uf_local_seg[0].seg_addr.pval = &lfrag->lsf_ompi_header;
|
||||||
frag->sf_base.uf_src_seg[0].seg_len = reserve;
|
frag->sf_base.uf_local_seg[0].seg_len = reserve;
|
||||||
/* make sure upper header small enough */
|
/* make sure upper header small enough */
|
||||||
assert(reserve <= sizeof(lfrag->lsf_ompi_header));
|
assert(reserve <= sizeof(lfrag->lsf_ompi_header));
|
||||||
|
|
||||||
@ -923,7 +923,7 @@ prepare_src_large(
|
|||||||
else {
|
else {
|
||||||
/* pack everything in the convertor into a chain of segments now,
|
/* pack everything in the convertor into a chain of segments now,
|
||||||
* leaving space for the PML header in the first segment */
|
* leaving space for the PML header in the first segment */
|
||||||
lfrag->lsf_base.sf_base.uf_src_seg[0].seg_addr.pval =
|
lfrag->lsf_base.sf_base.uf_local_seg[0].seg_addr.pval =
|
||||||
pack_chunk_seg_chain_with_reserve(module, lfrag, reserve,
|
pack_chunk_seg_chain_with_reserve(module, lfrag, reserve,
|
||||||
convertor, *size, size);
|
convertor, *size, size);
|
||||||
}
|
}
|
||||||
@ -932,14 +932,14 @@ prepare_src_large(
|
|||||||
* by both PML and this BTL will be correct. For example, the PML adds
|
* by both PML and this BTL will be correct. For example, the PML adds
|
||||||
* up the bytes in the descriptor segments to determine if an MPI-level
|
* up the bytes in the descriptor segments to determine if an MPI-level
|
||||||
* request is complete or not. */
|
* request is complete or not. */
|
||||||
frag->sf_base.uf_src_seg[1].seg_addr.pval = NULL;
|
frag->sf_base.uf_local_seg[1].seg_addr.pval = NULL;
|
||||||
frag->sf_base.uf_src_seg[1].seg_len = *size;
|
frag->sf_base.uf_local_seg[1].seg_len = *size;
|
||||||
} else {
|
} else {
|
||||||
/* convertor not needed, just save the payload pointer in SG[1] */
|
/* convertor not needed, just save the payload pointer in SG[1] */
|
||||||
lfrag->lsf_pack_on_the_fly = true;
|
lfrag->lsf_pack_on_the_fly = true;
|
||||||
opal_convertor_get_current_pointer(convertor,
|
opal_convertor_get_current_pointer(convertor,
|
||||||
&frag->sf_base.uf_src_seg[1].seg_addr.pval);
|
&frag->sf_base.uf_local_seg[1].seg_addr.pval);
|
||||||
frag->sf_base.uf_src_seg[1].seg_len = *size;
|
frag->sf_base.uf_local_seg[1].seg_len = *size;
|
||||||
}
|
}
|
||||||
|
|
||||||
frag->sf_base.uf_base.des_flags = flags;
|
frag->sf_base.uf_base.des_flags = flags;
|
||||||
@ -1057,8 +1057,8 @@ usnic_prepare_dst(
|
|||||||
opal_convertor_get_current_pointer(convertor, (void **) &data_ptr);
|
opal_convertor_get_current_pointer(convertor, (void **) &data_ptr);
|
||||||
|
|
||||||
/* make a seg entry pointing at data_ptr */
|
/* make a seg entry pointing at data_ptr */
|
||||||
pfrag->uf_dst_seg[0].seg_addr.pval = data_ptr;
|
pfrag->uf_remote_seg[0].seg_addr.pval = data_ptr;
|
||||||
pfrag->uf_dst_seg[0].seg_len = *size;
|
pfrag->uf_remote_seg[0].seg_len = *size;
|
||||||
|
|
||||||
pfrag->uf_base.order = order;
|
pfrag->uf_base.order = order;
|
||||||
pfrag->uf_base.des_flags = flags;
|
pfrag->uf_base.des_flags = flags;
|
||||||
@ -1112,7 +1112,7 @@ usnic_put(
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* copy out address - why does he not use our provided holder? */
|
/* copy out address - why does he not use our provided holder? */
|
||||||
frag->sf_base.uf_dst_seg[0].seg_addr.pval = desc->des_remote->seg_addr.pval;
|
frag->sf_base.uf_remote_seg[0].seg_addr.pval = desc->des_remote->seg_addr.pval;
|
||||||
|
|
||||||
rc = ompi_btl_usnic_finish_put_or_send((ompi_btl_usnic_module_t *)btl,
|
rc = ompi_btl_usnic_finish_put_or_send((ompi_btl_usnic_module_t *)btl,
|
||||||
(ompi_btl_usnic_endpoint_t *)endpoint,
|
(ompi_btl_usnic_endpoint_t *)endpoint,
|
||||||
@ -1332,7 +1332,7 @@ usnic_handle_large_send(
|
|||||||
/* only callback now if this was not a PUT and we own the fragment,
|
/* only callback now if this was not a PUT and we own the fragment,
|
||||||
* otherwise we need to wait until last byte is ACKed
|
* otherwise we need to wait until last byte is ACKed
|
||||||
*/
|
*/
|
||||||
if (frag->sf_base.uf_dst_seg[0].seg_addr.pval == NULL &&
|
if (frag->sf_base.uf_remote_seg[0].seg_addr.pval == NULL &&
|
||||||
(frag->sf_base.uf_base.des_flags &
|
(frag->sf_base.uf_base.des_flags &
|
||||||
MCA_BTL_DES_FLAGS_BTL_OWNERSHIP)) {
|
MCA_BTL_DES_FLAGS_BTL_OWNERSHIP)) {
|
||||||
|
|
||||||
@ -1394,7 +1394,7 @@ ompi_btl_usnic_module_progress_sends(
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* small send? (fragment fits in one segment)
|
* small send? (fragment fits in one segment)
|
||||||
* Send ptr and length will be in uf_src_seg[0]
|
* Send ptr and length will be in uf_local_seg[0]
|
||||||
*/
|
*/
|
||||||
if (frag->sf_base.uf_type == OMPI_BTL_USNIC_FRAG_SMALL_SEND) {
|
if (frag->sf_base.uf_type == OMPI_BTL_USNIC_FRAG_SMALL_SEND) {
|
||||||
|
|
||||||
@ -1424,7 +1424,7 @@ ompi_btl_usnic_module_progress_sends(
|
|||||||
ompi_btl_usnic_endpoint_send_segment(module, sseg);
|
ompi_btl_usnic_endpoint_send_segment(module, sseg);
|
||||||
|
|
||||||
/* don't do callback yet if this is a put */
|
/* don't do callback yet if this is a put */
|
||||||
if (frag->sf_base.uf_dst_seg[0].seg_addr.pval == NULL) {
|
if (frag->sf_base.uf_remote_seg[0].seg_addr.pval == NULL) {
|
||||||
/* we have copied the data, perform a callback if
|
/* we have copied the data, perform a callback if
|
||||||
* we own the fragment and callback is requested.
|
* we own the fragment and callback is requested.
|
||||||
* If we don't own the fragment, we cannot callback yet
|
* If we don't own the fragment, we cannot callback yet
|
||||||
@ -1516,7 +1516,7 @@ usnic_send(
|
|||||||
frag = (ompi_btl_usnic_send_frag_t*) descriptor;
|
frag = (ompi_btl_usnic_send_frag_t*) descriptor;
|
||||||
|
|
||||||
assert(frag->sf_endpoint == endpoint);
|
assert(frag->sf_endpoint == endpoint);
|
||||||
frag->sf_base.uf_dst_seg[0].seg_addr.pval = NULL; /* not a PUT */
|
frag->sf_base.uf_remote_seg[0].seg_addr.pval = NULL; /* not a PUT */
|
||||||
|
|
||||||
compute_sf_size(frag);
|
compute_sf_size(frag);
|
||||||
frag->sf_ack_bytes_left = frag->sf_size;
|
frag->sf_ack_bytes_left = frag->sf_size;
|
||||||
@ -1558,16 +1558,16 @@ usnic_send(
|
|||||||
/* fix up verbs SG entries */
|
/* fix up verbs SG entries */
|
||||||
sseg->ss_base.us_sg_entry[0].length =
|
sseg->ss_base.us_sg_entry[0].length =
|
||||||
sizeof(ompi_btl_usnic_btl_header_t) +
|
sizeof(ompi_btl_usnic_btl_header_t) +
|
||||||
frag->sf_base.uf_src_seg[0].seg_len;
|
frag->sf_base.uf_local_seg[0].seg_len;
|
||||||
|
|
||||||
if (frag->sf_base.uf_base.des_local_count > 1) {
|
if (frag->sf_base.uf_base.des_local_count > 1) {
|
||||||
|
|
||||||
/* only briefly, we will set it back to 1 before release */
|
/* only briefly, we will set it back to 1 before release */
|
||||||
sseg->ss_send_desc.num_sge = 2;
|
sseg->ss_send_desc.num_sge = 2;
|
||||||
sseg->ss_base.us_sg_entry[1].addr =
|
sseg->ss_base.us_sg_entry[1].addr =
|
||||||
frag->sf_base.uf_src_seg[1].seg_addr.lval,
|
frag->sf_base.uf_local_seg[1].seg_addr.lval,
|
||||||
sseg->ss_base.us_sg_entry[1].length =
|
sseg->ss_base.us_sg_entry[1].length =
|
||||||
frag->sf_base.uf_src_seg[1].seg_len;
|
frag->sf_base.uf_local_seg[1].seg_len;
|
||||||
} else {
|
} else {
|
||||||
sseg->ss_send_desc.num_sge = 1;
|
sseg->ss_send_desc.num_sge = 1;
|
||||||
}
|
}
|
||||||
@ -1584,14 +1584,14 @@ usnic_send(
|
|||||||
|
|
||||||
/* make a copy of the data for retrans */
|
/* make a copy of the data for retrans */
|
||||||
if (frag->sf_base.uf_base.des_local_count > 1) {
|
if (frag->sf_base.uf_base.des_local_count > 1) {
|
||||||
memcpy(((char *)(intptr_t)frag->sf_base.uf_src_seg[0].seg_addr.lval +
|
memcpy(((char *)(intptr_t)frag->sf_base.uf_local_seg[0].seg_addr.lval +
|
||||||
frag->sf_base.uf_src_seg[0].seg_len),
|
frag->sf_base.uf_local_seg[0].seg_len),
|
||||||
frag->sf_base.uf_src_seg[1].seg_addr.pval,
|
frag->sf_base.uf_local_seg[1].seg_addr.pval,
|
||||||
frag->sf_base.uf_src_seg[1].seg_len);
|
frag->sf_base.uf_local_seg[1].seg_len);
|
||||||
/* update 1st segment length */
|
/* update 1st segment length */
|
||||||
frag->sf_base.uf_base.des_local_count = 1;
|
frag->sf_base.uf_base.des_local_count = 1;
|
||||||
frag->sf_base.uf_src_seg[0].seg_len +=
|
frag->sf_base.uf_local_seg[0].seg_len +=
|
||||||
frag->sf_base.uf_src_seg[1].seg_len;
|
frag->sf_base.uf_local_seg[1].seg_len;
|
||||||
/* set up VERBS SG list */
|
/* set up VERBS SG list */
|
||||||
/* this maintains invariant that num_sge=1 */
|
/* this maintains invariant that num_sge=1 */
|
||||||
sseg->ss_send_desc.num_sge = 1;
|
sseg->ss_send_desc.num_sge = 1;
|
||||||
|
@ -133,17 +133,17 @@ ompi_btl_usnic_finish_put_or_send(
|
|||||||
*/
|
*/
|
||||||
if (frag->sf_base.uf_base.des_local_count > 1) {
|
if (frag->sf_base.uf_base.des_local_count > 1) {
|
||||||
/* no convertor */
|
/* no convertor */
|
||||||
assert(NULL != frag->sf_base.uf_src_seg[1].seg_addr.pval);
|
assert(NULL != frag->sf_base.uf_local_seg[1].seg_addr.pval);
|
||||||
|
|
||||||
memcpy(((char *)(intptr_t)frag->sf_base.uf_src_seg[0].seg_addr.lval +
|
memcpy(((char *)(intptr_t)frag->sf_base.uf_local_seg[0].seg_addr.lval +
|
||||||
frag->sf_base.uf_src_seg[0].seg_len),
|
frag->sf_base.uf_local_seg[0].seg_len),
|
||||||
frag->sf_base.uf_src_seg[1].seg_addr.pval,
|
frag->sf_base.uf_local_seg[1].seg_addr.pval,
|
||||||
frag->sf_base.uf_src_seg[1].seg_len);
|
frag->sf_base.uf_local_seg[1].seg_len);
|
||||||
|
|
||||||
/* update 1st segment length */
|
/* update 1st segment length */
|
||||||
frag->sf_base.uf_base.des_local_count = 1;
|
frag->sf_base.uf_base.des_local_count = 1;
|
||||||
frag->sf_base.uf_src_seg[0].seg_len +=
|
frag->sf_base.uf_local_seg[0].seg_len +=
|
||||||
frag->sf_base.uf_src_seg[1].seg_len;
|
frag->sf_base.uf_local_seg[1].seg_len;
|
||||||
}
|
}
|
||||||
|
|
||||||
sseg->ss_base.us_sg_entry[0].length =
|
sseg->ss_base.us_sg_entry[0].length =
|
||||||
@ -153,7 +153,7 @@ ompi_btl_usnic_finish_put_or_send(
|
|||||||
sseg->ss_channel = USNIC_DATA_CHANNEL;
|
sseg->ss_channel = USNIC_DATA_CHANNEL;
|
||||||
sseg->ss_base.us_btl_header->tag = tag;
|
sseg->ss_base.us_btl_header->tag = tag;
|
||||||
|
|
||||||
if (frag->sf_base.uf_src_seg[0].seg_len < module->tiny_mtu) {
|
if (frag->sf_base.uf_local_seg[0].seg_len < module->tiny_mtu) {
|
||||||
sseg->ss_send_desc.send_flags |= IBV_SEND_INLINE;
|
sseg->ss_send_desc.send_flags |= IBV_SEND_INLINE;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -167,7 +167,7 @@ ompi_btl_usnic_endpoint_send_segment(
|
|||||||
|
|
||||||
/* Fill in remote address to indicate PUT or not */
|
/* Fill in remote address to indicate PUT or not */
|
||||||
sseg->ss_base.us_btl_header->put_addr =
|
sseg->ss_base.us_btl_header->put_addr =
|
||||||
frag->sf_base.uf_dst_seg[0].seg_addr.pval;
|
frag->sf_base.uf_remote_seg[0].seg_addr.pval;
|
||||||
|
|
||||||
/* piggy-back an ACK if needed */
|
/* piggy-back an ACK if needed */
|
||||||
ompi_btl_usnic_piggyback_ack(endpoint, sseg);
|
ompi_btl_usnic_piggyback_ack(endpoint, sseg);
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user