Check in fixes for offset update to have pml_done and mpi_done to be set correctly
This commit was SVN r2208.
Этот коммит содержится в:
родитель
e74432addf
Коммит
8ff450f0ee
@ -305,6 +305,10 @@ mca_ptl_elan_put (struct mca_ptl_base_module_t *ptl,
|
||||
(struct mca_ptl_elan_peer_t *)ptl_peer,
|
||||
sendreq, offset, &size, flags);
|
||||
|
||||
/* XXX: It is very important to update offset,
|
||||
* otherwise, you stuck */
|
||||
sendreq->req_offset += size;
|
||||
|
||||
/* Update all the sends until the put is done */
|
||||
END_FUNC(PTL_ELAN_DEBUG_PUT);
|
||||
return rc;
|
||||
|
@ -107,27 +107,29 @@ ompi_init_elan_queue_events (mca_ptl_elan_module_t * ptl,
|
||||
|
||||
static void
|
||||
mca_ptl_elan_putget_desc_contruct (
|
||||
ELAN4_CTX *ctx,
|
||||
mca_ptl_elan_module_t * ptl,
|
||||
ompi_ptl_elan_putget_desc_t *desc,
|
||||
EVENT *elan_event,
|
||||
E4_Addr src_elan4_addr,
|
||||
E4_Addr dst_elan4_addr,
|
||||
int local /* dma_src is local */ )
|
||||
{
|
||||
/* Zero this descriptor */
|
||||
memset(desc, 0, sizeof(desc));
|
||||
ELAN4_CTX *ctx,
|
||||
|
||||
ctx = ptl->ptl_elan_ctx;
|
||||
memset(desc, 0, sizeof(desc));
|
||||
desc->ptl = ptl;
|
||||
desc->req = NULL;
|
||||
desc->main_dma.dma_typeSize = 0;
|
||||
desc->main_dma.dma_cookie = 0;
|
||||
desc->main_dma.dma_vproc = 0;
|
||||
|
||||
desc->elan_event = elan_event;
|
||||
desc->chain_event= (E4_Event32 *)
|
||||
((char *)elan_event + sizeof (E4_Event32));
|
||||
desc->chain_buff = (E4_Addr *)
|
||||
((char *)elan_event + 2*sizeof (E4_Event32));
|
||||
|
||||
/* Remember all the address needs to be converted
|
||||
/* XXX: Remember all the address needs to be converted
|
||||
* before assigning to DMA descritpor */
|
||||
desc->main_dma.dma_srcAddr = src_elan4_addr;
|
||||
desc->main_dma.dma_dstAddr = dst_elan4_addr;
|
||||
@ -138,6 +140,7 @@ mca_ptl_elan_putget_desc_contruct (
|
||||
desc->main_dma.dma_dstEvent = elan4_main2elan(ctx, elan_event);
|
||||
}
|
||||
|
||||
/* XXX: Remember to reset all event and doneWord */
|
||||
INITEVENT_WORD (ctx, elan_event, &desc->main_doneWord);
|
||||
RESETEVENT_WORD (&desc->main_doneWord);
|
||||
PRIMEEVENT_WORD (ctx, elan_event, 1);
|
||||
|
@ -179,12 +179,6 @@ mca_ptl_elan_send_desc_done (
|
||||
ptl = ((ompi_ptl_elan_qdma_desc_t *)desc->desc)->ptl;
|
||||
header = &desc->frag_base.frag_header;
|
||||
|
||||
LOG_PRINT(PTL_ELAN_DEBUG_MAC,
|
||||
"[comp send] type %d flag %d size %d\n",
|
||||
header->hdr_common.hdr_type,
|
||||
header->hdr_common.hdr_flags,
|
||||
header->hdr_common.hdr_size);
|
||||
|
||||
if(NULL == req) { /* An ack descriptor */
|
||||
OMPI_FREE_LIST_RETURN (&ptl->queue->tx_desc_free,
|
||||
(ompi_list_item_t *) desc);
|
||||
@ -194,24 +188,11 @@ mca_ptl_elan_send_desc_done (
|
||||
& MCA_PTL_FLAGS_ACK_MATCHED)
|
||||
|| mca_pml_base_send_request_matched(req)) {
|
||||
|
||||
LOG_PRINT(PTL_ELAN_DEBUG_ACK,
|
||||
"returning req %p mpi_done %d pml_done %d \n",
|
||||
req,
|
||||
req->req_base.req_mpi_done,
|
||||
req->req_base.req_pml_done);
|
||||
|
||||
|
||||
if(fetchNset (&desc->frag_progressed, 1) == 0) {
|
||||
ptl->super.ptl_send_progress(ptl, req,
|
||||
header->hdr_frag.hdr_frag_length);
|
||||
}
|
||||
|
||||
LOG_PRINT(PTL_ELAN_DEBUG_ACK,
|
||||
"returning req %p mpi_done %d pml_done %d \n",
|
||||
req,
|
||||
req->req_base.req_mpi_done,
|
||||
req->req_base.req_pml_done);
|
||||
|
||||
/* Return a frag or if not cached, or it is a follow up */
|
||||
if (
|
||||
/*(header->hdr_frag.hdr_frag_offset != 0) || */
|
||||
|
@ -716,11 +716,10 @@ mca_ptl_elan_update_desc (mca_ptl_elan_component_t * emp)
|
||||
if (rc) {
|
||||
struct ompi_ptl_elan_base_desc_t *basic;
|
||||
|
||||
/* Remove the desc, update the request, put back to free list */
|
||||
/* Remove the desc, update the request, return to free list */
|
||||
frag = (mca_ptl_elan_send_frag_t *)
|
||||
ompi_list_remove_first (&ptl->send_frags);
|
||||
basic = (ompi_ptl_elan_qdma_desc_t*)frag->desc;
|
||||
|
||||
mca_ptl_elan_send_desc_done (frag, basic->req);
|
||||
INITEVENT_WORD (ctx, basic->elan_event, &basic->main_doneWord);
|
||||
RESETEVENT_WORD (&basic->main_doneWord);
|
||||
|
@ -336,7 +336,6 @@ int mca_ptl_elan_wait_desc(mca_ptl_elan_send_frag_t *desc);
|
||||
/* control, synchronization and state prototypes */
|
||||
int mca_ptl_elan_drain_recv(mca_ptl_elan_component_t *emp);
|
||||
int mca_ptl_elan_update_desc(mca_ptl_elan_component_t *emp);
|
||||
int mca_ptl_elan_update_putget(mca_ptl_elan_component_t * emp);
|
||||
/**
|
||||
* utility routines for parameter registration
|
||||
*/
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user