#include "gmnal.h"
-int gmnal_cb_recv(lib_nal_t *libnal, void *private, lib_msg_t *cookie,
- unsigned int niov, struct iovec *iov, size_t mlen,
- size_t rlen)
+ptl_err_t gmnal_cb_recv(lib_nal_t *libnal, void *private, lib_msg_t *cookie,
+ unsigned int niov, struct iovec *iov, size_t offset,
+ size_t mlen, size_t rlen)
{
gmnal_srxd_t *srxd = (gmnal_srxd_t*)private;
int status = PTL_OK;
CDEBUG(D_TRACE, "gmnal_cb_recv libnal [%p], private[%p], cookie[%p], "
- "niov[%d], iov [%p], mlen["LPSZ"], rlen["LPSZ"]\n",
- libnal, private, cookie, niov, iov, mlen, rlen);
+ "niov[%d], iov [%p], offset["LPSZ"], mlen["LPSZ"], rlen["LPSZ"]\n",
+ libnal, private, cookie, niov, iov, offset, mlen, rlen);
switch(srxd->type) {
case(GMNAL_SMALL_MESSAGE):
CDEBUG(D_INFO, "gmnal_cb_recv got small message\n");
status = gmnal_small_rx(libnal, private, cookie, niov,
- iov, mlen, rlen);
+ iov, offset, mlen, rlen);
break;
case(GMNAL_LARGE_MESSAGE_INIT):
CDEBUG(D_INFO, "gmnal_cb_recv got large message init\n");
status = gmnal_large_rx(libnal, private, cookie, niov,
- iov, mlen, rlen);
+ iov, offset, mlen, rlen);
}
return(status);
}
-int gmnal_cb_recv_pages(lib_nal_t *libnal, void *private, lib_msg_t *cookie,
- unsigned int kniov, ptl_kiov_t *kiov, size_t mlen,
- size_t rlen)
+ptl_err_t gmnal_cb_recv_pages(lib_nal_t *libnal, void *private, lib_msg_t *cookie,
+ unsigned int kniov, ptl_kiov_t *kiov, size_t offset,
+ size_t mlen, size_t rlen)
{
gmnal_srxd_t *srxd = (gmnal_srxd_t*)private;
int status = PTL_OK;
CDEBUG(D_TRACE, "gmnal_cb_recv_pages libnal [%p],private[%p], "
- "cookie[%p], kniov[%d], kiov [%p], mlen["LPSZ"], rlen["LPSZ"]\n",
- libnal, private, cookie, kniov, kiov, mlen, rlen);
+ "cookie[%p], kniov[%d], kiov [%p], offset["LPSZ"], mlen["LPSZ"], rlen["LPSZ"]\n",
+ libnal, private, cookie, kniov, kiov, offset, mlen, rlen);
if (srxd->type == GMNAL_SMALL_MESSAGE) {
PORTAL_ALLOC(iovec, sizeof(struct iovec)*kniov);
}
CDEBUG(D_INFO, "calling gmnal_small_rx\n");
status = gmnal_small_rx(libnal, private, cookie, kniov,
- iovec_dup, mlen, rlen);
+ iovec_dup, offset, mlen, rlen);
for (i=0; i<kniov; i++) {
kunmap(kiov_dup->kiov_page);
kiov_dup++;
}
-int gmnal_cb_send(lib_nal_t *libnal, void *private, lib_msg_t *cookie,
+ptl_err_t gmnal_cb_send(lib_nal_t *libnal, void *private, lib_msg_t *cookie,
ptl_hdr_t *hdr, int type, ptl_nid_t nid, ptl_pid_t pid,
- unsigned int niov, struct iovec *iov, size_t len)
+ unsigned int niov, struct iovec *iov, size_t offset, size_t len)
{
gmnal_data_t *nal_data;
- CDEBUG(D_TRACE, "gmnal_cb_send niov[%d] len["LPSZ"] nid["LPU64"]\n",
- niov, len, nid);
+ CDEBUG(D_TRACE, "gmnal_cb_send niov[%d] offset["LPSZ"] len["LPSZ"] nid["LPU64"]\n",
+ niov, offset, len, nid);
nal_data = libnal->libnal_data;
if (GMNAL_IS_SMALL_MESSAGE(nal_data, niov, iov, len)) {
CDEBUG(D_INFO, "This is a small message send\n");
gmnal_small_tx(libnal, private, cookie, hdr, type, nid, pid,
- niov, iov, len);
+ niov, iov, offset, len);
} else {
CDEBUG(D_ERROR, "Large message send it is not supported\n");
lib_finalize(libnal, private, cookie, PTL_FAIL);
return(PTL_FAIL);
gmnal_large_tx(libnal, private, cookie, hdr, type, nid, pid,
- niov, iov, len);
+ niov, iov, offset, len);
}
return(PTL_OK);
}
-int gmnal_cb_send_pages(lib_nal_t *libnal, void *private, lib_msg_t *cookie,
+ptl_err_t gmnal_cb_send_pages(lib_nal_t *libnal, void *private, lib_msg_t *cookie,
ptl_hdr_t *hdr, int type, ptl_nid_t nid, ptl_pid_t pid,
- unsigned int kniov, ptl_kiov_t *kiov, size_t len)
+ unsigned int kniov, ptl_kiov_t *kiov, size_t offset, size_t len)
{
int i = 0;
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);
+ CDEBUG(D_TRACE, "gmnal_cb_send_pages nid ["LPU64"] niov[%d] offset["LPSZ"] len["LPSZ"]\n",
+ nid, kniov, offset, len);
nal_data = libnal->libnal_data;
PORTAL_ALLOC(iovec, kniov*sizeof(struct iovec));
iovec_dup = iovec;
kiov++;
}
gmnal_small_tx(libnal, private, cookie, hdr, type, nid,
- pid, kniov, iovec_dup, len);
+ pid, kniov, iovec_dup, offset, len);
} else {
CDEBUG(D_ERROR, "Large message send it is not supported yet\n");
return(PTL_FAIL);
kiov++;
}
gmnal_large_tx(libnal, private, cookie, hdr, type, nid,
- pid, kniov, iovec, len);
+ pid, kniov, iovec, offset, len);
}
for (i=0; i<kniov; i++) {
kunmap(kiov_dup->kiov_page);