diff --git a/src/mca/ptl/mx/ptl_mx_module.h b/src/mca/ptl/mx/ptl_mx_module.h index 5309cc0e2e..b6f9f7eb6c 100644 --- a/src/mca/ptl/mx/ptl_mx_module.h +++ b/src/mca/ptl/mx/ptl_mx_module.h @@ -99,19 +99,22 @@ do { switch(hdr->hdr_common.hdr_type) { \ case MCA_PTL_HDR_TYPE_MATCH: \ { \ - if(hdr->hdr_common.hdr_flags & MCA_PTL_FLAGS_NBO) { \ - MCA_PTL_BASE_MATCH_HDR_NTOH(hdr->hdr_match); \ - } \ - ptl->super.ptl_match(&ptl->super, &recvfrag->frag_recv, \ - &hdr->hdr_match); \ + MCA_PTL_MX_RECV_FRAG_MATCH(recvfrag,hdr); \ + MCA_PTL_MX_POST(ptl, rc); \ break; \ } \ case MCA_PTL_HDR_TYPE_FRAG: \ + { \ + MCA_PTL_MX_RECV_FRAG_FRAG(recvfrag,hdr); \ break; \ + } \ case MCA_PTL_HDR_TYPE_ACK: \ + { \ + MCA_PTL_MX_RECV_FRAG_ACK(recvfrag,hdr); \ + MCA_PTL_MX_POST(ptl, rc); \ break; \ + } \ } \ - MCA_PTL_MX_POST(ptl, rc); \ break; \ } \ default: \ diff --git a/src/mca/ptl/mx/ptl_mx_recvfrag.h b/src/mca/ptl/mx/ptl_mx_recvfrag.h index 6f64dea06d..252b3f7833 100644 --- a/src/mca/ptl/mx/ptl_mx_recvfrag.h +++ b/src/mca/ptl/mx/ptl_mx_recvfrag.h @@ -36,5 +36,42 @@ OBJ_CLASS_DECLARATION(mca_ptl_mx_recv_frag_t); #define MCA_PTL_MX_RECV_FRAG_RETURN(recvfrag) \ OMPI_FREE_LIST_RETURN(&mca_ptl_mx_component.mx_recv_frags, (ompi_list_item_t*)recvfrag); + +/** + * Callback on receipt of a match fragment. + */ + +#define MCA_PTL_MX_RECV_FRAG_MATCH(recvfrag, hdr) \ +do { \ + if(hdr->hdr_common.hdr_flags & MCA_PTL_FLAGS_NBO) { \ + MCA_PTL_BASE_MATCH_HDR_NTOH(hdr->hdr_match); \ + } \ + ptl->super.ptl_match(&ptl->super, &recvfrag->frag_recv, \ + &hdr->hdr_match); \ +} while(0) + +/** + * + */ + +static inline void MCA_PTL_MX_RECV_FRAG_FRAG( + mca_ptl_mx_recv_frag_t* recvfrag, + mca_ptl_base_header_t* hdr) +{ + /* copy into user space */ + if(recvfrag->frag_recv.frag_is_buffered) { + + + } +} + + +static inline void MCA_PTL_MX_RECV_FRAG_ACK( + mca_ptl_mx_recv_frag_t* recvfrag, + mca_ptl_base_header_t* hdr) +{ +} + + #endif