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.
|
||||
*/
|
||||
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 &
|
||||
MCA_BTL_DES_SEND_ALWAYS_CALLBACK))) {
|
||||
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:
|
||||
/* 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);
|
||||
opal_output(0, "%s", str);
|
||||
break;
|
||||
|
@ -161,11 +161,11 @@ send_frag_constructor(ompi_btl_usnic_send_frag_t *frag)
|
||||
|
||||
/* Fill in source descriptor */
|
||||
desc = &frag->sf_base.uf_base;
|
||||
desc->des_local = frag->sf_base.uf_src_seg;
|
||||
frag->sf_base.uf_src_seg[0].seg_len = 0;
|
||||
frag->sf_base.uf_src_seg[1].seg_len = 0;
|
||||
desc->des_local = frag->sf_base.uf_local_seg;
|
||||
frag->sf_base.uf_local_seg[0].seg_len = 0;
|
||||
frag->sf_base.uf_local_seg[1].seg_len = 0;
|
||||
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->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 */
|
||||
desc = &frag->sf_base.uf_base;
|
||||
assert(desc->des_local == frag->sf_base.uf_src_seg);
|
||||
assert(0 == frag->sf_base.uf_src_seg[0].seg_len);
|
||||
assert(desc->des_local == frag->sf_base.uf_local_seg);
|
||||
assert(0 == frag->sf_base.uf_local_seg[0].seg_len);
|
||||
/* PML may change desc->des_remote to point elsewhere, cannot assert that it
|
||||
* 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;
|
||||
|
||||
/* 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;
|
||||
}
|
||||
|
||||
@ -220,7 +220,7 @@ small_send_frag_destructor(ompi_btl_usnic_small_send_frag_t *frag)
|
||||
fseg = &frag->ssf_segment;
|
||||
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_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);
|
||||
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;
|
||||
|
||||
/* 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_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;
|
||||
|
||||
/* 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;
|
||||
}
|
||||
|
||||
static void
|
||||
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);
|
||||
}
|
||||
|
||||
|
@ -236,8 +236,8 @@ typedef struct ompi_btl_usnic_frag_t {
|
||||
ompi_btl_usnic_frag_type_t uf_type;
|
||||
|
||||
/* utility segments */
|
||||
mca_btl_base_segment_t uf_src_seg[2];
|
||||
mca_btl_base_segment_t uf_dst_seg[1];
|
||||
mca_btl_base_segment_t uf_local_seg[2];
|
||||
mca_btl_base_segment_t uf_remote_seg[1];
|
||||
|
||||
/* freelist this came from */
|
||||
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
|
||||
* des_src ptr to save a deref. */
|
||||
#define lsf_des_src lsf_base.sf_base.uf_src_seg
|
||||
#define lsf_des_src_cnt lsf_base.sf_base.uf_base.des_src_cnt
|
||||
#define lsf_des_src lsf_base.sf_base.uf_local_seg
|
||||
#define lsf_des_local_cnt lsf_base.sf_base.uf_base.des_local_count
|
||||
|
||||
/**
|
||||
* small send fragment
|
||||
@ -454,8 +454,8 @@ ompi_btl_usnic_frag_return(
|
||||
opal_output(0, "freeing frag %p, type %s\n", (void *)frag,
|
||||
usnic_frag_type(frag->uf_type));
|
||||
#endif
|
||||
frag->uf_src_seg[0].seg_len = 0;
|
||||
frag->uf_src_seg[1].seg_len = 0;
|
||||
frag->uf_local_seg[0].seg_len = 0;
|
||||
frag->uf_local_seg[1].seg_len = 0;
|
||||
|
||||
/* If this is a large fragment, we need to free any
|
||||
* attached storage
|
||||
@ -469,7 +469,7 @@ ompi_btl_usnic_frag_return(
|
||||
}
|
||||
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) {
|
||||
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);
|
||||
|
||||
/* 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 += frag->uf_src_seg[0].seg_len;
|
||||
sfrag->sf_size += frag->uf_src_seg[1].seg_len;
|
||||
sfrag->sf_size += frag->uf_local_seg[0].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);
|
||||
usnic_convertor_pack_simple(
|
||||
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);
|
||||
payload_len = reserve + *size;
|
||||
frag->sf_base.uf_base.des_local_count = 1;
|
||||
/* 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 {
|
||||
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_src_seg[0].seg_len = reserve;
|
||||
frag->sf_base.uf_src_seg[1].seg_len = *size;
|
||||
frag->sf_base.uf_local_seg[0].seg_len = reserve;
|
||||
frag->sf_base.uf_local_seg[1].seg_len = *size;
|
||||
}
|
||||
|
||||
frag->sf_base.uf_base.des_flags = flags;
|
||||
@ -895,8 +895,8 @@ prepare_src_large(
|
||||
frag->sf_base.uf_base.des_local_count = 2;
|
||||
|
||||
/* 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_src_seg[0].seg_len = reserve;
|
||||
frag->sf_base.uf_local_seg[0].seg_addr.pval = &lfrag->lsf_ompi_header;
|
||||
frag->sf_base.uf_local_seg[0].seg_len = reserve;
|
||||
/* make sure upper header small enough */
|
||||
assert(reserve <= sizeof(lfrag->lsf_ompi_header));
|
||||
|
||||
@ -923,7 +923,7 @@ prepare_src_large(
|
||||
else {
|
||||
/* pack everything in the convertor into a chain of segments now,
|
||||
* 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,
|
||||
convertor, *size, size);
|
||||
}
|
||||
@ -932,14 +932,14 @@ prepare_src_large(
|
||||
* 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
|
||||
* request is complete or not. */
|
||||
frag->sf_base.uf_src_seg[1].seg_addr.pval = NULL;
|
||||
frag->sf_base.uf_src_seg[1].seg_len = *size;
|
||||
frag->sf_base.uf_local_seg[1].seg_addr.pval = NULL;
|
||||
frag->sf_base.uf_local_seg[1].seg_len = *size;
|
||||
} else {
|
||||
/* convertor not needed, just save the payload pointer in SG[1] */
|
||||
lfrag->lsf_pack_on_the_fly = true;
|
||||
opal_convertor_get_current_pointer(convertor,
|
||||
&frag->sf_base.uf_src_seg[1].seg_addr.pval);
|
||||
frag->sf_base.uf_src_seg[1].seg_len = *size;
|
||||
&frag->sf_base.uf_local_seg[1].seg_addr.pval);
|
||||
frag->sf_base.uf_local_seg[1].seg_len = *size;
|
||||
}
|
||||
|
||||
frag->sf_base.uf_base.des_flags = flags;
|
||||
@ -1057,8 +1057,8 @@ usnic_prepare_dst(
|
||||
opal_convertor_get_current_pointer(convertor, (void **) &data_ptr);
|
||||
|
||||
/* make a seg entry pointing at data_ptr */
|
||||
pfrag->uf_dst_seg[0].seg_addr.pval = data_ptr;
|
||||
pfrag->uf_dst_seg[0].seg_len = *size;
|
||||
pfrag->uf_remote_seg[0].seg_addr.pval = data_ptr;
|
||||
pfrag->uf_remote_seg[0].seg_len = *size;
|
||||
|
||||
pfrag->uf_base.order = order;
|
||||
pfrag->uf_base.des_flags = flags;
|
||||
@ -1112,7 +1112,7 @@ usnic_put(
|
||||
#endif
|
||||
|
||||
/* 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,
|
||||
(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,
|
||||
* 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 &
|
||||
MCA_BTL_DES_FLAGS_BTL_OWNERSHIP)) {
|
||||
|
||||
@ -1394,7 +1394,7 @@ ompi_btl_usnic_module_progress_sends(
|
||||
|
||||
/*
|
||||
* 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) {
|
||||
|
||||
@ -1424,7 +1424,7 @@ ompi_btl_usnic_module_progress_sends(
|
||||
ompi_btl_usnic_endpoint_send_segment(module, sseg);
|
||||
|
||||
/* 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 own the fragment and callback is requested.
|
||||
* 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;
|
||||
|
||||
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);
|
||||
frag->sf_ack_bytes_left = frag->sf_size;
|
||||
@ -1558,16 +1558,16 @@ usnic_send(
|
||||
/* fix up verbs SG entries */
|
||||
sseg->ss_base.us_sg_entry[0].length =
|
||||
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) {
|
||||
|
||||
/* only briefly, we will set it back to 1 before release */
|
||||
sseg->ss_send_desc.num_sge = 2;
|
||||
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 =
|
||||
frag->sf_base.uf_src_seg[1].seg_len;
|
||||
frag->sf_base.uf_local_seg[1].seg_len;
|
||||
} else {
|
||||
sseg->ss_send_desc.num_sge = 1;
|
||||
}
|
||||
@ -1584,14 +1584,14 @@ usnic_send(
|
||||
|
||||
/* make a copy of the data for retrans */
|
||||
if (frag->sf_base.uf_base.des_local_count > 1) {
|
||||
memcpy(((char *)(intptr_t)frag->sf_base.uf_src_seg[0].seg_addr.lval +
|
||||
frag->sf_base.uf_src_seg[0].seg_len),
|
||||
frag->sf_base.uf_src_seg[1].seg_addr.pval,
|
||||
frag->sf_base.uf_src_seg[1].seg_len);
|
||||
memcpy(((char *)(intptr_t)frag->sf_base.uf_local_seg[0].seg_addr.lval +
|
||||
frag->sf_base.uf_local_seg[0].seg_len),
|
||||
frag->sf_base.uf_local_seg[1].seg_addr.pval,
|
||||
frag->sf_base.uf_local_seg[1].seg_len);
|
||||
/* update 1st segment length */
|
||||
frag->sf_base.uf_base.des_local_count = 1;
|
||||
frag->sf_base.uf_src_seg[0].seg_len +=
|
||||
frag->sf_base.uf_src_seg[1].seg_len;
|
||||
frag->sf_base.uf_local_seg[0].seg_len +=
|
||||
frag->sf_base.uf_local_seg[1].seg_len;
|
||||
/* set up VERBS SG list */
|
||||
/* this maintains invariant that 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) {
|
||||
/* 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 +
|
||||
frag->sf_base.uf_src_seg[0].seg_len),
|
||||
frag->sf_base.uf_src_seg[1].seg_addr.pval,
|
||||
frag->sf_base.uf_src_seg[1].seg_len);
|
||||
memcpy(((char *)(intptr_t)frag->sf_base.uf_local_seg[0].seg_addr.lval +
|
||||
frag->sf_base.uf_local_seg[0].seg_len),
|
||||
frag->sf_base.uf_local_seg[1].seg_addr.pval,
|
||||
frag->sf_base.uf_local_seg[1].seg_len);
|
||||
|
||||
/* update 1st segment length */
|
||||
frag->sf_base.uf_base.des_local_count = 1;
|
||||
frag->sf_base.uf_src_seg[0].seg_len +=
|
||||
frag->sf_base.uf_src_seg[1].seg_len;
|
||||
frag->sf_base.uf_local_seg[0].seg_len +=
|
||||
frag->sf_base.uf_local_seg[1].seg_len;
|
||||
}
|
||||
|
||||
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_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;
|
||||
}
|
||||
} else {
|
||||
|
@ -167,7 +167,7 @@ ompi_btl_usnic_endpoint_send_segment(
|
||||
|
||||
/* Fill in remote address to indicate PUT or not */
|
||||
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 */
|
||||
ompi_btl_usnic_piggyback_ack(endpoint, sseg);
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user