1
1

Check in fixes for offset update to have pml_done and mpi_done to be set correctly

This commit was SVN r2208.
Этот коммит содержится в:
Weikuan Yu 2004-08-18 16:27:31 +00:00
родитель e74432addf
Коммит 8ff450f0ee
5 изменённых файлов: 13 добавлений и 27 удалений

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

@ -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
*/