From 14fd588c10753bb0e38091cb47412053fd17ad97 Mon Sep 17 00:00:00 2001 From: eeb Date: Mon, 5 Sep 2005 19:21:16 +0000 Subject: [PATCH] * Removed nal_{send,recv}_pages() LND APIs (send and receive are passed either VM frags (iov != NULL) or page frags (kiov != NULL) but not both. * Ensure that the order of networks declared in the "networks" and "routes" breaks ties when determining which peer NID to use. --- lnet/include/lnet/api.h | 2 +- lnet/include/lnet/lib-lnet.h | 4 +- lnet/include/lnet/lib-types.h | 84 ++++++++----------- lnet/klnds/gmlnd/gmlnd.h | 16 +--- lnet/klnds/gmlnd/gmlnd_api.c | 2 - lnet/klnds/gmlnd/gmlnd_cb.c | 57 ++----------- lnet/klnds/iiblnd/iiblnd.c | 2 - lnet/klnds/iiblnd/iiblnd.h | 22 ++--- lnet/klnds/iiblnd/iiblnd_cb.c | 76 ++++------------- lnet/klnds/openiblnd/openiblnd.c | 2 - lnet/klnds/openiblnd/openiblnd.h | 26 ++---- lnet/klnds/openiblnd/openiblnd_cb.c | 73 ++++------------- lnet/klnds/qswlnd/qswlnd.c | 2 - lnet/klnds/qswlnd/qswlnd.h | 26 ++---- lnet/klnds/qswlnd/qswlnd_cb.c | 116 ++++++-------------------- lnet/klnds/ralnd/ralnd.c | 2 - lnet/klnds/ralnd/ralnd.h | 24 ++---- lnet/klnds/ralnd/ralnd_cb.c | 70 ++++------------ lnet/klnds/socklnd/socklnd.c | 2 - lnet/klnds/socklnd/socklnd.h | 24 ++---- lnet/klnds/socklnd/socklnd_cb.c | 100 +++++++---------------- lnet/klnds/viblnd/viblnd.c | 2 - lnet/klnds/viblnd/viblnd.h | 24 ++---- lnet/klnds/viblnd/viblnd_cb.c | 68 +++------------- lnet/lnet/api-ni.c | 6 +- lnet/lnet/lib-move.c | 58 ++++++------- lnet/lnet/lo.c | 158 ++++++++++++++++-------------------- lnet/lnet/router.c | 43 ++++++---- lnet/lnet/router.h | 1 + lnet/lnet/router_proc.c | 4 +- lnet/ulnds/socklnd/procbridge.h | 11 +-- lnet/ulnds/socklnd/tcplnd.c | 70 ++++++---------- lnet/utils/.cvsignore | 2 +- 33 files changed, 371 insertions(+), 808 deletions(-) diff --git a/lnet/include/lnet/api.h b/lnet/include/lnet/api.h index 96e39a1..1d8008c 100644 --- a/lnet/include/lnet/api.h +++ b/lnet/include/lnet/api.h @@ -143,6 +143,6 @@ int LNetGet(lnet_handle_md_t md_in, lnet_match_bits_t match_bits_in, lnet_size_t offset_in); -int LNetDist (lnet_handle_ni_t interface, lnet_nid_t nid); +int LNetDist(lnet_handle_ni_t interface, lnet_nid_t nid, int *order); #endif diff --git a/lnet/include/lnet/lib-lnet.h b/lnet/include/lnet/lib-lnet.h index a27ef3f..2fa3fae 100644 --- a/lnet/include/lnet/lib-lnet.h +++ b/lnet/include/lnet/lib-lnet.h @@ -371,7 +371,7 @@ void lnet_fwd_done(ptl_ni_t *ni, kpr_fwd_desc_t *fwd, int error); int lnet_notify(ptl_ni_t *ni, lnet_nid_t peer, int alive, time_t when); /* internal APIs */ -int kpr_distance(lnet_nid_t nid); +int kpr_distance(lnet_nid_t nid, int *order); int kpr_ctl(unsigned int cmd, void *arg); int kpr_add_route(__u32 net, unsigned int hops, lnet_nid_t gateway_nid); int kpr_initialise(void); @@ -440,7 +440,7 @@ extern int ptl_get_apinih (lnet_handle_ni_t *nih); extern ptl_ni_t *lnet_net2ni (__u32 net); extern int ptl_islocalnid (lnet_nid_t nid); -extern int ptl_islocalnet (__u32 net); +extern int ptl_islocalnet (__u32 net, int *orderp); extern void ptl_enq_event_locked (void *private, ptl_eq_t *eq, lnet_event_t *ev); extern void lnet_finalize (ptl_ni_t *ni, void *private, ptl_msg_t *msg, diff --git a/lnet/include/lnet/lib-types.h b/lnet/include/lnet/lib-types.h index fb20337..687ba03 100644 --- a/lnet/include/lnet/lib-types.h +++ b/lnet/include/lnet/lib-types.h @@ -274,51 +274,39 @@ typedef struct ptl_nal unsigned int nal_type; int (*nal_startup) (struct ptl_ni *ni); - void (*nal_shutdown) (struct ptl_ni *ni); - - int (*nal_ctl)(struct ptl_ni *ni, unsigned int cmd, void *arg); - - /* - * send: Sends a preformatted header and payload data to a - * specified remote process. The payload is scattered over 'niov' - * fragments described by iov, starting at 'offset' for 'mlen' - * bytes. - * NB the NAL may NOT overwrite iov. - * 0 on success => NAL has committed to send and will call - * lnet_finalize on completion - */ - int (*nal_send) - (struct ptl_ni *ni, void *private, ptl_msg_t *msg, - ptl_hdr_t *hdr, int type, lnet_process_id_t target, - int routing, unsigned int niov, struct iovec *iov, - size_t offset, size_t mlen); - - /* as send, but with a set of page fragments (NULL if not supported) */ - int (*nal_send_pages) - (struct ptl_ni *ni, void *private, ptl_msg_t *cookie, - ptl_hdr_t *hdr, int type, lnet_process_id_t target, - int routing, unsigned int niov, lnet_kiov_t *iov, - size_t offset, size_t mlen); - /* - * recv: Receives an incoming message from a remote process. The - * payload is to be received into the scattered buffer of 'niov' - * fragments described by iov, starting at 'offset' for 'mlen' - * bytes. Payload bytes after 'mlen' up to 'rlen' are to be - * discarded. - * NB the NAL may NOT overwrite iov. - * 0 on success => NAL has committed to receive and will call - * lnet_finalize on completion - */ - int (*nal_recv) - (struct ptl_ni *ni, void *private, ptl_msg_t * cookie, - unsigned int niov, struct iovec *iov, - size_t offset, size_t mlen, size_t rlen); - - /* as recv, but with a set of page fragments (NULL if not supported) */ - int (*nal_recv_pages) - (struct ptl_ni *ni, void *private, ptl_msg_t * cookie, - unsigned int niov, lnet_kiov_t *iov, - size_t offset, size_t mlen, size_t rlen); + void (*nal_shutdown) (struct ptl_ni *ni); + int (*nal_ctl)(struct ptl_ni *ni, unsigned int cmd, void *arg); + + /* In data movement APIs below, payload buffers are described as a set + * of 'niov' fragments which are... + * EITHER + * in virtual memory (struct iovec *iov != NULL) + * OR + * in pages (kernel only: plt_kiov_t *kiov != NULL). + * The NAL may NOT overwrite these fragment descriptors. + * An 'offset' and may specify a byte offset within the set of + * fragments to start from + */ + + /* Start sending a preformatted header and 'mlen' bytes of payload data + * of to a specified remote process. 'private' is NULL for PUT and GET + * messages; otherwise this is a response to an incoming message and + * 'private' is the 'private' passed to lnet_parse(). Return non-zero + * for immediate failure, otherwise complete later with + * lnet_finalize() */ + int (*nal_send) (struct ptl_ni *ni, void *private, ptl_msg_t *msg, + ptl_hdr_t *hdr, int type, lnet_process_id_t target, + int routing, unsigned int niov, + struct iovec *iov, lnet_kiov_t *kiov, + unsigned int offset, unsigned int mlen); + + /* Start receiving 'mlen' bytes of payload data, skipping the following + * 'rlen' - 'mlen' bytes. 'private' is the 'private' passed to + * lnet_parse(). Return non-zero for immedaite failuyre, otherwise + * complete later with lnet_finalize() */ + int (*nal_recv) (struct ptl_ni *ni, void *private, ptl_msg_t * cookie, + unsigned int niov, struct iovec *iov, lnet_kiov_t *kiov, + unsigned int offset, unsigned int mlen, unsigned int rlen); /* forward a packet for the router */ void (*nal_fwd)(struct ptl_ni *ni, kpr_fwd_desc_t *fwd); @@ -336,7 +324,7 @@ typedef struct ptl_nal typedef struct ptl_ni { struct list_head ni_list; /* chain on apini_nis */ - lnet_nid_t ni_nid; /* interface's NID */ + lnet_nid_t ni_nid; /* interface's NID */ void *ni_data; /* instance-specific data */ ptl_nal_t *ni_nal; /* procedural interface */ int ni_shutdown; /* shutting down? */ @@ -348,8 +336,8 @@ typedef struct /* loopback descriptor */ { unsigned int lod_type; unsigned int lod_niov; - size_t lod_offset; - size_t lod_nob; + unsigned int lod_offset; + unsigned int lod_nob; union { struct iovec *iov; lnet_kiov_t *kiov; diff --git a/lnet/klnds/gmlnd/gmlnd.h b/lnet/klnds/gmlnd/gmlnd.h index 3411e59..1297a24 100644 --- a/lnet/klnds/gmlnd/gmlnd.h +++ b/lnet/klnds/gmlnd/gmlnd.h @@ -222,21 +222,13 @@ void gmnal_shutdown(ptl_ni_t *ni); /* gmnal_cb.c */ int gmnal_recv(ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg, - unsigned int niov, struct iovec *iov, - size_t offset, size_t mlen, size_t rlen); -int gmnal_recv_pages(ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg, - unsigned int nkiov, lnet_kiov_t *kiov, - size_t offset, size_t mlen, size_t rlen); + unsigned int niov, struct iovec *iov, lnet_kiov_t *kiov, + unsigned int offset, unsigned int mlen, unsigned int rlen); int gmnal_send(ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg, ptl_hdr_t *hdr, int type, lnet_process_id_t tgt, int routing, - unsigned int niov, struct iovec *iov, - size_t offset, size_t len); -int gmnal_send_pages(ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg, - ptl_hdr_t *hdr, int type, - lnet_process_id_t tgt, int routing, - unsigned int nkiov, lnet_kiov_t *kiov, - size_t offset, size_t len); + unsigned int niov, struct iovec *iov, lnet_kiov_t *kiov, + unsigned int offset, unsigned int len); /* gmnal_util.c */ void gmnal_free_ltxbufs(gmnal_ni_t *gmni); diff --git a/lnet/klnds/gmlnd/gmlnd_api.c b/lnet/klnds/gmlnd/gmlnd_api.c index 4e811d9..3d48510 100644 --- a/lnet/klnds/gmlnd/gmlnd_api.c +++ b/lnet/klnds/gmlnd/gmlnd_api.c @@ -32,9 +32,7 @@ ptl_nal_t gmnal_nal = .nal_shutdown = gmnal_shutdown, .nal_ctl = gmnal_ctl, .nal_send = gmnal_send, - .nal_send_pages = gmnal_send_pages, .nal_recv = gmnal_recv, - .nal_recv_pages = gmnal_recv_pages, }; gmnal_ni_t *the_gmni = NULL; diff --git a/lnet/klnds/gmlnd/gmlnd_cb.c b/lnet/klnds/gmlnd/gmlnd_cb.c index fd5f2bf..a8af94f 100644 --- a/lnet/klnds/gmlnd/gmlnd_cb.c +++ b/lnet/klnds/gmlnd/gmlnd_cb.c @@ -28,9 +28,9 @@ #include "gmlnd.h" int -gmnal_recvmsg(ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg, - unsigned int niov, struct iovec *iov, lnet_kiov_t *kiov, - size_t offset, size_t mlen) +gmnal_recv(ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg, + unsigned int niov, struct iovec *iov, lnet_kiov_t *kiov, + unsigned int offset, unsigned int mlen, unsigned int rlen) { gmnal_ni_t *gmni = ni->ni_data; gmnal_rx_t *rx = (gmnal_rx_t*)private; @@ -58,29 +58,10 @@ gmnal_recvmsg(ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg, } int -gmnal_recv(ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg, - unsigned int niov, struct iovec *iov, - size_t offset, size_t mlen, size_t rlen) -{ - return gmnal_recvmsg(ni, private, ptlmsg, - niov, iov, NULL, offset, mlen); -} - -int -gmnal_recv_pages(ptl_ni_t *ni, void *private, - ptl_msg_t *ptlmsg, - unsigned int nkiov, lnet_kiov_t *kiov, - size_t offset, size_t mlen, size_t rlen) -{ - return gmnal_recvmsg(ni, private, ptlmsg, - nkiov, NULL, kiov, offset, mlen); -} - -int -gmnal_sendmsg(ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg, - ptl_hdr_t *hdr, int type, lnet_process_id_t pid, - unsigned int niov, struct iovec *iov, lnet_kiov_t *kiov, - size_t offset, size_t len) +gmnal_send(ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg, + ptl_hdr_t *hdr, int type, lnet_process_id_t pid, int routing, + unsigned int niov, struct iovec *iov, lnet_kiov_t *kiov, + unsigned int offset, unsigned int len) { gmnal_ni_t *gmni = ni->ni_data; gm_status_t gmrc; @@ -153,27 +134,3 @@ gmnal_sendmsg(ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg, return 0; } - -int -gmnal_send(ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg, - ptl_hdr_t *hdr, int type, - lnet_process_id_t pid, int routing, - unsigned int niov, struct iovec *iov, - size_t offset, size_t len) -{ - return gmnal_sendmsg(ni, private, ptlmsg, - hdr, type, pid, - niov, iov, NULL, offset, len); -} - -int -gmnal_send_pages(ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg, - ptl_hdr_t *hdr, int type, - lnet_process_id_t pid, int routing, - unsigned int nkiov, lnet_kiov_t *kiov, - size_t offset, size_t len) -{ - return gmnal_sendmsg(ni, private, ptlmsg, - hdr, type, pid, - nkiov, NULL, kiov, offset, len); -} diff --git a/lnet/klnds/iiblnd/iiblnd.c b/lnet/klnds/iiblnd/iiblnd.c index 407f8b7..899f489 100644 --- a/lnet/klnds/iiblnd/iiblnd.c +++ b/lnet/klnds/iiblnd/iiblnd.c @@ -29,9 +29,7 @@ ptl_nal_t kibnal_nal = { .nal_shutdown = kibnal_shutdown, .nal_ctl = kibnal_ctl, .nal_send = kibnal_send, - .nal_send_pages = kibnal_send_pages, .nal_recv = kibnal_recv, - .nal_recv_pages = kibnal_recv_pages, }; lnet_handle_ni_t kibnal_ni; diff --git a/lnet/klnds/iiblnd/iiblnd.h b/lnet/klnds/iiblnd/iiblnd.h index 330b08e..3fef233 100644 --- a/lnet/klnds/iiblnd/iiblnd.h +++ b/lnet/klnds/iiblnd/iiblnd.h @@ -862,21 +862,13 @@ extern int kibnal_startup (ptl_ni_t *ni); extern void kibnal_shutdown (ptl_ni_t *ni); extern int kibnal_ctl(ptl_ni_t *ni, unsigned int cmd, void *arg); int kibnal_send (ptl_ni_t *ni, void *private, - ptl_msg_t *ptlmsg, ptl_hdr_t *hdr, - int type, lnet_process_id_t tgt, int routing, - unsigned int payload_niov, struct iovec *payload_iov, - size_t payload_offset, size_t payload_nob); -int kibnal_send_pages (ptl_ni_t *ni, void *private, - ptl_msg_t *ptlmsg, ptl_hdr_t *hdr, - int type, lnet_process_id_t tgt, int routing, - unsigned int payload_niov, lnet_kiov_t *payload_kiov, - size_t payload_offset, size_t payload_nob); + ptl_msg_t *ptlmsg, ptl_hdr_t *hdr, + int type, lnet_process_id_t tgt, int routing, + unsigned int niov, struct iovec *iov, lnet_kiov_t *kiov, + unsigned int offset, unsigned int nob); extern int kibnal_recv (ptl_ni_t *ni, void *private, ptl_msg_t *msg, - unsigned int niov, struct iovec *iov, - size_t offset, size_t mlen, size_t rlen); -extern int kibnal_recv_pages (ptl_ni_t *ni, void *private, ptl_msg_t *msg, - unsigned int niov, lnet_kiov_t *kiov, - size_t offset, size_t mlen, size_t rlen); + unsigned int niov, struct iovec *iov, lnet_kiov_t *kiov, + unsigned int offset, unsigned int mlen, unsigned int rlen); extern kib_peer_t *kibnal_create_peer (lnet_nid_t nid); extern void kibnal_destroy_peer (kib_peer_t *peer); @@ -905,7 +897,7 @@ extern void kibnal_start_active_rdma (int type, int status, kib_rx_t *rx, ptl_msg_t *ptlmsg, unsigned int niov, struct iovec *iov, lnet_kiov_t *kiov, - size_t offset, size_t nob); + unsigned int offset, unsigned int nob); void kibnal_ca_async_callback (void *ca_arg, IB_EVENT_RECORD *ev); void kibnal_ca_callback (void *ca_arg, void *cq_arg); diff --git a/lnet/klnds/iiblnd/iiblnd_cb.c b/lnet/klnds/iiblnd/iiblnd_cb.c index c8c36d0..4467777 100644 --- a/lnet/klnds/iiblnd/iiblnd_cb.c +++ b/lnet/klnds/iiblnd/iiblnd_cb.c @@ -1331,7 +1331,7 @@ kibnal_start_active_rdma (int type, int status, kib_rx_t *rx, ptl_msg_t *ptlmsg, unsigned int niov, struct iovec *iov, lnet_kiov_t *kiov, - size_t offset, size_t nob) + unsigned int offset, unsigned int nob) { kib_msg_t *rxmsg = rx->rx_msg; kib_msg_t *txmsg; @@ -1488,19 +1488,19 @@ init_tx: kibnal_queue_tx(tx, rx->rx_conn); } -static int -kibnal_sendmsg(ptl_ni_t *ni, - void *private, - ptl_msg_t *ptlmsg, - ptl_hdr_t *hdr, - int type, - lnet_process_id_t target, - int routing, - unsigned int payload_niov, - struct iovec *payload_iov, - lnet_kiov_t *payload_kiov, - size_t payload_offset, - size_t payload_nob) +int +kibnal_send(ptl_ni_t *ni, + void *private, + ptl_msg_t *ptlmsg, + ptl_hdr_t *hdr, + int type, + lnet_process_id_t target, + int routing, + unsigned int payload_niov, + struct iovec *payload_iov, + lnet_kiov_t *payload_kiov, + unsigned int payload_offset, + unsigned int payload_nob) { kib_msg_t *ibmsg; kib_tx_t *tx; @@ -1616,33 +1616,9 @@ kibnal_sendmsg(ptl_ni_t *ni, } int -kibnal_send (ptl_ni_t *ni, void *private, ptl_msg_t *cookie, - ptl_hdr_t *hdr, int type, lnet_process_id_t tgt, int routing, - unsigned int payload_niov, struct iovec *payload_iov, - size_t payload_offset, size_t payload_len) -{ - return (kibnal_sendmsg(ni, private, cookie, - hdr, type, tgt, routing, - payload_niov, payload_iov, NULL, - payload_offset, payload_len)); -} - -int -kibnal_send_pages (ptl_ni_t *ni, void *private, ptl_msg_t *cookie, - ptl_hdr_t *hdr, int type, lnet_process_id_t tgt, int routing, - unsigned int payload_niov, lnet_kiov_t *payload_kiov, - size_t payload_offset, size_t payload_len) -{ - return (kibnal_sendmsg(ni, private, cookie, - hdr, type, tgt, routing, - payload_niov, NULL, payload_kiov, - payload_offset, payload_len)); -} - -static int -kibnal_recvmsg (ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg, - unsigned int niov, struct iovec *iov, lnet_kiov_t *kiov, - size_t offset, size_t mlen, size_t rlen) +kibnal_recv (ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg, + unsigned int niov, struct iovec *iov, lnet_kiov_t *kiov, + unsigned int offset, unsigned int mlen, unsigned int rlen) { kib_rx_t *rx = private; kib_msg_t *rxmsg = rx->rx_msg; @@ -1693,24 +1669,6 @@ kibnal_recvmsg (ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg, } } -int -kibnal_recv (ptl_ni_t *ni, void *private, ptl_msg_t *msg, - unsigned int niov, struct iovec *iov, - size_t offset, size_t mlen, size_t rlen) -{ - return (kibnal_recvmsg (ni, private, msg, niov, iov, NULL, - offset, mlen, rlen)); -} - -int -kibnal_recv_pages (ptl_ni_t *ni, void *private, ptl_msg_t *msg, - unsigned int niov, lnet_kiov_t *kiov, - size_t offset, size_t mlen, size_t rlen) -{ - return (kibnal_recvmsg (ni, private, msg, niov, NULL, kiov, - offset, mlen, rlen)); -} - /***************************************************************************** * the rest of this file concerns connection management. active connetions * start with connect_peer, passive connections start with passive_callback. diff --git a/lnet/klnds/openiblnd/openiblnd.c b/lnet/klnds/openiblnd/openiblnd.c index c5a7009..a39b28e 100644 --- a/lnet/klnds/openiblnd/openiblnd.c +++ b/lnet/klnds/openiblnd/openiblnd.c @@ -29,9 +29,7 @@ ptl_nal_t kibnal_nal = { .nal_shutdown = kibnal_shutdown, .nal_ctl = kibnal_ctl, .nal_send = kibnal_send, - .nal_send_pages = kibnal_send_pages, .nal_recv = kibnal_recv, - .nal_recv_pages = kibnal_recv_pages, .nal_accept = kibnal_accept, }; diff --git a/lnet/klnds/openiblnd/openiblnd.h b/lnet/klnds/openiblnd/openiblnd.h index 9bcdd3a..7916265 100644 --- a/lnet/klnds/openiblnd/openiblnd.h +++ b/lnet/klnds/openiblnd/openiblnd.h @@ -507,23 +507,13 @@ int kibnal_startup (ptl_ni_t *ni); void kibnal_shutdown (ptl_ni_t *ni); int kibnal_ctl(ptl_ni_t *ni, unsigned int cmd, void *arg); int kibnal_send (ptl_ni_t *ni, void *private, - ptl_msg_t *ptlmsg, ptl_hdr_t *hdr, - int type, lnet_process_id_t tgt, int routing, - unsigned int payload_niov, struct iovec *payload_iov, - size_t payload_offset, size_t payload_nob); -int kibnal_send_pages (ptl_ni_t *ni, void *private, - ptl_msg_t *ptlmsg, ptl_hdr_t *hdr, - int type, lnet_process_id_t tgt, int routing, - unsigned int payload_niov, lnet_kiov_t *payload_kiov, - size_t payload_offset, size_t payload_nob); -int kibnal_recv(ptl_ni_t *ni, void *private, - ptl_msg_t *ptlmsg, unsigned int niov, - struct iovec *iov, size_t offset, - size_t mlen, size_t rlen); -int kibnal_recv_pages(ptl_ni_t *ni, void *private, - ptl_msg_t *ptlmsg, unsigned int niov, - lnet_kiov_t *kiov, size_t offset, - size_t mlen, size_t rlen); + ptl_msg_t *ptlmsg, ptl_hdr_t *hdr, + int type, lnet_process_id_t tgt, int routing, + unsigned int niov, struct iovec *iov, lnet_kiov_t *kiov, + unsigned int offset, unsigned int nob); +int kibnal_recv(ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg, + unsigned int niov, struct iovec *iov, lnet_kiov_t *kiov, + unsigned int offset, unsigned int mlen, unsigned int rlen); int kibnal_accept(ptl_ni_t *ni, struct socket *sock); extern void kibnal_init_msg(kib_msg_t *msg, int type, int body_nob); @@ -535,7 +525,7 @@ extern int kibnal_make_svcqry (kib_conn_t *conn); extern void kibnal_free_acceptsock (kib_acceptsock_t *as); extern int kibnal_listener_procint(ctl_table *table, int write, struct file *filp, void *buffer, - size_t *lenp); + unisgned int *lenp); extern int kibnal_create_peer (kib_peer_t **peerp, lnet_nid_t nid); extern void kibnal_put_peer (kib_peer_t *peer); extern int kibnal_add_persistent_peer(lnet_nid_t nid, __u32 ip, int port); diff --git a/lnet/klnds/openiblnd/openiblnd_cb.c b/lnet/klnds/openiblnd/openiblnd_cb.c index d29558e..4c10d2a 100644 --- a/lnet/klnds/openiblnd/openiblnd_cb.c +++ b/lnet/klnds/openiblnd/openiblnd_cb.c @@ -1225,18 +1225,18 @@ kibnal_start_active_rdma (int type, int status, } int -kibnal_sendmsg(ptl_ni_t *ni, - void *private, - ptl_msg_t *ptlmsg, - ptl_hdr_t *hdr, - int type, - lnet_process_id_t target, - int routing, - unsigned int payload_niov, - struct iovec *payload_iov, - lnet_kiov_t *payload_kiov, - int payload_offset, - int payload_nob) +kibnal_send(ptl_ni_t *ni, + void *private, + ptl_msg_t *ptlmsg, + ptl_hdr_t *hdr, + int type, + lnet_process_id_t target, + int routing, + unsigned int payload_niov, + struct iovec *payload_iov, + lnet_kiov_t *payload_kiov, + unsigned int payload_offset, + unsigned int payload_nob) { kib_msg_t *ibmsg; kib_tx_t *tx; @@ -1350,35 +1350,10 @@ kibnal_sendmsg(ptl_ni_t *ni, kibnal_launch_tx(tx, target.nid); return (0); } - -int -kibnal_send (ptl_ni_t *ni, void *private, ptl_msg_t *cookie, - ptl_hdr_t *hdr, int type, lnet_process_id_t tgt, int routing, - unsigned int payload_niov, struct iovec *payload_iov, - size_t payload_offset, size_t payload_len) -{ - return (kibnal_sendmsg(ni, private, cookie, - hdr, type, tgt, routing, - payload_niov, payload_iov, NULL, - payload_offset, payload_len)); -} - -int -kibnal_send_pages (ptl_ni_t *ni, void *private, ptl_msg_t *cookie, - ptl_hdr_t *hdr, int type, lnet_process_id_t tgt, int routing, - unsigned int payload_niov, lnet_kiov_t *payload_kiov, - size_t payload_offset, size_t payload_len) -{ - return (kibnal_sendmsg(ni, private, cookie, - hdr, type, tgt, routing, - payload_niov, NULL, payload_kiov, - payload_offset, payload_len)); -} - int -kibnal_recvmsg (ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg, - unsigned int niov, struct iovec *iov, lnet_kiov_t *kiov, - int offset, int mlen, int rlen) +kibnal_recv (ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg, + unsigned int niov, struct iovec *iov, lnet_kiov_t *kiov, + unsigned int offset, unsigned int mlen, unsigned int rlen) { kib_rx_t *rx = private; kib_msg_t *rxmsg = rx->rx_msg; @@ -1430,24 +1405,6 @@ kibnal_recvmsg (ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg, } int -kibnal_recv (ptl_ni_t *ni, void *private, ptl_msg_t *msg, - unsigned int niov, struct iovec *iov, - size_t offset, size_t mlen, size_t rlen) -{ - return (kibnal_recvmsg (ni, private, msg, niov, iov, NULL, - offset, mlen, rlen)); -} - -int -kibnal_recv_pages (ptl_ni_t *ni, void *private, ptl_msg_t *msg, - unsigned int niov, lnet_kiov_t *kiov, - size_t offset, size_t mlen, size_t rlen) -{ - return (kibnal_recvmsg (ni, private, msg, niov, NULL, kiov, - offset, mlen, rlen)); -} - -int kibnal_thread_start (int (*fn)(void *arg), void *arg) { long pid = kernel_thread (fn, arg, 0); diff --git a/lnet/klnds/qswlnd/qswlnd.c b/lnet/klnds/qswlnd/qswlnd.c index 2a0fd75..85ea75e 100644 --- a/lnet/klnds/qswlnd/qswlnd.c +++ b/lnet/klnds/qswlnd/qswlnd.c @@ -29,9 +29,7 @@ ptl_nal_t kqswnal_nal = .nal_shutdown = kqswnal_shutdown, .nal_ctl = kqswnal_ctl, .nal_send = kqswnal_send, - .nal_send_pages = kqswnal_send_pages, .nal_recv = kqswnal_recv, - .nal_recv_pages = kqswnal_recv_pages, .nal_fwd = kqswnal_fwd_packet, }; diff --git a/lnet/klnds/qswlnd/qswlnd.h b/lnet/klnds/qswlnd/qswlnd.h index bd22164..c1b7693 100644 --- a/lnet/klnds/qswlnd/qswlnd.h +++ b/lnet/klnds/qswlnd/qswlnd.h @@ -375,25 +375,13 @@ int kqswnal_startup (ptl_ni_t *ni); void kqswnal_shutdown (ptl_ni_t *ni); int kqswnal_ctl (ptl_ni_t *ni, unsigned int cmd, void *arg); int kqswnal_send (ptl_ni_t *ni, void *private, - ptl_msg_t *ptlmsg, ptl_hdr_t *hdr, - int type, lnet_process_id_t tgt, int routing, - unsigned int payload_niov, - struct iovec *payload_iov, - size_t payload_offset, size_t payload_nob); -int kqswnal_send_pages (ptl_ni_t *ni, void *private, - ptl_msg_t *ptlmsg, ptl_hdr_t *hdr, - int type, lnet_process_id_t tgt, int routing, - unsigned int payload_niov, - lnet_kiov_t *payload_kiov, - size_t payload_offset, size_t payload_nob); -int kqswnal_recv(ptl_ni_t *ni, void *private, - ptl_msg_t *ptlmsg, unsigned int niov, - struct iovec *iov, size_t offset, - size_t mlen, size_t rlen); -int kqswnal_recv_pages(ptl_ni_t *ni, void *private, - ptl_msg_t *ptlmsg, unsigned int niov, - lnet_kiov_t *kiov, size_t offset, - size_t mlen, size_t rlen); + ptl_msg_t *ptlmsg, ptl_hdr_t *hdr, + int type, lnet_process_id_t tgt, int routing, + unsigned int niov, struct iovec *iov, lnet_kiov_t *kiov, + unsigned int offset, unsigned int nob); +int kqswnal_recv(ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg, + unsigned int niov, struct iovec *iov, lnet_kiov_t *kiov, + unsigned int offset, unsigned int mlen, unsigned int rlen); int kqswnal_tunables_init(void); void kqswnal_tunables_fini(void); diff --git a/lnet/klnds/qswlnd/qswlnd_cb.c b/lnet/klnds/qswlnd/qswlnd_cb.c index 4748851..e7ec44b 100644 --- a/lnet/klnds/qswlnd/qswlnd_cb.c +++ b/lnet/klnds/qswlnd/qswlnd_cb.c @@ -845,7 +845,7 @@ kqswnal_rdma_fetch_complete (EP_RXD *rxd) int kqswnal_rdma (kqswnal_rx_t *krx, ptl_msg_t *ptlmsg, int type, int niov, struct iovec *iov, lnet_kiov_t *kiov, - size_t offset, size_t len) + unsigned int offset, unsigned int len) { kqswnal_remotemd_t *rmd; kqswnal_tx_t *ktx; @@ -1000,19 +1000,19 @@ kqswnal_rdma (kqswnal_rx_t *krx, ptl_msg_t *ptlmsg, int type, return (rc); } -static int -kqswnal_sendmsg (ptl_ni_t *ni, - void *private, - ptl_msg_t *ptlmsg, - ptl_hdr_t *hdr, - int type, - lnet_process_id_t target, - int routing, - unsigned int payload_niov, - struct iovec *payload_iov, - lnet_kiov_t *payload_kiov, - size_t payload_offset, - size_t payload_nob) +int +kqswnal_send (ptl_ni_t *ni, + void *private, + ptl_msg_t *ptlmsg, + ptl_hdr_t *hdr, + int type, + lnet_process_id_t target, + int routing, + unsigned int payload_niov, + struct iovec *payload_iov, + lnet_kiov_t *payload_kiov, + unsigned int payload_offset, + unsigned int payload_nob) { kqswnal_tx_t *ktx; int rc; @@ -1254,42 +1254,6 @@ kqswnal_sendmsg (ptl_ni_t *ni, return (rc == 0 ? 0 : -EIO); } -int -kqswnal_send (ptl_ni_t *ni, - void *private, - ptl_msg_t *ptlmsg, - ptl_hdr_t *hdr, - int type, - lnet_process_id_t tgt, - int routing, - unsigned int payload_niov, - struct iovec *payload_iov, - size_t payload_offset, - size_t payload_nob) -{ - return (kqswnal_sendmsg (ni, private, ptlmsg, hdr, type, tgt, routing, - payload_niov, payload_iov, NULL, - payload_offset, payload_nob)); -} - -int -kqswnal_send_pages (ptl_ni_t *ni, - void *private, - ptl_msg_t *ptlmsg, - ptl_hdr_t *hdr, - int type, - lnet_process_id_t tgt, - int routing, - unsigned int payload_niov, - lnet_kiov_t *payload_kiov, - size_t payload_offset, - size_t payload_nob) -{ - return (kqswnal_sendmsg (ni, private, ptlmsg, hdr, type, tgt, routing, - payload_niov, NULL, payload_kiov, - payload_offset, payload_nob)); -} - void kqswnal_fwd_packet (ptl_ni_t *ni, kpr_fwd_desc_t *fwd) { @@ -1650,16 +1614,16 @@ kqswnal_csum_error (kqswnal_rx_t *krx, int ishdr) } #endif -static int -kqswnal_recvmsg (ptl_ni_t *ni, - void *private, - ptl_msg_t *ptlmsg, - unsigned int niov, - struct iovec *iov, - lnet_kiov_t *kiov, - size_t offset, - size_t mlen, - size_t rlen) +int +kqswnal_recv (ptl_ni_t *ni, + void *private, + ptl_msg_t *ptlmsg, + unsigned int niov, + struct iovec *iov, + lnet_kiov_t *kiov, + unsigned int offset, + unsigned int mlen, + unsigned int rlen) { kqswnal_rx_t *krx = (kqswnal_rx_t *)private; char *buffer = page_address(krx->krx_kiov[0].kiov_page); @@ -1675,7 +1639,7 @@ kqswnal_recvmsg (ptl_ni_t *ni, kqsw_csum_t senders_csum; kqsw_csum_t payload_csum = 0; kqsw_csum_t hdr_csum = kqsw_csum(0, hdr, sizeof(*hdr)); - size_t csum_len = mlen; + unsigned int csum_len = mlen; int csum_frags = 0; int csum_nob = 0; static atomic_t csum_counter; @@ -1819,36 +1783,6 @@ kqswnal_recvmsg (ptl_ni_t *ni, } int -kqswnal_recv(ptl_ni_t *ni, - void *private, - ptl_msg_t *ptlmsg, - unsigned int niov, - struct iovec *iov, - size_t offset, - size_t mlen, - size_t rlen) -{ - return (kqswnal_recvmsg(ni, private, ptlmsg, - niov, iov, NULL, - offset, mlen, rlen)); -} - -int -kqswnal_recv_pages (ptl_ni_t *ni, - void *private, - ptl_msg_t *ptlmsg, - unsigned int niov, - lnet_kiov_t *kiov, - size_t offset, - size_t mlen, - size_t rlen) -{ - return (kqswnal_recvmsg(ni, private, ptlmsg, - niov, NULL, kiov, - offset, mlen, rlen)); -} - -int kqswnal_thread_start (int (*fn)(void *arg), void *arg) { long pid = kernel_thread (fn, arg, 0); diff --git a/lnet/klnds/ralnd/ralnd.c b/lnet/klnds/ralnd/ralnd.c index b10153c..5effbf9 100644 --- a/lnet/klnds/ralnd/ralnd.c +++ b/lnet/klnds/ralnd/ralnd.c @@ -31,9 +31,7 @@ ptl_nal_t kranal_nal = { .nal_shutdown = kranal_shutdown, .nal_ctl = kranal_ctl, .nal_send = kranal_send, - .nal_send_pages = kranal_send_pages, .nal_recv = kranal_recv, - .nal_recv_pages = kranal_recv_pages, .nal_accept = kranal_accept, }; diff --git a/lnet/klnds/ralnd/ralnd.h b/lnet/klnds/ralnd/ralnd.h index b6d0e29..9d91db4 100644 --- a/lnet/klnds/ralnd/ralnd.h +++ b/lnet/klnds/ralnd/ralnd.h @@ -452,23 +452,13 @@ int kranal_startup (ptl_ni_t *ni); void kranal_shutdown (ptl_ni_t *ni); int kranal_ctl(ptl_ni_t *ni, unsigned int cmd, void *arg); int kranal_send (ptl_ni_t *ni, void *private, - ptl_msg_t *ptlmsg, ptl_hdr_t *hdr, - int type, lnet_process_id_t tgt, int routing, - unsigned int payload_niov, struct iovec *payload_iov, - size_t payload_offset, size_t payload_nob); -int kranal_send_pages (ptl_ni_t *ni, void *private, - ptl_msg_t *ptlmsg, ptl_hdr_t *hdr, - int type, lnet_process_id_t tgt, int routing, - unsigned int payload_niov, lnet_kiov_t *payload_kiov, - size_t payload_offset, size_t payload_nob); -int kranal_recv(ptl_ni_t *ni, void *private, - ptl_msg_t *ptlmsg, unsigned int niov, - struct iovec *iov, size_t offset, - size_t mlen, size_t rlen); -int kranal_recv_pages(ptl_ni_t *ni, void *private, - ptl_msg_t *ptlmsg, unsigned int niov, - lnet_kiov_t *kiov, size_t offset, - size_t mlen, size_t rlen); + ptl_msg_t *ptlmsg, ptl_hdr_t *hdr, + int type, lnet_process_id_t tgt, int routing, + unsigned int niov, struct iovec *iov, lnet_kiov_t *kiov, + unsigned int offset, unsigned int nob); +int kranal_recv(ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg, + unsigned int niov, struct iovec *iov, lnet_kiov_t *kiov, + unsigned int offset, unsigned int mlen, unsigned int rlen); int kranal_accept(ptl_ni_t *ni, struct socket *sock); extern void kranal_free_acceptsock (kra_acceptsock_t *ras); diff --git a/lnet/klnds/ralnd/ralnd_cb.c b/lnet/klnds/ralnd/ralnd_cb.c index 208db6c..36a20d5 100644 --- a/lnet/klnds/ralnd/ralnd_cb.c +++ b/lnet/klnds/ralnd/ralnd_cb.c @@ -614,18 +614,18 @@ kranal_consume_rxmsg (kra_conn_t *conn, void *buffer, int nob) } int -kranal_do_send (ptl_ni_t *ni, - void *private, - ptl_msg_t *ptlmsg, - ptl_hdr_t *hdr, - int type, - lnet_process_id_t target, - int routing, - unsigned int niov, - struct iovec *iov, - lnet_kiov_t *kiov, - int offset, - int nob) +kranal_send (ptl_ni_t *ni, + void *private, + ptl_msg_t *ptlmsg, + ptl_hdr_t *hdr, + int type, + lnet_process_id_t target, + int routing, + unsigned int niov, + struct iovec *iov, + lnet_kiov_t *kiov, + unsigned int offset, + unsigned int nob) { kra_conn_t *conn; kra_tx_t *tx; @@ -795,31 +795,9 @@ kranal_do_send (ptl_ni_t *ni, } int -kranal_send (ptl_ni_t *ni, void *private, ptl_msg_t *cookie, - ptl_hdr_t *hdr, int type, lnet_process_id_t tgt, int routing, - unsigned int niov, struct iovec *iov, - size_t offset, size_t len) -{ - return kranal_do_send(ni, private, cookie, - hdr, type, tgt, routing, - niov, iov, NULL, offset, len); -} - -int -kranal_send_pages (ptl_ni_t *ni, void *private, ptl_msg_t *cookie, - ptl_hdr_t *hdr, int type, lnet_process_id_t tgt, int routing, - unsigned int niov, lnet_kiov_t *kiov, - size_t offset, size_t len) -{ - return kranal_do_send(ni, private, cookie, - hdr, type, tgt, routing, - niov, NULL, kiov, offset, len); -} - -int -kranal_do_recv (ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg, - unsigned int niov, struct iovec *iov, lnet_kiov_t *kiov, - int offset, int mlen, int rlen) +kranal_recv (ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg, + unsigned int niov, struct iovec *iov, lnet_kiov_t *kiov, + unsigned int offset, unsigned int mlen, unsigned int rlen) { kra_conn_t *conn = private; kra_msg_t *rxmsg = conn->rac_rxmsg; @@ -907,24 +885,6 @@ kranal_do_recv (ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg, } int -kranal_recv (ptl_ni_t *ni, void *private, ptl_msg_t *msg, - unsigned int niov, struct iovec *iov, - size_t offset, size_t mlen, size_t rlen) -{ - return kranal_do_recv(ni, private, msg, niov, iov, NULL, - offset, mlen, rlen); -} - -int -kranal_recv_pages (ptl_ni_t *ni, void *private, ptl_msg_t *msg, - unsigned int niov, lnet_kiov_t *kiov, - size_t offset, size_t mlen, size_t rlen) -{ - return kranal_do_recv(ni, private, msg, niov, NULL, kiov, - offset, mlen, rlen); -} - -int kranal_thread_start (int(*fn)(void *arg), void *arg) { long pid = kernel_thread(fn, arg, 0); diff --git a/lnet/klnds/socklnd/socklnd.c b/lnet/klnds/socklnd/socklnd.c index 72c2a66..8fd7e50 100644 --- a/lnet/klnds/socklnd/socklnd.c +++ b/lnet/klnds/socklnd/socklnd.c @@ -31,9 +31,7 @@ ptl_nal_t ksocknal_nal = { .nal_shutdown = ksocknal_shutdown, .nal_ctl = ksocknal_ctl, .nal_send = ksocknal_send, - .nal_send_pages = ksocknal_send_pages, .nal_recv = ksocknal_recv, - .nal_recv_pages = ksocknal_recv_pages, .nal_fwd = ksocknal_fwd_packet, .nal_notify = ksocknal_notify, .nal_accept = ksocknal_accept, diff --git a/lnet/klnds/socklnd/socklnd.h b/lnet/klnds/socklnd/socklnd.h index 0e7d2b7..b37e9c5 100644 --- a/lnet/klnds/socklnd/socklnd.h +++ b/lnet/klnds/socklnd/socklnd.h @@ -480,23 +480,13 @@ int ksocknal_startup (ptl_ni_t *ni); void ksocknal_shutdown (ptl_ni_t *ni); int ksocknal_ctl(ptl_ni_t *ni, unsigned int cmd, void *arg); int ksocknal_send (ptl_ni_t *ni, void *private, - ptl_msg_t *ptlmsg, ptl_hdr_t *hdr, - int type, lnet_process_id_t tgt, int routing, - unsigned int payload_niov, struct iovec *payload_iov, - size_t payload_offset, size_t payload_nob); -int ksocknal_send_pages (ptl_ni_t *ni, void *private, - ptl_msg_t *ptlmsg, ptl_hdr_t *hdr, - int type, lnet_process_id_t tgt, int routing, - unsigned int payload_niov, lnet_kiov_t *payload_kiov, - size_t payload_offset, size_t payload_nob); -int ksocknal_recv(ptl_ni_t *ni, void *private, - ptl_msg_t *ptlmsg, unsigned int niov, - struct iovec *iov, size_t offset, - size_t mlen, size_t rlen); -int ksocknal_recv_pages(ptl_ni_t *ni, void *private, - ptl_msg_t *ptlmsg, unsigned int niov, - lnet_kiov_t *kiov, size_t offset, - size_t mlen, size_t rlen); + ptl_msg_t *ptlmsg, ptl_hdr_t *hdr, + int type, lnet_process_id_t tgt, int routing, + unsigned int niov, struct iovec *iov, lnet_kiov_t *kiov, + unsigned int offset, unsigned int nob); +int ksocknal_recv(ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg, + unsigned int niov, struct iovec *iov, lnet_kiov_t *kiov, + unsigned int offset, unsigned int mlen, unsigned int rlen); int ksocknal_accept(ptl_ni_t *ni, struct socket *sock); extern int ksocknal_add_peer(ptl_ni_t *ni, lnet_process_id_t id, __u32 ip, int port); diff --git a/lnet/klnds/socklnd/socklnd_cb.c b/lnet/klnds/socklnd/socklnd_cb.c index dd4276b..4754dcf 100644 --- a/lnet/klnds/socklnd/socklnd_cb.c +++ b/lnet/klnds/socklnd/socklnd_cb.c @@ -796,17 +796,18 @@ ksocknal_launch_packet (ptl_ni_t *ni, ksock_tx_t *tx, lnet_process_id_t id) } int -ksocknal_sendmsg(ptl_ni_t *ni, - void *private, - ptl_msg_t *cookie, - ptl_hdr_t *hdr, - int type, - lnet_process_id_t target, - unsigned int payload_niov, - struct iovec *payload_iov, - lnet_kiov_t *payload_kiov, - size_t payload_offset, - size_t payload_nob) +ksocknal_send(ptl_ni_t *ni, + void *private, + ptl_msg_t *cookie, + ptl_hdr_t *hdr, + int type, + lnet_process_id_t target, + int routing, + unsigned int payload_niov, + struct iovec *payload_iov, + lnet_kiov_t *payload_kiov, + unsigned int payload_offset, + unsigned int payload_nob) { ksock_ltx_t *ltx; int desc_size; @@ -891,30 +892,6 @@ ksocknal_sendmsg(ptl_ni_t *ni, return (-EIO); } -int -ksocknal_send (ptl_ni_t *ni, void *private, ptl_msg_t *cookie, - ptl_hdr_t *hdr, int type, lnet_process_id_t tgt, int routing, - unsigned int payload_niov, struct iovec *payload_iov, - size_t payload_offset, size_t payload_len) -{ - return (ksocknal_sendmsg(ni, private, cookie, - hdr, type, tgt, - payload_niov, payload_iov, NULL, - payload_offset, payload_len)); -} - -int -ksocknal_send_pages (ptl_ni_t *ni, void *private, ptl_msg_t *cookie, - ptl_hdr_t *hdr, int type, lnet_process_id_t tgt, int routing, - unsigned int payload_niov, lnet_kiov_t *payload_kiov, - size_t payload_offset, size_t payload_len) -{ - return (ksocknal_sendmsg(ni, private, cookie, - hdr, type, tgt, - payload_niov, NULL, payload_kiov, - payload_offset, payload_len)); -} - void ksocknal_fwd_packet (ptl_ni_t *ni, kpr_fwd_desc_t *fwd) { @@ -1377,8 +1354,8 @@ ksocknal_process_receive (ksock_conn_t *conn) int ksocknal_recv (ptl_ni_t *ni, void *private, ptl_msg_t *msg, - unsigned int niov, struct iovec *iov, - size_t offset, size_t mlen, size_t rlen) + unsigned int niov, struct iovec *iov, lnet_kiov_t *kiov, + unsigned int offset, unsigned int mlen, unsigned int rlen) { ksock_conn_t *conn = (ksock_conn_t *)private; @@ -1389,41 +1366,22 @@ ksocknal_recv (ptl_ni_t *ni, void *private, ptl_msg_t *msg, conn->ksnc_rx_nob_wanted = mlen; conn->ksnc_rx_nob_left = rlen; - conn->ksnc_rx_nkiov = 0; - conn->ksnc_rx_kiov = NULL; - conn->ksnc_rx_iov = conn->ksnc_rx_iov_space.iov; - conn->ksnc_rx_niov = - lnet_extract_iov(PTL_MD_MAX_IOV, conn->ksnc_rx_iov, - niov, iov, offset, mlen); - - LASSERT (mlen == - lnet_iov_nob (conn->ksnc_rx_niov, conn->ksnc_rx_iov) + - lnet_kiov_nob (conn->ksnc_rx_nkiov, conn->ksnc_rx_kiov)); - - return (0); -} - -int -ksocknal_recv_pages (ptl_ni_t *ni, void *private, ptl_msg_t *msg, - unsigned int niov, lnet_kiov_t *kiov, - size_t offset, size_t mlen, size_t rlen) -{ - ksock_conn_t *conn = (ksock_conn_t *)private; - - LASSERT (mlen <= rlen); - LASSERT (niov <= PTL_MD_MAX_IOV); + if (mlen == 0 || iov != NULL) { + conn->ksnc_rx_nkiov = 0; + conn->ksnc_rx_kiov = NULL; + conn->ksnc_rx_iov = conn->ksnc_rx_iov_space.iov; + conn->ksnc_rx_niov = + lnet_extract_iov(PTL_MD_MAX_IOV, conn->ksnc_rx_iov, + niov, iov, offset, mlen); + } else { + conn->ksnc_rx_niov = 0; + conn->ksnc_rx_iov = NULL; + conn->ksnc_rx_kiov = conn->ksnc_rx_iov_space.kiov; + conn->ksnc_rx_nkiov = + lnet_extract_kiov(PTL_MD_MAX_IOV, conn->ksnc_rx_kiov, + niov, kiov, offset, mlen); + } - conn->ksnc_cookie = msg; - conn->ksnc_rx_nob_wanted = mlen; - conn->ksnc_rx_nob_left = rlen; - - conn->ksnc_rx_niov = 0; - conn->ksnc_rx_iov = NULL; - conn->ksnc_rx_kiov = conn->ksnc_rx_iov_space.kiov; - conn->ksnc_rx_nkiov = - lnet_extract_kiov(PTL_MD_MAX_IOV, conn->ksnc_rx_kiov, - niov, kiov, offset, mlen); - LASSERT (mlen == lnet_iov_nob (conn->ksnc_rx_niov, conn->ksnc_rx_iov) + lnet_kiov_nob (conn->ksnc_rx_nkiov, conn->ksnc_rx_kiov)); diff --git a/lnet/klnds/viblnd/viblnd.c b/lnet/klnds/viblnd/viblnd.c index 1b0353b..2038528 100644 --- a/lnet/klnds/viblnd/viblnd.c +++ b/lnet/klnds/viblnd/viblnd.c @@ -30,9 +30,7 @@ ptl_nal_t kibnal_nal = { .nal_shutdown = kibnal_shutdown, .nal_ctl = kibnal_ctl, .nal_send = kibnal_send, - .nal_send_pages = kibnal_send_pages, .nal_recv = kibnal_recv, - .nal_recv_pages = kibnal_recv_pages, }; kib_data_t kibnal_data; diff --git a/lnet/klnds/viblnd/viblnd.h b/lnet/klnds/viblnd/viblnd.h index 9a07cc9..d8c7021 100644 --- a/lnet/klnds/viblnd/viblnd.h +++ b/lnet/klnds/viblnd/viblnd.h @@ -407,23 +407,13 @@ int kibnal_startup (ptl_ni_t *ni); void kibnal_shutdown (ptl_ni_t *ni); int kibnal_ctl(ptl_ni_t *ni, unsigned int cmd, void *arg); int kibnal_send (ptl_ni_t *ni, void *private, - ptl_msg_t *ptlmsg, ptl_hdr_t *hdr, - int type, lnet_process_id_t tgt, int routing, - unsigned int payload_niov, struct iovec *payload_iov, - size_t payload_offset, size_t payload_nob); -int kibnal_send_pages (ptl_ni_t *ni, void *private, - ptl_msg_t *ptlmsg, ptl_hdr_t *hdr, - int type, lnet_process_id_t tgt, int routing, - unsigned int payload_niov, lnet_kiov_t *payload_kiov, - size_t payload_offset, size_t payload_nob); -int kibnal_recv(ptl_ni_t *ni, void *private, - ptl_msg_t *ptlmsg, unsigned int niov, - struct iovec *iov, size_t offset, - size_t mlen, size_t rlen); -int kibnal_recv_pages(ptl_ni_t *ni, void *private, - ptl_msg_t *ptlmsg, unsigned int niov, - lnet_kiov_t *kiov, size_t offset, - size_t mlen, size_t rlen); + ptl_msg_t *ptlmsg, ptl_hdr_t *hdr, + int type, lnet_process_id_t tgt, int routing, + unsigned int niov, struct iovec *iov, lnet_kiov_t *kiov, + unsigned int offset, unsigned int nob); +int kibnal_recv(ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg, + unsigned int niov, struct iovec *iov, lnet_kiov_t *kiov, + unsigned int offset, unsigned int mlen, unsigned int rlen); extern void kibnal_init_msg(kib_msg_t *msg, int type, int body_nob); extern void kibnal_pack_msg(kib_msg_t *msg, int credits, lnet_nid_t dstnid, diff --git a/lnet/klnds/viblnd/viblnd_cb.c b/lnet/klnds/viblnd/viblnd_cb.c index d01c33b..94ca2fc 100644 --- a/lnet/klnds/viblnd/viblnd_cb.c +++ b/lnet/klnds/viblnd/viblnd_cb.c @@ -1373,18 +1373,18 @@ kibnal_launch_tx (kib_tx_t *tx, lnet_nid_t nid) } int -kibnal_sendmsg(ptl_ni_t *ni, - void *private, - ptl_msg_t *ptlmsg, - ptl_hdr_t *hdr, - int type, - lnet_process_id_t target, - int routing, - unsigned int payload_niov, - struct iovec *payload_iov, - lnet_kiov_t *payload_kiov, - int payload_offset, - int payload_nob) +kibnal_send(ptl_ni_t *ni, + void *private, + ptl_msg_t *ptlmsg, + ptl_hdr_t *hdr, + int type, + lnet_process_id_t target, + int routing, + unsigned int payload_niov, + struct iovec *payload_iov, + lnet_kiov_t *payload_kiov, + unsigned int payload_offset, + unsigned int payload_nob) { kib_msg_t *ibmsg; kib_tx_t *tx; @@ -1610,33 +1610,9 @@ kibnal_sendmsg(ptl_ni_t *ni, } int -kibnal_send (ptl_ni_t *ni, void *private, ptl_msg_t *cookie, - ptl_hdr_t *hdr, int type, lnet_process_id_t tgt, int routing, - unsigned int payload_niov, struct iovec *payload_iov, - size_t payload_offset, size_t payload_len) -{ - return (kibnal_sendmsg(ni, private, cookie, - hdr, type, tgt, routing, - payload_niov, payload_iov, NULL, - payload_offset, payload_len)); -} - -int -kibnal_send_pages (ptl_ni_t *ni, void *private, ptl_msg_t *cookie, - ptl_hdr_t *hdr, int type, lnet_process_id_t tgt, int routing, - unsigned int payload_niov, lnet_kiov_t *payload_kiov, - size_t payload_offset, size_t payload_len) -{ - return (kibnal_sendmsg(ni, private, cookie, - hdr, type, tgt, routing, - payload_niov, NULL, payload_kiov, - payload_offset, payload_len)); -} - -int kibnal_recvmsg (ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg, unsigned int niov, struct iovec *iov, lnet_kiov_t *kiov, - size_t offset, int mlen, int rlen) + unsigned int offset, unsigned int mlen, unsigned int rlen) { kib_rx_t *rx = private; kib_msg_t *rxmsg = rx->rx_msg; @@ -1741,24 +1717,6 @@ kibnal_recvmsg (ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg, } int -kibnal_recv (ptl_ni_t *ni, void *private, ptl_msg_t *msg, - unsigned int niov, struct iovec *iov, - size_t offset, size_t mlen, size_t rlen) -{ - return (kibnal_recvmsg (ni, private, msg, niov, iov, NULL, - offset, mlen, rlen)); -} - -int -kibnal_recv_pages (ptl_ni_t *ni, void *private, ptl_msg_t *msg, - unsigned int niov, lnet_kiov_t *kiov, - size_t offset, size_t mlen, size_t rlen) -{ - return (kibnal_recvmsg (ni, private, msg, niov, NULL, kiov, - offset, mlen, rlen)); -} - -int kibnal_thread_start (int (*fn)(void *arg), void *arg) { long pid = kernel_thread (fn, arg, 0); diff --git a/lnet/lnet/api-ni.c b/lnet/lnet/api-ni.c index 638c927..1982edf 100644 --- a/lnet/lnet/api-ni.c +++ b/lnet/lnet/api-ni.c @@ -614,11 +614,12 @@ ptl_islocalnid (lnet_nid_t nid) } int -ptl_islocalnet (__u32 net) +ptl_islocalnet (__u32 net, int *orderp) { struct list_head *tmp; ptl_ni_t *ni; unsigned long flags; + int order = 0; int islocal = 0; PTL_LOCK(flags); @@ -628,8 +629,11 @@ ptl_islocalnet (__u32 net) if (PTL_NIDNET(ni->ni_nid) == net) { islocal = 1; + if (orderp != NULL) + *orderp = order; break; } + order++; } PTL_UNLOCK(flags); diff --git a/lnet/lnet/lib-move.c b/lnet/lnet/lib-move.c index 98cdacd..cf3a3d1 100644 --- a/lnet/lnet/lib-move.c +++ b/lnet/lnet/lib-move.c @@ -565,19 +565,20 @@ int ptl_recv (ptl_ni_t *ni, void *private, ptl_msg_t *msg, ptl_libmd_t *md, lnet_size_t offset, lnet_size_t mlen, lnet_size_t rlen) { - if (mlen == 0) - return ((ni->ni_nal->nal_recv)(ni, private, msg, - 0, NULL, - offset, mlen, rlen)); - - if ((md->md_options & LNET_MD_KIOV) == 0) - return ((ni->ni_nal->nal_recv)(ni, private, msg, - md->md_niov, md->md_iov.iov, - offset, mlen, rlen)); - - return ((ni->ni_nal->nal_recv_pages)(ni, private, msg, - md->md_niov, md->md_iov.kiov, - offset, mlen, rlen)); + int niov = 0; + struct iovec *iov = NULL; + lnet_kiov_t *kiov = NULL; + + if (mlen != 0) { + niov = md->md_niov; + if (((md->md_options) & LNET_MD_KIOV) != 0) + kiov = md->md_iov.kiov; + else + iov = md->md_iov.iov; + } + + return (ni->ni_nal->nal_recv)(ni, private, msg, + niov, iov, kiov, offset, mlen, rlen); } int @@ -587,6 +588,9 @@ ptl_send (ptl_ni_t *ni, void *private, ptl_msg_t *msg, { unsigned long flags; lnet_nid_t gw_nid; + int niov = 0; + struct iovec *iov = NULL; + lnet_kiov_t *kiov = NULL; int routing = 0; int rc; @@ -631,21 +635,17 @@ ptl_send (ptl_ni_t *ni, void *private, ptl_msg_t *msg, } target.nid = gw_nid; + + if (len != 0) { + niov = md->md_niov; + if (((md->md_options) & LNET_MD_KIOV) != 0) + kiov = md->md_iov.kiov; + else + iov = md->md_iov.iov; + } - if (len == 0) - rc = (ni->ni_nal->nal_send)(ni, private, msg, hdr, - type, target, routing, - 0, NULL, offset, len); - else if ((md->md_options & LNET_MD_KIOV) == 0) - rc = (ni->ni_nal->nal_send)(ni, private, msg, hdr, - type, target, routing, - md->md_niov, md->md_iov.iov, - offset, len); - else - rc = (ni->ni_nal->nal_send_pages)(ni, private, msg, hdr, - type, target, routing, - md->md_niov, md->md_iov.kiov, - offset, len); + rc = (ni->ni_nal->nal_send)(ni, private, msg, hdr, type, target, routing, + niov, iov, kiov, offset, len); ptl_ni_decref(ni); /* lose ref from lnet_lookup */ return rc; @@ -1372,10 +1372,10 @@ LNetGet(lnet_handle_md_t mdh, lnet_process_id_t target, } int -LNetDist (lnet_handle_ni_t interface, lnet_nid_t nid) +LNetDist (lnet_handle_ni_t interface, lnet_nid_t nid, int *order) { LASSERT (lnet_apini.apini_init); LASSERT (lnet_apini.apini_refcount > 0); - return kpr_distance(nid); + return kpr_distance(nid, order); } diff --git a/lnet/lnet/lo.c b/lnet/lnet/lo.c index 67c10e9..ff8d15a 100644 --- a/lnet/lnet/lo.c +++ b/lnet/lnet/lo.c @@ -22,28 +22,38 @@ #include int -lonal_send (ptl_ni_t *ni, - void *private, - ptl_msg_t *ptlmsg, - ptl_hdr_t *hdr, - int type, +lonal_send (ptl_ni_t *ni, + void *private, + ptl_msg_t *ptlmsg, + ptl_hdr_t *hdr, + int type, lnet_process_id_t target, - int routing, - unsigned int payload_niov, - struct iovec *payload_iov, - size_t payload_offset, - size_t payload_nob) + int routing, + unsigned int payload_niov, + struct iovec *payload_iov, + lnet_kiov_t *payload_kiov, + unsigned int payload_offset, + unsigned int payload_nob) { - lo_desc_t lod = { - .lod_type = LOD_IOV, - .lod_niov = payload_niov, - .lod_offset = payload_offset, - .lod_nob = payload_nob, - .lod_iov = { .iov = payload_iov } }; + lo_desc_t lod = { .lod_niov = payload_niov, + .lod_offset = payload_offset, + .lod_nob = payload_nob}; int rc; LASSERT (!routing); + if (payload_nob == 0 || payload_iov != NULL) { + lod.lod_type = LOD_IOV; + lod.lod_iov.iov = payload_iov; + } else { +#ifndef __KERNEL__ + LBUG(); +#else + lod.lod_type = LOD_KIOV; + lod.lod_iov.kiov = payload_kiov; +#endif + } + rc = lnet_parse(ni, hdr, &lod); if (rc == 0) lnet_finalize(ni, private, ptlmsg, 0); @@ -51,23 +61,16 @@ lonal_send (ptl_ni_t *ni, return rc; } -int -lonal_recv(ptl_ni_t *ni, - void *private, - ptl_msg_t *ptlmsg, - unsigned int niov, - struct iovec *iov, - size_t offset, - size_t mlen, - size_t rlen) +void +lonal_copy_iov(lo_desc_t *lod, + unsigned int niov, + struct iovec *iov, + unsigned int offset, + unsigned int mlen) { - lo_desc_t *lod = (lo_desc_t *)private; - - /* I only handle mapped->mapped matches */ - LASSERT(mlen == 0 || lod->lod_type == LOD_IOV); - - if (mlen == 0) - goto out; + /* I only copy iovec->iovec */ + LASSERT(lod->lod_type == LOD_IOV); + LASSERT(mlen > 0); while (offset >= iov->iov_len) { offset -= iov->iov_len; @@ -116,65 +119,27 @@ lonal_recv(ptl_ni_t *ni, mlen -= fraglen; } while (mlen > 0); - - out: - lnet_finalize(ni, private, ptlmsg, 0); - return 0; } -#ifdef __KERNEL__ -int -lonal_send_pages (ptl_ni_t *ni, - void *private, - ptl_msg_t *ptlmsg, - ptl_hdr_t *hdr, - int type, - lnet_process_id_t target, - int routing, - unsigned int payload_niov, - lnet_kiov_t *payload_kiov, - size_t payload_offset, - size_t payload_nob) -{ - lo_desc_t lod = { - .lod_type = LOD_KIOV, - .lod_niov = payload_niov, - .lod_offset = payload_offset, - .lod_nob = payload_nob, - .lod_iov = { .kiov = payload_kiov } }; - int rc; - - LASSERT (!routing); - - rc = lnet_parse(ni, hdr, &lod); - if (rc == 0) - lnet_finalize(ni, private, ptlmsg, 0); - - return rc; -} - -int -lonal_recv_pages(ptl_ni_t *ni, - void *private, - ptl_msg_t *ptlmsg, - unsigned int niov, - lnet_kiov_t *kiov, - size_t offset, - size_t mlen, - size_t rlen) +void +lonal_copy_kiov(lo_desc_t *lod, + unsigned int niov, + lnet_kiov_t *kiov, + unsigned int offset, + unsigned int mlen) { +#ifndef __KERNEL__ + LBUG(); +#else void *srcaddr = NULL; void *dstaddr = NULL; unsigned long srcfrag = 0; unsigned long dstfrag = 0; unsigned long fraglen; - lo_desc_t *lod = (lo_desc_t *)private; - - /* I only handle unmapped->unmapped matches */ - LASSERT(mlen == 0 || lod->lod_type == LOD_KIOV); - if (mlen == 0) - goto out; + /* I only copy kiov->kiov */ + LASSERT(lod->lod_type == LOD_KIOV); + LASSERT(mlen > 0); while (offset >= kiov->kiov_len) { offset -= kiov->kiov_len; @@ -242,12 +207,33 @@ lonal_recv_pages(ptl_ni_t *ni, if (srcaddr != NULL) kunmap(lod->lod_iov.kiov->kiov_page); +#endif +} + +int +lonal_recv(ptl_ni_t *ni, + void *private, + ptl_msg_t *ptlmsg, + unsigned int niov, + struct iovec *iov, + lnet_kiov_t *kiov, + unsigned int offset, + unsigned int mlen, + unsigned int rlen) +{ + lo_desc_t *lod = (lo_desc_t *)private; + + if (mlen != 0) { + if (iov != NULL) + lonal_copy_iov(lod, niov, iov, offset, mlen); + else + lonal_copy_kiov(lod, niov, kiov, offset, mlen); + } - out: lnet_finalize(ni, private, ptlmsg, 0); return 0; } -#endif + static int lonal_instanced; @@ -276,10 +262,6 @@ ptl_nal_t ptl_lonal = { .nal_shutdown = lonal_shutdown, .nal_send = lonal_send, .nal_recv = lonal_recv, -#ifdef __KERNEL__ - .nal_send_pages = lonal_send_pages, - .nal_recv_pages = lonal_recv_pages, -#endif }; ptl_ni_t *ptl_loni; diff --git a/lnet/lnet/router.c b/lnet/lnet/router.c index 9a91a373..8c259b9 100644 --- a/lnet/lnet/router.c +++ b/lnet/lnet/router.c @@ -240,6 +240,7 @@ lnet_lookup (ptl_ni_t **nip, lnet_nid_t target_nid, int nob) ptl_ni_t *gwni = NULL; kpr_gateway_entry_t *ge = NULL; __u32 target_net = PTL_NIDNET(target_nid); + __u32 gateway_net; /* Return the NID I must send to, to reach 'target_nid' */ @@ -292,31 +293,32 @@ lnet_lookup (ptl_ni_t **nip, lnet_nid_t target_nid, int nob) if (!re->kpre_gateway->kpge_alive) /* gateway down */ continue; - + + gateway_net = PTL_NIDNET(re->kpre_gateway->kpge_nid); + if (ni != NULL) { /* local ni determined */ - if (PTL_NIDNET(ni->ni_nid) != /* gateway not on ni's net */ - PTL_NIDNET(re->kpre_gateway->kpge_nid)) + if (gateway_net != /* gateway not on ni's net */ + PTL_NIDNET(ni->ni_nid)) continue; if (ge != NULL && kpr_ge_isbetter (ge, re->kpre_gateway)) continue; - } else if (ge != NULL) { /* another gateway */ + } else if (!ptl_islocalnet(gateway_net, NULL)) { + continue; /* not on a local net */ + } else if (ge != NULL) { + /* already got 1 candidate gateway */ LASSERT (gwni != NULL); - /* we don't allow gateways on different nets to get - * into the route table */ - LASSERT (PTL_NIDNET(gwni->ni_nid) == - PTL_NIDNET(re->kpre_gateway->kpge_nid)); if (kpr_ge_isbetter(ge, re->kpre_gateway)) continue; } else { LASSERT (gwni == NULL); + gwni = lnet_net2ni(gateway_net); - gwni = lnet_net2ni(PTL_NIDNET(re->kpre_gateway->kpge_nid)); - if (gwni == NULL) /* gateway not on a local net */ + if (gwni == NULL) /* local nets changed */ continue; } @@ -351,26 +353,30 @@ lnet_lookup (ptl_ni_t **nip, lnet_nid_t target_nid, int nob) } int -kpr_distance (lnet_nid_t nid) +kpr_distance (lnet_nid_t nid, int *orderp) { unsigned long flags; struct list_head *e; kpr_net_entry_t *ne; __u32 net = PTL_NIDNET(nid); int dist = -ENETUNREACH; - - if (ptl_islocalnet(net)) + int order = 0; + + if (ptl_islocalnet(net, orderp)) return 0; read_lock_irqsave(&kpr_state.kpr_rwlock, flags); list_for_each (e, &kpr_state.kpr_nets) { ne = list_entry (e, kpr_net_entry_t, kpne_list); - + if (ne->kpne_net == net) { dist = ne->kpne_hops; + if (orderp != NULL) + *orderp = order; break; } + order++; } read_unlock_irqrestore(&kpr_state.kpr_rwlock, flags); @@ -822,8 +828,8 @@ kpr_get_route (int idx, __u32 *net, __u32 *hops, *hops = ne->kpne_hops; *gateway_nid = ge->kpge_nid; *alive = ge->kpge_alive; - *ignored = !ptl_islocalnet(ne->kpne_net) && - ptl_islocalnet(ge->kpge_nid); + *ignored = ptl_islocalnet(ne->kpne_net, NULL) || + !ptl_islocalnet(PTL_NIDNET(ge->kpge_nid), NULL); read_unlock_irqrestore(&kpr_state.kpr_rwlock, flags); @@ -980,8 +986,11 @@ kpr_ctl(unsigned int cmd, void *arg) } int -kpr_distance(lnet_nid_t nid) +kpr_distance(lnet_nid_t nid, int *orderp) { + if (!lnet_net2ni(PTL_NIDNET(nid), orderp)) + return -ENETUNREACH; + return 0; } diff --git a/lnet/lnet/router.h b/lnet/lnet/router.h index 7fb71cd..4078b1f 100644 --- a/lnet/lnet/router.h +++ b/lnet/lnet/router.h @@ -36,6 +36,7 @@ typedef struct atomic_t kpge_weight; time_t kpge_timestamp; int kpge_alive; + int kpge_checked; int kpge_refcount; lnet_nid_t kpge_nid; } kpr_gateway_entry_t; diff --git a/lnet/lnet/router_proc.c b/lnet/lnet/router_proc.c index d696772..50549ae 100644 --- a/lnet/lnet/router_proc.c +++ b/lnet/lnet/router_proc.c @@ -216,8 +216,8 @@ kpr_seq_routes_show (struct seq_file *s, void *iter) hops = sri->sri_net->kpne_hops; nid = sri->sri_route->kpre_gateway->kpge_nid; alive = sri->sri_route->kpre_gateway->kpge_alive; - ignored = !ptl_islocalnet(sri->sri_net->kpne_net) && - ptl_islocalnet(sri->sri_route->kpre_gateway->kpge_nid); + ignored = ptl_islocalnet(sri->sri_net->kpne_net, NULL) || + !ptl_islocalnet(sri->sri_route->kpre_gateway->kpge_nid, NULL); read_unlock_irqrestore(&kpr_state.kpr_rwlock, flags); diff --git a/lnet/ulnds/socklnd/procbridge.h b/lnet/ulnds/socklnd/procbridge.h index 974a336..f322116 100644 --- a/lnet/ulnds/socklnd/procbridge.h +++ b/lnet/ulnds/socklnd/procbridge.h @@ -44,12 +44,13 @@ extern int procbridge_startup (ptl_ni_t *); extern void procbridge_shutdown (ptl_ni_t *); extern int tcpnal_send(ptl_ni_t *ni, void *private, ptl_msg_t *cookie, - ptl_hdr_t *hdr, int type, lnet_process_id_t target, - int routing, unsigned int niov, struct iovec *iov, - size_t offset, size_t len); + ptl_hdr_t *hdr, int type, lnet_process_id_t target, + int routing, unsigned int niov, + struct iovec *iov, ptl_kiov_t *kiov, + unsigned int offset, unsigned int len); int tcpnal_recv(ptl_ni_t *ni, void *private, ptl_msg_t *cookie, - unsigned int niov, struct iovec *iov, - size_t offset, size_t mlen, size_t rlen); + unsigned int niov, struct iovec *iov, ptl_kiov_t *kiov, + unsigned int offset, unsigned int mlen, unsigned int rlen); diff --git a/lnet/ulnds/socklnd/tcplnd.c b/lnet/ulnds/socklnd/tcplnd.c index b266496..33ac67a 100644 --- a/lnet/ulnds/socklnd/tcplnd.c +++ b/lnet/ulnds/socklnd/tcplnd.c @@ -40,30 +40,18 @@ #include #endif -/* Function: tcpnal_send - * Arguments: ni: pointer to NAL instance - * private: unused - * cookie: passed back to the portals library - * hdr: pointer to the portals header - * nid: destination node - * pid: destination process - * data: body of the message - * len: length of the body - * Returns: zero on success - * - * sends a packet to the peer, after insuring that a connection exists - */ -int tcpnal_send(ptl_ni_t *ni, - void *private, - ptl_msg_t *cookie, - ptl_hdr_t *hdr, - int type, - lnet_process_id_t target, - int routing, - unsigned int niov, - struct iovec *iov, - size_t offset, - size_t len) +int tcpnal_send(ptl_ni_t *ni, + void *private, + ptl_msg_t *cookie, + ptl_hdr_t *hdr, + int type, + lnet_process_id_t target, + int routing, + unsigned int niov, + struct iovec *iov, + ptl_kiov_t kiov, + unsigned int offset, + unsigned int len) { connection c; bridge b=(bridge)ni->ni_data; @@ -92,6 +80,7 @@ int tcpnal_send(ptl_ni_t *ni, nonstandard */ LASSERT (niov <= 256); + LASSERT (len == 0 || iov != NULL); /* I don't understand kiovs */ tiov[0].iov_base = hdr; tiov[0].iov_len = sizeof(ptl_hdr_t); @@ -142,38 +131,27 @@ int tcpnal_send(ptl_ni_t *ni, } -/* Function: tcpnal_recv - * Arguments: ptl_ni_t *: pointer to NAL instance - * void *private: connection pointer passed through - * lnet_parse() - * ptl_msg_t *cookie: passed back to portals library - * user_ptr data: pointer to the destination buffer - * size_t mlen: length of the body - * size_t rlen: length of data in the network - * Returns: zero on success - * - * blocking read of the requested data. must drain out the - * difference of mainpulated and requested lengths from the network - */ -int tcpnal_recv(ptl_ni_t *ni, - void *private, - ptl_msg_t *cookie, - unsigned int niov, - struct iovec *iov, - size_t offset, - size_t mlen, - size_t rlen) +int tcpnal_recv(ptl_ni_t *ni, + void *private, + ptl_msg_t *cookie, + unsigned int niov, + struct iovec *iov, + plt_kiov_t *kiov, + unsigned int offset, + unsigned int mlen, + unsigned int rlen) { struct iovec tiov[256]; int ntiov; int i; - if (!niov) + if (mlen == 0) goto finalize; LASSERT(mlen); LASSERT(rlen); LASSERT(rlen >= mlen); + LASSERT(iov != NULL); /* I don't understand kiovs */ ntiov = lnet_extract_iov(256, tiov, niov, iov, offset, mlen); diff --git a/lnet/utils/.cvsignore b/lnet/utils/.cvsignore index e2a0d44..13c2683 100644 --- a/lnet/utils/.cvsignore +++ b/lnet/utils/.cvsignore @@ -6,5 +6,5 @@ ptlctl .deps routerstat wirecheck -gmnalnid +gmlndnid .*.cmd -- 1.8.3.1