int status = PTL_OK;
- CDEBUG(D_TRACE, "gmnal_cb_recv nal_cb [%p], private[%p], cookie[%p],
- niov[%d], iov [%p], mlen["LPSZ"], rlen["LPSZ"]\n",
+ CDEBUG(D_TRACE, "gmnal_cb_recv nal_cb [%p], private[%p], cookie[%p], "
+ "niov[%d], iov [%p], mlen["LPSZ"], rlen["LPSZ"]\n",
nal_cb, private, cookie, niov, iov, mlen, rlen);
switch(srxd->type) {
int status = PTL_OK;
struct iovec *iovec = NULL, *iovec_dup = NULL;
int i = 0;
+ ptl_kiov_t *kiov_dup = kiov;;
- CDEBUG(D_TRACE, "gmnal_cb_recv_pages nal_cb [%p],private[%p],
- cookie[%p], kniov[%d], kiov [%p], mlen["LPSZ"], rlen["LPSZ"]\n",
+ CDEBUG(D_TRACE, "gmnal_cb_recv_pages nal_cb [%p],private[%p], "
+ "cookie[%p], kniov[%d], kiov [%p], mlen["LPSZ"], rlen["LPSZ"]\n",
nal_cb, private, cookie, kniov, kiov, mlen, rlen);
if (srxd->type == GMNAL_SMALL_MESSAGE) {
CDEBUG(D_INFO, "calling gmnal_small_rx\n");
status = gmnal_small_rx(nal_cb, private, cookie, kniov,
iovec_dup, mlen, rlen);
+ for (i=0; i<kniov; i++) {
+ kunmap(kiov_dup->kiov_page);
+ kiov_dup++;
+ }
PORTAL_FREE(iovec_dup, sizeof(struct iovec)*kniov);
}
niov, iov, len);
} else {
CDEBUG(D_ERROR, "Large message send it is not supported\n");
+ lib_finalize(nal_cb, private, cookie);
return(PTL_FAIL);
gmnal_large_tx(nal_cb, private, cookie, hdr, type, nid, pid,
niov, iov, len);
int i = 0;
gmnal_data_t *nal_data;
struct iovec *iovec = NULL, *iovec_dup = NULL;
+ ptl_kiov_t *kiov_dup = kiov;
CDEBUG(D_TRACE, "gmnal_cb_send_pages nid ["LPU64"] niov[%d] len["LPSZ"]\n", nid, kniov, len);
nal_data = nal_cb->nal_data;
gmnal_large_tx(nal_cb, private, cookie, hdr, type, nid,
pid, kniov, iovec, len);
}
+ for (i=0; i<kniov; i++) {
+ kunmap(kiov_dup->kiov_page);
+ kiov_dup++;
+ }
PORTAL_FREE(iovec_dup, kniov*sizeof(struct iovec));
return(PTL_OK);
}
return(PTL_OK);
}
+int gmnal_cb_callback(nal_cb_t *nal_cb, void *private, lib_eq_t *eq,
+ ptl_event_t *ev)
+{
+
+ if (eq->event_callback != NULL) {
+ CDEBUG(D_INFO, "found callback\n");
+ eq->event_callback(ev);
+ }
+
+ return(PTL_OK);
+}
+
void *gmnal_cb_malloc(nal_cb_t *nal_cb, size_t len)
{
void *ptr = NULL;