Commit | Line | Data |
---|---|---|
d7e09d03 PT |
1 | /* |
2 | * GPL HEADER START | |
3 | * | |
4 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | |
5 | * | |
6 | * This program is free software; you can redistribute it and/or modify | |
7 | * it under the terms of the GNU General Public License version 2 only, | |
8 | * as published by the Free Software Foundation. | |
9 | * | |
10 | * This program is distributed in the hope that it will be useful, but | |
11 | * WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * General Public License version 2 for more details (a copy is included | |
14 | * in the LICENSE file that accompanied this code). | |
15 | * | |
16 | * You should have received a copy of the GNU General Public License | |
17 | * version 2 along with this program; If not, see | |
6a5b99a4 | 18 | * http://www.gnu.org/licenses/gpl-2.0.html |
d7e09d03 | 19 | * |
d7e09d03 PT |
20 | * GPL HEADER END |
21 | */ | |
22 | /* | |
23 | * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. | |
24 | * Use is subject to license terms. | |
25 | */ | |
26 | /* | |
27 | * This file is part of Lustre, http://www.lustre.org/ | |
28 | * Lustre is a trademark of Sun Microsystems, Inc. | |
29 | */ | |
30 | ||
31 | #define DEBUG_SUBSYSTEM S_LNET | |
9fdaf8c0 | 32 | #include "../../include/linux/lnet/lib-lnet.h" |
d7e09d03 | 33 | |
ca4be887 | 34 | static int |
3f13cd9e | 35 | lolnd_send(lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg) |
d7e09d03 | 36 | { |
3f13cd9e EA |
37 | LASSERT(!lntmsg->msg_routing); |
38 | LASSERT(!lntmsg->msg_target_is_router); | |
d7e09d03 PT |
39 | |
40 | return lnet_parse(ni, &lntmsg->msg_hdr, ni->ni_nid, lntmsg, 0); | |
41 | } | |
42 | ||
ca4be887 | 43 | static int |
3f13cd9e | 44 | lolnd_recv(lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg, |
c1b7b8eb | 45 | int delayed, struct iov_iter *to, unsigned int rlen) |
d7e09d03 PT |
46 | { |
47 | lnet_msg_t *sendmsg = private; | |
48 | ||
06ace26e | 49 | if (lntmsg) { /* not discarding */ |
4cae780e AV |
50 | if (sendmsg->msg_iov) |
51 | lnet_copy_iov2iter(to, | |
52 | sendmsg->msg_niov, | |
53 | sendmsg->msg_iov, | |
54 | sendmsg->msg_offset, | |
55 | iov_iter_count(to)); | |
56 | else | |
57 | lnet_copy_kiov2iter(to, | |
58 | sendmsg->msg_niov, | |
59 | sendmsg->msg_kiov, | |
60 | sendmsg->msg_offset, | |
61 | iov_iter_count(to)); | |
d7e09d03 PT |
62 | |
63 | lnet_finalize(ni, lntmsg, 0); | |
64 | } | |
65 | ||
66 | lnet_finalize(ni, sendmsg, 0); | |
67 | return 0; | |
68 | } | |
69 | ||
70 | static int lolnd_instanced; | |
71 | ||
ca4be887 | 72 | static void |
d7e09d03 PT |
73 | lolnd_shutdown(lnet_ni_t *ni) |
74 | { | |
3f13cd9e EA |
75 | CDEBUG(D_NET, "shutdown\n"); |
76 | LASSERT(lolnd_instanced); | |
d7e09d03 PT |
77 | |
78 | lolnd_instanced = 0; | |
79 | } | |
80 | ||
ca4be887 | 81 | static int |
3f13cd9e | 82 | lolnd_startup(lnet_ni_t *ni) |
d7e09d03 | 83 | { |
3f13cd9e EA |
84 | LASSERT(ni->ni_lnd == &the_lolnd); |
85 | LASSERT(!lolnd_instanced); | |
d7e09d03 PT |
86 | lolnd_instanced = 1; |
87 | ||
cb03b88c | 88 | return 0; |
d7e09d03 PT |
89 | } |
90 | ||
91 | lnd_t the_lolnd = { | |
92 | /* .lnd_list = */ {&the_lolnd.lnd_list, &the_lolnd.lnd_list}, | |
93 | /* .lnd_refcount = */ 0, | |
94 | /* .lnd_type = */ LOLND, | |
95 | /* .lnd_startup = */ lolnd_startup, | |
96 | /* .lnd_shutdown = */ lolnd_shutdown, | |
7e7ab095 | 97 | /* .lnt_ctl = */ NULL, |
d7e09d03 PT |
98 | /* .lnd_send = */ lolnd_send, |
99 | /* .lnd_recv = */ lolnd_recv, | |
100 | /* .lnd_eager_recv = */ NULL, | |
101 | /* .lnd_notify = */ NULL, | |
102 | /* .lnd_accept = */ NULL | |
103 | }; |