1
1

Send back the flags to the sender.

And keep a local directly to the PTL not to the fragment.

This commit was SVN r5287.
Этот коммит содержится в:
George Bosilca 2005-04-12 22:44:47 +00:00
родитель 0b89866fe6
Коммит eeb23c70c4

Просмотреть файл

@ -307,13 +307,11 @@ mca_ptl_gm_get (struct mca_ptl_base_module_t *ptl,
static void mca_ptl_gm_basic_ack_callback( struct gm_port* port, void* context, gm_status_t status ) static void mca_ptl_gm_basic_ack_callback( struct gm_port* port, void* context, gm_status_t status )
{ {
mca_ptl_gm_module_t* gm_ptl; mca_ptl_gm_module_t* gm_ptl;
mca_ptl_base_frag_t* frag_base;
mca_ptl_base_header_t* header; mca_ptl_base_header_t* header;
header = (mca_ptl_base_header_t*)context; header = (mca_ptl_base_header_t*)context;
frag_base = (mca_ptl_base_frag_t*)header->hdr_ack.hdr_dst_addr.pval; gm_ptl = (mca_ptl_gm_module_t*)header->hdr_ack.hdr_dst_addr.pval;
gm_ptl = (mca_ptl_gm_module_t *)frag_base->frag_owner;
OMPI_GM_FREE_LIST_RETURN( &(gm_ptl->gm_send_dma_frags), ((ompi_list_item_t*)header) ); OMPI_GM_FREE_LIST_RETURN( &(gm_ptl->gm_send_dma_frags), ((ompi_list_item_t*)header) );
/* release the send token */ /* release the send token */
@ -324,8 +322,8 @@ static void mca_ptl_gm_basic_ack_callback( struct gm_port* port, void* context,
* ack back to the peer and process the fragment. * ack back to the peer and process the fragment.
*/ */
void void
mca_ptl_gm_matched( mca_ptl_base_module_t * ptl, mca_ptl_gm_matched( mca_ptl_base_module_t* ptl,
mca_ptl_base_recv_frag_t * frag ) mca_ptl_base_recv_frag_t* frag )
{ {
mca_pml_base_recv_request_t *request; mca_pml_base_recv_request_t *request;
mca_ptl_base_header_t *hdr; mca_ptl_base_header_t *hdr;
@ -355,12 +353,12 @@ mca_ptl_gm_matched( mca_ptl_base_module_t * ptl,
hdr = (mca_ptl_base_header_t*)item; hdr = (mca_ptl_base_header_t*)item;
hdr->hdr_ack.hdr_common.hdr_type = MCA_PTL_HDR_TYPE_ACK; hdr->hdr_ack.hdr_common.hdr_type = MCA_PTL_HDR_TYPE_ACK;
hdr->hdr_ack.hdr_common.hdr_flags = 0; hdr->hdr_ack.hdr_common.hdr_flags = frag->frag_base.frag_header.hdr_common.hdr_flags;
hdr->hdr_ack.hdr_src_ptr = frag->frag_base.frag_header.hdr_rndv.hdr_src_ptr; hdr->hdr_ack.hdr_src_ptr = frag->frag_base.frag_header.hdr_rndv.hdr_src_ptr;
hdr->hdr_ack.hdr_dst_match.lval = 0L; hdr->hdr_ack.hdr_dst_match.lval = 0L;
hdr->hdr_ack.hdr_dst_match.pval = request; hdr->hdr_ack.hdr_dst_match.pval = request;
hdr->hdr_ack.hdr_dst_addr.lval = 0L; hdr->hdr_ack.hdr_dst_addr.lval = 0L;
hdr->hdr_ack.hdr_dst_addr.pval = frag; hdr->hdr_ack.hdr_dst_addr.pval = ptl; /* local use */
hdr->hdr_ack.hdr_dst_size = request->req_bytes_packed; hdr->hdr_ack.hdr_dst_size = request->req_bytes_packed;
gm_send_with_callback( ((mca_ptl_gm_module_t*)ptl)->gm_port, hdr, gm_send_with_callback( ((mca_ptl_gm_module_t*)ptl)->gm_port, hdr,