Whamcloud - gitweb
b=8021
authorpjkirner <pjkirner>
Fri, 16 Sep 2005 15:33:32 +0000 (15:33 +0000)
committerpjkirner <pjkirner>
Fri, 16 Sep 2005 15:33:32 +0000 (15:33 +0000)
* Landing EEB's b_newconfig_rdmarouting branch

55 files changed:
lnet/include/libcfs/darwin/darwin-sync.h
lnet/include/libcfs/kp30.h
lnet/include/libcfs/libcfs.h
lnet/include/lnet/lib-lnet.h
lnet/include/lnet/lib-types.h
lnet/include/lnet/linux/lib-types.h
lnet/include/lnet/socklnd.h
lnet/klnds/gmlnd/gmlnd.h
lnet/klnds/gmlnd/gmlnd_api.c
lnet/klnds/gmlnd/gmlnd_cb.c
lnet/klnds/gmlnd/gmlnd_comm.c
lnet/klnds/gmlnd/gmlnd_utils.c
lnet/klnds/iiblnd/iiblnd.c
lnet/klnds/iiblnd/iiblnd.h
lnet/klnds/iiblnd/iiblnd_cb.c
lnet/klnds/openiblnd/openiblnd.c
lnet/klnds/openiblnd/openiblnd.h
lnet/klnds/openiblnd/openiblnd_cb.c
lnet/klnds/ptllnd/ptllnd.c
lnet/klnds/qswlnd/qswlnd.c
lnet/klnds/qswlnd/qswlnd.h
lnet/klnds/qswlnd/qswlnd_cb.c
lnet/klnds/ralnd/ralnd.c
lnet/klnds/ralnd/ralnd.h
lnet/klnds/ralnd/ralnd_cb.c
lnet/klnds/socklnd/socklnd.c
lnet/klnds/socklnd/socklnd.h
lnet/klnds/socklnd/socklnd_cb.c
lnet/klnds/socklnd/socklnd_lib-darwin.c
lnet/klnds/socklnd/socklnd_lib-linux.c
lnet/klnds/viblnd/viblnd.c
lnet/klnds/viblnd/viblnd.h
lnet/klnds/viblnd/viblnd_cb.c
lnet/klnds/viblnd/viblnd_wire.h
lnet/libcfs/nidstrings.c
lnet/lnet/acceptor.c
lnet/lnet/api-ni.c
lnet/lnet/config.c
lnet/lnet/lib-eq.c
lnet/lnet/lib-md.c
lnet/lnet/lib-me.c
lnet/lnet/lib-move.c
lnet/lnet/lib-msg.c
lnet/lnet/lo.c
lnet/lnet/module.c
lnet/lnet/router.c
lnet/lnet/router.h
lnet/lnet/router_proc.c
lnet/ulnds/socklnd/bridge.h
lnet/ulnds/socklnd/connection.c
lnet/ulnds/socklnd/procapi.c
lnet/ulnds/socklnd/procbridge.h
lnet/ulnds/socklnd/tcplnd.c
lnet/utils/portals.c
lnet/utils/wirecheck.c

index 3374f43..b97c5ba 100644 (file)
@@ -237,7 +237,7 @@ void ksleep_wake_nr(struct ksleep_chan *chan, int nr);
        .flags   = 0,                                   \
        .event   = 0,                                   \
        .hits    = 0,                                   \
-       .linkage = PTL_LIST_HEAD_INIT(name.linkage),    \
+       .linkage = CFS_LIST_HEAD_INIT(name.linkage),    \
        .magic   = KSLEEP_LINK_MAGIC                    \
 }
 
index 3501be1..fc13061 100644 (file)
@@ -220,10 +220,10 @@ void libcfs_debug_dumplog(void);
 #define CLASSERT(cond) ({ switch(42) { case (cond): case 0: break; } })
 
 /* support decl needed both by kernel and liblustre */
-int        libcfs_isknown_nal(int type);
-char      *libcfs_nal2modname(int type);
-char      *libcfs_nal2str(int type);
-int        libcfs_str2nal(char *str);
+int        libcfs_isknown_lnd(int type);
+char      *libcfs_lnd2modname(int type);
+char      *libcfs_lnd2str(int type);
+int        libcfs_str2lnd(char *str);
 char      *libcfs_net2str(__u32 net);
 char      *libcfs_nid2str(lnet_nid_t nid);
 __u32      libcfs_str2net(char *str);
@@ -238,8 +238,8 @@ void       libcfs_setnet0alias(int type);
 #define PTL_MKNID(net,addr)   ((((__u64)(net))<<32)|((__u64)(addr)))
 /* how net encodes type:number */
 #define PTL_NETNUM(net)       ((net) & 0xffff)
-#define PTL_NETNAL(net)       (((net) >> 16) & 0xffff)
-#define PTL_MKNET(nal,num)    ((((__u32)(nal))<<16)|((__u32)(num)))
+#define PTL_NETTYP(net)       (((net) >> 16) & 0xffff)
+#define PTL_MKNET(typ,num)    ((((__u32)(typ))<<16)|((__u32)(num)))
 
 #ifndef CURRENT_TIME
 # define CURRENT_TIME time(0)
@@ -425,7 +425,7 @@ extern int portal_ioctl_getdata(char *buf, char *end, void *arg);
 #define IOC_PORTAL_LWT_LOOKUP_STRING       _IOWR('e', 35, IOCTL_PORTAL_TYPE)
 #define IOC_PORTAL_MEMHOG                  _IOWR('e', 36, IOCTL_PORTAL_TYPE)
 #define IOC_PORTAL_PING                    _IOWR('e', 37, IOCTL_PORTAL_TYPE)
-/* portals ioctls */
+/* lnet ioctls */
 #define IOC_PORTAL_GET_NI                  _IOWR('e', 50, IOCTL_PORTAL_TYPE)
 #define IOC_PORTAL_FAIL_NID                _IOWR('e', 51, IOCTL_PORTAL_TYPE)
 #define IOC_PORTAL_ADD_ROUTE               _IOWR('e', 52, IOCTL_PORTAL_TYPE)
@@ -434,7 +434,7 @@ extern int portal_ioctl_getdata(char *buf, char *end, void *arg);
 #define IOC_PORTAL_NOTIFY_ROUTER           _IOWR('e', 55, IOCTL_PORTAL_TYPE)
 #define IOC_PORTAL_UNCONFIGURE             _IOWR('e', 56, IOCTL_PORTAL_TYPE)
 #define IOC_PORTAL_PORTALS_COMPATIBILITY   _IOWR('e', 57, IOCTL_PORTAL_TYPE)
-/* nal ioctls */
+/* lnd ioctls */
 #define IOC_PORTAL_REGISTER_MYNID          _IOWR('e', 70, IOCTL_PORTAL_TYPE)
 #define IOC_PORTAL_CLOSE_CONNECTION        _IOWR('e', 71, IOCTL_PORTAL_TYPE)
 #define IOC_PORTAL_PUSH_CONNECTION         _IOWR('e', 72, IOCTL_PORTAL_TYPE)
@@ -454,17 +454,17 @@ extern int portal_ioctl_getdata(char *buf, char *end, void *arg);
 enum {
         /* Only add to these values (i.e. don't ever change or redefine them):
          * network addresses depend on them... */
-        QSWNAL    = 1,
-        SOCKNAL   = 2,
-        GMNAL     = 3,
+        QSWLND    = 1,
+        SOCKLND   = 2,
+        GMLND     = 3,
         PTLLND    = 4,
         /* unused   5 */
         /* unused   6 */
-        OPENIBNAL = 7,
-        IIBNAL    = 8,
-        LONAL     = 9,
-        RANAL     = 10,
-        VIBNAL    = 11,
+        OPENIBLND = 7,
+        IIBLND    = 8,
+        LOLND     = 9,
+        RALND     = 10,
+        VIBLND    = 11,
 };
 
 enum {
index 44501f1..d70cf4b 100644 (file)
@@ -281,8 +281,8 @@ int libcfs_register_ioctl(struct libcfs_ioctl_handler *hand);
 int libcfs_deregister_ioctl(struct libcfs_ioctl_handler *hand);
 
 /* libcfs tcpip */
-#define PTL_ACCEPTOR_MIN_RESERVED_PORT    512
-#define PTL_ACCEPTOR_MAX_RESERVED_PORT    1023
+#define LNET_ACCEPTOR_MIN_RESERVED_PORT    512
+#define LNET_ACCEPTOR_MAX_RESERVED_PORT    1023
 
 int libcfs_ipif_query(char *name, int *up, __u32 *ip, __u32 *mask);
 int libcfs_ipif_enumerate(char ***names);
index e6a66f7..b480333 100644 (file)
 #include <lnet/lnet.h>
 #include <lnet/lib-types.h>
 
-extern lnet_apini_t  lnet_apini;                /* THE network interface (at the API) */
+extern lnet_t  the_lnet;                        /* THE network */
 
-static inline int ptl_is_wire_handle_none (ptl_handle_wire_t *wh)
+static inline int lnet_is_wire_handle_none (lnet_handle_wire_t *wh)
 {
-        return (wh->wh_interface_cookie == PTL_WIRE_HANDLE_NONE.wh_interface_cookie &&
-                wh->wh_object_cookie == PTL_WIRE_HANDLE_NONE.wh_object_cookie);
+        return (wh->wh_interface_cookie == LNET_WIRE_HANDLE_NONE.wh_interface_cookie &&
+                wh->wh_object_cookie == LNET_WIRE_HANDLE_NONE.wh_object_cookie);
 }
 
-static inline int ptl_md_exhausted (ptl_libmd_t *md) 
+static inline int lnet_md_exhausted (lnet_libmd_t *md) 
 {
         return (md->md_threshold == 0 ||
                 ((md->md_options & LNET_MD_MAX_SIZE) != 0 &&
@@ -38,24 +38,24 @@ static inline int ptl_md_exhausted (ptl_libmd_t *md)
 }
 
 #ifdef __KERNEL__
-#define PTL_LOCK(flags)                                                 \
-        spin_lock_irqsave(&lnet_apini.apini_lock, flags)                 
-#define PTL_UNLOCK(flags)                                               \
-        spin_unlock_irqrestore(&lnet_apini.apini_lock, flags)               
-#define PTL_MUTEX_DOWN(m) mutex_down(m)
-#define PTL_MUTEX_UP(m)   mutex_up(m)
+#define LNET_LOCK(flags)                                                \
+        spin_lock_irqsave(&the_lnet.ln_lock, flags)                 
+#define LNET_UNLOCK(flags)                                              \
+        spin_unlock_irqrestore(&the_lnet.ln_lock, flags)               
+#define LNET_MUTEX_DOWN(m) mutex_down(m)
+#define LNET_MUTEX_UP(m)   mutex_up(m)
 #else                                                                   
-#define PTL_LOCK(flags)                                                 \
-        (pthread_mutex_lock(&lnet_apini.apini_mutex), (flags) = 0)       
-#define PTL_UNLOCK(flags)                                               \
-        pthread_mutex_unlock(&lnet_apini.apini_mutex)
-#define PTL_MUTEX_DOWN(m) pthread_mutex_lock(m)
-#define PTL_MUTEX_UP(m)   pthread_mutex_unlock(m)
+#define LNET_LOCK(flags)                                                \
+        (pthread_mutex_lock(&the_lnet.ln_mutex), (flags) = 0)       
+#define LNET_UNLOCK(flags)                                              \
+        pthread_mutex_unlock(&the_lnet.ln_mutex)
+#define LNET_MUTEX_DOWN(m) pthread_mutex_lock(m)
+#define LNET_MUTEX_UP(m)   pthread_mutex_unlock(m)
 #endif
 
 #define MAX_PORTALS     64
 
-#ifdef PTL_USE_LIB_FREELIST
+#ifdef LNET_USE_LIB_FREELIST
 
 #define MAX_MES         2048
 #define MAX_MDS         2048
@@ -63,152 +63,152 @@ static inline int ptl_md_exhausted (ptl_libmd_t *md)
 #define MAX_EQS         512
 
 static inline void *
-ptl_freelist_alloc (ptl_freelist_t *fl)
+lnet_freelist_alloc (lnet_freelist_t *fl)
 {
         /* ALWAYS called with liblock held */
-        ptl_freeobj_t *o;
+        lnet_freeobj_t *o;
 
         if (list_empty (&fl->fl_list))
                 return (NULL);
         
-        o = list_entry (fl->fl_list.next, ptl_freeobj_t, fo_list);
+        o = list_entry (fl->fl_list.next, lnet_freeobj_t, fo_list);
         list_del (&o->fo_list);
         return ((void *)&o->fo_contents);
 }
 
 static inline void
-ptl_freelist_free (ptl_freelist_t *fl, void *obj)
+lnet_freelist_free (lnet_freelist_t *fl, void *obj)
 {
         /* ALWAYS called with liblock held */
-        ptl_freeobj_t *o = list_entry (obj, ptl_freeobj_t, fo_contents);
+        lnet_freeobj_t *o = list_entry (obj, lnet_freeobj_t, fo_contents);
         
         list_add (&o->fo_list, &fl->fl_list);
 }
 
 
-static inline ptl_eq_t *
-ptl_eq_alloc (void)
+static inline lnet_eq_t *
+lnet_eq_alloc (void)
 {
         /* NEVER called with liblock held */
         unsigned long  flags;
-        ptl_eq_t      *eq;
+        lnet_eq_t     *eq;
         
-        PTL_LOCK(flags);
-        eq = (ptl_eq_t *)ptl_freelist_alloc(&lnet_apini.apini_free_eqs);
-        PTL_UNLOCK(flags);
+        LNET_LOCK(flags);
+        eq = (lnet_eq_t *)lnet_freelist_alloc(&the_lnet.ln_free_eqs);
+        LNET_UNLOCK(flags);
 
         return (eq);
 }
 
 static inline void
-ptl_eq_free (ptl_eq_t *eq)
+lnet_eq_free (lnet_eq_t *eq)
 {
         /* ALWAYS called with liblock held */
-        ptl_freelist_free(&lnet_apini.apini_free_eqs, eq);
+        lnet_freelist_free(&the_lnet.ln_free_eqs, eq);
 }
 
-static inline ptl_libmd_t *
-ptl_md_alloc (lnet_md_t *umd)
+static inline lnet_libmd_t *
+lnet_md_alloc (lnet_md_t *umd)
 {
         /* NEVER called with liblock held */
         unsigned long  flags;
-        ptl_libmd_t   *md;
+        lnet_libmd_t  *md;
         
-        PTL_LOCK(flags);
-        md = (ptl_libmd_t *)ptl_freelist_alloc(&lnet_apini.apini_free_mds);
-        PTL_UNLOCK(flags);
+        LNET_LOCK(flags);
+        md = (lnet_libmd_t *)lnet_freelist_alloc(&the_lnet.ln_free_mds);
+        LNET_UNLOCK(flags);
 
         return (md);
 }
 
 static inline void
-ptl_md_free (ptl_libmd_t *md)
+lnet_md_free (lnet_libmd_t *md)
 {
         /* ALWAYS called with liblock held */
-        ptl_freelist_free (&lnet_apini.apini_free_mds, md);
+        lnet_freelist_free (&the_lnet.ln_free_mds, md);
 }
 
-static inline ptl_me_t *
-ptl_me_alloc (void)
+static inline lnet_me_t *
+lnet_me_alloc (void)
 {
         /* NEVER called with liblock held */
         unsigned long  flags;
-        ptl_me_t      *me;
+        lnet_me_t     *me;
         
-        PTL_LOCK(flags);
-        me = (ptl_me_t *)ptl_freelist_alloc(&lnet_apini.apini_free_mes);
-        PTL_UNLOCK(flags);
+        LNET_LOCK(flags);
+        me = (lnet_me_t *)lnet_freelist_alloc(&the_lnet.ln_free_mes);
+        LNET_UNLOCK(flags);
         
         return (me);
 }
 
 static inline void
-ptl_me_free (ptl_me_t *me)
+lnet_me_free (lnet_me_t *me)
 {
         /* ALWAYS called with liblock held */
-        ptl_freelist_free (&lnet_apini.apini_free_mes, me);
+        lnet_freelist_free (&the_lnet.ln_free_mes, me);
 }
 
-static inline ptl_msg_t *
-ptl_msg_alloc (void)
+static inline lnet_msg_t *
+lnet_msg_alloc (void)
 {
         /* NEVER called with liblock held */
         unsigned long  flags;
-        ptl_msg_t     *msg;
+        lnet_msg_t    *msg;
         
-        PTL_LOCK(flags);
-        msg = (ptl_msg_t *)ptl_freelist_alloc(&lnet_apini.apini_free_msgs);
-        PTL_UNLOCK(flags);
+        LNET_LOCK(flags);
+        msg = (lnet_msg_t *)lnet_freelist_alloc(&the_lnet.ln_free_msgs);
+        LNET_UNLOCK(flags);
 
         if (msg != NULL) {
                 /* NULL pointers, clear flags etc */
                 memset (msg, 0, sizeof (*msg));
-                msg->msg_ack_wmd = PTL_WIRE_HANDLE_NONE;
+                msg->msg_ack_wmd = LNET_WIRE_HANDLE_NONE;
         }
         return(msg);
 }
 
 static inline void
-ptl_msg_free (ptl_msg_t *msg)
+lnet_msg_free (lnet_msg_t *msg)
 {
         /* ALWAYS called with liblock held */
-        ptl_freelist_free(&lnet_apini.apini_free_msgs, msg);
+        lnet_freelist_free(&the_lnet.ln_free_msgs, msg);
 }
 
 #else
 
-static inline ptl_eq_t *
-ptl_eq_alloc (void)
+static inline lnet_eq_t *
+lnet_eq_alloc (void)
 {
         /* NEVER called with liblock held */
-        ptl_eq_t *eq;
+        lnet_eq_t *eq;
 
         PORTAL_ALLOC(eq, sizeof(*eq));
         return (eq);
 }
 
 static inline void
-ptl_eq_free (ptl_eq_t *eq)
+lnet_eq_free (lnet_eq_t *eq)
 {
         /* ALWAYS called with liblock held */
         PORTAL_FREE(eq, sizeof(*eq));
 }
 
-static inline ptl_libmd_t *
-ptl_md_alloc (lnet_md_t *umd)
+static inline lnet_libmd_t *
+lnet_md_alloc (lnet_md_t *umd)
 {
         /* NEVER called with liblock held */
-        ptl_libmd_t *md;
-        int          size;
-        int          niov;
+        lnet_libmd_t *md;
+        int           size;
+        unsigned int  niov;
 
         if ((umd->options & LNET_MD_KIOV) != 0) {
                 niov = umd->length;
-                size = offsetof(ptl_libmd_t, md_iov.kiov[niov]);
+                size = offsetof(lnet_libmd_t, md_iov.kiov[niov]);
         } else {
                 niov = ((umd->options & LNET_MD_IOVEC) != 0) ?
                        umd->length : 1;
-                size = offsetof(ptl_libmd_t, md_iov.iov[niov]);
+                size = offsetof(lnet_libmd_t, md_iov.iov[niov]);
         }
 
         PORTAL_ALLOC(md, size);
@@ -223,41 +223,41 @@ ptl_md_alloc (lnet_md_t *umd)
 }
 
 static inline void 
-ptl_md_free (ptl_libmd_t *md)
+lnet_md_free (lnet_libmd_t *md)
 {
         /* ALWAYS called with liblock held */
         int       size;
 
         if ((md->md_options & LNET_MD_KIOV) != 0)
-                size = offsetof(ptl_libmd_t, md_iov.kiov[md->md_niov]);
+                size = offsetof(lnet_libmd_t, md_iov.kiov[md->md_niov]);
         else
-                size = offsetof(ptl_libmd_t, md_iov.iov[md->md_niov]);
+                size = offsetof(lnet_libmd_t, md_iov.iov[md->md_niov]);
 
         PORTAL_FREE(md, size);
 }
 
-static inline ptl_me_t *
-ptl_me_alloc (void)
+static inline lnet_me_t *
+lnet_me_alloc (void)
 {
         /* NEVER called with liblock held */
-        ptl_me_t *me;
+        lnet_me_t *me;
 
         PORTAL_ALLOC(me, sizeof(*me));
         return (me);
 }
 
 static inline void 
-ptl_me_free(ptl_me_t *me)
+lnet_me_free(lnet_me_t *me)
 {
         /* ALWAYS called with liblock held */
         PORTAL_FREE(me, sizeof(*me));
 }
 
-static inline ptl_msg_t *
-ptl_msg_alloc(void)
+static inline lnet_msg_t *
+lnet_msg_alloc(void)
 {
         /* NEVER called with liblock held; may be in interrupt... */
-        ptl_msg_t *msg;
+        lnet_msg_t *msg;
 
         if (in_interrupt())
                 PORTAL_ALLOC_ATOMIC(msg, sizeof(*msg));
@@ -267,25 +267,25 @@ ptl_msg_alloc(void)
         if (msg != NULL) {
                 /* NULL pointers, clear flags etc */
                 memset (msg, 0, sizeof (*msg));
-                msg->msg_ack_wmd = PTL_WIRE_HANDLE_NONE;
+                msg->msg_ack_wmd = LNET_WIRE_HANDLE_NONE;
         }
         return (msg);
 }
 
 static inline void 
-ptl_msg_free(ptl_msg_t *msg)
+lnet_msg_free(lnet_msg_t *msg)
 {
         /* ALWAYS called with liblock held */
         PORTAL_FREE(msg, sizeof(*msg));
 }
 #endif
 
-extern ptl_libhandle_t *ptl_lookup_cookie (__u64 cookie, int type);
-extern void ptl_initialise_handle (ptl_libhandle_t *lh, int type);
-extern void ptl_invalidate_handle (ptl_libhandle_t *lh);
+extern lnet_libhandle_t *lnet_lookup_cookie (__u64 cookie, int type);
+extern void lnet_initialise_handle (lnet_libhandle_t *lh, int type);
+extern void lnet_invalidate_handle (lnet_libhandle_t *lh);
 
 static inline void
-ptl_eq2handle (lnet_handle_eq_t *handle, ptl_eq_t *eq)
+lnet_eq2handle (lnet_handle_eq_t *handle, lnet_eq_t *eq)
 {
         if (eq == NULL) {
                 *handle = LNET_EQ_NONE;
@@ -295,69 +295,69 @@ ptl_eq2handle (lnet_handle_eq_t *handle, ptl_eq_t *eq)
         handle->cookie = eq->eq_lh.lh_cookie;
 }
 
-static inline ptl_eq_t *
-ptl_handle2eq (lnet_handle_eq_t *handle)
+static inline lnet_eq_t *
+lnet_handle2eq (lnet_handle_eq_t *handle)
 {
         /* ALWAYS called with liblock held */
-        ptl_libhandle_t *lh = ptl_lookup_cookie (handle->cookie, 
-                                                 PTL_COOKIE_TYPE_EQ);
+        lnet_libhandle_t *lh = lnet_lookup_cookie(handle->cookie, 
+                                                  LNET_COOKIE_TYPE_EQ);
         if (lh == NULL)
                 return (NULL);
 
-        return (lh_entry (lh, ptl_eq_t, eq_lh));
+        return (lh_entry (lh, lnet_eq_t, eq_lh));
 }
 
 static inline void
-ptl_md2handle (lnet_handle_md_t *handle, ptl_libmd_t *md)
+lnet_md2handle (lnet_handle_md_t *handle, lnet_libmd_t *md)
 {
         handle->cookie = md->md_lh.lh_cookie;
 }
 
-static inline ptl_libmd_t *
-ptl_handle2md (lnet_handle_md_t *handle)
+static inline lnet_libmd_t *
+lnet_handle2md (lnet_handle_md_t *handle)
 {
         /* ALWAYS called with liblock held */
-        ptl_libhandle_t *lh = ptl_lookup_cookie (handle->cookie,
-                                                 PTL_COOKIE_TYPE_MD);
+        lnet_libhandle_t *lh = lnet_lookup_cookie(handle->cookie,
+                                                  LNET_COOKIE_TYPE_MD);
         if (lh == NULL)
                 return (NULL);
 
-        return (lh_entry (lh, ptl_libmd_t, md_lh));
+        return (lh_entry (lh, lnet_libmd_t, md_lh));
 }
 
-static inline ptl_libmd_t *
-ptl_wire_handle2md (ptl_handle_wire_t *wh)
+static inline lnet_libmd_t *
+lnet_wire_handle2md (lnet_handle_wire_t *wh)
 {
         /* ALWAYS called with liblock held */
-        ptl_libhandle_t *lh;
+        lnet_libhandle_t *lh;
         
-        if (wh->wh_interface_cookie != lnet_apini.apini_interface_cookie)
+        if (wh->wh_interface_cookie != the_lnet.ln_interface_cookie)
                 return (NULL);
         
-        lh = ptl_lookup_cookie (wh->wh_object_cookie,
-                                PTL_COOKIE_TYPE_MD);
+        lh = lnet_lookup_cookie(wh->wh_object_cookie,
+                                LNET_COOKIE_TYPE_MD);
         if (lh == NULL)
                 return (NULL);
 
-        return (lh_entry (lh, ptl_libmd_t, md_lh));
+        return (lh_entry (lh, lnet_libmd_t, md_lh));
 }
 
 static inline void
-ptl_me2handle (lnet_handle_me_t *handle, ptl_me_t *me)
+lnet_me2handle (lnet_handle_me_t *handle, lnet_me_t *me)
 {
         handle->cookie = me->me_lh.lh_cookie;
 }
 
-static inline ptl_me_t *
-ptl_handle2me (lnet_handle_me_t *handle)
+static inline lnet_me_t *
+lnet_handle2me (lnet_handle_me_t *handle)
 {
         /* ALWAYS called with liblock held */
-        ptl_libhandle_t *lh = ptl_lookup_cookie (handle->cookie,
-                                                 PTL_COOKIE_TYPE_ME);
+        lnet_libhandle_t *lh = lnet_lookup_cookie(handle->cookie,
+                                                  LNET_COOKIE_TYPE_ME);
         if (lh == NULL)
                 return (NULL);
 
-        return (lh_entry (lh, ptl_me_t, me_lh));
+        return (lh_entry (lh, lnet_me_t, me_lh));
 }
 
 /******************************************************************************/
@@ -365,10 +365,8 @@ ptl_handle2me (lnet_handle_me_t *handle)
 
 /* NI APIs */
 int       lnet_forwarding(void);
-lnet_nid_t lnet_lookup(ptl_ni_t **ni, lnet_nid_t nid, int nob);
-void      lnet_fwd_start(ptl_ni_t *ni, kpr_fwd_desc_t *fwd);
-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);
+lnet_nid_t lnet_lookup(lnet_ni_t **ni, lnet_nid_t nid, int nob);
+int       lnet_notify(lnet_ni_t *ni, lnet_nid_t peer, int alive, time_t when);
 
 /* internal APIs */
 int       kpr_distance(lnet_nid_t nid, int *order);
@@ -377,67 +375,49 @@ int       kpr_add_route(__u32 net, unsigned int hops, lnet_nid_t gateway_nid);
 int       kpr_initialise(void);
 void      kpr_finalise(void);
 
-static inline void
-kpr_fwd_init (kpr_fwd_desc_t *fwd, lnet_nid_t target_nid,
-              lnet_nid_t sender_nid, lnet_nid_t source_nid, 
-              ptl_hdr_t *hdr, int nob, int niov, lnet_kiov_t *kiov,
-              kpr_fwd_callback_t callback, void *callback_arg)
-{
-        fwd->kprfd_target_nid   = target_nid;
-        fwd->kprfd_gateway_nid  = target_nid;
-        fwd->kprfd_sender_nid   = sender_nid;
-        fwd->kprfd_source_nid   = source_nid;
-        fwd->kprfd_hdr          = hdr;
-        fwd->kprfd_nob          = nob;
-        fwd->kprfd_niov         = niov;
-        fwd->kprfd_kiov         = kiov;
-        fwd->kprfd_callback     = callback;
-        fwd->kprfd_callback_arg = callback_arg;
-}
-
 /******************************************************************************/
 
 static inline void
-ptl_ni_addref_locked(ptl_ni_t *ni) 
+lnet_ni_addref_locked(lnet_ni_t *ni) 
 {
         LASSERT (ni->ni_refcount > 0);
         ni->ni_refcount++;
 }
 
 static inline void
-ptl_ni_addref(ptl_ni_t *ni) 
+lnet_ni_addref(lnet_ni_t *ni) 
 {
         unsigned long flags;
         
-        PTL_LOCK(flags);
-        ptl_ni_addref_locked(ni);
-        PTL_UNLOCK(flags);
+        LNET_LOCK(flags);
+        lnet_ni_addref_locked(ni);
+        LNET_UNLOCK(flags);
 }
 
 static inline void
-ptl_ni_decref_locked(ptl_ni_t *ni)
+lnet_ni_decref_locked(lnet_ni_t *ni)
 {
         LASSERT (ni->ni_refcount > 0);
         ni->ni_refcount--;
         if (ni->ni_refcount == 0)
-                list_add_tail(&ni->ni_list, &lnet_apini.apini_zombie_nis);
+                list_add_tail(&ni->ni_list, &the_lnet.ln_zombie_nis);
 }
 
 static inline void
-ptl_ni_decref(ptl_ni_t *ni)
+lnet_ni_decref(lnet_ni_t *ni)
 {
         unsigned long flags;
         
-        PTL_LOCK(flags);
-        ptl_ni_decref_locked(ni);
-        PTL_UNLOCK(flags);
+        LNET_LOCK(flags);
+        lnet_ni_decref_locked(ni);
+        LNET_UNLOCK(flags);
 }
 
 static inline lnet_nid_t
 lnet_ptlcompat_srcnid(lnet_nid_t src, lnet_nid_t dst)
 {
         /* Give myself a portals srcnid if I'm sending to portals */
-        if (lnet_apini.apini_ptlcompat > 0 &&   
+        if (the_lnet.ln_ptlcompat > 0 &&   
             PTL_NIDNET(dst) == 0)
                 return PTL_MKNID(0, PTL_NIDADDR(src));
         
@@ -448,60 +428,102 @@ static inline int
 lnet_ptlcompat_matchnid(lnet_nid_t lnet_nid, lnet_nid_t ptl_nid) 
 {
         return ((ptl_nid == lnet_nid) ||
-                (lnet_apini.apini_ptlcompat > 0 &&
+                (the_lnet.ln_ptlcompat > 0 &&
                  PTL_NIDNET(ptl_nid) == 0 &&
                  PTL_NIDADDR(ptl_nid) == PTL_NIDADDR(lnet_nid)));
 }
 
-extern ptl_nal_t ptl_lonal;
-extern ptl_ni_t *ptl_loni;
-
-extern ptl_ni_t *lnet_net2ni (__u32 net);
-extern int ptl_islocalnid (lnet_nid_t nid);
-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, int rc);
-extern int lnet_parse (ptl_ni_t *ni, ptl_hdr_t *hdr, void *private);
-extern ptl_msg_t *lnet_create_reply_msg (ptl_ni_t *ni, lnet_nid_t peer_nid, 
-                                        ptl_msg_t *get_msg);
-extern void ptl_print_hdr (ptl_hdr_t * hdr);
-extern int ptl_fail_nid(lnet_nid_t nid, unsigned int threshold);
-
-extern unsigned int lnet_iov_nob (int niov, struct iovec *iov);
-extern void lnet_copy_iov2buf (char *dest, int niov, struct iovec *iov, 
-                              unsigned int offset, unsigned int len);
-extern void lnet_copy_buf2iov (int niov, struct iovec *iov, unsigned int offset, 
-                              char *src, unsigned int len);
+extern lnd_t      the_lolnd;
+extern lnet_ni_t *lnet_loni;
+
+extern lnet_ni_t *lnet_net2ni (__u32 net);
+extern int lnet_islocalnid (lnet_nid_t nid);
+extern int lnet_islocalnet (__u32 net, int *orderp);
+extern void lnet_enq_event_locked (void *private,
+                                   lnet_eq_t *eq, lnet_event_t *ev);
+extern void lnet_finalize (lnet_ni_t *ni, void *private, lnet_msg_t *msg, int rc);
+extern int lnet_parse (lnet_ni_t *ni, lnet_hdr_t *hdr, void *private);
+extern lnet_msg_t *lnet_create_reply_msg (lnet_ni_t *ni, lnet_msg_t *get_msg);
+extern void lnet_print_hdr (lnet_hdr_t * hdr);
+extern int lnet_fail_nid(lnet_nid_t nid, unsigned int threshold);
+
+extern unsigned int lnet_iov_nob (unsigned int niov, struct iovec *iov);
 extern int lnet_extract_iov (int dst_niov, struct iovec *dst,
                             int src_niov, struct iovec *src,
                             unsigned int offset, unsigned int len);
 
-extern unsigned int lnet_kiov_nob (int niov, lnet_kiov_t *iov);
-extern void lnet_copy_kiov2buf (char *dest, int niov, lnet_kiov_t *kiov, 
-                               unsigned int offset, unsigned int len);
-extern void lnet_copy_buf2kiov (int niov, lnet_kiov_t *kiov, unsigned int offset,
-                               char *src, unsigned int len);
+extern unsigned int lnet_kiov_nob (unsigned int niov, lnet_kiov_t *iov);
 extern int lnet_extract_kiov (int dst_niov, lnet_kiov_t *dst, 
                              int src_niov, lnet_kiov_t *src,
                              unsigned int offset, unsigned int len);
 
-extern lnet_pid_t lnet_getpid(void);
+extern void lnet_copy_iov2iov (unsigned int ndiov, struct iovec *diov, 
+                               unsigned int doffset, 
+                               unsigned int nsiov, struct iovec *siov, 
+                               unsigned int soffset, unsigned int nob);
+extern void lnet_copy_kiov2iov (unsigned int niov, struct iovec *iov, 
+                                unsigned int iovoffset,
+                                unsigned int nkiov, lnet_kiov_t *kiov, 
+                                unsigned int kiovoffset, unsigned int nob);
+extern void lnet_copy_iov2kiov (unsigned int nkiov, lnet_kiov_t *kiov, 
+                                unsigned int kiovoffset,
+                                unsigned int niov, struct iovec *iov, 
+                                unsigned int iovoffset, unsigned int nob);
+extern void lnet_copy_kiov2kiov (unsigned int ndkiov, lnet_kiov_t *dkiov, 
+                                 unsigned int doffset, 
+                                 unsigned int nskiov, lnet_kiov_t *skiov, 
+                                 unsigned int soffset, unsigned int nob);
+
+static inline void
+lnet_copy_iov2flat(int dlen, void *dest, unsigned int doffset,
+                   unsigned int nsiov, struct iovec *siov,
+                   unsigned int soffset, unsigned int nob)
+{
+        struct iovec diov = {.iov_base = dest, .iov_len = dlen};
+        lnet_copy_iov2iov(1, &diov, doffset,
+                          nsiov, siov, soffset, nob);
+}
+
+static inline void
+lnet_copy_kiov2flat(int dlen, void *dest, unsigned int doffset,
+                    unsigned int nsiov, lnet_kiov_t *skiov,
+                    unsigned int soffset, unsigned int nob)
+{
+        struct iovec diov = {.iov_base = dest, .iov_len = dlen};
+        lnet_copy_kiov2iov(1, &diov, doffset,
+                           nsiov, skiov, soffset, nob);
+}
+
+static inline void
+lnet_copy_flat2iov(unsigned int ndiov, struct iovec *diov, unsigned int doffset,
+                   int slen, void *src, unsigned int soffset, unsigned int nob)
+{
+        struct iovec siov = {.iov_base = src, .iov_len = slen};
+        lnet_copy_iov2iov(ndiov, diov, doffset,
+                          1, &siov, soffset, nob);
+}
+
+static inline void
+lnet_copy_flat2kiov(unsigned int ndiov, lnet_kiov_t *dkiov, unsigned int doffset,
+                    int slen, void *src, unsigned int soffset, unsigned int nob)
+{
+        struct iovec siov = {.iov_base = src, .iov_len = slen};
+        lnet_copy_iov2kiov(ndiov, dkiov, doffset,
+                           1, &siov, soffset, nob);
+}
 
-extern int ptl_recv (ptl_ni_t *ni, void *private, ptl_msg_t *msg, ptl_libmd_t *md,
-                           unsigned int offset, unsigned int mlen, unsigned int rlen);
-extern int ptl_send (ptl_ni_t *ni, void *private, ptl_msg_t *msg,
-                           ptl_hdr_t *hdr, int type, lnet_process_id_t target,
-                           ptl_libmd_t *md, unsigned int offset, unsigned int len);
+extern int lnet_send(lnet_ni_t *ni, void *private, lnet_msg_t *msg,
+                     int type, lnet_process_id_t target,
+                     lnet_libmd_t *md, unsigned int offset, unsigned int len);
 
-extern void ptl_me_unlink(ptl_me_t *me);
+extern void lnet_me_unlink(lnet_me_t *me);
 
-extern void ptl_md_unlink(ptl_libmd_t *md);
-extern void ptl_md_deconstruct(ptl_libmd_t *lmd, lnet_md_t *umd);
+extern void lnet_md_unlink(lnet_libmd_t *md);
+extern void lnet_md_deconstruct(lnet_libmd_t *lmd, lnet_md_t *umd);
 
-extern void lnet_register_nal(ptl_nal_t *nal);
-extern void lnet_unregister_nal(ptl_nal_t *nal);
-extern int lnet_set_ip_niaddr (ptl_ni_t *ni);
+extern void lnet_register_lnd(lnd_t *lnd);
+extern void lnet_unregister_lnd(lnd_t *lnd);
+extern int lnet_set_ip_niaddr (lnet_ni_t *ni);
 
 #ifdef __KERNEL__
 extern int lnet_connect(struct socket **sockp, lnet_nid_t peer_nid,
@@ -509,14 +531,14 @@ extern int lnet_connect(struct socket **sockp, lnet_nid_t peer_nid,
 extern void lnet_connect_console_error(int rc, lnet_nid_t peer_nid,
                                       __u32 peer_ip, int port);
 
-extern int ptl_count_acceptor_nis(ptl_ni_t **first_ni);
+extern int lnet_count_acceptor_nis(lnet_ni_t **first_ni);
 
-extern int lnet_accept(ptl_ni_t *blind_ni, struct socket *sock, __u32 magic);
-extern int       lnet_acceptor_timeout(void);
-extern int       lnet_acceptor_port(void);
+extern int lnet_accept(lnet_ni_t *blind_ni, struct socket *sock, __u32 magic);
+extern int lnet_acceptor_timeout(void);
+extern int lnet_acceptor_port(void);
 #endif
 extern int lnet_acceptor_start(void);
-extern void      lnet_acceptor_stop(void);
+extern void lnet_acceptor_stop(void);
 
 extern int lnet_parse_routes (char *route_str);
 extern int lnet_parse_networks (struct list_head *nilist, char *networks);
index 0a5a6f7..4f52907 100644 (file)
 typedef struct {
         __u64 wh_interface_cookie;
         __u64 wh_object_cookie;
-} WIRE_ATTR ptl_handle_wire_t;
+} WIRE_ATTR lnet_handle_wire_t;
 
 /* byte-flip insensitive! */
-#define PTL_WIRE_HANDLE_NONE \
-((const ptl_handle_wire_t) {.wh_interface_cookie = -1, .wh_object_cookie = -1})
+#define LNET_WIRE_HANDLE_NONE \
+((const lnet_handle_wire_t) {.wh_interface_cookie = -1, .wh_object_cookie = -1})
 
 typedef enum {
-        PTL_MSG_ACK = 0,
-        PTL_MSG_PUT,
-        PTL_MSG_GET,
-        PTL_MSG_REPLY,
-        PTL_MSG_HELLO,
-} ptl_msg_type_t;
+        LNET_MSG_ACK = 0,
+        LNET_MSG_PUT,
+        LNET_MSG_GET,
+        LNET_MSG_REPLY,
+        LNET_MSG_HELLO,
+} lnet_msg_type_t;
 
 /* The variant fields of the portals message header are aligned on an 8
  * byte boundary in the message header.  Note that all types used in these
  * wire structs MUST be fixed size and the smaller types are placed at the
  * end. */
-typedef struct ptl_ack {
-        ptl_handle_wire_t   dst_wmd;
+typedef struct lnet_ack {
+        lnet_handle_wire_t  dst_wmd;
         __u64               match_bits;
         __u32               mlength;
-} WIRE_ATTR ptl_ack_t;
+} WIRE_ATTR lnet_ack_t;
 
-typedef struct ptl_put {
-        ptl_handle_wire_t   ack_wmd;
+typedef struct lnet_put {
+        lnet_handle_wire_t  ack_wmd;
         __u64               match_bits;
         __u64               hdr_data;
         __u32               ptl_index;
         __u32               offset;
-} WIRE_ATTR ptl_put_t;
+} WIRE_ATTR lnet_put_t;
 
-typedef struct ptl_get {
-        ptl_handle_wire_t   return_wmd;
+typedef struct lnet_get {
+        lnet_handle_wire_t  return_wmd;
         __u64               match_bits;
         __u32               ptl_index;
         __u32               src_offset;
         __u32               sink_length;
-} WIRE_ATTR ptl_get_t;
+} WIRE_ATTR lnet_get_t;
 
-typedef struct ptl_reply {
-        ptl_handle_wire_t  dst_wmd;
-} WIRE_ATTR ptl_reply_t;
+typedef struct lnet_reply {
+        lnet_handle_wire_t  dst_wmd;
+} WIRE_ATTR lnet_reply_t;
 
-typedef struct ptl_hello {
+typedef struct lnet_hello {
         __u64              incarnation;
         __u32              type;
-} WIRE_ATTR ptl_hello_t;
+} WIRE_ATTR lnet_hello_t;
 
 typedef struct {
         lnet_nid_t          dest_nid;
         lnet_nid_t          src_nid;
         lnet_pid_t          dest_pid;
         lnet_pid_t          src_pid;
-        __u32               type;               /* ptl_msg_type_t */
+        __u32               type;               /* lnet_msg_type_t */
         __u32               payload_length;     /* payload data to follow */
         /*<------__u64 aligned------->*/
         union {
-                ptl_ack_t   ack;
-                ptl_put_t   put;
-                ptl_get_t   get;
-                ptl_reply_t reply;
-                ptl_hello_t hello;
+                lnet_ack_t   ack;
+                lnet_put_t   put;
+                lnet_get_t   get;
+                lnet_reply_t reply;
+                lnet_hello_t hello;
         } msg;
-} WIRE_ATTR ptl_hdr_t;
+} WIRE_ATTR lnet_hdr_t;
 
 /* A HELLO message contains a magic number and protocol version
  * code in the header's dest_nid, the peer's NID in the src_nid, and
- * PTL_MSG_HELLO in the type field.  All other common fields are zero
+ * LNET_MSG_HELLO in the type field.  All other common fields are zero
  * (including payload_size; i.e. no payload).  
  * This is for use by byte-stream NALs (e.g. TCP/IP) to check the peer is
  * running the same protocol and to find out its NID. These NALs should
  * exchange HELLO messages when a connection is first established.  Individual
- * NALs can put whatever else they fancy in ptl_hdr_t::msg.
+ * NALs can put whatever else they fancy in lnet_hdr_t::msg.
  */
 typedef struct {
-        __u32  magic;                          /* PTL_PROTO_TCP_MAGIC */
+        __u32  magic;                          /* LNET_PROTO_TCP_MAGIC */
         __u16   version_major;                  /* increment on incompatible change */
         __u16   version_minor;                  /* increment on compatible change */
-} WIRE_ATTR ptl_magicversion_t;
+} WIRE_ATTR lnet_magicversion_t;
 
 /* PROTO MAGIC for NALs that once used their own private acceptor */
-#define PTL_PROTO_OPENIB_MAGIC             0x0be91b91
-#define PTL_PROTO_RA_MAGIC                 0x0be91b92
-#define PTL_PROTO_TCP_MAGIC                0xeebc0ded
+#define LNET_PROTO_OPENIB_MAGIC             0x0be91b91
+#define LNET_PROTO_RA_MAGIC                 0x0be91b92
+#define LNET_PROTO_TCP_MAGIC                0xeebc0ded
 
-#define PTL_PROTO_TCP_VERSION_MAJOR        1
-#define PTL_PROTO_TCP_VERSION_MINOR        0
+#define LNET_PROTO_TCP_VERSION_MAJOR        1
+#define LNET_PROTO_TCP_VERSION_MINOR        0
 
 /* Acceptor connection request */
 typedef struct {
@@ -127,53 +127,64 @@ typedef struct {
         __u64       acr_nid;                    /* target NID */
 } WIRE_ATTR lnet_acceptor_connreq_t;
 
-#define PTL_PROTO_ACCEPTOR_MAGIC         0xacce7100
-#define PTL_PROTO_ACCEPTOR_VERSION       1
-
+#define LNET_PROTO_ACCEPTOR_MAGIC         0xacce7100
+#define LNET_PROTO_ACCEPTOR_VERSION       1
 
 /* forward refs */
-struct ptl_libmd;
-
-typedef struct ptl_msg {
-        struct list_head   msg_list;
-        struct ptl_libmd  *msg_md;
-        ptl_handle_wire_t  msg_ack_wmd;
-        lnet_event_t       msg_ev;
-} ptl_msg_t;
-
-typedef struct ptl_libhandle {
+struct lnet_libmd;
+
+typedef struct lnet_msg {
+        struct list_head    msg_activelist;
+
+        __u32               msg_type;
+        lnet_process_id_t   msg_target;
+        int                 msg_target_is_router:1;
+        int                 msg_routing:1;
+        lnet_hdr_t          msg_hdr;
+        unsigned int        msg_len;
+        unsigned int        msg_offset;
+        unsigned int        msg_niov;
+        struct iovec       *msg_iov;
+        lnet_kiov_t        *msg_kiov;
+
+        struct lnet_libmd  *msg_md;
+        lnet_handle_wire_t  msg_ack_wmd;
+        lnet_event_t        msg_ev;
+} lnet_msg_t;
+
+typedef struct lnet_libhandle {
         struct list_head  lh_hash_chain;
         __u64             lh_cookie;
-} ptl_libhandle_t;
+} lnet_libhandle_t;
 
 #define lh_entry(ptr, type, member) \
        ((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member)))
 
-typedef struct ptl_eq {
+typedef struct lnet_eq {
         struct list_head  eq_list;
-        ptl_libhandle_t   eq_lh;
+        lnet_libhandle_t  eq_lh;
         lnet_seq_t        eq_enq_seq;
         lnet_seq_t        eq_deq_seq;
         unsigned int      eq_size;
         lnet_event_t     *eq_events;
         int               eq_refcount;
         lnet_eq_handler_t eq_callback;
-} ptl_eq_t;
-
-typedef struct ptl_me {
-        struct list_head  me_list;
-        ptl_libhandle_t   me_lh;
-        lnet_process_id_t me_match_id;
-        __u64             me_match_bits;
-        __u64             me_ignore_bits;
-        lnet_unlink_t     me_unlink;
-        struct ptl_libmd *me_md;
-} ptl_me_t;
-
-typedef struct ptl_libmd {
+} lnet_eq_t;
+
+typedef struct lnet_me {
+        struct list_head   me_list;
+        lnet_libhandle_t   me_lh;
+        lnet_process_id_t  me_match_id;
+        __u64              me_match_bits;
+        __u64              me_ignore_bits;
+        lnet_unlink_t      me_unlink;
+        struct lnet_libmd *me_md;
+} lnet_me_t;
+
+typedef struct lnet_libmd {
         struct list_head  md_list;
-        ptl_libhandle_t   md_lh;
-        ptl_me_t         *md_me;
+        lnet_libhandle_t  md_lh;
+        lnet_me_t        *md_me;
         char             *md_start;
         unsigned int      md_offset;
         unsigned int      md_length;
@@ -183,93 +194,62 @@ typedef struct ptl_libmd {
         unsigned int      md_options;
         unsigned int      md_flags;
         void             *md_user_ptr;
-        ptl_eq_t         *md_eq;
+        lnet_eq_t        *md_eq;
         void             *md_addrkey;
         unsigned int      md_niov;                /* # frags */
         union {
                 struct iovec  iov[PTL_MD_MAX_IOV];
-                lnet_kiov_t    kiov[PTL_MD_MAX_IOV];
+                lnet_kiov_t   kiov[PTL_MD_MAX_IOV];
         } md_iov;
-} ptl_libmd_t;
+} lnet_libmd_t;
 
-#define PTL_MD_FLAG_ZOMBIE            (1 << 0)
-#define PTL_MD_FLAG_AUTO_UNLINK       (1 << 1)
+#define LNET_MD_FLAG_ZOMBIE           (1 << 0)
+#define LNET_MD_FLAG_AUTO_UNLINK      (1 << 1)
 
-#ifdef PTL_USE_LIB_FREELIST
+#ifdef LNET_USE_LIB_FREELIST
 typedef struct
 {
         void             *fl_objs;             /* single contiguous array of objects */
         int                fl_nobjs;            /* the number of them */
         int                fl_objsize;          /* the size (including overhead) of each of them */
         struct list_head   fl_list;             /* where they are enqueued */
-} ptl_freelist_t;
+} lnet_freelist_t;
 
 typedef struct
 {
         struct list_head   fo_list;             /* enqueue on fl_list */
         void              *fo_contents;         /* aligned contents */
-} ptl_freeobj_t;
+} lnet_freeobj_t;
 #endif
 
 typedef struct {
         /* info about peers we are trying to fail */
-        struct list_head   tp_list;             /* apini_test_peers */
+        struct list_head   tp_list;             /* ln_test_peers */
         lnet_nid_t         tp_nid;              /* matching nid */
         unsigned int       tp_threshold;        /* # failures to simulate */
-} ptl_test_peer_t;
-
-#define PTL_COOKIE_TYPE_MD    1
-#define PTL_COOKIE_TYPE_ME    2
-#define PTL_COOKIE_TYPE_EQ    3
-#define PTL_COOKIE_TYPES      4
-/* PTL_COOKIE_TYPES must be a power of 2, so the cookie type can be
- * extracted by masking with (PTL_COOKIE_TYPES - 1) */
-
-struct ptl_ni;                                  /* forward ref */
-
-/******************************************************************************/
-/* Portals Router */
+} lnet_test_peer_t;
 
-typedef void (*kpr_fwd_callback_t)(struct ptl_ni *ni,
-                                   void *arg, int error);
+#define LNET_COOKIE_TYPE_MD    1
+#define LNET_COOKIE_TYPE_ME    2
+#define LNET_COOKIE_TYPE_EQ    3
+#define LNET_COOKIE_TYPES      4
+/* LNET_COOKIE_TYPES must be a power of 2, so the cookie type can be
+ * extracted by masking with (LNET_COOKIE_TYPES - 1) */
 
-/* space for routing targets to stash "stuff" in a forwarded packet */
-typedef union {
-        long long        _alignment;
-        void            *_space[16];            /* scale with CPU arch */
-} kprfd_scratch_t;
+struct lnet_ni;                                  /* forward ref */
 
-/* Kernel Portals Routing Forwarded message Descriptor */
-typedef struct {
-        struct list_head     kprfd_list;        /* stash in queues (routing target can use) */
-        lnet_nid_t            kprfd_target_nid;  /* final destination NID */
-        lnet_nid_t            kprfd_gateway_nid; /* next hop NID */
-        lnet_nid_t            kprfd_sender_nid;  /* previous hop NID */
-        lnet_nid_t            kprfd_source_nid;  /* original sender's NID */
-        ptl_hdr_t           *kprfd_hdr;         /* header in wire byte order */
-        int                  kprfd_nob;         /* # payload bytes */
-        int                  kprfd_niov;        /* # payload frags */
-        lnet_kiov_t          *kprfd_kiov;        /* payload fragments */
-        struct ptl_ni       *kprfd_src_ni;      /* originating NI */
-        kpr_fwd_callback_t   kprfd_callback;    /* completion callback */
-        void                *kprfd_callback_arg; /* completion callback arg */
-        kprfd_scratch_t      kprfd_scratch;     /* scratchpad for routing targets */
-} kpr_fwd_desc_t;
-
-/******************************************************************************/
-
-typedef struct ptl_nal
+typedef struct lnet_lnd
 {
         /* fields managed by portals */
-        struct list_head  nal_list;             /* stash in the NAL table */
-        int               nal_refcount;         /* # active instances */
+        struct list_head  lnd_list;             /* stash in the NAL table */
+        int               lnd_refcount;         /* # active instances */
 
         /* fields initialised by the NAL */
-        unsigned int      nal_type;
+        unsigned int      lnd_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);
+        int  (*lnd_startup) (struct lnet_ni *ni);
+        void (*lnd_shutdown) (struct lnet_ni *ni);
+        int  (*lnd_ctl)(struct lnet_ni *ni, unsigned int cmd, void *arg);
 
         /* In data movement APIs below, payload buffers are described as a set
          * of 'niov' fragments which are...
@@ -282,119 +262,96 @@ typedef struct ptl_nal
          * 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
+        /* Start sending a preformatted message.  '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 target_is_router, int routing, unsigned int niov, 
-                         struct iovec *iov, lnet_kiov_t *kiov,
-                         unsigned int offset, unsigned int mlen);
+       int (*lnd_send)(struct lnet_ni *ni, void *private, lnet_msg_t *msg);
 
         /* 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
+         * lnet_parse().  Return non-zero for immedaite failure, 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);        
+       int (*lnd_recv)(struct lnet_ni *ni, void *private, lnet_msg_t *msg,
+                        int delayed, unsigned int niov, 
+                        struct iovec *iov, lnet_kiov_t *kiov,
+                        unsigned int offset, unsigned int mlen, unsigned int rlen);
 
         /* notification of peer health */
-        void (*nal_notify)(struct ptl_ni *ni, lnet_nid_t peer, int alive);
+        void (*lnd_notify)(struct lnet_ni *ni, lnet_nid_t peer, int alive);
 
 #ifdef __KERNEL__
         /* accept a new connection */
-        int (*nal_accept)(struct ptl_ni *ni, struct socket *sock);
+        int (*lnd_accept)(struct lnet_ni *ni, struct socket *sock);
 #endif
-} ptl_nal_t;
+} lnd_t;
 
-#define PTL_MAX_INTERFACES   16
+#define LNET_MAX_INTERFACES   16
 
-typedef struct ptl_ni {
-        struct list_head  ni_list;              /* chain on apini_nis */
+typedef struct lnet_ni {
+        struct list_head  ni_list;              /* chain on ln_nis */
         lnet_nid_t        ni_nid;               /* interface's NID */
         void             *ni_data;              /* instance-specific data */
-        ptl_nal_t        *ni_nal;               /* procedural interface */
+        lnd_t            *ni_lnd;               /* procedural interface */
         int               ni_shutdown;          /* shutting down? */
         int               ni_refcount;          /* reference count */
-        char             *ni_interfaces[PTL_MAX_INTERFACES]; /* equivalent interfaces to use */
-} ptl_ni_t;
-
-typedef struct                                  /* loopback descriptor */
-{
-        unsigned int     lod_type;
-        unsigned int     lod_niov;
-        unsigned int     lod_offset;
-        unsigned int     lod_nob;
-        union {
-                struct iovec  *iov;
-                lnet_kiov_t    *kiov;
-        }                lod_iov;
-} lo_desc_t;
-
-/* loopback descriptor types */
-#define LOD_IOV     0xeb105
-#define LOD_KIOV    0xeb106
+        char             *ni_interfaces[LNET_MAX_INTERFACES]; /* equivalent interfaces to use */
+} lnet_ni_t;
 
 typedef struct
 {
         /* Stuff initialised at LNetInit() */
-        int               apini_init;           /* LNetInit() called? */
-        int               apini_refcount;       /* LNetNIInit/LNetNIFini counter */
-        int               apini_niinit_self;    /* Have I called LNetNIInit myself? */
+        int               ln_init;           /* LNetInit() called? */
+        int               ln_refcount;       /* LNetNIInit/LNetNIFini counter */
+        int               ln_niinit_self;    /* Have I called LNetNIInit myself? */
 
-        int               apini_ptlcompat;      /* support talking to portals */
+        int               ln_ptlcompat;      /* support talking to portals */
         
-        struct list_head  apini_nals;           /* registered NALs */
+        struct list_head  ln_lnds;           /* registered NALs */
 
 #ifdef __KERNEL__
-        spinlock_t        apini_lock;
-        cfs_waitq_t       apini_waitq;
-        struct semaphore  apini_api_mutex;
-        struct semaphore  apini_nal_mutex;
+        spinlock_t        ln_lock;
+        cfs_waitq_t       ln_waitq;
+        struct semaphore  ln_api_mutex;
+        struct semaphore  ln_lnd_mutex;
 #else
-        pthread_mutex_t   apini_mutex;
-        pthread_cond_t    apini_cond;
-        pthread_mutex_t   apini_api_mutex;
-        pthread_mutex_t   apini_nal_mutex;
+        pthread_mutex_t   ln_mutex;
+        pthread_cond_t    ln_cond;
+        pthread_mutex_t   ln_api_mutex;
+        pthread_mutex_t   ln_lnd_mutex;
 #endif
 
         /* Stuff initialised at LNetNIInit() */
 
-        int               apini_nportals;       /* # portals */
-        struct list_head *apini_portals;        /* the vector of portals */
+        int               ln_nportals;       /* # portals */
+        struct list_head *ln_portals;        /* the vector of portals */
 
-        lnet_pid_t        apini_pid;            /* requested pid */
+        lnet_pid_t        ln_pid;            /* requested pid */
 
-        struct list_head  apini_nis;            /* NAL instances */
-        struct list_head  apini_zombie_nis;     /* dying NAL instances */
-        int               apini_nzombie_nis;    /* # of NIS to wait for */
+        struct list_head  ln_nis;            /* NAL instances */
+        struct list_head  ln_zombie_nis;     /* dying NAL instances */
+        int               ln_nzombie_nis;    /* # of NIS to wait for */
 
-        int               apini_lh_hash_size;   /* size of lib handle hash table */
-        struct list_head *apini_lh_hash_table;  /* all extant lib handles, this interface */
-        __u64             apini_next_object_cookie; /* cookie generator */
-        __u64             apini_interface_cookie; /* uniquely identifies this ni in this epoch */
+        int               ln_lh_hash_size;   /* size of lib handle hash table */
+        struct list_head *ln_lh_hash_table;  /* all extant lib handles, this interface */
+        __u64             ln_next_object_cookie; /* cookie generator */
+        __u64             ln_interface_cookie; /* uniquely identifies this ni in this epoch */
 
-        char             *apini_network_tokens; /* space for network names */
-        int               apini_network_tokens_nob;
+        char             *ln_network_tokens; /* space for network names */
+        int               ln_network_tokens_nob;
         
-        struct list_head  apini_test_peers;
+        struct list_head  ln_test_peers;
         
-#ifdef PTL_USE_LIB_FREELIST
-        ptl_freelist_t    apini_free_mes;
-        ptl_freelist_t    apini_free_msgs;
-        ptl_freelist_t    apini_free_mds;
-        ptl_freelist_t    apini_free_eqs;
+#ifdef LNET_USE_LIB_FREELIST
+        lnet_freelist_t   ln_free_mes;
+        lnet_freelist_t   ln_free_msgs;
+        lnet_freelist_t   ln_free_mds;
+        lnet_freelist_t   ln_free_eqs;
 #endif
-        struct list_head  apini_active_msgs;
-        struct list_head  apini_active_mds;
-        struct list_head  apini_active_eqs;
+        struct list_head  ln_active_msgs;
+        struct list_head  ln_active_mds;
+        struct list_head  ln_active_eqs;
 
         struct {
                 long       recv_count;
@@ -405,8 +362,8 @@ typedef struct
                 long       drop_length;
                 long       msgs_alloc;
                 long       msgs_max;
-        }                 apini_counters;
+        }                 ln_counters;
         
-} lnet_apini_t;
+} lnet_t;
 
 #endif
index 7baff36..7d28839 100644 (file)
@@ -13,7 +13,7 @@
 # include <linux/smp_lock.h>
 # include <linux/types.h>
 #else
-# define PTL_USE_LIB_FREELIST
+# define LNET_USE_LIB_FREELIST
 # include <sys/types.h>
 #endif
 
index e182583..85b5a12 100644 (file)
@@ -6,9 +6,9 @@
  * #defines shared between socknal implementation and utilities
  */
 
-#define SOCKNAL_CONN_NONE     (-1)
-#define SOCKNAL_CONN_ANY        0
-#define SOCKNAL_CONN_CONTROL    1
-#define SOCKNAL_CONN_BULK_IN    2
-#define SOCKNAL_CONN_BULK_OUT   3
-#define SOCKNAL_CONN_NTYPES     4
+#define SOCKLND_CONN_NONE     (-1)
+#define SOCKLND_CONN_ANY        0
+#define SOCKLND_CONN_CONTROL    1
+#define SOCKLND_CONN_BULK_IN    2
+#define SOCKLND_CONN_BULK_OUT   3
+#define SOCKLND_CONN_NTYPES     4
index 11fdfeb..be7f8f3 100644 (file)
@@ -96,7 +96,7 @@
 
 /* Wire protocol */
 typedef struct {
-        ptl_hdr_t       gmim_hdr;               /* portals header */
+        lnet_hdr_t      gmim_hdr;               /* portals header */
         char            gmim_payload[0];        /* payload */
 } gmnal_immediate_msg_t;
 
@@ -119,10 +119,10 @@ typedef struct {
 
 typedef struct netbuf {
         __u64                    nb_netaddr;    /* network VM address */
-        struct page             *nb_pages[1];   /* the pages (at least 1) */
+        lnet_kiov_t              nb_kiov[1];    /* the pages (at least 1) */
 } gmnal_netbuf_t;
 
-#define GMNAL_NETBUF_MSG(nb)            ((gmnal_msg_t *)page_address((nb)->nb_pages[0]))
+#define GMNAL_NETBUF_MSG(nb)            ((gmnal_msg_t *)page_address((nb)->nb_kiov[0].kiov_page))
 #define GMNAL_NETBUF_LOCAL_NETADDR(nb)  ((void *)((unsigned long)(nb)->nb_netaddr))
 
 typedef struct gmnal_txbuf {
@@ -139,7 +139,7 @@ typedef struct gmnal_tx {
         struct gmnal_ni         *tx_gmni;       /* owning NI */
         lnet_nid_t               tx_nid;        /* destination NID */
         int                      tx_gmlid;      /* destination GM local ID */
-        ptl_msg_t               *tx_ptlmsg;     /* ptlmsg to finalize on completion */
+        lnet_msg_t              *tx_lntmsg;     /* lntmsg to finalize on completion */
 
         gmnal_netbuf_t           tx_buf;        /* small tx buffer */
         gmnal_txbuf_t           *tx_ltxb;       /* large buffer (to free on completion) */
@@ -167,7 +167,7 @@ typedef struct gmnal_rx {
 } gmnal_rx_t;
 
 typedef struct gmnal_ni {
-        ptl_ni_t         *gmni_ni;              /* generic NI */
+        lnet_ni_t        *gmni_ni;              /* generic NI */
         struct gm_port   *gmni_port;            /* GM port */
         spinlock_t        gmni_gm_lock;         /* serialise GM calls */
         int               gmni_large_pages;     /* # pages in a large message buffer */
@@ -216,19 +216,16 @@ typedef struct {
 /* gmnal_api.c */
 int gmnal_init(void);
 void gmnal_fini(void);
-int gmnal_ctl(ptl_ni_t *ni, unsigned int cmd, void *arg);
-int gmnal_startup(ptl_ni_t *ni);
-void gmnal_shutdown(ptl_ni_t *ni);
+int gmnal_ctl(lnet_ni_t *ni, unsigned int cmd, void *arg);
+int gmnal_startup(lnet_ni_t *ni);
+void gmnal_shutdown(lnet_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, lnet_kiov_t *kiov,
+int gmnal_recv(lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg,
+               int delayed, 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 target_is_router, int routing,
-               unsigned int niov, struct iovec *iov, lnet_kiov_t *kiov,
-               unsigned int offset, unsigned int len);
+int gmnal_send(lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg);
 
 /* gmnal_util.c */
 void gmnal_free_ltxbufs(gmnal_ni_t *gmni);
@@ -241,27 +238,6 @@ char *gmnal_gmstatus2str(gm_status_t status);
 char *gmnal_rxevent2str(gm_recv_event_t *ev);
 void gmnal_yield(int delay);
 
-void gmnal_copy_tofrom_netbuf(int niov, struct iovec *iov, lnet_kiov_t *kiov, int offset, 
-                              int nb_pages, gmnal_netbuf_t *nb, int nb_offset,
-                              int nob, int from_nb);
-
-static inline void
-gmnal_copy_from_netbuf(int niov, struct iovec *iov, lnet_kiov_t *kiov, int offset, 
-                       int nb_pages, gmnal_netbuf_t *nb, int nb_offset, int nob)
-{
-        gmnal_copy_tofrom_netbuf(niov, iov, kiov, offset,
-                                 nb_pages, nb, nb_offset, nob, 1);
-}
-
-static inline void
-gmnal_copy_to_netbuf(int nb_pages, gmnal_netbuf_t *nb, int nb_offset,
-                     int niov, struct iovec *iov, lnet_kiov_t *kiov, int offset, 
-                     int nob)
-{
-        gmnal_copy_tofrom_netbuf(niov, iov, kiov, offset,
-                                 nb_pages, nb, nb_offset, nob, 0);
-}
-
 /* gmnal_comm.c */
 void gmnal_post_rx(gmnal_ni_t *gmni, gmnal_rx_t *rx);
 gmnal_tx_t *gmnal_get_tx(gmnal_ni_t *gmni, int may_block);
index 3d48510..a4785c0 100644 (file)
 
 #include "gmlnd.h"
 
-ptl_nal_t gmnal_nal =
+lnd_t the_gmlnd =
 {
-        .nal_type            = GMNAL,
-        .nal_startup         = gmnal_startup,
-        .nal_shutdown        = gmnal_shutdown,
-        .nal_ctl             = gmnal_ctl,
-        .nal_send            = gmnal_send,
-        .nal_recv            = gmnal_recv,
+        .lnd_type            = GMLND,
+        .lnd_startup         = gmnal_startup,
+        .lnd_shutdown        = gmnal_shutdown,
+        .lnd_ctl             = gmnal_ctl,
+        .lnd_send            = gmnal_send,
+        .lnd_recv            = gmnal_recv,
 };
 
 gmnal_ni_t *the_gmni = NULL;
 
 int
-gmnal_ctl(ptl_ni_t *ni, unsigned int cmd, void *arg)
+gmnal_ctl(lnet_ni_t *ni, unsigned int cmd, void *arg)
 {
        struct portal_ioctl_data *data = arg;
 
@@ -62,7 +62,7 @@ gmnal_ctl(ptl_ni_t *ni, unsigned int cmd, void *arg)
 int
 gmnal_set_local_nid (gmnal_ni_t *gmni)
 {
-        ptl_ni_t        *ni = gmni->gmni_ni;
+        lnet_ni_t       *ni = gmni->gmni_ni;
        __u32            local_gmid;
         __u32            global_gmid;
         gm_status_t      gm_status;
@@ -87,7 +87,7 @@ gmnal_set_local_nid (gmnal_ni_t *gmni)
 }
 
 void
-gmnal_shutdown(ptl_ni_t *ni)
+gmnal_shutdown(lnet_ni_t *ni)
 {
        gmnal_ni_t      *gmni = ni->ni_data;
 
@@ -114,14 +114,14 @@ gmnal_shutdown(ptl_ni_t *ni)
 }
 
 int
-gmnal_startup(ptl_ni_t *ni)
+gmnal_startup(lnet_ni_t *ni)
 {
        gmnal_ni_t      *gmni = NULL;
        gmnal_rx_t      *rx = NULL;
        gm_status_t      gm_status;
         int              rc;
 
-        LASSERT (ni->ni_nal == &gmnal_nal);
+        LASSERT (ni->ni_lnd == &the_gmlnd);
         
         if (the_gmni != NULL) {
                 CERROR("Only 1 instance supported\n");
@@ -248,7 +248,7 @@ gmnal_startup(ptl_ni_t *ni)
  */
 int gmnal_init(void)
 {
-        lnet_register_nal(&gmnal_nal);
+        lnet_register_lnd(&the_gmlnd);
         return 0;
 }
 
@@ -257,5 +257,5 @@ int gmnal_init(void)
  */
 void gmnal_fini()
 {
-        lnet_unregister_nal(&gmnal_nal);
+        lnet_unregister_lnd(&the_gmlnd);
 }
index a193962..c7c7f38 100644 (file)
@@ -28,8 +28,9 @@
 #include "gmlnd.h"
 
 int
-gmnal_recv(ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg,
-           unsigned int niov, struct iovec *iov, lnet_kiov_t *kiov,
+gmnal_recv(lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg,
+           int delayed, 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;
@@ -46,35 +47,48 @@ gmnal_recv(ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg,
         if (rx->rx_recv_nob < nob) {
                 CERROR("Short message from nid %s: got %d, need %d\n",
                        libcfs_nid2str(msg->gmm_srcnid), rx->rx_recv_nob, nob);
+                gmnal_post_rx(gmni, rx);
                 return -EIO;
         }
 
-        gmnal_copy_from_netbuf(niov, iov, kiov, offset,
-                               npages, &rx->rx_buf, payload_offset, 
-                               mlen);
-
-        lnet_finalize(ni, private, ptlmsg, 0);
+        if (kiov != NULL)
+                lnet_copy_kiov2kiov(niov, kiov, offset,
+                                    npages, rx->rx_buf.nb_kiov, payload_offset, 
+                                    mlen);
+        else
+                lnet_copy_kiov2iov(niov, iov, offset,
+                                   npages, rx->rx_buf.nb_kiov, payload_offset,
+                                   mlen);
+
+        lnet_finalize(ni, private, lntmsg, 0);
+        gmnal_post_rx(gmni, rx);
        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 target, 
-           int target_is_router, int routing,
-           unsigned int niov, struct iovec *iov, lnet_kiov_t *kiov,
-           unsigned int offset, unsigned int len)
+gmnal_send(lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg)
 {
-       gmnal_ni_t      *gmni = ni->ni_data;
-        gm_status_t      gmrc;
-       gmnal_tx_t      *tx;
+        lnet_hdr_t       *hdr= &lntmsg->msg_hdr;
+        int               type = lntmsg->msg_type;
+        lnet_process_id_t target = lntmsg->msg_target;
+        int               target_is_router = lntmsg->msg_target_is_router;
+        int               routing = lntmsg->msg_routing;
+        unsigned int      niov = lntmsg->msg_niov;
+        struct iovec     *iov = lntmsg->msg_iov;
+        lnet_kiov_t      *kiov = lntmsg->msg_kiov;
+        unsigned int      offset = lntmsg->msg_offset;
+        unsigned int      len = lntmsg->msg_len;
+       gmnal_ni_t       *gmni = ni->ni_data;
+        gm_status_t       gmrc;
+       gmnal_tx_t       *tx;
 
         LASSERT (iov == NULL || kiov == NULL);
 
         /* I may not block for a tx if I'm responding to an incoming message */
         tx = gmnal_get_tx(gmni, 
                           !(routing ||
-                            type == PTL_MSG_ACK || 
-                            type == PTL_MSG_REPLY));
+                            type == LNET_MSG_ACK || 
+                            type == LNET_MSG_REPLY));
         if (tx == NULL) {
                 if (!gmni->gmni_shutdown)
                         CERROR ("Can't get tx for msg type %d for %s\n",
@@ -89,7 +103,7 @@ gmnal_send(ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg,
         if (gmrc != GM_SUCCESS) {
                 CERROR("Can't map Nid %s to a GM local ID: %d\n", 
                        libcfs_nid2str(target.nid), gmrc);
-                /* NB tx_ptlmsg not set => doesn't finalize */
+                /* NB tx_lntmsg not set => doesn't finalize */
                 gmnal_tx_done(tx, -EIO);
                 return -EIO;
         }
@@ -102,18 +116,20 @@ gmnal_send(ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg,
         if (tx->tx_msgnob + len <= gmni->gmni_small_msgsize) {
                 /* whole message fits in tx_buf */
                 char *buffer = &(GMNAL_NETBUF_MSG(&tx->tx_buf)->gmm_u.immediate.gmim_payload[0]);
-        
+
                 if (iov != NULL)
-                        lnet_copy_iov2buf(buffer, niov, iov, offset, len);
+                        lnet_copy_iov2flat(len, buffer, 0,
+                                           niov, iov, offset, len);
                 else
-                        lnet_copy_kiov2buf(buffer, niov, kiov, offset, len);
+                        lnet_copy_kiov2flat(len, buffer, 0,
+                                            niov, kiov, offset, len);
                 
                 tx->tx_msgnob += len;
                 tx->tx_large_nob = 0;
 
                 /* We've copied everything... */
-                LASSERT(tx->tx_ptlmsg == NULL);
-                lnet_finalize(ni, NULL, ptlmsg, 0);
+                LASSERT(tx->tx_lntmsg == NULL);
+                lnet_finalize(ni, NULL, lntmsg, 0);
         } else {
                 /* stash payload pts to copy later */
                 tx->tx_large_nob = len;
@@ -125,7 +141,7 @@ gmnal_send(ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg,
                         tx->tx_large_frags.iov = iov;
 
                 /* finalize later */
-                tx->tx_ptlmsg = ptlmsg;
+                tx->tx_lntmsg = lntmsg;
         }
         
         spin_lock(&gmni->gmni_tx_lock);
index 24547cf..fbb2acc 100644 (file)
@@ -149,7 +149,7 @@ gmnal_get_tx(gmnal_ni_t *gmni, int may_block)
         }
         
         if (tx != NULL) {
-                LASSERT (tx->tx_ptlmsg == NULL);
+                LASSERT (tx->tx_lntmsg == NULL);
                 LASSERT (tx->tx_ltxb == NULL);
                 LASSERT (!tx->tx_credit);
                 
@@ -168,7 +168,7 @@ gmnal_tx_done(gmnal_tx_t *tx, int rc)
         int         wake_sched = 0;
         int         wake_idle = 0;
         
-        LASSERT(tx->tx_ptlmsg == NULL);
+        LASSERT(tx->tx_lntmsg == NULL);
 
         spin_lock(&gmni->gmni_tx_lock);
         
@@ -293,26 +293,35 @@ gmnal_check_txqueues_locked (gmnal_ni_t *gmni)
                                GMNAL_NETBUF_MSG(&tx->tx_buf), tx->tx_msgnob);
 
                         /* 2. Copy the payload */
-                        gmnal_copy_to_netbuf(
-                                gmni->gmni_large_pages, 
-                                &ltxb->txb_buf, 
-                                tx->tx_msgnob,
-                                tx->tx_large_niov,
-                                tx->tx_large_iskiov ? NULL : tx->tx_large_frags.iov,
-                                tx->tx_large_iskiov ? tx->tx_large_frags.kiov : NULL,
-                                tx->tx_large_offset,
-                                tx->tx_large_nob);
+                        if (tx->tx_large_iskiov)
+                                lnet_copy_kiov2kiov(
+                                        gmni->gmni_large_pages,
+                                        ltxb->txb_buf.nb_kiov,
+                                        tx->tx_msgnob,
+                                        tx->tx_large_niov,
+                                        tx->tx_large_frags.kiov,
+                                        tx->tx_large_offset,
+                                        tx->tx_large_nob);
+                        else
+                                lnet_copy_iov2kiov(
+                                        gmni->gmni_large_pages,
+                                        ltxb->txb_buf.nb_kiov,
+                                        tx->tx_msgnob,
+                                        tx->tx_large_niov,
+                                        tx->tx_large_frags.iov,
+                                        tx->tx_large_offset,
+                                        tx->tx_large_nob);
 
                         tx->tx_msgnob += tx->tx_large_nob;
 
                         /* We've copied everything... */
-                        lnet_finalize(gmni->gmni_ni, NULL, tx->tx_ptlmsg, 0);
-                        tx->tx_ptlmsg = NULL;
+                        lnet_finalize(gmni->gmni_ni, NULL, tx->tx_lntmsg, 0);
+                        tx->tx_lntmsg = NULL;
 
                         spin_lock(&gmni->gmni_tx_lock);
                 }
 
-                LASSERT (tx->tx_ptlmsg == NULL);
+                LASSERT (tx->tx_lntmsg == NULL);
 
                 list_add_tail(&tx->tx_list, &gmni->gmni_cred_txq);
         }
@@ -385,6 +394,7 @@ gmnal_rx_thread(void *arg)
        gm_recv_event_t *rxevent = NULL;
        gm_recv_t       *recv = NULL;
         gmnal_rx_t      *rx;
+        int              rc;
 
        libcfs_daemonize("gmnal_rxd");
 
@@ -442,14 +452,18 @@ gmnal_rx_thread(void *arg)
 
                 /* We're connectionless: simply drop packets with
                  * errors */
-                if (gmnal_unpack_msg(gmni, rx) == 0) {
-                        LASSERT (GMNAL_NETBUF_MSG(&rx->rx_buf)->gmm_type == GMNAL_MSG_IMMEDIATE);
-                        (void)lnet_parse(gmni->gmni_ni, 
-                                        &(GMNAL_NETBUF_MSG(&rx->rx_buf)->gmm_u.immediate.gmim_hdr),
-                                        rx);
+                rc = gmnal_unpack_msg(gmni, rx);
+                if (rc == 0) {
+                        gmnal_msg_t *msg = GMNAL_NETBUF_MSG(&rx->rx_buf);
+                        
+                        LASSERT (msg->gmm_type == GMNAL_MSG_IMMEDIATE);
+                        rc =  lnet_parse(gmni->gmni_ni, 
+                                         &msg->gmm_u.immediate.gmim_hdr,
+                                         rx);
                 }
 
-                gmnal_post_rx(gmni, rx);
+                if (rc < 0)                     /* parse failure */
+                        gmnal_post_rx(gmni, rx);
 
                 down(&gmni->gmni_rx_mutex);
        }
index 8c00ae4..8afd98e 100644 (file)
@@ -27,7 +27,7 @@ gmnal_free_netbuf_pages (gmnal_netbuf_t *nb, int npages)
         int     i;
         
         for (i = 0; i < npages; i++)
-                __free_page(nb->nb_pages[i]);
+                __free_page(nb->nb_kiov[i].kiov_page);
 }
 
 int
@@ -40,23 +40,26 @@ gmnal_alloc_netbuf_pages (gmnal_ni_t *gmni, gmnal_netbuf_t *nb, int npages)
 
         for (i = 0; i < npages; i++) {
                 
-                nb->nb_pages[i] = alloc_page(GFP_KERNEL);
+                nb->nb_kiov[i].kiov_page = alloc_page(GFP_KERNEL);
+                nb->nb_kiov[i].kiov_offset = 0;
+                nb->nb_kiov[i].kiov_len = PAGE_SIZE;
 
-                if (nb->nb_pages[i] == NULL) {
+                if (nb->nb_kiov[i].kiov_page == NULL) {
                         CERROR("Can't allocate page\n");
                         gmnal_free_netbuf_pages(nb, i);
                         return -ENOMEM;
                 }
 
                 CDEBUG(D_NET,"[%3d] page %p, phys "LPX64", @ "LPX64"\n",
-                       i, nb->nb_pages[i], (__u64)page_to_phys(nb->nb_pages[i]),
+                       i, nb->nb_kiov[i].kiov_page, 
+                       (__u64)page_to_phys(nb->nb_kiov[i].kiov_page),
                        gmni->gmni_netaddr_base);
 
                 gmrc = gm_register_memory_ex_phys(gmni->gmni_port,
-                                                  page_to_phys(nb->nb_pages[i]),
+                                                  page_to_phys(nb->nb_kiov[i].kiov_page),
                                                   PAGE_SIZE,
                                                   gmni->gmni_netaddr_base);
-                CDEBUG(D_NET,"[%3d] page %p: %d\n", i, nb->nb_pages[i], gmrc);
+                CDEBUG(D_NET,"[%3d] page %p: %d\n", i, nb->nb_kiov[i].kiov_page, gmrc);
 
                 if (gmrc != GM_SUCCESS) {
                         CERROR("Can't map page: %d(%s)\n", gmrc,
@@ -83,14 +86,14 @@ gmnal_free_ltxbuf (gmnal_ni_t *gmni, gmnal_txbuf_t *txb)
         /* No unmapping; the port has been closed */
 
         gmnal_free_netbuf_pages(&txb->txb_buf, gmni->gmni_large_pages);
-        PORTAL_FREE(txb, offsetof(gmnal_txbuf_t, txb_buf.nb_pages[npages]));
+        PORTAL_FREE(txb, offsetof(gmnal_txbuf_t, txb_buf.nb_kiov[npages]));
 }
 
 int
 gmnal_alloc_ltxbuf (gmnal_ni_t *gmni)
 {
         int            npages = gmni->gmni_large_pages;
-        int            sz = offsetof(gmnal_txbuf_t, txb_buf.nb_pages[npages]);
+        int            sz = offsetof(gmnal_txbuf_t, txb_buf.nb_kiov[npages]);
         gmnal_txbuf_t *txb;
         int            rc;
         
@@ -165,14 +168,14 @@ gmnal_free_rx(gmnal_ni_t *gmni, gmnal_rx_t *rx)
         LASSERT (gmni->gmni_port == NULL);
 
         gmnal_free_netbuf_pages(&rx->rx_buf, npages);
-        PORTAL_FREE(rx, offsetof(gmnal_rx_t, rx_buf.nb_pages[npages]));
+        PORTAL_FREE(rx, offsetof(gmnal_rx_t, rx_buf.nb_kiov[npages]));
 }
 
 int
 gmnal_alloc_rx (gmnal_ni_t *gmni, int islarge)
 {
         int         npages = islarge ? gmni->gmni_large_pages : 1;
-        int         sz = offsetof(gmnal_rx_t, rx_buf.nb_pages[npages]);
+        int         sz = offsetof(gmnal_rx_t, rx_buf.nb_kiov[npages]);
         int         rc;
         gmnal_rx_t *rx;
         gm_status_t gmrc;
@@ -206,104 +209,6 @@ gmnal_alloc_rx (gmnal_ni_t *gmni, int islarge)
 }
 
 void
-gmnal_copy_tofrom_netbuf(int niov, struct iovec *iov, lnet_kiov_t *kiov, int offset, 
-                         int nb_pages, gmnal_netbuf_t *nb, int nb_offset,
-                         int nob, int from_nb)
-{
-        int        nb_page;
-        int        nb_nob;
-        char      *nb_ptr;
-        int        iov_nob;
-        char      *iov_ptr;
-
-        if (nob == 0)
-                return;
-
-        LASSERT (nob > 0);
-        LASSERT (niov > 0);
-        LASSERT ((iov == NULL) != (kiov == NULL));
-
-        /* skip 'offset' bytes */
-        if (kiov != NULL) {
-                while (offset >= kiov->kiov_len) {
-                        offset -= kiov->kiov_len;
-                        kiov++;
-                        niov--;
-                        LASSERT (niov > 0);
-                }
-                iov_ptr = ((char *)kmap(kiov->kiov_page)) +
-                          kiov->kiov_offset + offset;
-                iov_nob = kiov->kiov_len - offset;
-        } else {
-                while (offset >= iov->iov_len) {
-                        offset -= iov->iov_len;
-                        iov++;
-                        niov--;
-                        LASSERT (niov > 0);
-                }
-                iov_ptr = iov->iov_base + offset;
-                iov_nob = iov->iov_len - offset;
-        }
-                
-        LASSERT (nb_pages > 0);
-        LASSERT (nb_offset < PAGE_SIZE);
-
-        nb_page = 0;
-        nb_ptr = page_address(nb->nb_pages[0]) + nb_offset;
-        nb_nob = PAGE_SIZE - nb_offset;
-        
-        for (;;) {
-                int this_nob = nob;
-                        
-                if (this_nob > nb_nob)
-                        this_nob = nb_nob;
-                if (this_nob > iov_nob)
-                        this_nob = iov_nob;
-
-                if (from_nb)
-                        memcpy(iov_ptr, nb_ptr, this_nob);
-                else
-                        memcpy(nb_ptr, iov_ptr, this_nob);
-
-                nob -= this_nob;
-                if (nob == 0)
-                        break;
-                        
-                nb_nob -= this_nob;
-                if (nb_nob != 0) {
-                        nb_ptr += this_nob;
-                } else {
-                        nb_page++;
-                        LASSERT (nb_page < nb_pages);
-                        nb_ptr = page_address(nb->nb_pages[nb_page]);
-                        nb_nob = PAGE_SIZE;
-                }
-                        
-                iov_nob -= this_nob;
-                if (iov_nob != 0) {
-                        iov_ptr += this_nob;
-                } else if (kiov != NULL) {
-                        kunmap(kiov->kiov_page);
-                        kiov++;
-                        niov--;
-                        LASSERT (niov > 0);
-                        iov_ptr = ((char *)kmap(kiov->kiov_page)) +
-                                  kiov->kiov_offset;
-                        iov_nob = kiov->kiov_len;
-                } else {
-                        iov++;
-                        niov--;
-                        LASSERT (niov > 0);
-                        iov_ptr = iov->iov_base;
-                        iov_nob = iov->iov_len;
-                }
-        }
-                
-        if (kiov != NULL)
-                kunmap(kiov->kiov_page);
-}
-
-void
 gmnal_free_ltxbufs (gmnal_ni_t *gmni)
 {
         gmnal_txbuf_t *txb;
index d8421e7..3c4cd8e 100644 (file)
 
 #include "iiblnd.h"
 
-ptl_nal_t kibnal_nal = {
-        .nal_type          = IIBNAL,
-        .nal_startup       = kibnal_startup,
-        .nal_shutdown      = kibnal_shutdown,
-        .nal_ctl           = kibnal_ctl,
-        .nal_send          = kibnal_send,
-        .nal_recv          = kibnal_recv,
+lnd_t the_kiblnd = {
+        .lnd_type          = IIBLND,
+        .lnd_startup       = kibnal_startup,
+        .lnd_shutdown      = kibnal_shutdown,
+        .lnd_ctl           = kibnal_ctl,
+        .lnd_send          = kibnal_send,
+        .lnd_recv          = kibnal_recv,
 };
 
 kib_tunables_t          kibnal_tunables;
@@ -924,7 +924,7 @@ kibnal_close_matching_conns (lnet_nid_t nid)
 }
 
 int
-kibnal_ctl(ptl_ni_t *ni, unsigned int cmd, void *arg)
+kibnal_ctl(lnet_ni_t *ni, unsigned int cmd, void *arg)
 {
         struct portal_ioctl_data *data = arg;
         int                       rc = -EINVAL;
@@ -1148,7 +1148,7 @@ kibnal_setup_tx_descs (void)
 }
 
 void
-kibnal_shutdown (ptl_ni_t *ni)
+kibnal_shutdown (lnet_ni_t *ni)
 {
         int   i;
         int   rc;
@@ -1303,7 +1303,7 @@ static __u64 max_phys_mem(IB_CA_ATTRIBUTES *ca_attr)
 #undef roundup_power
 
 int
-kibnal_startup (ptl_ni_t *ni)
+kibnal_startup (lnet_ni_t *ni)
 {
         IB_PORT_ATTRIBUTES *pattr;
         FSTATUS             frc;
@@ -1311,7 +1311,7 @@ kibnal_startup (ptl_ni_t *ni)
         int                 n;
         int                 i;
 
-        LASSERT (ni->ni_nal == &kibnal_nal);
+        LASSERT (ni->ni_lnd == &the_kiblnd);
 
         /* Only 1 instance supported */
         if (kibnal_data.kib_init != IBNAL_INIT_NOTHING) {
@@ -1628,7 +1628,7 @@ kibnal_module_fini (void)
         if (kibnal_tunables.kib_sysctl != NULL)
                 unregister_sysctl_table (kibnal_tunables.kib_sysctl);
 #endif
-        lnet_unregister_nal(&kibnal_nal);
+        lnet_unregister_lnd(&the_kiblnd);
 }
 
 int __init
@@ -1636,7 +1636,7 @@ kibnal_module_init (void)
 {
         int    rc;
 
-        if (lnet_apini.apini_ptlcompat != 0) {
+        if (the_lnet.ln_ptlcompat != 0) {
                 LCONSOLE_ERROR("IIB does not support portals compatibility mode\n");
                 return -ENODEV;
         }
@@ -1655,7 +1655,7 @@ kibnal_module_init (void)
         /* Initialise dynamic tunables to defaults once only */
         kibnal_tunables.kib_io_timeout = IBNAL_IO_TIMEOUT;
 
-        lnet_register_nal(&kibnal_nal);
+        lnet_register_lnd(&the_kiblnd);
         
 #ifdef CONFIG_SYSCTL
         /* Press on regardless even if registering sysctl doesn't work */
index 528e719..d58eb63 100644 (file)
@@ -171,7 +171,7 @@ typedef struct
         __u64             kib_incarnation;      /* which one am I */
         int               kib_shutdown;         /* shut down? */
         atomic_t          kib_nthreads;         /* # live threads */
-        ptl_ni_t         *kib_ni;               /* _the_ nal instance */
+        lnet_ni_t        *kib_ni;               /* _the_ nal instance */
 
         __u64             kib_service_id;       /* service number I listen on */
         __u64             kib_port_guid;        /* my GUID (lo 64 of GID)*/
@@ -254,7 +254,7 @@ typedef struct
 
 typedef struct
 {
-        ptl_hdr_t         ibim_hdr;             /* portals header */
+        lnet_hdr_t        ibim_hdr;             /* portals header */
         char              ibim_payload[0];      /* piggy-backed payload */
 } WIRE_ATTR kib_immediate_msg_t;
 
@@ -264,7 +264,7 @@ typedef struct
  * the different roles result in split local/remote meaning of desc->rd_key */
 typedef struct
 {
-        ptl_hdr_t         ibrm_hdr;             /* portals header */
+        lnet_hdr_t        ibrm_hdr;             /* portals header */
         __u64             ibrm_cookie;          /* opaque completion cookie */
         __u32             ibrm_num_descs;       /* how many descs */
         __u32             rd_key;               /* remote key */
@@ -314,7 +314,7 @@ typedef struct kib_rx                           /* receive message */
         struct list_head          rx_list;      /* queue for attention */
         struct kib_conn          *rx_conn;      /* owning conn */
         int                       rx_rdma;      /* RDMA completion posted? */
-        int                       rx_posted;    /* posted? */
+        int                       rx_nob;       /* # bytes received (-1 while posted) */
         __u64                     rx_vaddr;     /* pre-mapped buffer (hca vaddr) */
         kib_msg_t                *rx_msg;       /* pre-mapped buffer (host vaddr) */
         IB_WORK_REQ               rx_wrq;
@@ -333,7 +333,7 @@ typedef struct kib_tx                           /* transmit message */
         int                       tx_passive_rdma; /* peer sucks/blows */
         int                       tx_passive_rdma_wait; /* waiting for peer to complete */
         __u64                     tx_passive_rdma_cookie; /* completion cookie */
-        ptl_msg_t                *tx_ptlmsg[2]; /* ptl msgs to finalize on completion */
+        lnet_msg_t               *tx_lntmsg[2]; /* lnet msgs to finalize on completion */
         kib_md_t                  tx_md;        /* RDMA mapping (active/passive) */
         __u64                     tx_vaddr;     /* pre-mapped buffer (hca vaddr) */
         kib_msg_t                *tx_msg;       /* pre-mapped buffer (host vaddr) */
@@ -860,17 +860,13 @@ kibnal_whole_mem(void)
         return kibnal_data.kib_md.md_handle != NULL;
 }
 
-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 tgt_is_router, 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, lnet_kiov_t *kiov,
+extern int kibnal_startup (lnet_ni_t *ni);
+extern void kibnal_shutdown (lnet_ni_t *ni);
+extern int kibnal_ctl(lnet_ni_t *ni, unsigned int cmd, void *arg);
+int kibnal_send (lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg);
+extern int kibnal_recv (lnet_ni_t *ni, void *private, lnet_msg_t *msg,
+                        int delayed, 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);
@@ -897,7 +893,7 @@ extern int  kibnal_connd (void *arg);
 extern void kibnal_init_tx_msg (kib_tx_t *tx, int type, int body_nob);
 extern void kibnal_close_conn (kib_conn_t *conn, int why);
 extern void kibnal_start_active_rdma (int type, int status,
-                                      kib_rx_t *rx, ptl_msg_t *ptlmsg,
+                                      kib_rx_t *rx, lnet_msg_t *lntmsg,
                                       unsigned int niov,
                                       struct iovec *iov, lnet_kiov_t *kiov,
                                       unsigned int offset, unsigned int nob);
index 9858740..cb7f580 100644 (file)
@@ -43,7 +43,6 @@ kibnal_schedule_tx_done (kib_tx_t *tx)
 static void
 kibnal_tx_done (kib_tx_t *tx)
 {
-        int        ptlrc = (tx->tx_status == 0) ? 0 : -EIO;
         unsigned long    flags;
         int              i;
         FSTATUS          frc;
@@ -89,11 +88,12 @@ kibnal_tx_done (kib_tx_t *tx)
 
         for (i = 0; i < 2; i++) {
                 /* tx may have up to 2 ptlmsgs to finalise */
-                if (tx->tx_ptlmsg[i] == NULL)
+                if (tx->tx_lntmsg[i] == NULL)
                         continue;
 
-                lnet_finalize (kibnal_data.kib_ni, NULL, tx->tx_ptlmsg[i], ptlrc);
-                tx->tx_ptlmsg[i] = NULL;
+                lnet_finalize (kibnal_data.kib_ni, NULL, tx->tx_lntmsg[i],
+                               tx->tx_status);
+                tx->tx_lntmsg[i] = NULL;
         }
         
         if (tx->tx_conn != NULL) {
@@ -169,8 +169,8 @@ kibnal_get_idle_tx (int may_block)
                 LASSERT (tx->tx_conn == NULL);
                 LASSERT (!tx->tx_passive_rdma);
                 LASSERT (!tx->tx_passive_rdma_wait);
-                LASSERT (tx->tx_ptlmsg[0] == NULL);
-                LASSERT (tx->tx_ptlmsg[1] == NULL);
+                LASSERT (tx->tx_lntmsg[0] == NULL);
+                LASSERT (tx->tx_lntmsg[1] == NULL);
         }
 
         spin_unlock_irqrestore (&kibnal_data.kib_tx_lock, flags);
@@ -258,8 +258,8 @@ kibnal_post_rx (kib_rx_t *rx, int do_credits)
 
         KIB_ASSERT_CONN_STATE_RANGE(conn, IBNAL_CONN_ESTABLISHED,
                                     IBNAL_CONN_DREP);
-        LASSERT (!rx->rx_posted);
-        rx->rx_posted = 1;
+        LASSERT (rx->rx_nob >= 0);
+        rx->rx_nob = -1;                        /* flag posted */
         mb();
 
         if (conn->ibc_state != IBNAL_CONN_ESTABLISHED)
@@ -364,8 +364,8 @@ kibnal_rx_callback (IB_WORK_COMPLETION *wc)
                                     IBNAL_CONN_DISCONNECTED);
 
         CDEBUG(D_NET, "rx %p conn %p\n", rx, conn);
-        LASSERT (rx->rx_posted);
-        rx->rx_posted = 0;
+        LASSERT (rx->rx_nob < 0);               /* was posted */
+        rx->rx_nob = 0;                         /* isn't now */
         mb();
 
         /* receives complete with error in any case after we've started
@@ -386,6 +386,9 @@ kibnal_rx_callback (IB_WORK_COMPLETION *wc)
                 goto failed;
         }
 
+        rx->rx_nob = nob;
+        mb();
+
         hexdump("rx", rx->rx_msg, sizeof(kib_msg_t));
 
         /* Receiver does any byte flipping if necessary... */
@@ -537,6 +540,7 @@ kibnal_rx_callback (IB_WORK_COMPLETION *wc)
 void
 kibnal_rx (kib_rx_t *rx)
 {
+        int          rc = 0;
         kib_msg_t   *msg = rx->rx_msg;
 
         /* Clear flag so I can detect if I've sent an RDMA completion */
@@ -544,45 +548,26 @@ kibnal_rx (kib_rx_t *rx)
 
         switch (msg->ibm_type) {
         case IBNAL_MSG_GET_RDMA:
-                lnet_parse(kibnal_data.kib_ni, &msg->ibm_u.rdma.ibrm_hdr, rx);
-                /* If the incoming get was matched, I'll have initiated the
-                 * RDMA and the completion message... */
-                if (rx->rx_rdma)
-                        break;
-
-                /* Otherwise, I'll send a failed completion now to prevent
-                 * the peer's GET blocking for the full timeout. */
-                CERROR ("Completing unmatched RDMA GET from %s\n",
-                        libcfs_nid2str(rx->rx_conn->ibc_peer->ibp_nid));
-                kibnal_start_active_rdma (IBNAL_MSG_GET_DONE, -EIO,
-                                          rx, NULL, 0, NULL, NULL, 0, 0);
+                rc = lnet_parse(kibnal_data.kib_ni, &msg->ibm_u.rdma.ibrm_hdr, rx);
                 break;
                 
         case IBNAL_MSG_PUT_RDMA:
-                lnet_parse(kibnal_data.kib_ni, &msg->ibm_u.rdma.ibrm_hdr, rx);
-                if (rx->rx_rdma)
-                        break;
-                /* This is most unusual, since even if lnet_parse() didn't
-                 * match anything, it should have asked us to read (and
-                 * discard) the payload.  The portals header must be
-                 * inconsistent with this message type, so it's the
-                 * sender's fault for sending garbage and she can time
-                 * herself out... */
-                CERROR ("Uncompleted RMDA PUT from %s\n",
-                        libcfs_nid2str(rx->rx_conn->ibc_peer->ibp_nid));
+                rc = lnet_parse(kibnal_data.kib_ni, &msg->ibm_u.rdma.ibrm_hdr, rx);
                 break;
 
         case IBNAL_MSG_IMMEDIATE:
-                lnet_parse(kibnal_data.kib_ni, &msg->ibm_u.immediate.ibim_hdr, rx);
-                LASSERT (!rx->rx_rdma);
+                rc = lnet_parse(kibnal_data.kib_ni, &msg->ibm_u.immediate.ibim_hdr, rx);
                 break;
-                
+
         default:
                 LBUG();
                 break;
         }
 
-        kibnal_post_rx (rx, 1);
+        if (rc < 0) {
+                kibnal_close_conn(rx->rx_conn, rc);
+                kibnal_post_rx (rx, 1);
+        }
 }
 
 static struct page *
@@ -653,7 +638,7 @@ kibnal_map_rdma_iov(kib_tx_t *tx, unsigned long vaddr, int nob, int active)
 
 static int
 kibnal_map_iov (kib_tx_t *tx, IB_ACCESS_CONTROL access,
-                 int niov, struct iovec *iov, int offset, int nob, int active)
+                unsigned int niov, struct iovec *iov, int offset, int nob, int active)
                  
 {
         void   *vaddr;
@@ -1250,10 +1235,10 @@ kibnal_launch_tx (kib_tx_t *tx, lnet_nid_t nid)
 }
 
 static int
-kibnal_start_passive_rdma (int type, int may_block, lnet_nid_t nid,
-                            ptl_msg_t *ptlmsg, ptl_hdr_t *hdr)
+kibnal_start_passive_rdma (int type, int may_block, lnet_msg_t *lntmsg)
 {
-        int         nob = ptlmsg->msg_md->md_length;
+        lnet_nid_t  nid = lntmsg->msg_target.nid;
+        int         nob = lntmsg->msg_md->md_length;
         kib_tx_t   *tx;
         kib_msg_t  *ibmsg;
         int         rc;
@@ -1276,15 +1261,15 @@ kibnal_start_passive_rdma (int type, int may_block, lnet_nid_t nid,
                 return -ENOMEM;
         }
 
-        if ((ptlmsg->msg_md->md_options & LNET_MD_KIOV) == 0) 
+        if ((lntmsg->msg_md->md_options & LNET_MD_KIOV) == 0) 
                 rc = kibnal_map_iov (tx, access,
-                                     ptlmsg->msg_md->md_niov,
-                                     ptlmsg->msg_md->md_iov.iov,
+                                     lntmsg->msg_md->md_niov,
+                                     lntmsg->msg_md->md_iov.iov,
                                      0, nob, 0);
         else
                 rc = kibnal_map_kiov (tx, access,
-                                      ptlmsg->msg_md->md_niov, 
-                                      ptlmsg->msg_md->md_iov.kiov,
+                                      lntmsg->msg_md->md_niov, 
+                                      lntmsg->msg_md->md_iov.kiov,
                                       0, nob, 0);
 
         if (rc != 0) {
@@ -1295,9 +1280,9 @@ kibnal_start_passive_rdma (int type, int may_block, lnet_nid_t nid,
         
         if (type == IBNAL_MSG_GET_RDMA) {
                 /* reply gets finalized when tx completes */
-                tx->tx_ptlmsg[1] = lnet_create_reply_msg(kibnal_data.kib_ni, 
-                                                        nid, ptlmsg);
-                if (tx->tx_ptlmsg[1] == NULL) {
+                tx->tx_lntmsg[1] = lnet_create_reply_msg(kibnal_data.kib_ni, 
+                                                         lntmsg);
+                if (tx->tx_lntmsg[1] == NULL) {
                         CERROR ("Can't create reply for GET -> %s\n",
                                 libcfs_nid2str(nid));
                         rc = -ENOMEM;
@@ -1309,7 +1294,7 @@ kibnal_start_passive_rdma (int type, int may_block, lnet_nid_t nid,
 
         ibmsg = tx->tx_msg;
 
-        ibmsg->ibm_u.rdma.ibrm_hdr = *hdr;
+        ibmsg->ibm_u.rdma.ibrm_hdr = lntmsg->msg_hdr;
         ibmsg->ibm_u.rdma.ibrm_cookie = tx->tx_passive_rdma_cookie;
         /* map_kiov alrady filled the rdma descs for the whole_mem case */
         if (!kibnal_whole_mem()) {
@@ -1327,8 +1312,8 @@ kibnal_start_passive_rdma (int type, int may_block, lnet_nid_t nid,
                tx, tx->tx_passive_rdma_cookie, tx->tx_md.md_rkey,
                tx->tx_md.md_addr, nob);
         
-        /* ptlmsg gets finalized when tx completes. */
-        tx->tx_ptlmsg[0] = ptlmsg;
+        /* lntmsg gets finalized when tx completes. */
+        tx->tx_lntmsg[0] = lntmsg;
 
         kibnal_launch_tx(tx, nid);
         return (0);
@@ -1341,10 +1326,10 @@ kibnal_start_passive_rdma (int type, int may_block, lnet_nid_t nid,
 
 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,
-                           unsigned int offset, unsigned int nob)
+                          kib_rx_t *rx, lnet_msg_t *lntmsg, 
+                          unsigned int niov,
+                          struct iovec *iov, lnet_kiov_t *kiov,
+                          unsigned int offset, unsigned int nob)
 {
         kib_msg_t    *rxmsg = rx->rx_msg;
         kib_msg_t    *txmsg;
@@ -1389,7 +1374,7 @@ kibnal_start_active_rdma (int type, int status,
                 CERROR ("tx descs exhausted on RDMA from %s"
                         " completing locally with failure\n",
                         libcfs_nid2str(rx->rx_conn->ibc_peer->ibp_nid));
-                lnet_finalize (kibnal_data.kib_ni, NULL, ptlmsg, -ENOMEM);
+                lnet_finalize (kibnal_data.kib_ni, NULL, lntmsg, -ENOMEM);
                 return;
         }
         LASSERT (tx->tx_nsp == 0);
@@ -1479,15 +1464,15 @@ init_tx:
 
         if (status == 0 && nob != 0) {
                 LASSERT (tx->tx_nsp > 1);
-                /* RDMA: ptlmsg gets finalized when the tx completes.  This
+                /* RDMA: lntmsg gets finalized when the tx completes.  This
                  * is after the completion message has been sent, which in
                  * turn is after the RDMA has finished. */
-                tx->tx_ptlmsg[0] = ptlmsg;
+                tx->tx_lntmsg[0] = lntmsg;
         } else {
                 LASSERT (tx->tx_nsp == 1);
                 /* No RDMA: local completion happens now! */
                 CDEBUG(D_WARNING,"No data: immediate completion\n");
-                lnet_finalize (kibnal_data.kib_ni, NULL, ptlmsg,
+                lnet_finalize (kibnal_data.kib_ni, NULL, lntmsg,
                               status == 0 ? 0 : -EIO);
         }
 
@@ -1502,34 +1487,32 @@ init_tx:
 }
 
 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               target_is_router,
-            int               routing,
-            unsigned int      payload_niov, 
-            struct iovec     *payload_iov, 
-            lnet_kiov_t      *payload_kiov,
-            unsigned int      payload_offset,
-            unsigned int      payload_nob)
+kibnal_send(lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg)
 {
-        kib_msg_t  *ibmsg;
-        kib_tx_t   *tx;
-        int         nob;
+        lnet_hdr_t       *hdr = &lntmsg->msg_hdr; 
+        int               type = lntmsg->msg_type; 
+        lnet_process_id_t target = lntmsg->msg_target;
+        int               target_is_router = lntmsg->msg_target_is_router;
+        int               routing = lntmsg->msg_routing;
+        unsigned int      payload_niov = lntmsg->msg_niov;
+        struct iovec     *payload_iov = lntmsg->msg_iov; 
+        lnet_kiov_t      *payload_kiov = lntmsg->msg_kiov;
+        unsigned int      payload_offset = lntmsg->msg_offset;
+        unsigned int      payload_nob = lntmsg->msg_len;
+        kib_msg_t        *ibmsg;
+        kib_tx_t         *tx;
+        int               nob;
 
         /* NB 'private' is different depending on what we're sending.... */
 
-        CDEBUG(D_NET, "sending "LPSZ" bytes in %d frags to %s\n", 
+        CDEBUG(D_NET, "sending %d bytes in %d frags to %s\n", 
                payload_nob, payload_niov, libcfs_id2str(target));
 
         LASSERT (payload_nob == 0 || payload_niov > 0);
         LASSERT (payload_niov <= PTL_MD_MAX_IOV);
 
         /* Thread context if we're sending payload */
-        LASSERT (!in_interrupt() || payload_niov == 0);
+        LASSERT (!in_interrupt() || payload_nob == 0);
         /* payload is either all vaddrs or all pages */
         LASSERT (!(payload_kiov != NULL && payload_iov != NULL));
 
@@ -1538,23 +1521,22 @@ kibnal_send(ptl_ni_t         *ni,
                 LBUG();
                 return (-EIO);
                 
-        case PTL_MSG_ACK:
+        case LNET_MSG_ACK:
                 LASSERT (payload_nob == 0);
                 break;
 
-        case PTL_MSG_GET:
+        case LNET_MSG_GET:
                 if (routing || target_is_router)
                         break;                  /* send IMMEDIATE */
 
                 /* is the REPLY message too small for RDMA? */
-                nob = offsetof(kib_msg_t, ibm_u.immediate.ibim_payload[ptlmsg->msg_md->md_length]);
+                nob = offsetof(kib_msg_t, ibm_u.immediate.ibim_payload[lntmsg->msg_md->md_length]);
                 if (nob <= IBNAL_MSG_SIZE)
                         break;                  /* send IMMEDIATE */
 
-                return kibnal_start_passive_rdma(IBNAL_MSG_GET_RDMA, 1,
-                                                 target.nid, ptlmsg, hdr);
+                return kibnal_start_passive_rdma(IBNAL_MSG_GET_RDMA, 1, lntmsg);
 
-        case PTL_MSG_REPLY: {
+        case LNET_MSG_REPLY: {
                 /* reply's 'private' is the incoming receive */
                 kib_rx_t *rx = private;
 
@@ -1571,7 +1553,7 @@ kibnal_send(ptl_ni_t         *ni,
                         }
 
                         kibnal_start_active_rdma(IBNAL_MSG_GET_DONE, 0,
-                                                 rx, ptlmsg, payload_niov, 
+                                                 rx, lntmsg, payload_niov, 
                                                  payload_iov, payload_kiov,
                                                  payload_offset, payload_nob);
                         return (0);
@@ -1579,22 +1561,22 @@ kibnal_send(ptl_ni_t         *ni,
                 /* Fall through to handle like PUT */
         }
 
-        case PTL_MSG_PUT:
+        case LNET_MSG_PUT:
                 /* Is the payload small enough not to need RDMA? */
                 nob = offsetof(kib_msg_t, ibm_u.immediate.ibim_payload[payload_nob]);
                 if (nob <= IBNAL_MSG_SIZE)
                         break;                  /* send IMMEDIATE */
                 
                 return kibnal_start_passive_rdma(IBNAL_MSG_PUT_RDMA,
-                                                 !(routing || type == PTL_MSG_REPLY),
-                                                 target.nid, ptlmsg, hdr);
+                                                 !(routing || type == LNET_MSG_REPLY),
+                                                 lntmsg);
         }
 
-        /* send IMMEDIATE */
+        /* Send IMMEDIATE */
 
         tx = kibnal_get_idle_tx(!(routing ||
-                                  type == PTL_MSG_ACK ||
-                                  type == PTL_MSG_REPLY ||
+                                  type == LNET_MSG_ACK ||
+                                  type == LNET_MSG_REPLY ||
                                   in_interrupt()));
         if (tx == NULL) {
                 CERROR ("Can't send %d to %s: tx descs exhausted%s\n", 
@@ -1606,37 +1588,39 @@ kibnal_send(ptl_ni_t         *ni,
         ibmsg = tx->tx_msg;
         ibmsg->ibm_u.immediate.ibim_hdr = *hdr;
 
-        if (payload_nob > 0) {
-                if (payload_kiov != NULL)
-                        lnet_copy_kiov2buf(ibmsg->ibm_u.immediate.ibim_payload,
-                                          payload_niov, payload_kiov,
-                                          payload_offset, payload_nob);
-                else
-                        lnet_copy_iov2buf(ibmsg->ibm_u.immediate.ibim_payload,
-                                         payload_niov, payload_iov,
-                                         payload_offset, payload_nob);
-        }
+        if (payload_kiov != NULL)
+                lnet_copy_kiov2flat(IBNAL_MSG_SIZE, ibmsg, 
+                                    offsetof(kib_msg_t, ibm_u.immediate.ibim_payload),
+                                    payload_niov, payload_kiov, 
+                                    payload_offset, payload_nob);
+        else
+                lnet_copy_iov2flat(IBNAL_MSG_SIZE, ibmsg, 
+                                   offsetof(kib_msg_t, ibm_u.immediate.ibim_payload),
+                                   payload_niov, payload_iov, 
+                                   payload_offset, payload_nob);
 
         kibnal_init_tx_msg (tx, IBNAL_MSG_IMMEDIATE,
                             offsetof(kib_immediate_msg_t, 
                                      ibim_payload[payload_nob]));
 
-        /* ptlmsg gets finalized when tx completes */
-        tx->tx_ptlmsg[0] = ptlmsg;
+        /* lntmsg gets finalized when tx completes */
+        tx->tx_lntmsg[0] = lntmsg;
 
         kibnal_launch_tx(tx, target.nid);
         return (0);
 }
 
 int
-kibnal_recv (ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg,
-             unsigned int niov, struct iovec *iov, lnet_kiov_t *kiov,
+kibnal_recv (lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg,
+             int delayed, 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;
         int          msg_nob;
-        
+        int          rc = 0;
+
         LASSERT (mlen <= rlen);
         LASSERT (!in_interrupt ());
         /* Either all pages or all vaddrs */
@@ -1645,42 +1629,48 @@ kibnal_recv (ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg,
         switch (rxmsg->ibm_type) {
         default:
                 LBUG();
-                return (-EIO);
-                
+
         case IBNAL_MSG_IMMEDIATE:
                 msg_nob = offsetof(kib_msg_t, ibm_u.immediate.ibim_payload[rlen]);
-                if (msg_nob > IBNAL_MSG_SIZE) {
-                        CERROR ("Immediate message from %s too big: %d\n",
-                                libcfs_nid2str(rxmsg->ibm_u.immediate.ibim_hdr.src_nid), 
-                                rlen);
-                        return (-EIO);
+                if (msg_nob > rx->rx_nob) {
+                        CERROR ("Immediate message from %s too big: %d(%d)\n",
+                                libcfs_nid2str(rxmsg->ibm_u.immediate.ibim_hdr.src_nid),
+                                rlen, rx->rx_nob);
+                        rc = -EPROTO;
+                        break;
                 }
 
                 if (kiov != NULL)
-                        lnet_copy_buf2kiov(niov, kiov, offset,
-                                          rxmsg->ibm_u.immediate.ibim_payload,
-                                          mlen);
+                        lnet_copy_flat2kiov(niov, kiov, offset,
+                                            IBNAL_MSG_SIZE, rxmsg,
+                                            offsetof(kib_msg_t, ibm_u.immediate.ibim_payload),
+                                            mlen);
                 else
-                        lnet_copy_buf2iov(niov, iov, offset,
-                                         rxmsg->ibm_u.immediate.ibim_payload,
-                                         mlen);
+                        lnet_copy_flat2iov(niov, iov, offset,
+                                           IBNAL_MSG_SIZE, rxmsg,
+                                           offsetof(kib_msg_t, ibm_u.immediate.ibim_payload),
+                                           mlen);
 
-                lnet_finalize (ni, NULL, ptlmsg, 0);
-                return (0);
+                lnet_finalize (ni, NULL, lntmsg, 0);
+                break;
 
         case IBNAL_MSG_GET_RDMA:
-                /* We get called here just to discard any junk after the
-                 * GET hdr. */
-                LASSERT (ptlmsg == NULL);
-                lnet_finalize (ni, NULL, ptlmsg, 0);
-                return (0);
+                LASSERT (lntmsg == NULL);       /* no need to finalise */
+                if (!rx->rx_rdma) {
+                        /* GET didn't match anything */
+                        kibnal_start_active_rdma (IBNAL_MSG_GET_DONE, -ENODATA,
+                                                  rx, NULL, 0, NULL, NULL, 0, 0);
+                }
+                break;
 
         case IBNAL_MSG_PUT_RDMA:
-                kibnal_start_active_rdma (IBNAL_MSG_PUT_DONE, 0,
-                                          rx, ptlmsg, 
+                kibnal_start_active_rdma (IBNAL_MSG_PUT_DONE, 0, rx, lntmsg, 
                                           niov, iov, kiov, offset, mlen);
-                return (0);
+                break;
         }
+
+        kibnal_post_rx(rx, 1);
+        return rc;
 }
 
 /*****************************************************************************
index a27c894..5b395f6 100644 (file)
 
 #include "openiblnd.h"
 
-ptl_nal_t               kibnal_nal = {
-        .nal_type       = OPENIBNAL,
-        .nal_startup    = kibnal_startup,
-        .nal_shutdown   = kibnal_shutdown,
-        .nal_ctl        = kibnal_ctl,
-        .nal_send       = kibnal_send,
-        .nal_recv       = kibnal_recv,
-        .nal_accept     = kibnal_accept,
+lnd_t the_kiblnd = {
+        .lnd_type       = OPENIBLND,
+        .lnd_startup    = kibnal_startup,
+        .lnd_shutdown   = kibnal_shutdown,
+        .lnd_ctl        = kibnal_ctl,
+        .lnd_send       = kibnal_send,
+        .lnd_recv       = kibnal_recv,
+        .lnd_accept     = kibnal_accept,
 };
 
 kib_data_t              kibnal_data;
@@ -403,7 +403,7 @@ kibnal_free_acceptsock (kib_acceptsock_t *as)
 }
 
 int
-kibnal_accept(ptl_ni_t *ni, struct socket *sock)
+kibnal_accept(lnet_ni_t *ni, struct socket *sock)
 {
         kib_acceptsock_t  *as;
         int                rc;
@@ -1092,7 +1092,7 @@ kibnal_close_matching_conns (lnet_nid_t nid)
 }
 
 int
-kibnal_ctl(ptl_ni_t *ni, unsigned int cmd, void *arg)
+kibnal_ctl(lnet_ni_t *ni, unsigned int cmd, void *arg)
 {
         struct portal_ioctl_data *data = arg;
         int                       rc = -EINVAL;
@@ -1303,7 +1303,7 @@ kibnal_setup_tx_descs (void)
 }
 
 void
-kibnal_shutdown (ptl_ni_t *ni)
+kibnal_shutdown (lnet_ni_t *ni)
 {
         int           i;
         int           rc;
@@ -1431,13 +1431,13 @@ kibnal_shutdown (ptl_ni_t *ni)
 }
 
 int
-kibnal_startup (ptl_ni_t *ni)
+kibnal_startup (lnet_ni_t *ni)
 {
         struct timeval    tv;
         int               rc;
         int               i;
 
-        LASSERT (ni->ni_nal == &kibnal_nal);
+        LASSERT (ni->ni_lnd == &the_kiblnd);
 
         /* Only 1 instance supported */
         if (kibnal_data.kib_init != IBNAL_INIT_NOTHING) {
@@ -1652,7 +1652,7 @@ kibnal_startup (ptl_ni_t *ni)
 void __exit
 kibnal_module_fini (void)
 {
-        lnet_unregister_nal(&kibnal_nal);
+        lnet_unregister_lnd(&the_kiblnd);
         kibnal_tunables_fini();
 }
 
@@ -1665,7 +1665,7 @@ kibnal_module_init (void)
         if (rc != 0)
                 return rc;
         
-        lnet_register_nal(&kibnal_nal);
+        lnet_register_lnd(&the_kiblnd);
 
         return (0);
 }
index 233b3ab..a81a7d7 100644 (file)
@@ -147,7 +147,7 @@ typedef struct
         __u64             kib_incarnation;      /* which one am I */
         int               kib_shutdown;         /* shut down? */
         atomic_t          kib_nthreads;         /* # live threads */
-        ptl_ni_t         *kib_ni;               /* _the_ openib interface */
+        lnet_ni_t        *kib_ni;               /* _the_ openib interface */
 
         __u64             kib_svc_id;           /* service number I listen on */
         tTS_IB_GID        kib_svc_gid;          /* device/port GID */
@@ -253,13 +253,13 @@ typedef struct
 
 typedef struct
 {
-        ptl_hdr_t         ibim_hdr;             /* portals header */
+        lnet_hdr_t        ibim_hdr;             /* portals header */
         char              ibim_payload[0];      /* piggy-backed payload */
 } WIRE_ATTR kib_immediate_msg_t;
 
 typedef struct
 {
-        ptl_hdr_t         ibrm_hdr;             /* portals header */
+        lnet_hdr_t        ibrm_hdr;             /* portals header */
         __u64             ibrm_cookie;          /* opaque completion cookie */
         kib_rdma_desc_t   ibrm_desc;            /* where to suck/blow */
 } WIRE_ATTR kib_rdma_msg_t;
@@ -293,7 +293,7 @@ typedef struct
         } WIRE_ATTR       ibm_u;
 } WIRE_ATTR kib_msg_t;
 
-#define IBNAL_MSG_MAGIC  PTL_PROTO_OPENIB_MAGIC /* unique magic */
+#define IBNAL_MSG_MAGIC LNET_PROTO_OPENIB_MAGIC /* unique magic */
 #define IBNAL_MSG_VERSION              2        /* current protocol version */
 
 #define IBNAL_MSG_SVCQRY            0xb0        /* service query */
@@ -314,7 +314,7 @@ typedef struct kib_rx                           /* receive message */
         struct list_head          rx_list;      /* queue for attention */
         struct kib_conn          *rx_conn;      /* owning conn */
         int                       rx_rdma;      /* RDMA completion posted? */
-        int                       rx_posted;    /* posted? */
+        int                       rx_nob;       /* # bytes received (-1 while posted) */
         __u64                     rx_vaddr;     /* pre-mapped buffer (hca vaddr) */
         kib_msg_t                *rx_msg;       /* pre-mapped buffer (host vaddr) */
         struct ib_receive_param   rx_sp;        /* receive work item */
@@ -333,7 +333,7 @@ typedef struct kib_tx                           /* transmit message */
         int                       tx_passive_rdma; /* peer sucks/blows */
         int                       tx_passive_rdma_wait; /* waiting for peer to complete */
         __u64                     tx_passive_rdma_cookie; /* completion cookie */
-        ptl_msg_t                *tx_ptlmsg[2]; /* ptl msgs to finalize on completion */
+        lnet_msg_t               *tx_lntmsg[2]; /* ptl msgs to finalize on completion */
         kib_md_t                  tx_md;        /* RDMA mapping (active/passive) */
         __u64                     tx_vaddr;     /* pre-mapped buffer (hca vaddr) */
         kib_msg_t                *tx_msg;       /* pre-mapped buffer (host vaddr) */
@@ -503,19 +503,15 @@ kibnal_wreqid_is_rx (__u64 wreqid)
 # define sk_sleep       sleep
 #endif
 
-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 tgt_is_router, 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,
+int kibnal_startup (lnet_ni_t *ni);
+void kibnal_shutdown (lnet_ni_t *ni);
+int kibnal_ctl(lnet_ni_t *ni, unsigned int cmd, void *arg);
+int kibnal_send (lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg);
+int kibnal_recv(lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg, 
+                int delayed, 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);
+int kibnal_accept(lnet_ni_t *ni, struct socket *sock);
 
 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, 
@@ -560,7 +556,7 @@ extern void kibnal_callback (struct ib_cq *cq, struct ib_cq_entry *e, void *arg)
 extern void kibnal_init_tx_msg (kib_tx_t *tx, int type, int body_nob);
 extern int  kibnal_close_conn (kib_conn_t *conn, int why);
 extern void kibnal_start_active_rdma (int type, int status,
-                                      kib_rx_t *rx, ptl_msg_t *ptlmsg,
+                                      kib_rx_t *rx, lnet_msg_t *lntmsg,
                                       unsigned int niov,
                                       struct iovec *iov, lnet_kiov_t *kiov,
                                       int offset, int nob);
index aa46f62..094b2a3 100644 (file)
@@ -43,7 +43,6 @@ kibnal_schedule_tx_done (kib_tx_t *tx)
 void
 kibnal_tx_done (kib_tx_t *tx)
 {
-        int        ptlrc = (tx->tx_status == 0) ? 0 : -EIO;
         unsigned long    flags;
         int              i;
         int              rc;
@@ -89,11 +88,12 @@ kibnal_tx_done (kib_tx_t *tx)
 
         for (i = 0; i < 2; i++) {
                 /* tx may have up to 2 ptlmsgs to finalise */
-                if (tx->tx_ptlmsg[i] == NULL)
+                if (tx->tx_lntmsg[i] == NULL)
                         continue;
 
-                lnet_finalize (kibnal_data.kib_ni, NULL, tx->tx_ptlmsg[i], ptlrc);
-                tx->tx_ptlmsg[i] = NULL;
+                lnet_finalize (kibnal_data.kib_ni, NULL, tx->tx_lntmsg[i], 
+                               tx->tx_status);
+                tx->tx_lntmsg[i] = NULL;
         }
         
         if (tx->tx_conn != NULL) {
@@ -168,8 +168,8 @@ kibnal_get_idle_tx (int may_block)
                 LASSERT (tx->tx_conn == NULL);
                 LASSERT (!tx->tx_passive_rdma);
                 LASSERT (!tx->tx_passive_rdma_wait);
-                LASSERT (tx->tx_ptlmsg[0] == NULL);
-                LASSERT (tx->tx_ptlmsg[1] == NULL);
+                LASSERT (tx->tx_lntmsg[0] == NULL);
+                LASSERT (tx->tx_lntmsg[1] == NULL);
         }
 
         spin_unlock_irqrestore (&kibnal_data.kib_tx_lock, flags);
@@ -245,8 +245,8 @@ kibnal_post_rx (kib_rx_t *rx, int do_credits)
         };
 
         LASSERT (conn->ibc_state >= IBNAL_CONN_ESTABLISHED);
-        LASSERT (!rx->rx_posted);
-        rx->rx_posted = 1;
+        LASSERT (rx->rx_nob >= 0);              /* not posted */
+        rx->rx_nob = -1;                        /* is now */
         mb();
 
         if (conn->ibc_state != IBNAL_CONN_ESTABLISHED)
@@ -289,8 +289,8 @@ kibnal_rx_callback (struct ib_cq_entry *e)
         int           rc;
 
         CDEBUG (D_NET, "rx %p conn %p\n", rx, conn);
-        LASSERT (rx->rx_posted);
-        rx->rx_posted = 0;
+        LASSERT (rx->rx_nob < 0);               /* was posted */
+        rx->rx_nob = 0;                         /* isn't now */
         mb();
 
         /* receives complete with error in any case after we've started
@@ -307,7 +307,11 @@ kibnal_rx_callback (struct ib_cq_entry *e)
                 goto failed;
         }
 
-        rc = kibnal_unpack_msg(msg, e->bytes_transferred);
+        LASSERT (e->bytes_transferred >= 0);
+        rx->rx_nob = e->bytes_transferred;
+        mb();
+
+        rc = kibnal_unpack_msg(msg, rx->rx_nob);
         if (rc != 0) {
                 CERROR ("Error %d unpacking rx from %s\n",
                         rc, libcfs_nid2str(conn->ibc_peer->ibp_nid));
@@ -389,6 +393,7 @@ kibnal_rx_callback (struct ib_cq_entry *e)
 void
 kibnal_rx (kib_rx_t *rx)
 {
+        int          rc = 0;
         kib_msg_t   *msg = rx->rx_msg;
 
         /* Clear flag so I can detect if I've sent an RDMA completion */
@@ -396,45 +401,26 @@ kibnal_rx (kib_rx_t *rx)
 
         switch (msg->ibm_type) {
         case IBNAL_MSG_GET_RDMA:
-                lnet_parse(kibnal_data.kib_ni, &msg->ibm_u.rdma.ibrm_hdr, rx);
-                /* If the incoming get was matched, I'll have initiated the
-                 * RDMA and the completion message... */
-                if (rx->rx_rdma)
-                        break;
-
-                /* Otherwise, I'll send a failed completion now to prevent
-                 * the peer's GET blocking for the full timeout. */
-                CERROR ("Completing unmatched RDMA GET from %s\n",
-                        libcfs_nid2str(rx->rx_conn->ibc_peer->ibp_nid));
-                kibnal_start_active_rdma (IBNAL_MSG_GET_DONE, -EIO,
-                                          rx, NULL, 0, NULL, NULL, 0, 0);
+                rc = lnet_parse(kibnal_data.kib_ni, &msg->ibm_u.rdma.ibrm_hdr, rx);
                 break;
                 
         case IBNAL_MSG_PUT_RDMA:
-                lnet_parse(kibnal_data.kib_ni, &msg->ibm_u.rdma.ibrm_hdr, rx);
-                if (rx->rx_rdma)
-                        break;
-                /* This is most unusual, since even if lnet_parse() didn't
-                 * match anything, it should have asked us to read (and
-                 * discard) the payload.  The portals header must be
-                 * inconsistent with this message type, so it's the
-                 * sender's fault for sending garbage and she can time
-                 * herself out... */
-                CERROR ("Uncompleted RMDA PUT from %s\n",
-                        libcfs_nid2str(rx->rx_conn->ibc_peer->ibp_nid));
+                rc = lnet_parse(kibnal_data.kib_ni, &msg->ibm_u.rdma.ibrm_hdr, rx);
                 break;
 
         case IBNAL_MSG_IMMEDIATE:
-                lnet_parse(kibnal_data.kib_ni, &msg->ibm_u.immediate.ibim_hdr, rx);
-                LASSERT (!rx->rx_rdma);
+                rc = lnet_parse(kibnal_data.kib_ni, &msg->ibm_u.immediate.ibim_hdr, rx);
                 break;
-                
+
         default:
                 LBUG();
                 break;
         }
 
-        kibnal_post_rx (rx, 1);
+        if (rc < 0) {
+                kibnal_close_conn(rx->rx_conn, rc);
+                kibnal_post_rx (rx, 1);
+        }
 }
 
 #if 0
@@ -466,7 +452,7 @@ kibnal_kvaddr_to_phys (unsigned long vaddr, __u64 *physp)
 
 int
 kibnal_map_iov (kib_tx_t *tx, enum ib_memory_access access,
-                 int niov, struct iovec *iov, int offset, int nob)
+                unsigned int niov, struct iovec *iov, int offset, int nob)
                  
 {
         void   *vaddr;
@@ -1015,10 +1001,10 @@ kibnal_launch_tx (kib_tx_t *tx, lnet_nid_t nid)
 }
 
 int
-kibnal_start_passive_rdma (int type, lnet_nid_t nid, int may_block,
-                           ptl_msg_t *ptlmsg, ptl_hdr_t *hdr)
+kibnal_start_passive_rdma (int type, int may_block, lnet_msg_t *lntmsg)
 {
-        int         nob = ptlmsg->msg_md->md_length;
+        lnet_nid_t  nid = lntmsg->msg_target.nid;
+        int         nob = lntmsg->msg_md->md_length;
         kib_tx_t   *tx;
         kib_msg_t  *ibmsg;
         int         rc;
@@ -1044,15 +1030,15 @@ kibnal_start_passive_rdma (int type, lnet_nid_t nid, int may_block,
                 return -ENOMEM;
         }
 
-        if ((ptlmsg->msg_md->md_options & LNET_MD_KIOV) == 0) 
+        if ((lntmsg->msg_md->md_options & LNET_MD_KIOV) == 0) 
                 rc = kibnal_map_iov (tx, access,
-                                     ptlmsg->msg_md->md_niov,
-                                     ptlmsg->msg_md->md_iov.iov,
+                                     lntmsg->msg_md->md_niov,
+                                     lntmsg->msg_md->md_iov.iov,
                                      0, nob);
         else
                 rc = kibnal_map_kiov (tx, access,
-                                      ptlmsg->msg_md->md_niov, 
-                                      ptlmsg->msg_md->md_iov.kiov,
+                                      lntmsg->msg_md->md_niov, 
+                                      lntmsg->msg_md->md_iov.kiov,
                                       0, nob);
 
         if (rc != 0) {
@@ -1063,9 +1049,9 @@ kibnal_start_passive_rdma (int type, lnet_nid_t nid, int may_block,
         
         if (type == IBNAL_MSG_GET_RDMA) {
                 /* reply gets finalized when tx completes */
-                tx->tx_ptlmsg[1] = lnet_create_reply_msg(kibnal_data.kib_ni, 
-                                                        nid, ptlmsg);
-                if (tx->tx_ptlmsg[1] == NULL) {
+                tx->tx_lntmsg[1] = lnet_create_reply_msg(kibnal_data.kib_ni, 
+                                                         lntmsg);
+                if (tx->tx_lntmsg[1] == NULL) {
                         CERROR ("Can't create reply for GET -> %s\n",
                                 libcfs_nid2str(nid));
                         rc = -ENOMEM;
@@ -1077,7 +1063,7 @@ kibnal_start_passive_rdma (int type, lnet_nid_t nid, int may_block,
 
         ibmsg = tx->tx_msg;
 
-        ibmsg->ibm_u.rdma.ibrm_hdr = *hdr;
+        ibmsg->ibm_u.rdma.ibrm_hdr = lntmsg->msg_hdr;
         ibmsg->ibm_u.rdma.ibrm_cookie = tx->tx_passive_rdma_cookie;
         ibmsg->ibm_u.rdma.ibrm_desc.rd_key = tx->tx_md.md_rkey;
         ibmsg->ibm_u.rdma.ibrm_desc.rd_addr = tx->tx_md.md_addr;
@@ -1090,8 +1076,8 @@ kibnal_start_passive_rdma (int type, lnet_nid_t nid, int may_block,
                tx, tx->tx_passive_rdma_cookie, tx->tx_md.md_rkey,
                tx->tx_md.md_addr, nob);
         
-        /* ptlmsg gets finalized when tx completes. */
-        tx->tx_ptlmsg[0] = ptlmsg;
+        /* lntmsg gets finalized when tx completes. */
+        tx->tx_lntmsg[0] = lntmsg;
 
         kibnal_launch_tx(tx, nid);
         return (0);
@@ -1104,10 +1090,10 @@ kibnal_start_passive_rdma (int type, lnet_nid_t nid, int may_block,
 
 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,
-                           int offset, int nob)
+                          kib_rx_t *rx, lnet_msg_t *lntmsg, 
+                          unsigned int niov,
+                          struct iovec *iov, lnet_kiov_t *kiov,
+                          int offset, int nob)
 {
         kib_msg_t    *rxmsg = rx->rx_msg;
         kib_msg_t    *txmsg;
@@ -1152,7 +1138,7 @@ kibnal_start_active_rdma (int type, int status,
                 CERROR ("tx descs exhausted on RDMA from %s"
                         " completing locally with failure\n",
                         libcfs_nid2str(rx->rx_conn->ibc_peer->ibp_nid));
-                lnet_finalize (kibnal_data.kib_ni, NULL, ptlmsg, -ENOMEM);
+                lnet_finalize (kibnal_data.kib_ni, NULL, lntmsg, -ENOMEM);
                 return;
         }
         LASSERT (tx->tx_nsp == 0);
@@ -1211,15 +1197,15 @@ kibnal_start_active_rdma (int type, int status,
 
         if (status == 0 && nob != 0) {
                 LASSERT (tx->tx_nsp > 1);
-                /* RDMA: ptlmsg gets finalized when the tx completes.  This
+                /* RDMA: lntmsg gets finalized when the tx completes.  This
                  * is after the completion message has been sent, which in
                  * turn is after the RDMA has finished. */
-                tx->tx_ptlmsg[0] = ptlmsg;
+                tx->tx_lntmsg[0] = lntmsg;
         } else {
                 LASSERT (tx->tx_nsp == 1);
                 /* No RDMA: local completion happens now! */
                 CDEBUG(D_NET, "No data: immediate completion\n");
-                lnet_finalize (kibnal_data.kib_ni, NULL, ptlmsg,
+                lnet_finalize (kibnal_data.kib_ni, NULL, lntmsg,
                               status == 0 ? 0 : -EIO);
         }
 
@@ -1234,23 +1220,21 @@ kibnal_start_active_rdma (int type, int status,
 }
 
 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               target_is_router,
-            int               routing,
-            unsigned int      payload_niov, 
-            struct iovec     *payload_iov, 
-            lnet_kiov_t      *payload_kiov,
-            unsigned int      payload_offset,
-            unsigned int      payload_nob)
+kibnal_send(lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg)
 {
-        kib_msg_t  *ibmsg;
-        kib_tx_t   *tx;
-        int         nob;
+        lnet_hdr_t       *hdr = &lntmsg->msg_hdr; 
+        int               type = lntmsg->msg_type; 
+        lnet_process_id_t target = lntmsg->msg_target;
+        int               target_is_router = lntmsg->msg_target_is_router;
+        int               routing = lntmsg->msg_routing;
+        unsigned int      payload_niov = lntmsg->msg_niov; 
+        struct iovec     *payload_iov = lntmsg->msg_iov; 
+        lnet_kiov_t      *payload_kiov = lntmsg->msg_kiov;
+        unsigned int      payload_offset = lntmsg->msg_offset;
+        unsigned int      payload_nob = lntmsg->msg_len;
+        kib_msg_t        *ibmsg;
+        kib_tx_t         *tx;
+        int               nob;
 
         /* NB 'private' is different depending on what we're sending.... */
 
@@ -1270,23 +1254,22 @@ kibnal_send(ptl_ni_t         *ni,
                 LBUG();
                 return (-EIO);
                 
-        case PTL_MSG_ACK:
+        case LNET_MSG_ACK:
                 LASSERT (payload_nob == 0);
                 break;
 
-        case PTL_MSG_GET:
+        case LNET_MSG_GET:
                 if (routing || target_is_router)
-                        break;                  /* send IMMEDIATE */ 
-                
+                        break;                  /* send IMMEDIATE */
+
                 /* is the REPLY message too small for RDMA? */
-                nob = offsetof(kib_msg_t, ibm_u.immediate.ibim_payload[ptlmsg->msg_md->md_length]);
+                nob = offsetof(kib_msg_t, ibm_u.immediate.ibim_payload[lntmsg->msg_md->md_length]);
                 if (nob <= IBNAL_MSG_SIZE)
                         break;                  /* send IMMEDIATE */
-                
-                return kibnal_start_passive_rdma(IBNAL_MSG_GET_RDMA, 1,
-                                                 target.nid, ptlmsg, hdr);
 
-        case PTL_MSG_REPLY: {
+                return kibnal_start_passive_rdma(IBNAL_MSG_GET_RDMA, 1, lntmsg);
+
+        case LNET_MSG_REPLY: {
                 /* reply's 'private' is the incoming receive */
                 kib_rx_t *rx = private;
 
@@ -1294,7 +1277,7 @@ kibnal_send(ptl_ni_t         *ni,
 
                 /* RDMA reply expected? */
                 if (!routing && rx->rx_msg->ibm_type != IBNAL_MSG_IMMEDIATE) {
-                        /* Incoming message consistent with RDMA? */
+                        /* Incoming message consistent with RDMA */
                         if (rx->rx_msg->ibm_type != IBNAL_MSG_GET_RDMA) {
                                 CERROR ("REPLY to %s bad ibm type %d!!!\n",
                                         libcfs_nid2str(target.nid), 
@@ -1303,7 +1286,7 @@ kibnal_send(ptl_ni_t         *ni,
                         }
 
                         kibnal_start_active_rdma(IBNAL_MSG_GET_DONE, 0,
-                                                 rx, ptlmsg, payload_niov, 
+                                                 rx, lntmsg, payload_niov, 
                                                  payload_iov, payload_kiov,
                                                  payload_offset, payload_nob);
                         return (0);
@@ -1311,22 +1294,22 @@ kibnal_send(ptl_ni_t         *ni,
                 /* Fall through to handle like PUT */
         }
 
-        case PTL_MSG_PUT:
+        case LNET_MSG_PUT:
                 /* Is the payload small enough not to need RDMA? */
                 nob = offsetof(kib_msg_t, ibm_u.immediate.ibim_payload[payload_nob]);
                 if (nob <= IBNAL_MSG_SIZE)
                         break;                  /* send IMMEDIATE */
                 
                 return kibnal_start_passive_rdma(IBNAL_MSG_PUT_RDMA,
-                                                 !(routing || type == PTL_MSG_REPLY),
-                                                 target.nid, ptlmsg, hdr);
+                                                 !(routing || type == LNET_MSG_REPLY),
+                                                 lntmsg);
         }
 
         /* Send IMMEDIATE */
 
         tx = kibnal_get_idle_tx(!(routing ||
-                                  type == PTL_MSG_ACK ||
-                                  type == PTL_MSG_REPLY ||
+                                  type == LNET_MSG_ACK ||
+                                  type == LNET_MSG_REPLY ||
                                   in_interrupt()));
         if (tx == NULL) {
                 CERROR ("Can't send %d to %s: tx descs exhausted%s\n", 
@@ -1338,35 +1321,38 @@ kibnal_send(ptl_ni_t         *ni,
         ibmsg = tx->tx_msg;
         ibmsg->ibm_u.immediate.ibim_hdr = *hdr;
 
-        if (payload_nob > 0) {
-                if (payload_kiov != NULL)
-                        lnet_copy_kiov2buf(ibmsg->ibm_u.immediate.ibim_payload,
-                                          payload_niov, payload_kiov,
-                                          payload_offset, payload_nob);
-                else
-                        lnet_copy_iov2buf(ibmsg->ibm_u.immediate.ibim_payload,
-                                         payload_niov, payload_iov,
-                                         payload_offset, payload_nob);
-        }
+        if (payload_kiov != NULL)
+                lnet_copy_kiov2flat(IBNAL_MSG_SIZE, ibmsg,
+                                    offsetof(kib_msg_t, ibm_u.immediate.ibim_payload),
+                                    payload_niov, payload_kiov, 
+                                    payload_offset, payload_nob);
+        else
+                lnet_copy_iov2flat(IBNAL_MSG_SIZE, ibmsg,
+                                   offsetof(kib_msg_t, ibm_u.immediate.ibim_payload),
+                                   payload_niov, payload_iov, 
+                                   payload_offset, payload_nob);
 
         kibnal_init_tx_msg (tx, IBNAL_MSG_IMMEDIATE,
                             offsetof(kib_immediate_msg_t, 
                                      ibim_payload[payload_nob]));
 
-        /* ptlmsg gets finalized when tx completes */
-        tx->tx_ptlmsg[0] = ptlmsg;
+        /* lntmsg gets finalized when tx completes */
+        tx->tx_lntmsg[0] = lntmsg;
 
         kibnal_launch_tx(tx, target.nid);
         return (0);
 }
+
 int
-kibnal_recv (ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg,
-             unsigned int niov, struct iovec *iov, lnet_kiov_t *kiov,
+kibnal_recv (lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg,
+             int delayed, 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;
         int          msg_nob;
+        int          rc = 0;
         
         LASSERT (mlen <= rlen);
         LASSERT (!in_interrupt ());
@@ -1376,42 +1362,50 @@ kibnal_recv (ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg,
         switch (rxmsg->ibm_type) {
         default:
                 LBUG();
-                return (-EIO);
-                
+
         case IBNAL_MSG_IMMEDIATE:
                 msg_nob = offsetof(kib_msg_t, ibm_u.immediate.ibim_payload[rlen]);
-                if (msg_nob > IBNAL_MSG_SIZE) {
-                        CERROR ("Immediate message from %s too big: %d\n",
+                if (msg_nob > rx->rx_nob) {
+                        CERROR ("Immediate message from %s too big: %d(%d)\n",
                                 libcfs_nid2str(rxmsg->ibm_u.immediate.ibim_hdr.src_nid),
-                                rlen);
-                        return (-EIO);
+                                rlen, rx->rx_nob);
+                        rc = -EPROTO;
+                        break;
                 }
 
                 if (kiov != NULL)
-                        lnet_copy_buf2kiov(niov, kiov, offset,
-                                          rxmsg->ibm_u.immediate.ibim_payload,
-                                          mlen);
+                        lnet_copy_flat2kiov(
+                                niov, kiov, offset, 
+                                IBNAL_MSG_SIZE, rxmsg,
+                                offsetof(kib_msg_t, ibm_u.immediate.ibim_payload),
+                                mlen);
                 else
-                        lnet_copy_buf2iov(niov, iov, offset,
-                                         rxmsg->ibm_u.immediate.ibim_payload,
-                                         mlen);
+                        lnet_copy_flat2iov(
+                                niov, iov, offset,
+                                IBNAL_MSG_SIZE, rxmsg,
+                                offsetof(kib_msg_t, ibm_u.immediate.ibim_payload),
+                                mlen);
 
-                lnet_finalize (ni, NULL, ptlmsg, 0);
-                return (0);
+                lnet_finalize (ni, NULL, lntmsg, 0);
+                break;
 
         case IBNAL_MSG_GET_RDMA:
-                /* We get called here just to discard any junk after the
-                 * GET hdr. */
-                LASSERT (ptlmsg == NULL);
-                lnet_finalize (ni, NULL, ptlmsg, 0);
-                return (0);
+                LASSERT (lntmsg == NULL);       /* no need to finalise */
+                if (!rx->rx_rdma) {
+                        /* GET didn't match anything */
+                        kibnal_start_active_rdma (IBNAL_MSG_GET_DONE, -ENODATA,
+                                                  rx, NULL, 0, NULL, NULL, 0, 0);
+                }
+                break;
 
         case IBNAL_MSG_PUT_RDMA:
-                kibnal_start_active_rdma (IBNAL_MSG_PUT_DONE, 0,
-                                          rx, ptlmsg, 
+                kibnal_start_active_rdma (IBNAL_MSG_PUT_DONE, 0, rx, lntmsg,
                                           niov, iov, kiov, offset, mlen);
-                return (0);
+                break;
         }
+
+        kibnal_post_rx(rx, 1);
+        return rc;
 }
 
 int
index 8ab8f63..3688f5d 100755 (executable)
@@ -23,7 +23,7 @@
 
 #include "ptllnd.h"
 
-ptl_handle_ni_t nih;\r
+lnet_handle_ni_t nih;\r
 \r
 \r
 void __exit
@@ -38,7 +38,7 @@ int __init
 kptllnd_module_init (void)
 {
         int    rc = 0;\r
-        ptl_process_id_t portals_id;
+        lnet_process_id_t portals_id;
         PJK_UT_MSG(">>> %s %s\n",__DATE__,__TIME__);\r
         \r
         PJK_UT_MSG("PtlNIInit\n");
index de01fb4..6c91dbe 100644 (file)
 #include "qswlnd.h"
 
 
-ptl_nal_t kqswnal_nal =
+lnd_t the_kqswlnd =
 {
-       .nal_type       = QSWNAL,
-       .nal_startup    = kqswnal_startup,
-       .nal_shutdown   = kqswnal_shutdown,
-       .nal_ctl        = kqswnal_ctl,
-       .nal_send       = kqswnal_send,
-        .nal_recv       = kqswnal_recv,
-       .nal_fwd        = kqswnal_fwd_packet,
+       .lnd_type       = QSWLND,
+       .lnd_startup    = kqswnal_startup,
+       .lnd_shutdown   = kqswnal_shutdown,
+       .lnd_ctl        = kqswnal_ctl,
+       .lnd_send       = kqswnal_send,
+        .lnd_recv       = kqswnal_recv,
 };
 
 kqswnal_data_t         kqswnal_data;
@@ -41,7 +40,7 @@ kqswnal_get_tx_desc (struct portal_ioctl_data *data)
        unsigned long      flags;
        struct list_head  *tmp;
        kqswnal_tx_t      *ktx;
-       ptl_hdr_t         *hdr;
+       lnet_hdr_t        *hdr;
        int                index = data->ioc_count;
        int                rc = -ENOENT;
 
@@ -52,7 +51,7 @@ kqswnal_get_tx_desc (struct portal_ioctl_data *data)
                        continue;
 
                ktx = list_entry (tmp, kqswnal_tx_t, ktx_list);
-               hdr = (ptl_hdr_t *)ktx->ktx_buffer;
+               hdr = (lnet_hdr_t *)ktx->ktx_buffer;
 
                data->ioc_count  = le32_to_cpu(hdr->payload_length);
                data->ioc_nid    = le64_to_cpu(hdr->dest_nid);
@@ -71,7 +70,7 @@ kqswnal_get_tx_desc (struct portal_ioctl_data *data)
 }
 
 int
-kqswnal_ctl (ptl_ni_t *ni, unsigned int cmd, void *arg)
+kqswnal_ctl (lnet_ni_t *ni, unsigned int cmd, void *arg)
 {
        struct portal_ioctl_data *data = arg;
 
@@ -98,7 +97,7 @@ kqswnal_ctl (ptl_ni_t *ni, unsigned int cmd, void *arg)
 }
 
 void
-kqswnal_shutdown(ptl_ni_t *ni)
+kqswnal_shutdown(lnet_ni_t *ni)
 {
        unsigned long flags;
        kqswnal_tx_t *ktx;
@@ -147,7 +146,7 @@ kqswnal_shutdown(ptl_ni_t *ni)
        /* NB ep_free_rcvr() returns only after we've freed off all receive
         * buffers (see shutdown handling in kqswnal_requeue_rx()).  This
         * means we must have completed any messages we passed to
-        * lnet_parse() or lnet_fwd_start(). */
+        * lnet_parse() */
 
        if (kqswnal_data.kqn_eptx != NULL)
                ep_free_xmtr (kqswnal_data.kqn_eptx);
@@ -192,22 +191,9 @@ kqswnal_shutdown(ptl_ni_t *ni)
 #if MULTIRAIL_EKC
        LASSERT (list_empty (&kqswnal_data.kqn_readyrxds));
        LASSERT (list_empty (&kqswnal_data.kqn_delayedtxds));
-       LASSERT (list_empty (&kqswnal_data.kqn_delayedfwds));
 #endif
 
        /**********************************************************************/
-       /* Complete any blocked forwarding packets, with error
-        */
-
-       while (!list_empty (&kqswnal_data.kqn_idletxd_fwdq))
-       {
-               kpr_fwd_desc_t *fwd = list_entry (kqswnal_data.kqn_idletxd_fwdq.next,
-                                                 kpr_fwd_desc_t, kprfd_list);
-               list_del (&fwd->kprfd_list);
-               lnet_fwd_done (ni, fwd, -ESHUTDOWN);
-       }
-
-       /**********************************************************************/
        /* Unmap message buffers and free all descriptors and buffers
         */
 
@@ -300,7 +286,7 @@ kqswnal_shutdown(ptl_ni_t *ni)
 }
 
 int
-kqswnal_startup (ptl_ni_t *ni)
+kqswnal_startup (lnet_ni_t *ni)
 {
 #if MULTIRAIL_EKC
        EP_RAILMASK       all_rails = EP_RAILMASK_ALL;
@@ -313,7 +299,7 @@ kqswnal_startup (ptl_ni_t *ni)
        kqswnal_tx_t     *ktx;
        int               elan_page_idx;
 
-       LASSERT (ni->ni_nal == &kqswnal_nal);
+       LASSERT (ni->ni_lnd == &the_kqswlnd);
 
        /* Only 1 instance supported */
        if (kqswnal_data.kqn_init != KQN_INIT_NOTHING) {
@@ -339,9 +325,7 @@ kqswnal_startup (ptl_ni_t *ni)
        INIT_LIST_HEAD (&kqswnal_data.kqn_activetxds);
        spin_lock_init (&kqswnal_data.kqn_idletxd_lock);
        init_waitqueue_head (&kqswnal_data.kqn_idletxd_waitq);
-       INIT_LIST_HEAD (&kqswnal_data.kqn_idletxd_fwdq);
 
-       INIT_LIST_HEAD (&kqswnal_data.kqn_delayedfwds);
        INIT_LIST_HEAD (&kqswnal_data.kqn_delayedtxds);
        INIT_LIST_HEAD (&kqswnal_data.kqn_readyrxds);
 
@@ -591,9 +575,10 @@ kqswnal_startup (ptl_ni_t *ni)
                                return (-ENOMEM);
                        }
 
-                       krx->krx_kiov[j].kiov_page = page;
+                       krx->krx_kiov[j] = (lnet_kiov_t) {.kiov_page = page,
+                                                         .kiov_offset = 0,
+                                                         .kiov_len = PAGE_SIZE};
                        LASSERT(page_address(page) != NULL);
-
 #if MULTIRAIL_EKC
                        ep_dvma_load(kqswnal_data.kqn_ep, NULL,
                                     page_address(page),
@@ -670,7 +655,7 @@ kqswnal_startup (ptl_ni_t *ni)
 void __exit
 kqswnal_finalise (void)
 {
-       lnet_unregister_nal(&kqswnal_nal);
+       lnet_unregister_lnd(&the_kqswlnd);
        kqswnal_tunables_fini();
 }
 
@@ -682,7 +667,7 @@ kqswnal_initialise (void)
        if (rc != 0)
                return rc;
 
-       lnet_register_nal(&kqswnal_nal);
+       lnet_register_lnd(&the_kqswlnd);
        return (0);
 }
 
index 0cb460e..410f6b2 100644 (file)
 #include <lnet/lnet.h>
 #include <lnet/lib-lnet.h>
 
-#define KQSW_CHECKSUM   0
-#if KQSW_CHECKSUM
-typedef unsigned long kqsw_csum_t;
-#define KQSW_CSUM_SIZE  (2 * sizeof (kqsw_csum_t))
-#else
-#define KQSW_CSUM_SIZE  0
-#endif
-#define KQSW_HDR_SIZE   (sizeof (ptl_hdr_t) + KQSW_CSUM_SIZE)
+#define KQSW_HDR_SIZE   (sizeof (lnet_hdr_t))
 
 /*
  * Performance Tuning defines
@@ -106,7 +99,6 @@ typedef unsigned long kqsw_csum_t;
 #define KQSW_OPTIMIZED_PUTS            (32<<10) /* optimize puts >= this size */
 
 /* fixed constants */
-#define KQSW_MAXPAYLOAD                 PTL_MTU
 #define KQSW_SMALLPAYLOAD               ((4<<10) - KQSW_HDR_SIZE) /* small/large ep receiver breakpoint */
 #define KQSW_RESCHED                    100     /* # busy loops that forces scheduler to yield */
 
@@ -117,7 +109,7 @@ typedef unsigned long kqsw_csum_t;
 #define KQSW_TX_BUFFER_SIZE     (KQSW_HDR_SIZE + *kqswnal_tunables.kqn_tx_maxcontig)
 /* The pre-allocated tx buffer (hdr + small payload) */
 
-#define KQSW_NTXMSGPAGES        (btopr(KQSW_TX_BUFFER_SIZE) + 1 + btopr(KQSW_MAXPAYLOAD) + 1)
+#define KQSW_NTXMSGPAGES        (btopr(KQSW_TX_BUFFER_SIZE) + 1 + btopr(PTL_MTU) + 1)
 /* Reserve elan address space for pre-allocated and pre-mapped transmit
  * buffer and a full payload too.  Extra pages allow for page alignment */
 
@@ -125,7 +117,7 @@ typedef unsigned long kqsw_csum_t;
 /* receive hdr/payload always contiguous and page aligned */
 #define KQSW_NRXMSGBYTES_SMALL  (KQSW_NRXMSGPAGES_SMALL * PAGE_SIZE)
 
-#define KQSW_NRXMSGPAGES_LARGE  (btopr(KQSW_HDR_SIZE + KQSW_MAXPAYLOAD))
+#define KQSW_NRXMSGPAGES_LARGE  (btopr(KQSW_HDR_SIZE + PTL_MTU))
 /* receive hdr/payload always contiguous and page aligned */
 #define KQSW_NRXMSGBYTES_LARGE  (KQSW_NRXMSGPAGES_LARGE * PAGE_SIZE)
 /* biggest complete packet we can receive (or transmit) */
@@ -158,8 +150,7 @@ typedef struct kqswnal_rx
         int              krx_rpc_reply_status;  /* what status to send */
         int              krx_state;             /* what this RX is doing */
         atomic_t         krx_refcount;          /* how to tell when rpc is done */
-        kpr_fwd_desc_t   krx_fwd;               /* embedded forwarding descriptor */
-        lnet_kiov_t       krx_kiov[KQSW_NRXMSGPAGES_LARGE]; /* buffer frags */
+        lnet_kiov_t      krx_kiov[KQSW_NRXMSGPAGES_LARGE]; /* buffer frags */
 }  kqswnal_rx_t;
 
 #define KRX_POSTED       1                      /* receiving */
@@ -199,11 +190,10 @@ typedef struct kqswnal_tx
 } kqswnal_tx_t;
 
 #define KTX_IDLE        0                       /* on kqn_(nblk_)idletxds */
-#define KTX_FORWARDING  1                       /* sending a forwarded packet */
-#define KTX_SENDING     2                       /* normal send */
-#define KTX_GETTING     3                       /* sending optimised get */
-#define KTX_PUTTING     4                       /* sending optimised put */
-#define KTX_RDMAING     5                       /* handling optimised put/get */
+#define KTX_SENDING     1                       /* normal send */
+#define KTX_GETTING     2                       /* sending optimised get */
+#define KTX_PUTTING     3                       /* sending optimised put */
+#define KTX_RDMAING     4                       /* handling optimised put/get */
 
 typedef struct
 {
@@ -227,7 +217,7 @@ typedef struct
         char               kqn_init;            /* what's been initialised */
         char               kqn_shuttingdown;    /* I'm trying to shut down */
         atomic_t           kqn_nthreads;        /* # threads running */
-        ptl_ni_t          *kqn_ni;              /* _the_ instance of me */
+        lnet_ni_t         *kqn_ni;              /* _the_ instance of me */
 
         kqswnal_rx_t      *kqn_rxds;            /* stack of all the receive descriptors */
         kqswnal_tx_t      *kqn_txds;            /* stack of all the transmit descriptors */
@@ -237,14 +227,12 @@ typedef struct
         struct list_head   kqn_activetxds;      /* transmit descriptors being used */
         spinlock_t         kqn_idletxd_lock;    /* serialise idle txd access */
         wait_queue_head_t  kqn_idletxd_waitq;   /* sender blocks here waiting for idle txd */
-        struct list_head   kqn_idletxd_fwdq;    /* forwarded packets block here waiting for idle txd */
         atomic_t           kqn_pending_txs;     /* # transmits being prepped */
 
         spinlock_t         kqn_sched_lock;      /* serialise packet schedulers */
         wait_queue_head_t  kqn_sched_waitq;     /* scheduler blocks here */
 
         struct list_head   kqn_readyrxds;       /* rxds full of data */
-        struct list_head   kqn_delayedfwds;     /* delayed forwards */
         struct list_head   kqn_delayedtxds;     /* delayed transmits */
 
 #if MULTIRAIL_EKC
@@ -278,7 +266,6 @@ extern kqswnal_data_t      kqswnal_data;
 extern int kqswnal_thread_start (int (*fn)(void *arg), void *arg);
 extern void kqswnal_rxhandler(EP_RXD *rxd);
 extern int kqswnal_scheduler (void *);
-extern void kqswnal_fwd_packet (ptl_ni_t *ni, kpr_fwd_desc_t *fwd);
 extern void kqswnal_rx_done (kqswnal_rx_t *krx);
 
 static inline lnet_nid_t
@@ -312,18 +299,6 @@ kqswnal_pages_spanned (void *base, int nob)
         return (last_page - first_page + 1);
 }
 
-#if KQSW_CHECKSUM
-static inline kqsw_csum_t kqsw_csum (kqsw_csum_t sum, void *base, int nob)
-{
-        unsigned char *ptr = (unsigned char *)base;
-
-        while (nob-- > 0)
-                sum += *ptr++;
-
-        return (sum);
-}
-#endif
-
 static inline void kqswnal_rx_decref (kqswnal_rx_t *krx)
 {
         LASSERT (atomic_read (&krx->krx_refcount) > 0);
@@ -371,17 +346,13 @@ ep_free_rcvr(EP_RCVR *r)
 }
 #endif
 
-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 tgt_is_router, 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,
+int kqswnal_startup (lnet_ni_t *ni);
+void kqswnal_shutdown (lnet_ni_t *ni);
+int kqswnal_ctl (lnet_ni_t *ni, unsigned int cmd, void *arg);
+int kqswnal_send (lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg);
+int kqswnal_recv(lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg, 
+                 int delayed, unsigned int niov, 
+                 struct iovec *iov, lnet_kiov_t *kiov,
                  unsigned int offset, unsigned int mlen, unsigned int rlen);
 
 int kqswnal_tunables_init(void);
index 4ccfe8e..81a2a30 100644 (file)
@@ -71,7 +71,8 @@ kqswnal_unmap_tx (kqswnal_tx_t *ktx)
 }
 
 int
-kqswnal_map_tx_kiov (kqswnal_tx_t *ktx, int offset, int nob, int niov, lnet_kiov_t *kiov)
+kqswnal_map_tx_kiov (kqswnal_tx_t *ktx, int offset, int nob, 
+                     unsigned int niov, lnet_kiov_t *kiov)
 {
         int       nfrags    = ktx->ktx_nfrag;
         int       nmapped   = ktx->ktx_nmappedpages;
@@ -193,7 +194,7 @@ kqswnal_map_tx_kiov (kqswnal_tx_t *ktx, int offset, int nob, int niov, lnet_kiov
 
 int
 kqswnal_map_tx_iov (kqswnal_tx_t *ktx, int offset, int nob, 
-                    int niov, struct iovec *iov)
+                    unsigned int niov, struct iovec *iov)
 {
         int       nfrags    = ktx->ktx_nfrag;
         int       nmapped   = ktx->ktx_nmappedpages;
@@ -309,7 +310,6 @@ kqswnal_map_tx_iov (kqswnal_tx_t *ktx, int offset, int nob,
 void
 kqswnal_put_idle_tx (kqswnal_tx_t *ktx)
 {
-        kpr_fwd_desc_t   *fwd = NULL;
         unsigned long     flags;
 
         kqswnal_unmap_tx (ktx);                 /* release temporary mappings */
@@ -328,35 +328,13 @@ kqswnal_put_idle_tx (kqswnal_tx_t *ktx)
 
         list_add (&ktx->ktx_list, &kqswnal_data.kqn_idletxds);
 
-        /* anything blocking for a tx descriptor? */
-        if (!kqswnal_data.kqn_shuttingdown &&
-            !list_empty(&kqswnal_data.kqn_idletxd_fwdq)) /* forwarded packet? */
-        {
-                CDEBUG(D_NET,"wakeup fwd\n");
-
-                fwd = list_entry (kqswnal_data.kqn_idletxd_fwdq.next,
-                                  kpr_fwd_desc_t, kprfd_list);
-                list_del (&fwd->kprfd_list);
-        }
-
         wake_up (&kqswnal_data.kqn_idletxd_waitq);
 
         spin_unlock_irqrestore (&kqswnal_data.kqn_idletxd_lock, flags);
-
-        if (fwd == NULL)
-                return;
-
-        /* schedule packet for forwarding again */
-        spin_lock_irqsave (&kqswnal_data.kqn_sched_lock, flags);
-
-        list_add_tail (&fwd->kprfd_list, &kqswnal_data.kqn_delayedfwds);
-        wake_up (&kqswnal_data.kqn_sched_waitq);
-
-        spin_unlock_irqrestore (&kqswnal_data.kqn_sched_lock, flags);
 }
 
 kqswnal_tx_t *
-kqswnal_get_idle_tx (kpr_fwd_desc_t *fwd, int may_block)
+kqswnal_get_idle_tx (int may_block)
 {
         unsigned long  flags;
         kqswnal_tx_t  *ktx = NULL;
@@ -374,10 +352,6 @@ kqswnal_get_idle_tx (kpr_fwd_desc_t *fwd, int may_block)
                         break;
                 }
 
-                if (fwd != NULL)                /* forwarded packet? */
-                        break;
-
-                /* doing a local transmit */
                 if (!may_block) {
                         if (list_empty (&kqswnal_data.kqn_nblk_idletxds)) {
                                 CERROR ("intr tx desc pool exhausted\n");
@@ -404,12 +378,7 @@ kqswnal_get_idle_tx (kpr_fwd_desc_t *fwd, int may_block)
                 list_add (&ktx->ktx_list, &kqswnal_data.kqn_activetxds);
                 ktx->ktx_launcher = current->pid;
                 atomic_inc(&kqswnal_data.kqn_pending_txs);
-        } else if (fwd != NULL) {
-                /* queue forwarded packet until idle txd available */
-                CDEBUG (D_NET, "blocked fwd [%p]\n", fwd);
-                list_add_tail (&fwd->kprfd_list,
-                               &kqswnal_data.kqn_idletxd_fwdq);
-        }
+        } 
 
         spin_unlock_irqrestore (&kqswnal_data.kqn_idletxd_lock, flags);
 
@@ -423,16 +392,11 @@ void
 kqswnal_tx_done (kqswnal_tx_t *ktx, int error)
 {
         switch (ktx->ktx_state) {
-        case KTX_FORWARDING:       /* router asked me to forward this packet */
-                lnet_fwd_done (kqswnal_data.kqn_ni,
-                              (kpr_fwd_desc_t *)ktx->ktx_args[0], error);
-                break;
-
         case KTX_RDMAING:          /* optimized GET/PUT handled */
         case KTX_PUTTING:          /* optimized PUT sent */
         case KTX_SENDING:          /* normal send */
                 lnet_finalize (kqswnal_data.kqn_ni, NULL,
-                              (ptl_msg_t *)ktx->ktx_args[1],
+                              (lnet_msg_t *)ktx->ktx_args[1],
                               (error == 0) ? 0 : -EIO);
                 break;
 
@@ -441,9 +405,9 @@ kqswnal_tx_done (kqswnal_tx_t *ktx, int error)
                  * delivering a REPLY event; we committed to it when we
                  * launched the GET */
                 lnet_finalize (kqswnal_data.kqn_ni, NULL, 
-                              (ptl_msg_t *)ktx->ktx_args[1], 0);
+                              (lnet_msg_t *)ktx->ktx_args[1], 0);
                 lnet_finalize (kqswnal_data.kqn_ni, NULL,
-                              (ptl_msg_t *)ktx->ktx_args[2],
+                              (lnet_msg_t *)ktx->ktx_args[2],
                               (error == 0) ? 0 : -EIO);
                 break;
 
@@ -485,7 +449,6 @@ kqswnal_txhandler(EP_TXD *txd, void *arg, int status)
 #endif
                 break;
                 
-        case KTX_FORWARDING:
         case KTX_SENDING:
                 status = 0;
                 break;
@@ -530,7 +493,6 @@ kqswnal_launch (kqswnal_tx_t *ktx)
                                      NULL, ktx->ktx_frags, 1);
                 break;
 
-        case KTX_FORWARDING:
         case KTX_SENDING:
 #if MULTIRAIL_EKC
                 rc = ep_transmit_message(kqswnal_data.kqn_eptx, dest,
@@ -573,16 +535,16 @@ kqswnal_launch (kqswnal_tx_t *ktx)
 
 #if 0
 static char *
-hdr_type_string (ptl_hdr_t *hdr)
+hdr_type_string (lnet_hdr_t *hdr)
 {
         switch (hdr->type) {
-        case PTL_MSG_ACK:
+        case LNET_MSG_ACK:
                 return ("ACK");
-        case PTL_MSG_PUT:
+        case LNET_MSG_PUT:
                 return ("PUT");
-        case PTL_MSG_GET:
+        case LNET_MSG_GET:
                 return ("GET");
-        case PTL_MSG_REPLY:
+        case LNET_MSG_REPLY:
                 return ("REPLY");
         default:
                 return ("<UNKNOWN>");
@@ -590,7 +552,7 @@ hdr_type_string (ptl_hdr_t *hdr)
 }
 
 static void
-kqswnal_cerror_hdr(ptl_hdr_t * hdr)
+kqswnal_cerror_hdr(lnet_hdr_t * hdr)
 {
         char *type_str = hdr_type_string (hdr);
 
@@ -602,7 +564,7 @@ kqswnal_cerror_hdr(ptl_hdr_t * hdr)
                le32_to_cpu(hdr->dest_pid));
 
         switch (le32_to_cpu(hdr->type)) {
-        case PTL_MSG_PUT:
+        case LNET_MSG_PUT:
                 CERROR("    Ptl index %d, ack md "LPX64"."LPX64", "
                        "match bits "LPX64"\n",
                        le32_to_cpu(hdr->msg.put.ptl_index),
@@ -614,7 +576,7 @@ kqswnal_cerror_hdr(ptl_hdr_t * hdr)
                        hdr->msg.put.hdr_data);
                 break;
 
-        case PTL_MSG_GET:
+        case LNET_MSG_GET:
                 CERROR("    Ptl index %d, return md "LPX64"."LPX64", "
                        "match bits "LPX64"\n",
                        le32_to_cpu(hdr->msg.get.ptl_index),
@@ -626,14 +588,14 @@ kqswnal_cerror_hdr(ptl_hdr_t * hdr)
                        le32_to_cpu(hdr->msg.get.src_offset));
                 break;
 
-        case PTL_MSG_ACK:
+        case LNET_MSG_ACK:
                 CERROR("    dst md "LPX64"."LPX64", manipulated length %d\n",
                        hdr->msg.ack.dst_wmd.wh_interface_cookie,
                        hdr->msg.ack.dst_wmd.wh_object_cookie,
                        le32_to_cpu(hdr->msg.ack.mlength));
                 break;
 
-        case PTL_MSG_REPLY:
+        case LNET_MSG_REPLY:
                 CERROR("    dst md "LPX64"."LPX64"\n",
                        hdr->msg.reply.dst_wmd.wh_interface_cookie,
                        hdr->msg.reply.dst_wmd.wh_object_cookie);
@@ -731,7 +693,7 @@ kqswnal_remotemd_t *
 kqswnal_parse_rmd (kqswnal_rx_t *krx, int type, lnet_nid_t expected_nid)
 {
         char               *buffer = (char *)page_address(krx->krx_kiov[0].kiov_page);
-        ptl_hdr_t          *hdr = (ptl_hdr_t *)buffer;
+        lnet_hdr_t         *hdr = (lnet_hdr_t *)buffer;
         kqswnal_remotemd_t *rmd = (kqswnal_remotemd_t *)(buffer + KQSW_HDR_SIZE);
         lnet_nid_t          nid = kqswnal_rx_nid(krx);
 
@@ -791,7 +753,7 @@ kqswnal_rdma_store_complete (EP_RXD *rxd)
         krx->krx_rpc_reply_needed = 0;
         kqswnal_rx_decref (krx);
 
-        /* free ktx & finalize() its ptl_msg_t */
+        /* free ktx & finalize() its lnet_msg_t */
         kqswnal_tx_done(ktx, (status == EP_SUCCESS) ? 0 : -ECONNABORTED);
 }
 
@@ -821,7 +783,7 @@ kqswnal_rdma_fetch_complete (EP_RXD *rxd)
                 status = -ECONNABORTED;
         }
 
-        /* free ktx & finalize() its ptl_msg_t */
+        /* free ktx & finalize() its lnet_msg_t */
         kqswnal_tx_done(ktx, status);
 
         if (!in_interrupt()) {
@@ -843,8 +805,8 @@ 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,
+kqswnal_rdma (kqswnal_rx_t *krx, lnet_msg_t *lntmsg, int type,
+              unsigned int niov, struct iovec *iov, lnet_kiov_t *kiov,
               unsigned int offset, unsigned int len)
 {
         kqswnal_remotemd_t *rmd;
@@ -856,22 +818,22 @@ kqswnal_rdma (kqswnal_rx_t *krx, ptl_msg_t *ptlmsg, int type,
         int                 ndatav;
 #endif
 
-        LASSERT (type == PTL_MSG_GET || 
-                 type == PTL_MSG_PUT ||
-                 type == PTL_MSG_REPLY);
+        LASSERT (type == LNET_MSG_GET || 
+                 type == LNET_MSG_PUT ||
+                 type == LNET_MSG_REPLY);
         /* Not both mapped and paged payload */
         LASSERT (iov == NULL || kiov == NULL);
         /* RPC completes with failure by default */
         LASSERT (krx->krx_rpc_reply_needed);
         LASSERT (krx->krx_rpc_reply_status != 0);
 
-        rmd = kqswnal_parse_rmd(krx, type, ptlmsg->msg_ev.initiator.nid);
+        rmd = kqswnal_parse_rmd(krx, type, lntmsg->msg_ev.initiator.nid);
         if (rmd == NULL)
                 return (-EPROTO);
 
         if (len == 0) {
                 /* data got truncated to nothing. */
-                lnet_finalize(kqswnal_data.kqn_ni, krx, ptlmsg, 0);
+                lnet_finalize(kqswnal_data.kqn_ni, krx, lntmsg, 0);
                 /* Let kqswnal_rx_done() complete the RPC with success */
                 krx->krx_rpc_reply_status = 0;
                 return (0);
@@ -879,17 +841,21 @@ kqswnal_rdma (kqswnal_rx_t *krx, ptl_msg_t *ptlmsg, int type,
         
         /* NB I'm using 'ktx' just to map the local RDMA buffers; I'm not
            actually sending a portals message with it */
-        ktx = kqswnal_get_idle_tx(NULL, 0);
+        ktx = kqswnal_get_idle_tx(0);
         if (ktx == NULL) {
                 CERROR ("Can't get txd for RDMA with %s\n",
-                        libcfs_nid2str(ptlmsg->msg_ev.initiator.nid));
+                        libcfs_nid2str(lntmsg->msg_ev.initiator.nid));
                 return (-ENOMEM);
         }
 
         ktx->ktx_state   = KTX_RDMAING;
-        ktx->ktx_nid     = ptlmsg->msg_ev.initiator.nid;
+        ktx->ktx_nid     = lntmsg->msg_ev.initiator.nid;
         ktx->ktx_args[0] = krx;
-        ktx->ktx_args[1] = ptlmsg;
+        ktx->ktx_args[1] = lntmsg;
+
+        LASSERT (atomic_read(&krx->krx_refcount) > 0);
+        /* Take an extra ref for the completion callback */
+        atomic_inc(&krx->krx_refcount);
 
 #if MULTIRAIL_EKC
         /* Map on the rail the RPC prefers */
@@ -922,14 +888,14 @@ kqswnal_rdma (kqswnal_rx_t *krx, ptl_msg_t *ptlmsg, int type,
         default:
                 LBUG();
 
-        case PTL_MSG_GET:
+        case LNET_MSG_GET:
                 ndatav = kqswnal_eiovs2datav(EP_MAXFRAG, datav,
                                              ktx->ktx_nfrag, ktx->ktx_frags,
                                              rmd->kqrmd_nfrag, rmd->kqrmd_frag);
                 break;
 
-        case PTL_MSG_PUT:
-        case PTL_MSG_REPLY:
+        case LNET_MSG_PUT:
+        case LNET_MSG_REPLY:
                 ndatav = kqswnal_eiovs2datav(EP_MAXFRAG, datav,
                                              rmd->kqrmd_nfrag, rmd->kqrmd_frag,
                                              ktx->ktx_nfrag, ktx->ktx_frags);
@@ -943,15 +909,11 @@ kqswnal_rdma (kqswnal_rx_t *krx, ptl_msg_t *ptlmsg, int type,
         }
 #endif
 
-        LASSERT (atomic_read(&krx->krx_refcount) > 0);
-        /* Take an extra ref for the completion callback */
-        atomic_inc(&krx->krx_refcount);
-
         switch (type) {
         default:
                 LBUG();
 
-        case PTL_MSG_GET:
+        case LNET_MSG_GET:
 #if MULTIRAIL_EKC
                 eprc = ep_complete_rpc(krx->krx_rxd, 
                                        kqswnal_rdma_store_complete, ktx, 
@@ -973,8 +935,8 @@ kqswnal_rdma (kqswnal_rx_t *krx, ptl_msg_t *ptlmsg, int type,
                 }
                 break;
                 
-        case PTL_MSG_PUT:
-        case PTL_MSG_REPLY:
+        case LNET_MSG_PUT:
+        case LNET_MSG_REPLY:
 #if MULTIRAIL_EKC
                 eprc = ep_rpc_get (krx->krx_rxd, 
                                    kqswnal_rdma_fetch_complete, ktx,
@@ -1005,28 +967,20 @@ kqswnal_rdma (kqswnal_rx_t *krx, ptl_msg_t *ptlmsg, int type,
 }
 
 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               target_is_router,
-              int               routing,
-              unsigned int      payload_niov,
-              struct iovec     *payload_iov,
-              lnet_kiov_t      *payload_kiov,
-              unsigned int      payload_offset,
-              unsigned int      payload_nob)
+kqswnal_send (lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg)
 {
-        kqswnal_tx_t      *ktx;
-        int                rc;
-#if KQSW_CHECKSUM
-        int                i;
-        kqsw_csum_t        csum;
-        int                sumoff;
-        int                sumnob;
-#endif
+        lnet_hdr_t       *hdr = &lntmsg->msg_hdr;
+        int               type = lntmsg->msg_type;
+        lnet_process_id_t target = lntmsg->msg_target;
+        int               target_is_router = lntmsg->msg_target_is_router;
+        int               routing = lntmsg->msg_routing;
+        unsigned int      payload_niov = lntmsg->msg_niov;
+        struct iovec     *payload_iov = lntmsg->msg_iov;
+        lnet_kiov_t      *payload_kiov = lntmsg->msg_kiov;
+        unsigned int      payload_offset = lntmsg->msg_offset;
+        unsigned int      payload_nob = lntmsg->msg_len;
+        kqswnal_tx_t     *ktx;
+        int               rc;
         /* NB 1. hdr is in network byte order */
         /*    2. 'private' depends on the message type */
         
@@ -1041,24 +995,17 @@ kqswnal_send (ptl_ni_t         *ni,
         /* payload is either all vaddrs or all pages */
         LASSERT (!(payload_kiov != NULL && payload_iov != NULL));
 
-        if (payload_nob > KQSW_MAXPAYLOAD) {
-                CERROR ("request exceeds MTU size %u (max %u).\n",
-                        payload_nob, KQSW_MAXPAYLOAD);
-                return (-EIO);
-        }
-
-        if (type == PTL_MSG_REPLY) {
+        if (type == LNET_MSG_REPLY) {
                 kqswnal_rx_t *rx = (kqswnal_rx_t *)private;
                 
                 LASSERT (routing || rx != NULL);
                 
                 if (!routing && rx->krx_rpc_reply_needed) { /* is it an RPC */
                         /* Must be a REPLY for an optimized GET */
-                        rc = kqswnal_rdma (
-                                rx, ptlmsg, PTL_MSG_GET,
+                        return kqswnal_rdma (
+                                rx, lntmsg, LNET_MSG_GET,
                                 payload_niov, payload_iov, payload_kiov, 
                                 payload_offset, payload_nob);
-                        return ((rc == 0) ? 0 : -EIO);
                 }
         }
 
@@ -1069,10 +1016,10 @@ kqswnal_send (ptl_ni_t         *ni,
 
         /* I may not block for a transmit descriptor if I might block the
          * router, receiver, or an interrupt handler. */
-        ktx = kqswnal_get_idle_tx(NULL, !(routing ||
-                                          type == PTL_MSG_ACK ||
-                                          type == PTL_MSG_REPLY ||
-                                          in_interrupt()));
+        ktx = kqswnal_get_idle_tx(!(routing ||
+                                    type == LNET_MSG_ACK ||
+                                    type == LNET_MSG_REPLY ||
+                                    in_interrupt()));
         if (ktx == NULL) {
                 CERROR ("Can't get txd for msg type %d for %s\n",
                         type, libcfs_nid2str(target.nid));
@@ -1082,64 +1029,26 @@ kqswnal_send (ptl_ni_t         *ni,
         ktx->ktx_state   = KTX_SENDING;
         ktx->ktx_nid     = target.nid;
         ktx->ktx_args[0] = private;
-        ktx->ktx_args[1] = ptlmsg;
+        ktx->ktx_args[1] = lntmsg;
         ktx->ktx_args[2] = NULL;    /* set when a GET commits to REPLY */
 
         memcpy (ktx->ktx_buffer, hdr, sizeof (*hdr)); /* copy hdr from caller's stack */
 
-#if KQSW_CHECKSUM
-        csum = kqsw_csum (0, (char *)hdr, sizeof (*hdr));
-        memcpy (ktx->ktx_buffer + sizeof (*hdr), &csum, sizeof (csum));
-        for (csum = 0, i = 0, sumoff = payload_offset, sumnob = payload_nob; sumnob > 0; i++) {
-                LASSERT(i < niov);
-                if (payload_kiov != NULL) {
-                        lnet_kiov_t *kiov = &payload_kiov[i];
-
-                        if (sumoff >= kiov->kiov_len) {
-                                sumoff -= kiov->kiov_len;
-                        } else {
-                                char *addr = ((char *)kmap (kiov->kiov_page)) +
-                                             kiov->kiov_offset + sumoff;
-                                int   fragnob = kiov->kiov_len - sumoff;
-
-                                csum = kqsw_csum(csum, addr, MIN(sumnob, fragnob));
-                                sumnob -= fragnob;
-                                sumoff = 0;
-                                kunmap(kiov->kiov_page);
-                        }
-                } else {
-                        struct iovec *iov = &payload_iov[i];
-
-                        if (sumoff > iov->iov_len) {
-                                sumoff -= iov->iov_len;
-                        } else {
-                                char *addr = iov->iov_base + sumoff;
-                                int   fragnob = iov->iov_len - sumoff;
-                                
-                                csum = kqsw_csum(csum, addr, MIN(sumnob, fragnob));
-                                sumnob -= fragnob;
-                                sumoff = 0;
-                        }
-                }
-        }
-        memcpy(ktx->ktx_buffer + sizeof(*hdr) + sizeof(csum), &csum, sizeof(csum));
-#endif
-
         /* The first frag will be the pre-mapped buffer for (at least) the
          * portals header. */
         ktx->ktx_nfrag = ktx->ktx_firsttmpfrag = 1;
 
         if ((!target_is_router &&               /* target.nid is final dest */
              !routing &&                        /* I'm the source */
-             type == PTL_MSG_GET &&             /* optimize GET? */
+             type == LNET_MSG_GET &&             /* optimize GET? */
              *kqswnal_tunables.kqn_optimized_gets != 0 &&
-             ptlmsg->msg_md->md_length >= 
+             lntmsg->msg_md->md_length >= 
              *kqswnal_tunables.kqn_optimized_gets) ||
-            ((type == PTL_MSG_PUT ||            /* optimize PUT? */
-              type == PTL_MSG_REPLY) &&         /* optimize REPLY? */
+            ((type == LNET_MSG_PUT ||            /* optimize PUT? */
+              type == LNET_MSG_REPLY) &&         /* optimize REPLY? */
              *kqswnal_tunables.kqn_optimized_puts != 0 &&
              payload_nob >= *kqswnal_tunables.kqn_optimized_puts)) {
-                ptl_libmd_t        *md = ptlmsg->msg_md;
+                lnet_libmd_t       *md = lntmsg->msg_md;
                 kqswnal_remotemd_t *rmd = (kqswnal_remotemd_t *)(ktx->ktx_buffer + KQSW_HDR_SIZE);
                 
                 /* Optimised path: I send over the Elan vaddrs of the local
@@ -1152,9 +1061,9 @@ kqswnal_send (ptl_ni_t         *ni,
                  * immediately after the header, and send that as my
                  * message. */
 
-                ktx->ktx_state = (type == PTL_MSG_GET) ? KTX_GETTING : KTX_PUTTING;
+                ktx->ktx_state = (type == LNET_MSG_GET) ? KTX_GETTING : KTX_PUTTING;
 
-                if ((ptlmsg->msg_md->md_options & LNET_MD_KIOV) != 0) 
+                if ((lntmsg->msg_md->md_options & LNET_MD_KIOV) != 0) 
                         rc = kqswnal_map_tx_kiov (ktx, 0, md->md_length,
                                                   md->md_niov, md->md_iov.kiov);
                 else
@@ -1182,10 +1091,10 @@ kqswnal_send (ptl_ni_t         *ni,
                 ktx->ktx_frags[0].Base = ktx->ktx_ebuffer;
                 ktx->ktx_frags[0].Len = KQSW_HDR_SIZE + payload_nob;
 #endif
-                if (type == PTL_MSG_GET) {
+                if (type == LNET_MSG_GET) {
                         /* Allocate reply message now while I'm in thread context */
                         ktx->ktx_args[2] = lnet_create_reply_msg (
-                                kqswnal_data.kqn_ni, target.nid, ptlmsg);
+                                kqswnal_data.kqn_ni, lntmsg);
                         if (ktx->ktx_args[2] == NULL)
                                 goto out;
 
@@ -1204,16 +1113,16 @@ kqswnal_send (ptl_ni_t         *ni,
                 ktx->ktx_frags[0].Base = ktx->ktx_ebuffer;
                 ktx->ktx_frags[0].Len = KQSW_HDR_SIZE + payload_nob;
 #endif
-                if (payload_nob > 0) {
-                        if (payload_kiov != NULL)
-                                lnet_copy_kiov2buf (ktx->ktx_buffer + KQSW_HDR_SIZE,
-                                                   payload_niov, payload_kiov, 
-                                                   payload_offset, payload_nob);
-                        else
-                                lnet_copy_iov2buf (ktx->ktx_buffer + KQSW_HDR_SIZE,
-                                                  payload_niov, payload_iov, 
-                                                  payload_offset, payload_nob);
-                }
+                if (payload_kiov != NULL)
+                        lnet_copy_kiov2flat(KQSW_TX_BUFFER_SIZE, ktx->ktx_buffer, 
+                                            KQSW_HDR_SIZE,
+                                            payload_niov, payload_kiov, 
+                                            payload_offset, payload_nob);
+                else
+                        lnet_copy_iov2flat(KQSW_TX_BUFFER_SIZE, ktx->ktx_buffer,
+                                           KQSW_HDR_SIZE,
+                                           payload_niov, payload_iov, 
+                                           payload_offset, payload_nob);
         } else {
 
                 /* large message: multiple frags: first is hdr in pre-mapped buffer */
@@ -1256,9 +1165,9 @@ kqswnal_send (ptl_ni_t         *ni,
                          * pretend the GET succeeded but the REPLY
                          * failed. */
                         rc = 0;
-                        lnet_finalize (kqswnal_data.kqn_ni, private, ptlmsg, 0);
+                        lnet_finalize (kqswnal_data.kqn_ni, private, lntmsg, 0);
                         lnet_finalize (kqswnal_data.kqn_ni, private,
-                                      (ptl_msg_t *)ktx->ktx_args[2], -EIO);
+                                       (lnet_msg_t *)ktx->ktx_args[2], -EIO);
                 }
                 
                 kqswnal_put_idle_tx (ktx);
@@ -1269,107 +1178,6 @@ kqswnal_send (ptl_ni_t         *ni,
 }
 
 void
-kqswnal_fwd_packet (ptl_ni_t *ni, kpr_fwd_desc_t *fwd)
-{
-        int             rc;
-        kqswnal_tx_t   *ktx;
-        lnet_kiov_t     *kiov = fwd->kprfd_kiov;
-        int             niov = fwd->kprfd_niov;
-        int             nob = fwd->kprfd_nob;
-        lnet_nid_t       nid = fwd->kprfd_gateway_nid;
-
-#if KQSW_CHECKSUM
-        CERROR ("checksums for forwarded packets not implemented\n");
-        LBUG ();
-#endif
-        /* The router wants this NAL to forward a packet */
-        CDEBUG (D_NET, "forwarding [%p] to %s, payload: %d frags %d bytes\n",
-                fwd, libcfs_nid2str(nid), niov, nob);
-
-        ktx = kqswnal_get_idle_tx (fwd, 0);
-        if (ktx == NULL)        /* can't get txd right now */
-                return;         /* fwd will be scheduled when tx desc freed */
-
-        /* copy hdr into pre-mapped buffer */
-        memcpy(ktx->ktx_buffer, fwd->kprfd_hdr, sizeof(ptl_hdr_t));
-
-        ktx->ktx_port    = (nob <= KQSW_SMALLPAYLOAD) ?
-                           EP_MSG_SVC_PORTALS_SMALL : EP_MSG_SVC_PORTALS_LARGE;
-        ktx->ktx_nid     = nid;
-        ktx->ktx_state   = KTX_FORWARDING;
-        ktx->ktx_args[0] = fwd;
-        ktx->ktx_nfrag   = ktx->ktx_firsttmpfrag = 1;
-
-        if (kqswnal_nid2elanid (nid) < 0) {
-                CERROR("Can't forward [%p] to %s: not a peer\n", 
-                       fwd, libcfs_nid2str(nid));
-                rc = -EHOSTUNREACH;
-                goto out;
-        }
-
-        if (nob <= *kqswnal_tunables.kqn_tx_maxcontig) 
-        {
-                /* send payload from ktx's pre-mapped contiguous buffer */
-#if MULTIRAIL_EKC
-                ep_nmd_subset(&ktx->ktx_frags[0], &ktx->ktx_ebuffer,
-                              0, KQSW_HDR_SIZE + nob);
-#else
-                ktx->ktx_frags[0].Base = ktx->ktx_ebuffer;
-                ktx->ktx_frags[0].Len = KQSW_HDR_SIZE + nob;
-#endif
-                if (nob > 0)
-                        lnet_copy_kiov2buf(ktx->ktx_buffer + KQSW_HDR_SIZE,
-                                          niov, kiov, 0, nob);
-        }
-        else
-        {
-                /* zero copy payload */
-#if MULTIRAIL_EKC
-                ep_nmd_subset(&ktx->ktx_frags[0], &ktx->ktx_ebuffer,
-                              0, KQSW_HDR_SIZE);
-#else
-                ktx->ktx_frags[0].Base = ktx->ktx_ebuffer;
-                ktx->ktx_frags[0].Len = KQSW_HDR_SIZE;
-#endif
-                rc = kqswnal_map_tx_kiov (ktx, 0, nob, niov, kiov);
-                if (rc != 0)
-                        goto out;
-        }
-
-        rc = kqswnal_launch (ktx);
- out:
-        if (rc != 0) {
-                CERROR ("Failed to forward [%p] to %s: %d\n", 
-                        fwd, libcfs_nid2str(nid), rc);
-
-                /* complete now (with failure) */
-                kqswnal_tx_done (ktx, rc);
-        }
-
-        atomic_dec(&kqswnal_data.kqn_pending_txs);
-}
-
-void
-kqswnal_fwd_callback (ptl_ni_t *ni, void *arg, int error)
-{
-        kqswnal_rx_t *krx = (kqswnal_rx_t *)arg;
-
-        /* The router has finished forwarding this packet */
-
-        if (error != 0)
-        {
-                ptl_hdr_t *hdr = (ptl_hdr_t *)page_address (krx->krx_kiov[0].kiov_page);
-
-                CERROR("Failed to route packet from %s to %s: %d\n",
-                       libcfs_nid2str(le64_to_cpu(hdr->src_nid)), 
-                       libcfs_nid2str(le64_to_cpu(hdr->dest_nid)), error);
-        }
-
-        LASSERT (atomic_read(&krx->krx_refcount) == 1);
-        kqswnal_rx_decref (krx);
-}
-
-void
 kqswnal_requeue_rx (kqswnal_rx_t *krx)
 {
         LASSERT (atomic_read(&krx->krx_refcount) == 0);
@@ -1466,60 +1274,16 @@ kqswnal_rx_done (kqswnal_rx_t *krx)
 void
 kqswnal_parse (kqswnal_rx_t *krx)
 {
-        ptl_hdr_t      *hdr = (ptl_hdr_t *) page_address(krx->krx_kiov[0].kiov_page);
-        lnet_nid_t      dest_nid;
-        lnet_nid_t      src_nid;
-        lnet_nid_t      sender_nid;
-        int             payload_nob;
-        int             nob;
-        int             niov;
+        lnet_hdr_t     *hdr = (lnet_hdr_t *) page_address(krx->krx_kiov[0].kiov_page);
         int             rc;
 
         LASSERT (atomic_read(&krx->krx_refcount) == 1);
 
         rc = lnet_parse (kqswnal_data.kqn_ni, hdr, krx);
-        
-        if (rc != 1) {
-                /* It's for me or there's been some error.
-                 * However I ignore parse errors since I'm not consuming a byte
-                 * stream */
-
-                /* Drop my ref; any RDMA activity takes an additional ref */
+        if (rc < 0) {
                 kqswnal_rx_decref(krx);
                 return;
         }
-
-        LASSERT (lnet_apini.apini_ptlcompat == 0);
-
-        dest_nid   = le64_to_cpu(hdr->dest_nid); /* final dest */
-        src_nid    = le64_to_cpu(hdr->src_nid); /* original source */
-        sender_nid = kqswnal_elanid2nid(ep_rxd_node(krx->krx_rxd)); /* who sent it to me */
-#if KQSW_CHECKSUM
-        LASSERTF (0, "checksums for forwarded packets not implemented\n");
-#endif
-        nob = payload_nob = krx->krx_nob - KQSW_HDR_SIZE;
-        niov = 0;
-        if (nob > 0) {
-                krx->krx_kiov[0].kiov_offset = KQSW_HDR_SIZE;
-                krx->krx_kiov[0].kiov_len = MIN(PAGE_SIZE - KQSW_HDR_SIZE, nob);
-                niov = 1;
-                nob -= PAGE_SIZE - KQSW_HDR_SIZE;
-                
-                while (nob > 0) {
-                        LASSERT (niov < krx->krx_npages);
-                        
-                        krx->krx_kiov[niov].kiov_offset = 0;
-                        krx->krx_kiov[niov].kiov_len = MIN(PAGE_SIZE, nob);
-                        niov++;
-                        nob -= PAGE_SIZE;
-                }
-        }
-
-        kpr_fwd_init (&krx->krx_fwd, dest_nid, sender_nid, src_nid,
-                      hdr, payload_nob, niov, krx->krx_kiov,
-                      kqswnal_fwd_callback, krx);
-
-        lnet_fwd_start (kqswnal_data.kqn_ni, &krx->krx_fwd);
 }
 
 /* Receive Interrupt Handler: posts to schedulers */
@@ -1551,7 +1315,7 @@ kqswnal_rxhandler(EP_RXD *rxd)
         atomic_set (&krx->krx_refcount, 1);
 
         /* must receive a whole header to be able to parse */
-        if (status != EP_SUCCESS || nob < sizeof (ptl_hdr_t))
+        if (status != EP_SUCCESS || nob < sizeof (lnet_hdr_t))
         {
                 /* receives complete with failure when receiver is removed */
 #if MULTIRAIL_EKC
@@ -1582,58 +1346,11 @@ kqswnal_rxhandler(EP_RXD *rxd)
         spin_unlock_irqrestore (&kqswnal_data.kqn_sched_lock, flags);
 }
 
-#if KQSW_CHECKSUM
-void
-kqswnal_csum_error (kqswnal_rx_t *krx, int ishdr)
-{
-        ptl_hdr_t *hdr = (ptl_hdr_t *)page_address (krx->krx_kiov[0].kiov_page);
-
-        CERROR ("%s checksum mismatch %p: dnid %s, snid %s, "
-                "dpid %d, spid %d, type %d\n",
-                ishdr ? "Header" : "Payload", krx,
-                libcfs_nid2str(le64_to_cpu(hdr->dest_nid)), 
-                libcfs_nid2str(le64_to_cpu(hdr->src_nid)),
-                le32_to_cpu(hdr->dest_pid), le32_to_cpu(hdr->src_pid),
-                le32_to_cpu(hdr->type));
-
-        switch (le32_to_cpu(hdr->type))
-        {
-        case PTL_MSG_ACK:
-                CERROR("ACK: mlen %d dmd "LPX64"."LPX64" match "LPX64
-                       " len %u\n",
-                       le32_to_cpu(hdr->msg.ack.mlength),
-                       hdr->msg.ack.dst_wmd.handle_cookie,
-                       hdr->msg.ack.dst_wmd.handle_idx,
-                       le64_to_cpu(hdr->msg.ack.match_bits),
-                       le32_to_cpu(hdr->msg.ack.length));
-                break;
-        case PTL_MSG_PUT:
-                CERROR("PUT: ptl %d amd "LPX64"."LPX64" match "LPX64
-                       " len %u off %u data "LPX64"\n",
-                       le32_to_cpu(hdr->msg.put.ptl_index),
-                       hdr->msg.put.ack_wmd.handle_cookie,
-                       hdr->msg.put.ack_wmd.handle_idx,
-                       le64_to_cpu(hdr->msg.put.match_bits),
-                       le32_to_cpu(hdr->msg.put.length),
-                       le32_to_cpu(hdr->msg.put.offset),
-                       hdr->msg.put.hdr_data);
-                break;
-        case PTL_MSG_GET:
-                CERROR ("GET: <>\n");
-                break;
-        case PTL_MSG_REPLY:
-                CERROR ("REPLY: <>\n");
-                break;
-        default:
-                CERROR ("TYPE?: <>\n");
-        }
-}
-#endif
-
 int
-kqswnal_recv (ptl_ni_t      *ni,
+kqswnal_recv (lnet_ni_t      *ni,
               void          *private,
-              ptl_msg_t     *ptlmsg,
+              lnet_msg_t    *lntmsg,
+              int            delayed,
               unsigned int   niov,
               struct iovec  *iov,
               lnet_kiov_t   *kiov,
@@ -1643,160 +1360,46 @@ kqswnal_recv (ptl_ni_t      *ni,
 {
         kqswnal_rx_t *krx = (kqswnal_rx_t *)private;
         char         *buffer = page_address(krx->krx_kiov[0].kiov_page);
-        ptl_hdr_t    *hdr = (ptl_hdr_t *)buffer;
-        int           page;
-        char         *page_ptr;
-        int           page_nob;
-        char         *iov_ptr;
-        int           iov_nob;
-        int           frag;
+        lnet_hdr_t   *hdr = (lnet_hdr_t *)buffer;
         int           rc;
-#if KQSW_CHECKSUM
-        kqsw_csum_t   senders_csum;
-        kqsw_csum_t   payload_csum = 0;
-        kqsw_csum_t   hdr_csum = kqsw_csum(0, hdr, sizeof(*hdr));
-        unsigned int  csum_len = mlen;
-        int           csum_frags = 0;
-        int           csum_nob = 0;
-        static atomic_t csum_counter;
-        int           csum_verbose = (atomic_read(&csum_counter)%1000001) == 0;
-
-        atomic_inc (&csum_counter);
-
-        memcpy (&senders_csum, buffer + sizeof (ptl_hdr_t), sizeof (kqsw_csum_t));
-        if (senders_csum != hdr_csum)
-                kqswnal_csum_error (krx, 1);
-#endif
-        /* NB lnet_parse() has already flipped *hdr */
 
-        CDEBUG(D_NET,"kqswnal_recv, mlen=%u, rlen=%u\n", mlen, rlen);
+        /* NB lnet_parse() has already flipped *hdr */
 
-        if (ptlmsg == NULL) {                   /* portals is discarding. */
-                LASSERT (mlen == 0);
-                return 0;                  /* ignored by caller! */
-        }
-        
         if (krx->krx_rpc_reply_needed &&
-            (hdr->type == PTL_MSG_PUT ||
-             hdr->type == PTL_MSG_REPLY)) {
-                /* This must be an optimized PUT/REPLY */
-                rc = kqswnal_rdma (krx, ptlmsg, hdr->type,
-                                   niov, iov, kiov, offset, mlen);
-                return (rc == 0 ? 0 : -EIO);
+            (hdr->type == LNET_MSG_PUT ||
+             hdr->type == LNET_MSG_REPLY)) {
+                /* This is an optimized PUT/REPLY */
+                rc = kqswnal_rdma(krx, lntmsg, hdr->type,
+                                  niov, iov, kiov, offset, mlen);
+                kqswnal_rx_decref(krx);
+                return rc;
         }
-
-        /* What was actually received must be >= payload. */
-        LASSERT (mlen <= rlen);
-        if (krx->krx_nob < KQSW_HDR_SIZE + mlen) {
+        
+        if (krx->krx_nob < KQSW_HDR_SIZE + rlen) {
                 CERROR("Bad message size: have %d, need %d + %d\n",
-                       krx->krx_nob, (int)KQSW_HDR_SIZE, (int)mlen);
-                return (-EIO);
+                       krx->krx_nob, (int)KQSW_HDR_SIZE, rlen);
+                kqswnal_rx_decref(krx);
+                return -EPROTO;
         }
+        /* NB lnet_parse() has already flipped *hdr */
 
         /* It must be OK to kmap() if required */
         LASSERT (kiov == NULL || !in_interrupt ());
         /* Either all pages or all vaddrs */
         LASSERT (!(kiov != NULL && iov != NULL));
 
-        if (mlen != 0) {
-                page     = 0;
-                page_ptr = buffer + KQSW_HDR_SIZE;
-                page_nob = PAGE_SIZE - KQSW_HDR_SIZE;
-
-                LASSERT (niov > 0);
-
-                if (kiov != NULL) {
-                        /* skip complete frags */
-                        while (offset >= kiov->kiov_len) {
-                                offset -= kiov->kiov_len;
-                                kiov++;
-                                niov--;
-                                LASSERT (niov > 0);
-                        }
-                        iov_ptr = ((char *)kmap (kiov->kiov_page)) +
-                                kiov->kiov_offset + offset;
-                        iov_nob = kiov->kiov_len - offset;
-                } else {
-                        /* skip complete frags */
-                        while (offset >= iov->iov_len) {
-                                offset -= iov->iov_len;
-                                iov++;
-                                niov--;
-                                LASSERT (niov > 0);
-                        }
-                        iov_ptr = iov->iov_base + offset;
-                        iov_nob = iov->iov_len - offset;
-                }
-                
-                for (;;)
-                {
-                        frag = mlen;
-                        if (frag > page_nob)
-                                frag = page_nob;
-                        if (frag > iov_nob)
-                                frag = iov_nob;
-
-                        memcpy (iov_ptr, page_ptr, frag);
-#if KQSW_CHECKSUM
-                        payload_csum = kqsw_csum (payload_csum, iov_ptr, frag);
-                        csum_nob += frag;
-                        csum_frags++;
-#endif
-                        mlen -= frag;
-                        if (mlen == 0)
-                                break;
-
-                        page_nob -= frag;
-                        if (page_nob != 0)
-                                page_ptr += frag;
-                        else
-                        {
-                                page++;
-                                LASSERT (page < krx->krx_npages);
-                                page_ptr = page_address(krx->krx_kiov[page].kiov_page);
-                                page_nob = PAGE_SIZE;
-                        }
-
-                        iov_nob -= frag;
-                        if (iov_nob != 0)
-                                iov_ptr += frag;
-                        else if (kiov != NULL) {
-                                kunmap (kiov->kiov_page);
-                                kiov++;
-                                niov--;
-                                LASSERT (niov > 0);
-                                iov_ptr = ((char *)kmap (kiov->kiov_page)) + kiov->kiov_offset;
-                                iov_nob = kiov->kiov_len;
-                        } else {
-                                iov++;
-                                niov--;
-                                LASSERT (niov > 0);
-                                iov_ptr = iov->iov_base;
-                                iov_nob = iov->iov_len;
-                        }
-                }
-
-                if (kiov != NULL)
-                        kunmap (kiov->kiov_page);
-        }
-
-#if KQSW_CHECKSUM
-        memcpy (&senders_csum, buffer + sizeof(ptl_hdr_t) + sizeof(kqsw_csum_t), 
-                sizeof(kqsw_csum_t));
-
-        if (csum_len != rlen)
-                CERROR("Unable to checksum data in user's buffer\n");
-        else if (senders_csum != payload_csum)
-                kqswnal_csum_error (krx, 0);
-
-        if (csum_verbose)
-                CERROR("hdr csum %lx, payload_csum %lx, csum_frags %d, "
-                       "csum_nob %d\n",
-                        hdr_csum, payload_csum, csum_frags, csum_nob);
-#endif
-        lnet_finalize(ni, private, ptlmsg, 0);
+        if (kiov != NULL)
+                lnet_copy_kiov2kiov(niov, kiov, offset,
+                                    krx->krx_npages, krx->krx_kiov, 
+                                    KQSW_HDR_SIZE, mlen);
+        else
+                lnet_copy_kiov2iov(niov, iov, offset,
+                                   krx->krx_npages, krx->krx_kiov, 
+                                   KQSW_HDR_SIZE, mlen);
 
-        return (0);
+        lnet_finalize(ni, private, lntmsg, 0);
+        kqswnal_rx_decref(krx);
+        return 0;
 }
 
 int
@@ -1822,7 +1425,6 @@ kqswnal_scheduler (void *arg)
 {
         kqswnal_rx_t    *krx;
         kqswnal_tx_t    *ktx;
-        kpr_fwd_desc_t  *fwd;
         unsigned long    flags;
         int              rc;
         int              counter = 0;
@@ -1880,19 +1482,6 @@ kqswnal_scheduler (void *arg)
                         spin_lock_irqsave (&kqswnal_data.kqn_sched_lock, flags);
                 }
 
-                if (!list_empty (&kqswnal_data.kqn_delayedfwds))
-                {
-                        fwd = list_entry (kqswnal_data.kqn_delayedfwds.next, kpr_fwd_desc_t, kprfd_list);
-                        list_del (&fwd->kprfd_list);
-                        spin_unlock_irqrestore (&kqswnal_data.kqn_sched_lock, flags);
-
-                        /* If we're shutting down, this will just requeue fwd on kqn_idletxd_fwdq */
-                        kqswnal_fwd_packet (kqswnal_data.kqn_ni, fwd);
-
-                        did_something = 1;
-                        spin_lock_irqsave (&kqswnal_data.kqn_sched_lock, flags);
-                }
-
                 /* nothing to do or hogging CPU */
                 if (!did_something || counter++ == KQSW_RESCHED) {
                         spin_unlock_irqrestore(&kqswnal_data.kqn_sched_lock,
@@ -1909,8 +1498,7 @@ kqswnal_scheduler (void *arg)
                                 rc = wait_event_interruptible (kqswnal_data.kqn_sched_waitq,
                                                                kqswnal_data.kqn_shuttingdown == 2 ||
                                                                !list_empty(&kqswnal_data.kqn_readyrxds) ||
-                                                               !list_empty(&kqswnal_data.kqn_delayedtxds) ||
-                                                               !list_empty(&kqswnal_data.kqn_delayedfwds));
+                                                               !list_empty(&kqswnal_data.kqn_delayedtxds));
                                 LASSERT (rc == 0);
                         } else if (need_resched())
                                 schedule ();
index 54ea69e..c24cb01 100644 (file)
 static int        kranal_devids[RANAL_MAXDEVS] = {RAPK_MAIN_DEVICE_ID,
                                                   RAPK_EXPANSION_DEVICE_ID};
 
-ptl_nal_t kranal_nal = {
-        .nal_type       = RANAL,
-        .nal_startup    = kranal_startup,
-        .nal_shutdown   = kranal_shutdown,
-        .nal_ctl        = kranal_ctl,
-        .nal_send       = kranal_send,
-        .nal_recv       = kranal_recv,
-        .nal_accept     = kranal_accept,
+lnd_t the_kralnd = {
+        .lnd_type       = RALND,
+        .lnd_startup    = kranal_startup,
+        .lnd_shutdown   = kranal_shutdown,
+        .lnd_ctl        = kranal_ctl,
+        .lnd_send       = kranal_send,
+        .lnd_recv       = kranal_recv,
+        .lnd_accept     = kranal_accept,
 };
 
 kra_data_t              kranal_data;
@@ -786,7 +786,7 @@ kranal_free_acceptsock (kra_acceptsock_t *ras)
 }
 
 int
-kranal_accept (ptl_ni_t *ni, struct socket *sock)
+kranal_accept (lnet_ni_t *ni, struct socket *sock)
 {
         kra_acceptsock_t  *ras;
         int                rc;
@@ -1166,7 +1166,7 @@ kranal_close_matching_conns (lnet_nid_t nid)
 }
 
 int
-kranal_ctl(ptl_ni_t *ni, unsigned int cmd, void *arg)
+kranal_ctl(lnet_ni_t *ni, unsigned int cmd, void *arg)
 {
         struct portal_ioctl_data *data = arg;
         int                       rc = -EINVAL;
@@ -1354,7 +1354,7 @@ kranal_device_fini(kra_device_t *dev)
 }
 
 void
-kranal_shutdown (ptl_ni_t *ni)
+kranal_shutdown (lnet_ni_t *ni)
 {
         int           i;
         unsigned long flags;
@@ -1480,7 +1480,7 @@ kranal_shutdown (ptl_ni_t *ni)
 }
 
 int
-kranal_startup (ptl_ni_t *ni)
+kranal_startup (lnet_ni_t *ni)
 {
         struct timeval    tv;
         int               pkmem = atomic_read(&libcfs_kmemory);
@@ -1488,7 +1488,7 @@ kranal_startup (ptl_ni_t *ni)
         int               i;
         kra_device_t     *dev;
 
-        LASSERT (ni->ni_nal == &kranal_nal);
+        LASSERT (ni->ni_lnd == &the_kralnd);
 
         /* Only 1 instance supported */
         if (kranal_data.kra_init != RANAL_INIT_NOTHING) {
@@ -1630,7 +1630,7 @@ kranal_startup (ptl_ni_t *ni)
 void __exit
 kranal_module_fini (void)
 {
-        lnet_unregister_nal(&kranal_nal);
+        lnet_unregister_lnd(&the_kralnd);
         kranal_tunables_fini();
 }
 
@@ -1643,7 +1643,7 @@ kranal_module_init (void)
         if (rc != 0)
                 return rc;
 
-        lnet_register_nal(&kranal_nal);
+        lnet_register_lnd(&the_kralnd);
 
         return 0;
 }
index ae10a21..4b0eb7c 100644 (file)
@@ -128,7 +128,7 @@ typedef struct
         int               kra_init;             /* initialisation state */
         int               kra_shutdown;         /* shut down? */
         atomic_t          kra_nthreads;         /* # live threads */
-        ptl_ni_t         *kra_ni;               /* _the_ nal instance */
+        lnet_ni_t        *kra_ni;               /* _the_ nal instance */
         
         kra_device_t      kra_devices[RANAL_MAXDEVS]; /* device/ptag/cq etc */
         int               kra_ndevs;            /* # devices */
@@ -200,13 +200,13 @@ typedef struct
 
 typedef struct
 {
-        ptl_hdr_t         raim_hdr;             /* portals header */
+        lnet_hdr_t        raim_hdr;             /* portals header */
         /* Portals payload is in FMA "Message Data" */
 } kra_immediate_msg_t;
 
 typedef struct
 {
-        ptl_hdr_t         raprm_hdr;            /* portals header */
+        lnet_hdr_t        raprm_hdr;            /* portals header */
         __u64             raprm_cookie;         /* opaque completion cookie */
 } kra_putreq_msg_t;
 
@@ -219,7 +219,7 @@ typedef struct
 
 typedef struct
 {
-        ptl_hdr_t         ragm_hdr;             /* portals header */
+        lnet_hdr_t        ragm_hdr;             /* portals header */
         __u64             ragm_cookie;          /* opaque completion cookie */
         kra_rdma_desc_t   ragm_desc;            /* sender's sink buffer */
 } kra_get_msg_t;
@@ -246,7 +246,7 @@ typedef struct                                  /* NB must fit in FMA "Prefix" *
         __u32             ram_seq;              /* incrementing sequence number */
 } kra_msg_t;
 
-#define RANAL_MSG_MAGIC      PTL_PROTO_RA_MAGIC /* unique magic */
+#define RANAL_MSG_MAGIC     LNET_PROTO_RA_MAGIC /* unique magic */
 #define RANAL_MSG_VERSION              1        /* current protocol version */
 
 #define RANAL_MSG_FENCE             0x80        /* fence RDMA */
@@ -269,7 +269,7 @@ typedef struct kra_tx                           /* message descriptor */
 {
         struct list_head          tx_list;      /* queue on idle_txs/rac_sendq/rac_waitq */
         struct kra_conn          *tx_conn;      /* owning conn */
-        ptl_msg_t                *tx_ptlmsg[2]; /* ptl msgs to finalize on completion */
+        lnet_msg_t               *tx_lntmsg[2]; /* ptl msgs to finalize on completion */
         unsigned long             tx_qtime;     /* when tx started to wait for something (jiffies) */
         int                       tx_isnblk;    /* I'm reserved for non-blocking sends */
         int                       tx_nob;       /* # bytes of payload */
@@ -450,19 +450,15 @@ kranal_page2phys (struct page *p)
         return page_to_phys(p);
 }
 
-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 tgt_is_router, 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,
+int kranal_startup (lnet_ni_t *ni);
+void kranal_shutdown (lnet_ni_t *ni);
+int kranal_ctl(lnet_ni_t *ni, unsigned int cmd, void *arg);
+int kranal_send (lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg);
+int kranal_recv(lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg, 
+                int delayed, 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);
+int kranal_accept(lnet_ni_t *ni, struct socket *sock);
 
 extern void kranal_free_acceptsock (kra_acceptsock_t *ras);
 extern int kranal_listener_procint (ctl_table *table,
@@ -483,6 +479,7 @@ extern int kranal_connd (void *arg);
 extern int kranal_reaper (void *arg);
 extern int kranal_scheduler (void *arg);
 extern void kranal_close_conn_locked (kra_conn_t *conn, int error);
+extern void kranal_close_conn (kra_conn_t *conn, int error);
 extern void kranal_terminate_conn_locked (kra_conn_t *conn);
 extern void kranal_connect (kra_peer_t *peer);
 extern int kranal_conn_handshake (struct socket *sock, kra_peer_t *peer);
index 1a4e984..43b871b 100644 (file)
@@ -115,8 +115,8 @@ kranal_get_idle_tx (int may_block)
                 LASSERT (tx->tx_buftype == RANAL_BUF_NONE);
                 LASSERT (tx->tx_msg.ram_type == RANAL_MSG_NONE);
                 LASSERT (tx->tx_conn == NULL);
-                LASSERT (tx->tx_ptlmsg[0] == NULL);
-                LASSERT (tx->tx_ptlmsg[1] == NULL);
+                LASSERT (tx->tx_lntmsg[0] == NULL);
+                LASSERT (tx->tx_lntmsg[1] == NULL);
         }
 
         spin_unlock_irqrestore(&kranal_data.kra_tx_lock, flags);
@@ -147,7 +147,8 @@ kranal_new_tx_msg (int may_block, int type)
 }
 
 int
-kranal_setup_immediate_buffer (kra_tx_t *tx, int niov, struct iovec *iov,
+kranal_setup_immediate_buffer (kra_tx_t *tx, 
+                               unsigned int niov, struct iovec *iov,
                                int offset, int nob)
 
 {
@@ -184,7 +185,8 @@ kranal_setup_immediate_buffer (kra_tx_t *tx, int niov, struct iovec *iov,
 }
 
 int
-kranal_setup_virt_buffer (kra_tx_t *tx, int niov, struct iovec *iov,
+kranal_setup_virt_buffer (kra_tx_t *tx, 
+                          unsigned int niov, struct iovec *iov,
                           int offset, int nob)
 
 {
@@ -270,7 +272,7 @@ kranal_setup_phys_buffer (kra_tx_t *tx, int nkiov, lnet_kiov_t *kiov,
 }
 
 static inline int
-kranal_setup_rdma_buffer (kra_tx_t *tx, int niov,
+kranal_setup_rdma_buffer (kra_tx_t *tx, unsigned int niov,
                           struct iovec *iov, lnet_kiov_t *kiov,
                           int offset, int nob)
 {
@@ -390,7 +392,6 @@ kranal_unmap_buffer (kra_tx_t *tx)
 void
 kranal_tx_done (kra_tx_t *tx, int completion)
 {
-        int        ptlrc = (completion == 0) ? 0 : -EIO;
         unsigned long    flags;
         int              i;
 
@@ -399,12 +400,13 @@ kranal_tx_done (kra_tx_t *tx, int completion)
         kranal_unmap_buffer(tx);
 
         for (i = 0; i < 2; i++) {
-                /* tx may have up to 2 ptlmsgs to finalise */
-                if (tx->tx_ptlmsg[i] == NULL)
+                /* tx may have up to 2 lntmsgs to finalise */
+                if (tx->tx_lntmsg[i] == NULL)
                         continue;
 
-                lnet_finalize(kranal_data.kra_ni, NULL, tx->tx_ptlmsg[i], ptlrc);
-                tx->tx_ptlmsg[i] = NULL;
+                lnet_finalize(kranal_data.kra_ni, NULL, tx->tx_lntmsg[i], 
+                              completion);
+                tx->tx_lntmsg[i] = NULL;
         }
 
         tx->tx_buftype = RANAL_BUF_NONE;
@@ -614,23 +616,21 @@ kranal_consume_rxmsg (kra_conn_t *conn, void *buffer, int nob)
 }
 
 int
-kranal_send (ptl_ni_t         *ni,
-             void             *private,
-             ptl_msg_t        *ptlmsg,
-             ptl_hdr_t        *hdr,
-             int               type,
-             lnet_process_id_t target,
-             int               target_is_router,
-             int               routing,
-             unsigned int      niov,
-             struct iovec     *iov,
-             lnet_kiov_t      *kiov,
-             unsigned int      offset,
-             unsigned int      nob)
+kranal_send (lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg)
 {
-        kra_conn_t *conn;
-        kra_tx_t   *tx;
-        int         rc;
+        lnet_hdr_t       *hdr = &lntmsg->msg_hdr;
+        int               type = lntmsg->msg_type;
+        lnet_process_id_t target = lntmsg->msg_target;
+        int               target_is_router = lntmsg->msg_target_is_router;
+        int               routing = lntmsg->msg_routing;
+        unsigned int      niov = lntmsg->msg_niov;
+        struct iovec     *iov = lntmsg->msg_iov;
+        lnet_kiov_t      *kiov = lntmsg->msg_kiov;
+        unsigned int      offset = lntmsg->msg_offset;
+        unsigned int      nob = lntmsg->msg_len;
+        kra_conn_t       *conn;
+        kra_tx_t         *tx;
+        int               rc;
 
         /* NB 'private' is different depending on what we're sending.... */
 
@@ -653,59 +653,59 @@ kranal_send (ptl_ni_t         *ni,
         default:
                 LBUG();
 
-        case PTL_MSG_ACK:
+        case LNET_MSG_ACK:
                 LASSERT (nob == 0);
                 break;
 
-        case PTL_MSG_GET:
+        case LNET_MSG_GET:
                 LASSERT (niov == 0);
                 LASSERT (nob == 0);
                 /* We have to consider the eventual sink buffer rather than any
                  * payload passed here (there isn't any, and strictly, looking
-                 * inside ptlmsg is a layering violation).  We send a simple
+                 * inside lntmsg is a layering violation).  We send a simple
                  * IMMEDIATE GET if the sink buffer is mapped already and small
                  * enough for FMA */
 
                 if (routing || target_is_router)
                         break;                  /* send IMMEDIATE */
 
-                if ((ptlmsg->msg_md->md_options & LNET_MD_KIOV) == 0 &&
-                    ptlmsg->msg_md->md_length <= RANAL_FMA_MAX_DATA &&
-                    ptlmsg->msg_md->md_length <= *kranal_tunables.kra_max_immediate)
+                if ((lntmsg->msg_md->md_options & LNET_MD_KIOV) == 0 &&
+                    lntmsg->msg_md->md_length <= RANAL_FMA_MAX_DATA &&
+                    lntmsg->msg_md->md_length <= *kranal_tunables.kra_max_immediate)
                         break;                  /* send IMMEDIATE */
 
                 tx = kranal_new_tx_msg(!in_interrupt(), RANAL_MSG_GET_REQ);
                 if (tx == NULL)
                         return -ENOMEM;
 
-                if ((ptlmsg->msg_md->md_options & LNET_MD_KIOV) == 0)
-                        rc = kranal_setup_virt_buffer(tx, ptlmsg->msg_md->md_niov,
-                                                      ptlmsg->msg_md->md_iov.iov,
-                                                      0, ptlmsg->msg_md->md_length);
+                if ((lntmsg->msg_md->md_options & LNET_MD_KIOV) == 0)
+                        rc = kranal_setup_virt_buffer(tx, lntmsg->msg_md->md_niov,
+                                                      lntmsg->msg_md->md_iov.iov,
+                                                      0, lntmsg->msg_md->md_length);
                 else
-                        rc = kranal_setup_phys_buffer(tx, ptlmsg->msg_md->md_niov,
-                                                      ptlmsg->msg_md->md_iov.kiov,
-                                                      0, ptlmsg->msg_md->md_length);
+                        rc = kranal_setup_phys_buffer(tx, lntmsg->msg_md->md_niov,
+                                                      lntmsg->msg_md->md_iov.kiov,
+                                                      0, lntmsg->msg_md->md_length);
                 if (rc != 0) {
                         kranal_tx_done(tx, rc);
                         return -EIO;
                 }
 
-                tx->tx_ptlmsg[1] = lnet_create_reply_msg(ni, target.nid, ptlmsg);
-                if (tx->tx_ptlmsg[1] == NULL) {
+                tx->tx_lntmsg[1] = lnet_create_reply_msg(ni, lntmsg);
+                if (tx->tx_lntmsg[1] == NULL) {
                         CERROR("Can't create reply for GET to %s\n", 
                                libcfs_nid2str(target.nid));
                         kranal_tx_done(tx, rc);
                         return -EIO;
                 }
 
-                tx->tx_ptlmsg[0] = ptlmsg;
+                tx->tx_lntmsg[0] = lntmsg;
                 tx->tx_msg.ram_u.get.ragm_hdr = *hdr;
                 /* rest of tx_msg is setup just before it is sent */
                 kranal_launch_tx(tx, target.nid);
                 return 0;
 
-        case PTL_MSG_REPLY:
+        case LNET_MSG_REPLY:
                 /* reply's 'private' is the conn that received the GET_REQ */
                 conn = private;
 
@@ -734,7 +734,7 @@ kranal_send (ptl_ni_t         *ni,
                         }
 
                         tx->tx_conn = conn;
-                        tx->tx_ptlmsg[0] = ptlmsg;
+                        tx->tx_lntmsg[0] = lntmsg;
 
                         rc = kranal_map_buffer(tx);
                         if (rc != 0) {
@@ -753,14 +753,14 @@ kranal_send (ptl_ni_t         *ni,
 
                 /* Fall through and handle like PUT */
 
-        case PTL_MSG_PUT:
+        case LNET_MSG_PUT:
                 if (kiov == NULL &&             /* not paged */
                     nob <= RANAL_FMA_MAX_DATA && /* small enough */
                     nob <= *kranal_tunables.kra_max_immediate)
                         break;                  /* send IMMEDIATE */
 
                 tx = kranal_new_tx_msg(!(routing ||
-                                         type == PTL_MSG_REPLY ||
+                                         type == LNET_MSG_REPLY ||
                                          in_interrupt()), 
                                        RANAL_MSG_PUT_REQ);
                 if (tx == NULL)
@@ -772,7 +772,7 @@ kranal_send (ptl_ni_t         *ni,
                         return -EIO;
                 }
 
-                tx->tx_ptlmsg[0] = ptlmsg;
+                tx->tx_lntmsg[0] = lntmsg;
                 tx->tx_msg.ram_u.putreq.raprm_hdr = *hdr;
                 /* rest of tx_msg is setup just before it is sent */
                 kranal_launch_tx(tx, target.nid);
@@ -785,8 +785,8 @@ kranal_send (ptl_ni_t         *ni,
         LASSERT (nob <= RANAL_FMA_MAX_DATA);
 
         tx = kranal_new_tx_msg(!(routing ||
-                                 type == PTL_MSG_ACK ||
-                                 type == PTL_MSG_REPLY ||
+                                 type == LNET_MSG_ACK ||
+                                 type == LNET_MSG_REPLY ||
                                  in_interrupt()),
                                RANAL_MSG_IMMEDIATE);
         if (tx == NULL)
@@ -799,14 +799,15 @@ kranal_send (ptl_ni_t         *ni,
         }
 
         tx->tx_msg.ram_u.immediate.raim_hdr = *hdr;
-        tx->tx_ptlmsg[0] = ptlmsg;
+        tx->tx_lntmsg[0] = lntmsg;
         kranal_launch_tx(tx, target.nid);
         return 0;
 }
 
 int
-kranal_recv (ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg,
-             unsigned int niov, struct iovec *iov, lnet_kiov_t *kiov,
+kranal_recv (lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg,
+             int delayed, unsigned int niov, 
+             struct iovec *iov, lnet_kiov_t *kiov,
              unsigned int offset, unsigned int mlen, unsigned int rlen)
 {
         kra_conn_t  *conn = private;
@@ -820,19 +821,18 @@ kranal_recv (ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg,
         /* Either all pages or all vaddrs */
         LASSERT (!(kiov != NULL && iov != NULL));
 
-        CDEBUG(D_NET, "conn %p, rxmsg %p, ptlmsg %p\n", conn, rxmsg, ptlmsg);
+        CDEBUG(D_NET, "conn %p, rxmsg %p, lntmsg %p\n", conn, rxmsg, lntmsg);
 
-        if (ptlmsg == NULL) {
-                /* GET or ACK or portals is discarding */
+        if (rxmsg == NULL) {
+                /* already consumed: must have been a GET_REQ that matched */
                 LASSERT (mlen == 0);
-                lnet_finalize(ni, NULL, ptlmsg, 0);
+                LASSERT (lntmsg == NULL);       /* no need to finalise */
                 return 0;
         }
-
+        
         switch(rxmsg->ram_type) {
         default:
                 LBUG();
-                return -EIO;
 
         case RANAL_MSG_IMMEDIATE:
                 if (mlen == 0) {
@@ -855,17 +855,20 @@ kranal_recv (ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg,
                         buffer = ((char *)iov->iov_base) + offset;
                 }
                 rc = kranal_consume_rxmsg(conn, buffer, mlen);
-                lnet_finalize(ni, NULL, ptlmsg, (rc == 0) ? 0 : -EIO);
+                lnet_finalize(ni, NULL, lntmsg, (rc == 0) ? 0 : -EIO);
                 return 0;
 
         case RANAL_MSG_PUT_REQ:
                 tx = kranal_new_tx_msg(0, RANAL_MSG_PUT_ACK);
-                if (tx == NULL)
+                if (tx == NULL) {
+                        kranal_consume_rxmsg(conn, NULL, 0);
                         return -ENOMEM;
-
+                }
+                
                 rc = kranal_setup_rdma_buffer(tx, niov, iov, kiov, offset, mlen);
                 if (rc != 0) {
                         kranal_tx_done(tx, rc);
+                        kranal_consume_rxmsg(conn, NULL, 0);
                         return -EIO;
                 }
 
@@ -873,6 +876,7 @@ kranal_recv (ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg,
                 rc = kranal_map_buffer(tx);
                 if (rc != 0) {
                         kranal_tx_done(tx, rc);
+                        kranal_consume_rxmsg(conn, NULL, 0);
                         return -EIO;
                 }
 
@@ -884,11 +888,21 @@ kranal_recv (ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg,
                         (__u64)((unsigned long)tx->tx_buffer);
                 tx->tx_msg.ram_u.putack.rapam_desc.rard_nob = mlen;
 
-                tx->tx_ptlmsg[0] = ptlmsg; /* finalize this on RDMA_DONE */
+                tx->tx_lntmsg[0] = lntmsg; /* finalize this on RDMA_DONE */
 
                 kranal_post_fma(conn, tx);
+                kranal_consume_rxmsg(conn, NULL, 0);
+                return 0;
 
-                /* flag matched by consuming rx message */
+        case RANAL_MSG_GET_REQ:
+                /* This one didn't match anything */
+                tx = kranal_new_tx_msg(0, RANAL_MSG_GET_NAK);
+                if (tx != NULL) {
+                        tx->tx_msg.ram_u.completion.racm_cookie = 
+                                rxmsg->ram_u.get.ragm_cookie;
+                        kranal_post_fma(conn, tx);
+                }
+                LASSERT (lntmsg == NULL);       /* no need to finalise */
                 kranal_consume_rxmsg(conn, NULL, 0);
                 return 0;
         }
@@ -1642,6 +1656,8 @@ kranal_check_fma_rx (kra_conn_t *conn)
         void         *prefix;
         RAP_RETURN    rrc = RapkFmaGetPrefix(conn->rac_rihandle, &prefix);
         kra_peer_t   *peer = conn->rac_peer;
+        int           rc = 0;
+        int           repost = 1;
 
         if (rrc == RAP_NOT_DONE)
                 return;
@@ -1662,6 +1678,7 @@ kranal_check_fma_rx (kra_conn_t *conn)
                 if (__swab32(msg->ram_magic) != RANAL_MSG_MAGIC) {
                         CERROR("Unexpected magic %08x from %s\n",
                                msg->ram_magic, libcfs_nid2str(peer->rap_nid));
+                        rc = -EPROTO;
                         goto out;
                 }
 
@@ -1690,6 +1707,7 @@ kranal_check_fma_rx (kra_conn_t *conn)
         if (msg->ram_version != RANAL_MSG_VERSION) {
                 CERROR("Unexpected protocol version %d from %s\n",
                        msg->ram_version, libcfs_nid2str(peer->rap_nid));
+                rc = -EPROTO;
                 goto out;
         }
 
@@ -1697,6 +1715,7 @@ kranal_check_fma_rx (kra_conn_t *conn)
                 CERROR("Unexpected peer %s from %s\n",
                        libcfs_nid2str(msg->ram_srcnid), 
                        libcfs_nid2str(peer->rap_nid));
+                rc = -EPROTO;
                 goto out;
         }
 
@@ -1705,12 +1724,14 @@ kranal_check_fma_rx (kra_conn_t *conn)
                        " expected) from %s\n",
                        msg->ram_connstamp, conn->rac_peer_connstamp,
                        libcfs_nid2str(peer->rap_nid));
+                rc = -EPROTO;
                 goto out;
         }
 
         if (msg->ram_seq != seq) {
                 CERROR("Unexpected sequence number %d(%d expected) from %s\n",
                        msg->ram_seq, seq, libcfs_nid2str(peer->rap_nid));
+                rc = -EPROTO;
                 goto out;
         }
 
@@ -1723,6 +1744,7 @@ kranal_check_fma_rx (kra_conn_t *conn)
         if (conn->rac_close_recvd) {
                 CERROR("Unexpected message %d after CLOSE from %s\n",
                        msg->ram_type, libcfs_nid2str(conn->rac_peer->rap_nid));
+                rc = -EPROTO;
                 goto out;
         }
 
@@ -1752,23 +1774,16 @@ kranal_check_fma_rx (kra_conn_t *conn)
 
         case RANAL_MSG_IMMEDIATE:
                 CDEBUG(D_NET, "RX IMMEDIATE on %p\n", conn);
-                lnet_parse(kranal_data.kra_ni, &msg->ram_u.immediate.raim_hdr, conn);
+                rc = lnet_parse(kranal_data.kra_ni, &msg->ram_u.immediate.raim_hdr, 
+                                conn);
+                repost = rc < 0;
                 break;
 
         case RANAL_MSG_PUT_REQ:
                 CDEBUG(D_NET, "RX PUT_REQ on %p\n", conn);
-                lnet_parse(kranal_data.kra_ni, &msg->ram_u.putreq.raprm_hdr, conn);
-
-                if (conn->rac_rxmsg == NULL)    /* lnet_parse matched something */
-                        break;
-
-                tx = kranal_new_tx_msg(0, RANAL_MSG_PUT_NAK);
-                if (tx == NULL)
-                        break;
-
-                tx->tx_msg.ram_u.completion.racm_cookie =
-                        msg->ram_u.putreq.raprm_cookie;
-                kranal_post_fma(conn, tx);
+                rc = lnet_parse(kranal_data.kra_ni, &msg->ram_u.putreq.raprm_hdr, 
+                                conn);
+                repost = rc < 0;
                 break;
 
         case RANAL_MSG_PUT_NAK:
@@ -1810,17 +1825,9 @@ kranal_check_fma_rx (kra_conn_t *conn)
 
         case RANAL_MSG_GET_REQ:
                 CDEBUG(D_NET, "RX GET_REQ on %p\n", conn);
-                lnet_parse(kranal_data.kra_ni, &msg->ram_u.get.ragm_hdr, conn);
-
-                if (conn->rac_rxmsg == NULL)    /* lnet_parse matched something */
-                        break;
-
-                tx = kranal_new_tx_msg(0, RANAL_MSG_GET_NAK);
-                if (tx == NULL)
-                        break;
-
-                tx->tx_msg.ram_u.completion.racm_cookie = msg->ram_u.get.ragm_cookie;
-                kranal_post_fma(conn, tx);
+                rc = lnet_parse(kranal_data.kra_ni, &msg->ram_u.get.ragm_hdr, 
+                                conn);
+                repost = rc < 0;
                 break;
 
         case RANAL_MSG_GET_NAK:
@@ -1848,8 +1855,11 @@ kranal_check_fma_rx (kra_conn_t *conn)
                 break;
         }
 
+        if (rc < 0)        /* lnet_parse() detected an error */
+                kranal_close_conn (conn, rc);
+
  out:
-        if (conn->rac_rxmsg != NULL)
+        if (repost && conn->rac_rxmsg != NULL)
                 kranal_consume_rxmsg(conn, NULL, 0);
 
         /* check again later */
index 02e88ad..bc7309e 100644 (file)
 
 #include "socklnd.h"
 
-ptl_nal_t ksocknal_nal = {
-        .nal_type       = SOCKNAL,
-        .nal_startup    = ksocknal_startup,
-        .nal_shutdown   = ksocknal_shutdown,
-        .nal_ctl        = ksocknal_ctl,
-        .nal_send       = ksocknal_send,
-        .nal_recv       = ksocknal_recv,
-        .nal_fwd        = ksocknal_fwd_packet,
-        .nal_notify     = ksocknal_notify,
-        .nal_accept     = ksocknal_accept,
+lnd_t the_ksocklnd = {
+        .lnd_type       = SOCKLND,
+        .lnd_startup    = ksocknal_startup,
+        .lnd_shutdown   = ksocknal_shutdown,
+        .lnd_ctl        = ksocknal_ctl,
+        .lnd_send       = ksocknal_send,
+        .lnd_recv       = ksocknal_recv,
+        .lnd_notify     = ksocknal_notify,
+        .lnd_accept     = ksocknal_accept,
 };
 
 ksock_nal_data_t        ksocknal_data;
 
 ksock_interface_t *
-ksocknal_ip2iface(ptl_ni_t *ni, __u32 ip)
+ksocknal_ip2iface(lnet_ni_t *ni, __u32 ip)
 {
         ksock_net_t       *net = ni->ni_data;
         int                i;
         ksock_interface_t *iface;
 
         for (i = 0; i < net->ksnn_ninterfaces; i++) {
-                LASSERT(i < PTL_MAX_INTERFACES);
+                LASSERT(i < LNET_MAX_INTERFACES);
                 iface = &net->ksnn_interfaces[i];
 
                 if (iface->ksni_ipaddr == ip)
@@ -92,7 +91,7 @@ ksocknal_destroy_route (ksock_route_t *route)
 }
 
 int
-ksocknal_create_peer (ksock_peer_t **peerp, ptl_ni_t *ni, lnet_process_id_t id)
+ksocknal_create_peer (ksock_peer_t **peerp, lnet_ni_t *ni, lnet_process_id_t id)
 {
         ksock_net_t   *net = ni->ni_data;
         ksock_peer_t  *peer;
@@ -160,7 +159,7 @@ ksocknal_destroy_peer (ksock_peer_t *peer)
 }
 
 ksock_peer_t *
-ksocknal_find_peer_locked (ptl_ni_t *ni, lnet_process_id_t id)
+ksocknal_find_peer_locked (lnet_ni_t *ni, lnet_process_id_t id)
 {
         struct list_head *peer_list = ksocknal_nid2peerlist(id.nid);
         struct list_head *tmp;
@@ -188,7 +187,7 @@ ksocknal_find_peer_locked (ptl_ni_t *ni, lnet_process_id_t id)
 }
 
 ksock_peer_t *
-ksocknal_find_peer (ptl_ni_t *ni, lnet_process_id_t id)
+ksocknal_find_peer (lnet_ni_t *ni, lnet_process_id_t id)
 {
         ksock_peer_t     *peer;
 
@@ -208,7 +207,7 @@ ksocknal_unlink_peer_locked (ksock_peer_t *peer)
         __u32              ip;
 
         for (i = 0; i < peer->ksnp_n_passive_ips; i++) {
-                LASSERT (i < PTL_MAX_INTERFACES);
+                LASSERT (i < LNET_MAX_INTERFACES);
                 ip = peer->ksnp_passive_ips[i];
 
                 ksocknal_ip2iface(peer->ksnp_ni, ip)->ksni_npeers--;
@@ -224,7 +223,7 @@ ksocknal_unlink_peer_locked (ksock_peer_t *peer)
 }
 
 int
-ksocknal_get_peer_info (ptl_ni_t *ni, int index, 
+ksocknal_get_peer_info (lnet_ni_t *ni, int index, 
                         lnet_process_id_t *id, __u32 *myip, __u32 *peer_ip, int *port,
                         int *conn_count, int *share_count)
 {
@@ -425,7 +424,7 @@ ksocknal_del_route_locked (ksock_route_t *route)
 }
 
 int
-ksocknal_add_peer (ptl_ni_t *ni, lnet_process_id_t id, __u32 ipaddr, int port)
+ksocknal_add_peer (lnet_ni_t *ni, lnet_process_id_t id, __u32 ipaddr, int port)
 {
         unsigned long      flags;
         struct list_head  *tmp;
@@ -540,7 +539,7 @@ ksocknal_del_peer_locked (ksock_peer_t *peer, __u32 ip)
 }
 
 int
-ksocknal_del_peer (ptl_ni_t *ni, lnet_process_id_t id, __u32 ip)
+ksocknal_del_peer (lnet_ni_t *ni, lnet_process_id_t id, __u32 ip)
 {
         unsigned long      flags;
         struct list_head  *ptmp;
@@ -582,7 +581,7 @@ ksocknal_del_peer (ptl_ni_t *ni, lnet_process_id_t id, __u32 ip)
 }
 
 ksock_conn_t *
-ksocknal_get_conn_by_idx (ptl_ni_t *ni, int index)
+ksocknal_get_conn_by_idx (lnet_ni_t *ni, int index)
 {
         ksock_peer_t      *peer;
         struct list_head  *ptmp;
@@ -652,7 +651,7 @@ ksocknal_choose_scheduler_locked (unsigned int irq)
 }
 
 int
-ksocknal_local_ipvec (ptl_ni_t *ni, __u32 *ipaddrs)
+ksocknal_local_ipvec (lnet_ni_t *ni, __u32 *ipaddrs)
 {
         ksock_net_t       *net = ni->ni_data;
         int                i;
@@ -661,7 +660,7 @@ ksocknal_local_ipvec (ptl_ni_t *ni, __u32 *ipaddrs)
         read_lock (&ksocknal_data.ksnd_global_lock);
 
         nip = net->ksnn_ninterfaces;
-        LASSERT (nip < PTL_MAX_INTERFACES);
+        LASSERT (nip < LNET_MAX_INTERFACES);
 
         for (i = 0; i < nip; i++) {
                 ipaddrs[i] = net->ksnn_interfaces[i].ksni_ipaddr;
@@ -732,8 +731,8 @@ ksocknal_select_ips(ksock_peer_t *peer, __u32 *peerips, int n_peerips)
 
         write_lock_irqsave(global_lock, flags);
 
-        LASSERT (n_peerips <= PTL_MAX_INTERFACES);
-        LASSERT (net->ksnn_ninterfaces <= PTL_MAX_INTERFACES);
+        LASSERT (n_peerips <= LNET_MAX_INTERFACES);
+        LASSERT (net->ksnn_ninterfaces <= LNET_MAX_INTERFACES);
 
         n_ips = MIN(n_peerips, net->ksnn_ninterfaces);
 
@@ -814,7 +813,7 @@ ksocknal_create_routes(ksock_peer_t *peer, int port,
 {
         ksock_route_t      *newroute = NULL;
         rwlock_t           *global_lock = &ksocknal_data.ksnd_global_lock;
-        ptl_ni_t           *ni = peer->ksnp_ni;
+        lnet_ni_t          *ni = peer->ksnp_ni;
         ksock_net_t        *net = ni->ni_data;
         unsigned long       flags;
         struct list_head   *rtmp;
@@ -834,7 +833,7 @@ ksocknal_create_routes(ksock_peer_t *peer, int port,
 
         write_lock_irqsave(global_lock, flags);
 
-        LASSERT (npeer_ipaddrs <= PTL_MAX_INTERFACES);
+        LASSERT (npeer_ipaddrs <= LNET_MAX_INTERFACES);
 
         for (i = 0; i < npeer_ipaddrs; i++) {
                 if (newroute != NULL) {
@@ -866,7 +865,7 @@ ksocknal_create_routes(ksock_peer_t *peer, int port,
                 best_nroutes = 0;
                 best_netmatch = 0;
 
-                LASSERT (net->ksnn_ninterfaces <= PTL_MAX_INTERFACES);
+                LASSERT (net->ksnn_ninterfaces <= LNET_MAX_INTERFACES);
 
                 /* Select interface to connect from */
                 for (j = 0; j < net->ksnn_ninterfaces; j++) {
@@ -915,7 +914,7 @@ ksocknal_create_routes(ksock_peer_t *peer, int port,
 }
 
 int
-ksocknal_accept (ptl_ni_t *ni, struct socket *sock)
+ksocknal_accept (lnet_ni_t *ni, struct socket *sock)
 {
         ksock_connreq_t    *cr;
         int                 rc;
@@ -934,7 +933,7 @@ ksocknal_accept (ptl_ni_t *ni, struct socket *sock)
                 return -ENOMEM;
         }
 
-        ptl_ni_addref(ni);
+        lnet_ni_addref(ni);
         cr->ksncr_ni   = ni;
         cr->ksncr_sock = sock;
 
@@ -948,11 +947,11 @@ ksocknal_accept (ptl_ni_t *ni, struct socket *sock)
 }
 
 int
-ksocknal_create_conn (ptl_ni_t *ni, ksock_route_t *route, 
+ksocknal_create_conn (lnet_ni_t *ni, ksock_route_t *route, 
                       struct socket *sock, int type)
 {
         rwlock_t          *global_lock = &ksocknal_data.ksnd_global_lock;
-        __u32              ipaddrs[PTL_MAX_INTERFACES];
+        __u32              ipaddrs[LNET_MAX_INTERFACES];
         int                nipaddrs;
         lnet_process_id_t   peerid;
         struct list_head  *tmp;
@@ -967,7 +966,7 @@ ksocknal_create_conn (ptl_ni_t *ni, ksock_route_t *route,
         ksock_tx_t        *tx;
         int                rc;
 
-        LASSERT (route == NULL == (type == SOCKNAL_CONN_NONE));
+        LASSERT (route == NULL == (type == SOCKLND_CONN_NONE));
 
         rc = ksocknal_lib_setup_sock (sock);
         if (rc != 0)
@@ -1369,10 +1368,6 @@ ksocknal_destroy_conn (ksock_conn_t *conn)
                 lnet_finalize (conn->ksnc_peer->ksnp_ni, NULL, 
                               conn->ksnc_cookie, -EIO);
                 break;
-        case SOCKNAL_RX_BODY_FWD:
-                ksocknal_fmb_callback (conn->ksnc_peer->ksnp_ni,
-                                       conn->ksnc_cookie, -ECONNABORTED);
-                break;
         case SOCKNAL_RX_HEADER:
         case SOCKNAL_RX_SLOP:
                 break;
@@ -1495,7 +1490,7 @@ ksocknal_close_matching_conns (lnet_process_id_t id, __u32 ipaddr)
 }
 
 void
-ksocknal_notify (ptl_ni_t *ni, lnet_nid_t gw_nid, int alive)
+ksocknal_notify (lnet_ni_t *ni, lnet_nid_t gw_nid, int alive)
 {
         /* The router is telling me she's been notified of a change in
          * gateway state.... */
@@ -1547,7 +1542,7 @@ ksocknal_push_peer (ksock_peer_t *peer)
 }
 
 int
-ksocknal_push (ptl_ni_t *ni, lnet_process_id_t id)
+ksocknal_push (lnet_ni_t *ni, lnet_process_id_t id)
 {
         ksock_peer_t      *peer;
         struct list_head  *tmp;
@@ -1596,7 +1591,7 @@ ksocknal_push (ptl_ni_t *ni, lnet_process_id_t id)
 }
 
 int
-ksocknal_add_interface(ptl_ni_t *ni, __u32 ipaddress, __u32 netmask)
+ksocknal_add_interface(lnet_ni_t *ni, __u32 ipaddress, __u32 netmask)
 {
         ksock_net_t       *net = ni->ni_data;
         unsigned long      flags;
@@ -1619,7 +1614,7 @@ ksocknal_add_interface(ptl_ni_t *ni, __u32 ipaddress, __u32 netmask)
         if (iface != NULL) {
                 /* silently ignore dups */
                 rc = 0;
-        } else if (net->ksnn_ninterfaces == PTL_MAX_INTERFACES) {
+        } else if (net->ksnn_ninterfaces == LNET_MAX_INTERFACES) {
                 rc = -ENOSPC;
         } else {
                 iface = &net->ksnn_interfaces[net->ksnn_ninterfaces++];
@@ -1697,7 +1692,7 @@ ksocknal_peer_del_interface_locked(ksock_peer_t *peer, __u32 ipaddr)
 }
 
 int
-ksocknal_del_interface(ptl_ni_t *ni, __u32 ipaddress)
+ksocknal_del_interface(lnet_ni_t *ni, __u32 ipaddress)
 {
         ksock_net_t       *net = ni->ni_data;
         int                rc = -ENOENT;
@@ -1744,7 +1739,7 @@ ksocknal_del_interface(ptl_ni_t *ni, __u32 ipaddress)
 }
 
 int
-ksocknal_ctl(ptl_ni_t *ni, unsigned int cmd, void *arg)
+ksocknal_ctl(lnet_ni_t *ni, unsigned int cmd, void *arg)
 {
         struct portal_ioctl_data *data = arg;
         int rc;
@@ -1875,35 +1870,8 @@ ksocknal_ctl(ptl_ni_t *ni, unsigned int cmd, void *arg)
 }
 
 void
-ksocknal_free_fmbs (ksock_fmb_pool_t *p)
-{
-        int          npages = p->fmp_buff_pages;
-        ksock_fmb_t *fmb;
-        int          i;
-
-        LASSERT (list_empty(&p->fmp_blocked_conns));
-        LASSERT (p->fmp_nactive_fmbs == 0);
-
-        while (!list_empty(&p->fmp_idle_fmbs)) {
-
-                fmb = list_entry(p->fmp_idle_fmbs.next,
-                                 ksock_fmb_t, fmb_list);
-
-                for (i = 0; i < npages; i++)
-                        if (fmb->fmb_kiov[i].kiov_page != NULL)
-                                cfs_free_page(fmb->fmb_kiov[i].kiov_page);
-
-                list_del(&fmb->fmb_list);
-                PORTAL_FREE(fmb, offsetof(ksock_fmb_t, fmb_kiov[npages]));
-        }
-}
-
-void
 ksocknal_free_buffers (void)
 {
-        ksocknal_free_fmbs(&ksocknal_data.ksnd_small_fmp);
-        ksocknal_free_fmbs(&ksocknal_data.ksnd_large_fmp);
-
         LASSERT (atomic_read(&ksocknal_data.ksnd_nactive_ltxs) == 0);
 
         if (ksocknal_data.ksnd_schedulers != NULL)
@@ -1958,8 +1926,6 @@ ksocknal_base_shutdown (void)
                 LASSERT (list_empty (&ksocknal_data.ksnd_zombie_conns));
                 LASSERT (list_empty (&ksocknal_data.ksnd_connd_connreqs));
                 LASSERT (list_empty (&ksocknal_data.ksnd_connd_routes));
-                LASSERT (list_empty (&ksocknal_data.ksnd_small_fmp.fmp_blocked_conns));
-                LASSERT (list_empty (&ksocknal_data.ksnd_large_fmp.fmp_blocked_conns));
 
                 if (ksocknal_data.ksnd_schedulers != NULL)
                         for (i = 0; i < ksocknal_data.ksnd_nschedulers; i++) {
@@ -2028,7 +1994,6 @@ ksocknal_base_startup (void)
 {
         int               rc;
         int               i;
-        int               j;
 
         LASSERT (ksocknal_data.ksnd_init == SOCKNAL_INIT_NOTHING);
         LASSERT (ksocknal_data.ksnd_nnets == 0);
@@ -2046,16 +2011,6 @@ ksocknal_base_startup (void)
 
         rwlock_init(&ksocknal_data.ksnd_global_lock);
 
-        spin_lock_init(&ksocknal_data.ksnd_small_fmp.fmp_lock);
-        CFS_INIT_LIST_HEAD(&ksocknal_data.ksnd_small_fmp.fmp_idle_fmbs);
-        CFS_INIT_LIST_HEAD(&ksocknal_data.ksnd_small_fmp.fmp_blocked_conns);
-        ksocknal_data.ksnd_small_fmp.fmp_buff_pages = SOCKNAL_SMALL_FWD_PAGES;
-
-        spin_lock_init(&ksocknal_data.ksnd_large_fmp.fmp_lock);
-        CFS_INIT_LIST_HEAD(&ksocknal_data.ksnd_large_fmp.fmp_idle_fmbs);
-        CFS_INIT_LIST_HEAD(&ksocknal_data.ksnd_large_fmp.fmp_blocked_conns);
-        ksocknal_data.ksnd_large_fmp.fmp_buff_pages = SOCKNAL_LARGE_FWD_PAGES;
-
         spin_lock_init (&ksocknal_data.ksnd_reaper_lock);
         CFS_INIT_LIST_HEAD (&ksocknal_data.ksnd_enomem_conns);
         CFS_INIT_LIST_HEAD (&ksocknal_data.ksnd_zombie_conns);
@@ -2116,40 +2071,6 @@ ksocknal_base_startup (void)
                 goto failed;
         }
 
-        if (lnet_forwarding()) {
-                /* Only allocate forwarding buffers if we're a gateway */
-
-                for (i = 0; i < (SOCKNAL_SMALL_FWD_NMSGS +
-                                 SOCKNAL_LARGE_FWD_NMSGS); i++) {
-                        ksock_fmb_t      *fmb;
-                        ksock_fmb_pool_t *pool;
-
-
-                        if (i < SOCKNAL_SMALL_FWD_NMSGS)
-                                pool = &ksocknal_data.ksnd_small_fmp;
-                        else
-                                pool = &ksocknal_data.ksnd_large_fmp;
-
-                        PORTAL_ALLOC(fmb, offsetof(ksock_fmb_t,
-                                                   fmb_kiov[pool->fmp_buff_pages]));
-                        if (fmb == NULL)
-                                goto failed;
-
-                        fmb->fmb_pool = pool;
-
-                        for (j = 0; j < pool->fmp_buff_pages; j++) {
-                                fmb->fmb_kiov[j].kiov_page = cfs_alloc_page(CFS_ALLOC_STD);
-
-                                if (fmb->fmb_kiov[j].kiov_page == NULL)
-                                        goto failed;
-
-                                LASSERT(cfs_page_address(fmb->fmb_kiov[j].kiov_page) != NULL);
-                        }
-
-                        list_add(&fmb->fmb_list, &pool->fmp_idle_fmbs);
-                }
-        }
-        
         /* flag everything initialised */
         ksocknal_data.ksnd_init = SOCKNAL_INIT_ALL;
 
@@ -2161,7 +2082,7 @@ ksocknal_base_startup (void)
 }
 
 void
-ksocknal_shutdown (ptl_ni_t *ni)
+ksocknal_shutdown (lnet_ni_t *ni)
 {
         ksock_net_t      *net = ni->ni_data;
         int               i;
@@ -2243,7 +2164,7 @@ ksocknal_enumerate_interfaces(ksock_net_t *net)
                         continue;
                 }
 
-                if (j == PTL_MAX_INTERFACES) {
+                if (j == LNET_MAX_INTERFACES) {
                         CWARN("Ignoring interface %s (too many interfaces)\n",
                               names[i]);
                         continue;
@@ -2263,13 +2184,13 @@ ksocknal_enumerate_interfaces(ksock_net_t *net)
 }
 
 int
-ksocknal_startup (ptl_ni_t *ni)
+ksocknal_startup (lnet_ni_t *ni)
 {
         ksock_net_t  *net;
         int           rc;
         int           i;
 
-        LASSERT (ni->ni_nal == &ksocknal_nal);
+        LASSERT (ni->ni_lnd == &the_ksocklnd);
 
         if (ksocknal_data.ksnd_init == SOCKNAL_INIT_NOTHING) {
                 rc = ksocknal_base_startup();
@@ -2293,7 +2214,7 @@ ksocknal_startup (ptl_ni_t *ni)
 
                 net->ksnn_ninterfaces = rc;
         } else {
-                for (i = 0; i < PTL_MAX_INTERFACES; i++) {
+                for (i = 0; i < LNET_MAX_INTERFACES; i++) {
                         int    up;
 
                         if (ni->ni_interfaces[i] == NULL)
@@ -2339,7 +2260,7 @@ ksocknal_startup (ptl_ni_t *ni)
 void __exit
 ksocknal_module_fini (void)
 {
-        lnet_unregister_nal(&ksocknal_nal);
+        lnet_unregister_lnd(&the_ksocklnd);
         ksocknal_lib_tunables_fini();
 }
 
@@ -2348,16 +2269,14 @@ ksocknal_module_init (void)
 {
         int    rc;
 
-        /* packet descriptor must fit in a router descriptor's scratchpad */
-        CLASSERT(sizeof (ksock_tx_t) <= sizeof (kprfd_scratch_t));
         /* check ksnr_connected/connecting field large enough */
-        CLASSERT(SOCKNAL_CONN_NTYPES <= 4);
+        CLASSERT(SOCKLND_CONN_NTYPES <= 4);
         
         rc = ksocknal_lib_tunables_init();
         if (rc != 0)
                 return rc;
 
-        lnet_register_nal(&ksocknal_nal);
+        lnet_register_lnd(&the_ksocklnd);
 
         return 0;
 }
index f303e67..6fa24b1 100644 (file)
 #define SOCKNAL_SMALL_FWD_NMSGS        128             /* # small messages I can be forwarding at any time */
 #define SOCKNAL_LARGE_FWD_NMSGS 64              /* # large messages I can be forwarding at any time */
 
-#define SOCKNAL_SMALL_FWD_PAGES        1               /* # pages in a small message fwd buffer */
-
-#define SOCKNAL_LARGE_FWD_PAGES (PAGE_ALIGN(PTL_MTU) >> PAGE_SHIFT)
-                                               /* # pages in a large message fwd buffer */
-
 #define SOCKNAL_RESCHED         100             /* # scheduler loops before reschedule */
 #define SOCKNAL_ENOMEM_RETRY    CFS_MIN_DELAY   /* jiffies between retries */
 
 #endif
 
 /* minimum socket buffer required for connection handshake */
-#define SOCKNAL_MIN_BUFFER   (2*(sizeof(ptl_hdr_t) +                    \
-                                 PTL_MAX_INTERFACES * sizeof(__u32)))
-
-typedef struct                                  /* pool of forwarding buffers */
-{
-        spinlock_t        fmp_lock;             /* serialise */
-        struct list_head  fmp_idle_fmbs;        /* free buffers */
-        struct list_head  fmp_blocked_conns;    /* connections waiting for a buffer */
-        int               fmp_nactive_fmbs;     /* # buffers in use */
-        int               fmp_buff_pages;       /* # pages per buffer */
-} ksock_fmb_pool_t;
-
+#define SOCKNAL_MIN_BUFFER   (2*(sizeof(lnet_hdr_t) +                   \
+                                 LNET_MAX_INTERFACES * sizeof(__u32)))
 
 typedef struct                                  /* per scheduler state */
 {
@@ -159,7 +144,7 @@ typedef struct
         int               ksnn_npeers;          /* # peers */
         int               ksnn_shutdown;        /* shutting down? */
         int               ksnn_ninterfaces;     /* IP interfaces */
-        ksock_interface_t ksnn_interfaces[PTL_MAX_INTERFACES];
+        ksock_interface_t ksnn_interfaces[LNET_MAX_INTERFACES];
 } ksock_net_t;
 
 typedef struct
@@ -176,9 +161,6 @@ typedef struct
         int               ksnd_nschedulers;     /* # schedulers */
         ksock_sched_t    *ksnd_schedulers;      /* their state */
 
-        ksock_fmb_pool_t  ksnd_small_fmp;       /* small message forwarding buffers */
-        ksock_fmb_pool_t  ksnd_large_fmp;       /* large message forwarding buffers */
-
         atomic_t          ksnd_nactive_ltxs;    /* #active ltxs */
 
         struct list_head  ksnd_deathrow_conns;  /* conns to close: reaper_lock*/
@@ -221,26 +203,19 @@ struct ksock_route;                             /* forward ref */
 typedef struct                                  /* transmit packet */
 {
         struct list_head        tx_list;        /* queue on conn for transmission etc */
-        char                    tx_isfwd;       /* forwarding / sourced here */
         int                     tx_nob;         /* # packet bytes */
         int                     tx_resid;       /* residual bytes */
         int                     tx_niov;        /* # packet iovec frags */
         struct iovec           *tx_iov;         /* packet iovec frags */
         int                     tx_nkiov;       /* # packet page frags */
-        lnet_kiov_t             *tx_kiov;        /* packet page frags */
+        lnet_kiov_t            *tx_kiov;        /* packet page frags */
         struct ksock_conn      *tx_conn;        /* owning conn */
-        ptl_hdr_t              *tx_hdr;         /* packet header (for debug only) */
+        lnet_hdr_t              *tx_hdr;         /* packet header (for debug only) */
 #if SOCKNAL_ZC        
         zccd_t                  tx_zccd;        /* zero copy callback descriptor */
 #endif
 } ksock_tx_t;
 
-typedef struct                                  /* forwarded packet */
-{
-        ksock_tx_t             ftx_tx;          /* send info */
-        struct iovec           ftx_iov;         /* hdr iovec */
-} ksock_ftx_t;
-
 #define KSOCK_ZCCD_2_TX(ptr)   list_entry (ptr, ksock_tx_t, tx_zccd)
 /* network zero copy callback descriptor embedded in ksock_tx_t */
 
@@ -249,31 +224,18 @@ typedef struct                                  /* locally transmitted packet */
         ksock_tx_t              ltx_tx;         /* send info */
         void                   *ltx_private;    /* lnet_finalize() callback arg */
         void                   *ltx_cookie;     /* lnet_finalize() callback arg */
-        ptl_hdr_t               ltx_hdr;        /* buffer for packet header */
+        lnet_hdr_t               ltx_hdr;        /* buffer for packet header */
         int                     ltx_desc_size;  /* bytes allocated for this desc */
         struct iovec            ltx_iov[1];     /* iov for hdr + payload */
-        lnet_kiov_t              ltx_kiov[0];    /* kiov for payload */
+        lnet_kiov_t             ltx_kiov[0];    /* kiov for payload */
 } ksock_ltx_t;
 
-#define KSOCK_TX_2_KPR_FWD_DESC(ptr)    list_entry ((kprfd_scratch_t *)ptr, kpr_fwd_desc_t, kprfd_scratch)
-/* forwarded packets (router->socknal) embedded in kpr_fwd_desc_t::kprfd_scratch */
-
 #define KSOCK_TX_2_KSOCK_LTX(ptr)       list_entry (ptr, ksock_ltx_t, ltx_tx)
 /* local packets (lib->socknal) embedded in ksock_ltx_t::ltx_tx */
 
 /* NB list_entry() is used here as convenient macro for calculating a
  * pointer to a struct from the address of a member. */
 
-typedef struct                                  /* Kernel portals Socket Forwarding message buffer */
-{                                               /* (socknal->router) */
-        struct list_head        fmb_list;       /* queue idle */
-        kpr_fwd_desc_t          fmb_fwd;        /* router's descriptor */
-        ksock_fmb_pool_t       *fmb_pool;       /* owning pool */
-        struct ksock_peer      *fmb_peer;       /* peer received from */
-        ptl_hdr_t               fmb_hdr;        /* message header */
-        lnet_kiov_t              fmb_kiov[0];    /* payload frags */
-} ksock_fmb_t;
-
 /* space for the rx frag descriptors; we either read a single contiguous
  * header, or up to PTL_MD_MAX_IOV frags of payload of either type. */
 typedef union {
@@ -282,11 +244,10 @@ typedef union {
 } ksock_rxiovspace_t;
 
 #define SOCKNAL_RX_HEADER       1               /* reading header */
-#define SOCKNAL_RX_BODY         2               /* reading body (to deliver here) */
-#define SOCKNAL_RX_BODY_FWD     3               /* reading body (to forward) */
-#define SOCKNAL_RX_SLOP         4               /* skipping body */
-#define SOCKNAL_RX_GET_FMB      5               /* scheduled for forwarding */
-#define SOCKNAL_RX_FMB_SLEEP    6               /* blocked waiting for a fwd desc */
+#define SOCKNAL_RX_PARSE        2               /* Calling lnet_parse() */
+#define SOCKNAL_RX_PARSE_WAIT   3               /* waiting to be told to read the body */
+#define SOCKNAL_RX_BODY         4               /* reading body (to deliver here) */
+#define SOCKNAL_RX_SLOP         5               /* skipping body */
 
 typedef struct ksock_conn
 { 
@@ -318,10 +279,10 @@ typedef struct ksock_conn
         int                 ksnc_rx_niov;       /* # iovec frags */
         struct iovec       *ksnc_rx_iov;        /* the iovec frags */
         int                 ksnc_rx_nkiov;      /* # page frags */
-        lnet_kiov_t         *ksnc_rx_kiov;       /* the page frags */
+        lnet_kiov_t        *ksnc_rx_kiov;       /* the page frags */
         ksock_rxiovspace_t  ksnc_rx_iov_space;  /* space for frag descriptors */
         void               *ksnc_cookie;        /* rx lnet_finalize passthru arg */
-        ptl_hdr_t           ksnc_hdr;           /* where I read headers into */
+        lnet_hdr_t           ksnc_hdr;           /* where I read headers into */
 
         /* WRITER */
         struct list_head    ksnc_tx_list;       /* where I enq waiting for output space */
@@ -340,9 +301,9 @@ typedef struct ksock_conn
 #endif
 } ksock_conn_t;
 
-#define KSNR_TYPED_ROUTES   ((1 << SOCKNAL_CONN_CONTROL) |      \
-                             (1 << SOCKNAL_CONN_BULK_IN) |      \
-                             (1 << SOCKNAL_CONN_BULK_OUT))
+#define KSNR_TYPED_ROUTES   ((1 << SOCKLND_CONN_CONTROL) |      \
+                             (1 << SOCKLND_CONN_BULK_IN) |      \
+                             (1 << SOCKLND_CONN_BULK_OUT))
 
 typedef struct ksock_route
 {
@@ -374,15 +335,15 @@ typedef struct ksock_peer
         struct list_head    ksnp_routes;        /* routes */
         struct list_head    ksnp_tx_queue;      /* waiting packets */
         cfs_time_t          ksnp_last_alive;    /* when (in jiffies) I was last alive */
-        ptl_ni_t           *ksnp_ni;            /* which network */
+        lnet_ni_t          *ksnp_ni;            /* which network */
         int                 ksnp_n_passive_ips; /* # of... */
-        __u32               ksnp_passive_ips[PTL_MAX_INTERFACES]; /* preferred local interfaces */
+        __u32               ksnp_passive_ips[LNET_MAX_INTERFACES]; /* preferred local interfaces */
 } ksock_peer_t;
 
 typedef struct ksock_connreq
 {
         struct list_head    ksncr_list;         /* stash on ksnd_connd_connreqs */
-        ptl_ni_t           *ksncr_ni;           /* chosen NI */
+        lnet_ni_t           *ksncr_ni;           /* chosen NI */
         struct socket      *ksncr_sock;         /* accepted socket */
 } ksock_connreq_t;
 
@@ -476,24 +437,20 @@ ksocknal_peer_decref (ksock_peer_t *peer)
 }
 
 
-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 tgt_is_router, 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,
+int ksocknal_startup (lnet_ni_t *ni);
+void ksocknal_shutdown (lnet_ni_t *ni);
+int ksocknal_ctl(lnet_ni_t *ni, unsigned int cmd, void *arg);
+int ksocknal_send (lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg);
+int ksocknal_recv(lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg, 
+                  int delayed, 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);
+int ksocknal_accept(lnet_ni_t *ni, struct socket *sock);
 
-extern int ksocknal_add_peer(ptl_ni_t *ni, lnet_process_id_t id, __u32 ip, int port);
-extern ksock_peer_t *ksocknal_find_peer_locked (ptl_ni_t *ni, lnet_process_id_t id);
-extern ksock_peer_t *ksocknal_find_peer (ptl_ni_t *ni, lnet_process_id_t id);
-extern int ksocknal_create_conn (ptl_ni_t *ni, ksock_route_t *route,
+extern int ksocknal_add_peer(lnet_ni_t *ni, lnet_process_id_t id, __u32 ip, int port);
+extern ksock_peer_t *ksocknal_find_peer_locked (lnet_ni_t *ni, lnet_process_id_t id);
+extern ksock_peer_t *ksocknal_find_peer (lnet_ni_t *ni, lnet_process_id_t id);
+extern int ksocknal_create_conn (lnet_ni_t *ni, ksock_route_t *route,
                                  struct socket *sock, int type);
 extern void ksocknal_close_conn_locked (ksock_conn_t *conn, int why);
 extern void ksocknal_terminate_conn (ksock_conn_t *conn);
@@ -504,19 +461,17 @@ extern int ksocknal_close_matching_conns (lnet_process_id_t id, __u32 ipaddr);
 
 extern void ksocknal_queue_tx_locked (ksock_tx_t *tx, ksock_conn_t *conn);
 extern void ksocknal_tx_done (ksock_peer_t *peer, ksock_tx_t *tx, int asynch);
-extern void ksocknal_fwd_packet (ptl_ni_t *ni, kpr_fwd_desc_t *fwd);
-extern void ksocknal_fmb_callback (ptl_ni_t *ni, void *arg, int error);
-extern void ksocknal_notify (ptl_ni_t *ni, lnet_nid_t gw_nid, int alive);
+extern void ksocknal_notify (lnet_ni_t *ni, lnet_nid_t gw_nid, int alive);
 extern int ksocknal_thread_start (int (*fn)(void *arg), void *arg);
 extern void ksocknal_thread_fini (void);
 extern int ksocknal_new_packet (ksock_conn_t *conn, int skip);
 extern int ksocknal_scheduler (void *arg);
 extern int ksocknal_connd (void *arg);
 extern int ksocknal_reaper (void *arg);
-extern int ksocknal_send_hello (ptl_ni_t *ni, ksock_conn_t *conn,
+extern int ksocknal_send_hello (lnet_ni_t *ni, ksock_conn_t *conn,
                                 lnet_nid_t peer_nid, 
                                 __u32 *ipaddrs, int nipaddrs);
-extern int ksocknal_recv_hello (ptl_ni_t *ni, ksock_conn_t *conn, 
+extern int ksocknal_recv_hello (lnet_ni_t *ni, ksock_conn_t *conn, 
                                 lnet_process_id_t *id, 
                                 __u64 *incarnation, __u32 *ipaddrs);
 
index eb941d5..9aac80c 100644 (file)
@@ -322,8 +322,7 @@ ksocknal_receive (ksock_conn_t *conn)
                 if (conn->ksnc_rx_nob_wanted == 0) {
                         /* Completed a message segment (header or payload) */
                         if ((*ksocknal_tunables.ksnd_eager_ack & conn->ksnc_type) != 0 &&
-                            (conn->ksnc_rx_state ==  SOCKNAL_RX_BODY ||
-                             conn->ksnc_rx_state == SOCKNAL_RX_BODY_FWD)) {
+                            conn->ksnc_rx_state ==  SOCKNAL_RX_BODY) {
                                 /* Remind the socket to ack eagerly... */
                                 ksocknal_lib_eager_ack(conn);
                         }
@@ -375,15 +374,6 @@ ksocknal_tx_done (ksock_peer_t *peer, ksock_tx_t *tx, int asynch)
 #endif
         }
 
-        if (tx->tx_isfwd) {             /* was a forwarded packet? */
-                lnet_fwd_done (peer->ksnp_ni,
-                              KSOCK_TX_2_KPR_FWD_DESC (tx), 
-                              (tx->tx_resid == 0) ? 0 : -ECONNABORTED);
-                EXIT;
-                return;
-        }
-
-        /* local send */
         ltx = KSOCK_TX_2_KSOCK_LTX (tx);
 
         lnet_finalize (peer->ksnp_ni, 
@@ -543,15 +533,15 @@ ksocknal_find_conn_locked (ksock_tx_t *tx, ksock_peer_t *peer)
                 default:
                         CERROR("ksnc_type bad: %u\n", c->ksnc_type);
                         LBUG();
-                case SOCKNAL_CONN_ANY:
+                case SOCKLND_CONN_ANY:
                         break;
-                case SOCKNAL_CONN_BULK_IN:
+                case SOCKLND_CONN_BULK_IN:
                         continue;
-                case SOCKNAL_CONN_BULK_OUT:
+                case SOCKLND_CONN_BULK_OUT:
                         if (tx->tx_nob < *ksocknal_tunables.ksnd_min_bulk)
                                 continue;
                         break;
-                case SOCKNAL_CONN_CONTROL:
+                case SOCKLND_CONN_CONTROL:
                         if (tx->tx_nob >= *ksocknal_tunables.ksnd_min_bulk)
                                 continue;
                         break;
@@ -645,7 +635,7 @@ ksocknal_find_connectable_route_locked (ksock_peer_t *peer)
                                 continue;
                 } else {
                         /* Untyped connection established? */
-                        if ((bits & (1 << SOCKNAL_CONN_ANY)) != 0)
+                        if ((bits & (1 << SOCKLND_CONN_ANY)) != 0)
                                 continue;
                 }
                 
@@ -682,7 +672,7 @@ ksocknal_find_connecting_route_locked (ksock_peer_t *peer)
 }
 
 int
-ksocknal_launch_packet (ptl_ni_t *ni, ksock_tx_t *tx, lnet_process_id_t id)
+ksocknal_launch_packet (lnet_ni_t *ni, ksock_tx_t *tx, lnet_process_id_t id)
 {
         unsigned long     flags;
         ksock_peer_t     *peer;
@@ -701,15 +691,15 @@ ksocknal_launch_packet (ptl_ni_t *ni, ksock_tx_t *tx, lnet_process_id_t id)
         LASSERT (lnet_iov_nob (tx->tx_niov, tx->tx_iov) +
                  lnet_kiov_nob (tx->tx_nkiov, tx->tx_kiov) == tx->tx_nob);
         LASSERT (tx->tx_niov >= 1);
-        LASSERT (tx->tx_iov[0].iov_len >= sizeof (ptl_hdr_t));
+        LASSERT (tx->tx_iov[0].iov_len >= sizeof (lnet_hdr_t));
 
         CDEBUG (D_NET, "packet %p type %d, nob %d niov %d nkiov %d\n",
-                tx, ((ptl_hdr_t *)tx->tx_iov[0].iov_base)->type, 
+                tx, ((lnet_hdr_t *)tx->tx_iov[0].iov_base)->type, 
                 tx->tx_nob, tx->tx_niov, tx->tx_nkiov);
 
         tx->tx_conn = NULL;                     /* only set when assigned a conn */
         tx->tx_resid = tx->tx_nob;
-        tx->tx_hdr = (ptl_hdr_t *)tx->tx_iov[0].iov_base;
+        tx->tx_hdr = (lnet_hdr_t *)tx->tx_iov[0].iov_base;
 
         g_lock = &ksocknal_data.ksnd_global_lock;
         
@@ -796,23 +786,19 @@ ksocknal_launch_packet (ptl_ni_t *ni, ksock_tx_t *tx, lnet_process_id_t id)
 }
 
 int
-ksocknal_send(ptl_ni_t         *ni, 
-              void             *private, 
-              ptl_msg_t        *cookie,
-              ptl_hdr_t        *hdr, 
-              int               type, 
-              lnet_process_id_t target,
-              int               target_is_router,
-              int               routing,
-              unsigned int      payload_niov, 
-              struct iovec     *payload_iov, 
-              lnet_kiov_t      *payload_kiov,
-              unsigned int      payload_offset,
-              unsigned int      payload_nob)
+ksocknal_send(lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg)
 {
-        ksock_ltx_t  *ltx;
-        int           desc_size;
-        int           rc;
+        lnet_hdr_t       *hdr = &lntmsg->msg_hdr; 
+        int               type = lntmsg->msg_type; 
+        lnet_process_id_t target = lntmsg->msg_target;
+        unsigned int      payload_niov = lntmsg->msg_niov; 
+        struct iovec     *payload_iov = lntmsg->msg_iov; 
+        lnet_kiov_t      *payload_kiov = lntmsg->msg_kiov;
+        unsigned int      payload_offset = lntmsg->msg_offset;
+        unsigned int      payload_nob = lntmsg->msg_len;
+        ksock_ltx_t      *ltx;
+        int               desc_size;
+        int               rc;
 
         /* NB 'private' is different depending on what we're sending.
          * Just ignore it... */
@@ -834,8 +820,8 @@ ksocknal_send(ptl_ni_t         *ni,
                 desc_size = offsetof(ksock_ltx_t, ltx_kiov[payload_niov]);
         
         if (in_interrupt() ||
-            type == PTL_MSG_ACK ||
-            type == PTL_MSG_REPLY) {
+            type == LNET_MSG_ACK ||
+            type == LNET_MSG_REPLY) {
                 /* Can't block if in interrupt or responding to an incoming
                  * message */
                 PORTAL_ALLOC_ATOMIC(ltx, desc_size);
@@ -860,9 +846,8 @@ ksocknal_send(ptl_ni_t         *ni,
         ltx->ltx_hdr = *hdr;
         
         ltx->ltx_private = private;
-        ltx->ltx_cookie = cookie;
+        ltx->ltx_cookie = lntmsg;
         
-        ltx->ltx_tx.tx_isfwd = 0;
         ltx->ltx_tx.tx_nob = sizeof (*hdr) + payload_nob;
 
         if (payload_iov != NULL) {
@@ -893,38 +878,6 @@ ksocknal_send(ptl_ni_t         *ni,
         return (-EIO);
 }
 
-void
-ksocknal_fwd_packet (ptl_ni_t *ni, kpr_fwd_desc_t *fwd)
-{
-        lnet_process_id_t id = {.nid = fwd->kprfd_gateway_nid,
-                               .pid = LUSTRE_SRV_PTL_PID};
-        /* CAVEAT EMPTOR:
-         * LUSTRE_SRV_PTL_PID assumes my target is another socknal instance and
-         * not a tcpnal (userspace/liblustre) instance.  These can't route in
-         * any case until we sort out how to make the RPC replies use the same
-         * connections as RPC requests. */
-        ksock_ftx_t  *ftx = (ksock_ftx_t *)&fwd->kprfd_scratch;
-        int           rc;
-        
-        CDEBUG (D_NET, "Forwarding [%p] -> %s (%s))\n", fwd,
-                libcfs_id2str(id), libcfs_nid2str(fwd->kprfd_target_nid));
-
-        /* setup iov for hdr */
-        ftx->ftx_iov.iov_base = fwd->kprfd_hdr;
-        ftx->ftx_iov.iov_len = sizeof(ptl_hdr_t);
-
-        ftx->ftx_tx.tx_isfwd = 1;                  /* This is a forwarding packet */
-        ftx->ftx_tx.tx_nob   = sizeof(ptl_hdr_t) + fwd->kprfd_nob;
-        ftx->ftx_tx.tx_niov  = 1;
-        ftx->ftx_tx.tx_iov   = &ftx->ftx_iov;
-        ftx->ftx_tx.tx_nkiov = fwd->kprfd_niov;
-        ftx->ftx_tx.tx_kiov  = fwd->kprfd_kiov;
-
-        rc = ksocknal_launch_packet (ni, &ftx->ftx_tx, id);
-        if (rc != 0)
-                lnet_fwd_done (ni, fwd, rc);
-}
-
 int
 ksocknal_thread_start (int (*fn)(void *arg), void *arg)
 {
@@ -950,230 +903,26 @@ ksocknal_thread_fini (void)
         write_unlock_irqrestore(&ksocknal_data.ksnd_global_lock, flags);
 }
 
-void
-ksocknal_fmb_callback (ptl_ni_t *ni, void *arg, int error)
-{
-        ksock_fmb_t       *fmb = (ksock_fmb_t *)arg;
-        ksock_fmb_pool_t  *fmp = fmb->fmb_pool;
-        ptl_hdr_t         *hdr = &fmb->fmb_hdr;
-        ksock_conn_t      *conn = NULL;
-        ksock_sched_t     *sched;
-        unsigned long      flags;
-
-        if (error != 0)
-                CERROR("Failed to route packet from %s to %s: %d\n",
-                       libcfs_nid2str(le64_to_cpu(hdr->src_nid)),
-                       libcfs_nid2str(le64_to_cpu(hdr->dest_nid)),
-                       error);
-        else
-                CDEBUG (D_NET, "routed packet from %s to %s: OK\n",
-                        libcfs_nid2str(le64_to_cpu(hdr->src_nid)), 
-                        libcfs_nid2str(le64_to_cpu(hdr->dest_nid)));
-
-        /* drop peer ref taken on init */
-        ksocknal_peer_decref(fmb->fmb_peer);
-
-        spin_lock_irqsave (&fmp->fmp_lock, flags);
-
-        list_add (&fmb->fmb_list, &fmp->fmp_idle_fmbs);
-        fmp->fmp_nactive_fmbs--;
-
-        if (!list_empty (&fmp->fmp_blocked_conns)) {
-                conn = list_entry (fmb->fmb_pool->fmp_blocked_conns.next,
-                                   ksock_conn_t, ksnc_rx_list);
-                list_del (&conn->ksnc_rx_list);
-        }
-
-        spin_unlock_irqrestore (&fmp->fmp_lock, flags);
-
-        if (conn == NULL)
-                return;
-
-        CDEBUG (D_NET, "Scheduling conn %p\n", conn);
-        LASSERT (conn->ksnc_rx_scheduled);
-        LASSERT (conn->ksnc_rx_state == SOCKNAL_RX_FMB_SLEEP);
-
-        conn->ksnc_rx_state = SOCKNAL_RX_GET_FMB;
-
-        sched = conn->ksnc_scheduler;
-
-        spin_lock_irqsave (&sched->kss_lock, flags);
-
-        list_add_tail (&conn->ksnc_rx_list, &sched->kss_rx_conns);
-        cfs_waitq_signal (&sched->kss_waitq);
-
-        spin_unlock_irqrestore (&sched->kss_lock, flags);
-}
-
-ksock_fmb_t *
-ksocknal_get_idle_fmb (ksock_conn_t *conn)
-{
-        int               payload_nob = conn->ksnc_rx_nob_left;
-        unsigned long     flags;
-        ksock_fmb_pool_t *pool;
-        ksock_fmb_t      *fmb;
-
-        LASSERT (conn->ksnc_rx_state == SOCKNAL_RX_GET_FMB);
-
-        if (payload_nob <= SOCKNAL_SMALL_FWD_PAGES * CFS_PAGE_SIZE)
-                pool = &ksocknal_data.ksnd_small_fmp;
-        else
-                pool = &ksocknal_data.ksnd_large_fmp;
-
-        spin_lock_irqsave (&pool->fmp_lock, flags);
-
-        if (!list_empty (&pool->fmp_idle_fmbs)) {
-                fmb = list_entry(pool->fmp_idle_fmbs.next,
-                                 ksock_fmb_t, fmb_list);
-                list_del (&fmb->fmb_list);
-                pool->fmp_nactive_fmbs++;
-                spin_unlock_irqrestore (&pool->fmp_lock, flags);
-
-                return (fmb);
-        }
-
-        /* deschedule until fmb free */
-
-        conn->ksnc_rx_state = SOCKNAL_RX_FMB_SLEEP;
-
-        list_add_tail (&conn->ksnc_rx_list,
-                       &pool->fmp_blocked_conns);
-
-        spin_unlock_irqrestore (&pool->fmp_lock, flags);
-        return (NULL);
-}
-
-int
-ksocknal_init_fmb (ksock_conn_t *conn, ksock_fmb_t *fmb)
-{
-        int       payload_nob = conn->ksnc_rx_nob_left;
-        lnet_nid_t src_nid = le64_to_cpu(conn->ksnc_hdr.src_nid);
-        lnet_nid_t dest_nid = le64_to_cpu(conn->ksnc_hdr.dest_nid);
-        lnet_nid_t sender_nid = conn->ksnc_peer->ksnp_id.nid;
-        int       niov = 0;
-        int       nob = payload_nob;
-
-        LASSERT (conn->ksnc_rx_scheduled);
-        LASSERT (conn->ksnc_rx_state == SOCKNAL_RX_GET_FMB);
-        LASSERT (conn->ksnc_rx_nob_wanted == conn->ksnc_rx_nob_left);
-        LASSERT (payload_nob >= 0);
-        LASSERT (payload_nob <= fmb->fmb_pool->fmp_buff_pages * CFS_PAGE_SIZE);
-        LASSERT (sizeof (ptl_hdr_t) < CFS_PAGE_SIZE);
-        LASSERT (fmb->fmb_kiov[0].kiov_offset == 0);
-
-        /* Take a ref on the conn's peer to prevent module unload before
-         * forwarding completes. */
-        fmb->fmb_peer = conn->ksnc_peer;
-        ksocknal_peer_addref(conn->ksnc_peer);
-
-        /* Copy the header we just read into the forwarding buffer.  If
-         * there's payload, start reading reading it into the buffer,
-         * otherwise the forwarding buffer can be kicked off
-         * immediately. */
-        fmb->fmb_hdr = conn->ksnc_hdr;
-
-        while (nob > 0) {
-                LASSERT (niov < fmb->fmb_pool->fmp_buff_pages);
-                LASSERT (fmb->fmb_kiov[niov].kiov_offset == 0);
-                fmb->fmb_kiov[niov].kiov_len = MIN (CFS_PAGE_SIZE, nob);
-                nob -= CFS_PAGE_SIZE;
-                niov++;
-        }
-
-        kpr_fwd_init(&fmb->fmb_fwd, dest_nid, sender_nid, src_nid,
-                     &fmb->fmb_hdr, payload_nob, niov, fmb->fmb_kiov,
-                     ksocknal_fmb_callback, fmb);
-
-        if (payload_nob == 0) {         /* got complete packet already */
-                CDEBUG (D_NET, "%p %s->%s fwd_start (immediate)\n", conn, 
-                        libcfs_nid2str(src_nid), 
-                        libcfs_nid2str(dest_nid));
-
-                lnet_fwd_start (conn->ksnc_peer->ksnp_ni, &fmb->fmb_fwd);
-
-                ksocknal_new_packet (conn, 0);  /* on to next packet */
-                return (1);
-        }
-
-        conn->ksnc_cookie = fmb;                /* stash fmb for later */
-        conn->ksnc_rx_state = SOCKNAL_RX_BODY_FWD; /* read in the payload */
-        
-        /* Set up conn->ksnc_rx_kiov to read the payload into fmb's kiov-ed
-         * buffer */
-        LASSERT (niov <= sizeof(conn->ksnc_rx_iov_space)/sizeof(lnet_kiov_t));
-
-        conn->ksnc_rx_niov = 0;
-        conn->ksnc_rx_nkiov = niov;
-        conn->ksnc_rx_kiov = conn->ksnc_rx_iov_space.kiov;
-        memcpy(conn->ksnc_rx_kiov, fmb->fmb_kiov, niov * sizeof(lnet_kiov_t));
-        
-        CDEBUG (D_NET, "%p %s->%s %d reading body\n", conn,
-                libcfs_nid2str(src_nid), libcfs_nid2str(dest_nid), payload_nob);
-        return (0);
-}
-
-int
-ksocknal_fwd_parse (ksock_conn_t *conn)
-{
-        lnet_nid_t     dest_nid = le64_to_cpu(conn->ksnc_hdr.dest_nid);
-        lnet_nid_t     src_nid = le64_to_cpu(conn->ksnc_hdr.src_nid);
-        int           body_len = le32_to_cpu(conn->ksnc_hdr.payload_length);
-
-        CDEBUG (D_NET, "%p %s->%s %d parsing header\n", conn,
-                libcfs_nid2str(src_nid), 
-                libcfs_nid2str(dest_nid), conn->ksnc_rx_nob_left);
-
-        LASSERT (conn->ksnc_rx_state == SOCKNAL_RX_HEADER);
-        LASSERT (conn->ksnc_rx_scheduled);
-
-        if (body_len < 0) {                 /* length corrupt (overflow) */
-                CERROR("dropping packet from %s for %s: "
-                       "packet size %d illegal\n",
-                       libcfs_nid2str(src_nid),
-                       libcfs_nid2str(dest_nid),
-                       body_len);
-                ksocknal_new_packet (conn, 0);  /* on to new packet */
-                return -EIO;
-        }
-
-        if (body_len > PTL_MTU) {      /* too big to forward */
-                CERROR ("dropping packet from %s for %s: "
-                        "packet size %d too big\n",
-                        libcfs_nid2str(src_nid),
-                        libcfs_nid2str(dest_nid),
-                        body_len);
-                /* on to new packet (skip this one's body) */
-                ksocknal_new_packet (conn, body_len);
-                return -EIO;
-        }
-
-        conn->ksnc_rx_state = SOCKNAL_RX_GET_FMB;       /* Getting FMB now */
-        conn->ksnc_rx_nob_left = body_len;              /* stash packet size */
-        conn->ksnc_rx_nob_wanted = body_len;            /* (no slop) */
-
-        return 0;
-}
-
 int
 ksocknal_new_packet (ksock_conn_t *conn, int nob_to_skip)
 {
         static char ksocknal_slop_buffer[4096];
 
-        int   nob;
-        int   niov;
-        int   skipped;
+        int            nob;
+        unsigned int   niov;
+        int            skipped;
 
         if (nob_to_skip == 0) {         /* right at next packet boundary now */
                 conn->ksnc_rx_started = 0;
                 mb ();                          /* racing with timeout thread */
                 
                 conn->ksnc_rx_state = SOCKNAL_RX_HEADER;
-                conn->ksnc_rx_nob_wanted = sizeof (ptl_hdr_t);
-                conn->ksnc_rx_nob_left = sizeof (ptl_hdr_t);
+                conn->ksnc_rx_nob_wanted = sizeof (lnet_hdr_t);
+                conn->ksnc_rx_nob_left = sizeof (lnet_hdr_t);
 
                 conn->ksnc_rx_iov = (struct iovec *)&conn->ksnc_rx_iov_space;
                 conn->ksnc_rx_iov[0].iov_base = (char *)&conn->ksnc_hdr;
-                conn->ksnc_rx_iov[0].iov_len  = sizeof (ptl_hdr_t);
+                conn->ksnc_rx_iov[0].iov_len  = sizeof (lnet_hdr_t);
                 conn->ksnc_rx_niov = 1;
 
                 conn->ksnc_rx_kiov = NULL;
@@ -1212,62 +961,43 @@ ksocknal_new_packet (ksock_conn_t *conn, int nob_to_skip)
 int
 ksocknal_process_receive (ksock_conn_t *conn)
 {
-        ksock_fmb_t  *fmb;
         int           rc;
         
         LASSERT (atomic_read(&conn->ksnc_conn_refcount) > 0);
 
-        /* doesn't need a forwarding buffer */
-        if (conn->ksnc_rx_state != SOCKNAL_RX_GET_FMB)
-                goto try_read;
-
- get_fmb:
-        fmb = ksocknal_get_idle_fmb (conn);
-        if (fmb == NULL) {
-                /* conn descheduled waiting for idle fmb */
-                return (0);
-        }
-
-        if (ksocknal_init_fmb (conn, fmb)) {
-                /* packet forwarded */
-                return (0);
-        }
-
- try_read:
         /* NB: sched lock NOT held */
         LASSERT (conn->ksnc_rx_state == SOCKNAL_RX_HEADER ||
                  conn->ksnc_rx_state == SOCKNAL_RX_BODY ||
-                 conn->ksnc_rx_state == SOCKNAL_RX_BODY_FWD ||
                  conn->ksnc_rx_state == SOCKNAL_RX_SLOP);
+ again:
+        if (conn->ksnc_rx_nob_wanted != 0) {
+                rc = ksocknal_receive(conn);
 
-        LASSERT (conn->ksnc_rx_nob_wanted > 0);
-
-        rc = ksocknal_receive(conn);
-
-        if (rc <= 0) {
-                LASSERT (rc != -EAGAIN);
-
-                if (rc == 0)
-                        CDEBUG (D_NET, "[%p] EOF from %s ip %d.%d.%d.%d:%d\n",
-                                conn, 
-                                libcfs_id2str(conn->ksnc_peer->ksnp_id),
-                                HIPQUAD(conn->ksnc_ipaddr),
-                                conn->ksnc_port);
-                else if (!conn->ksnc_closing)
-                        CERROR ("[%p] Error %d on read from %s"
-                                " ip %d.%d.%d.%d:%d\n",
-                                conn, rc, 
-                                libcfs_id2str(conn->ksnc_peer->ksnp_id),
-                                HIPQUAD(conn->ksnc_ipaddr),
-                                conn->ksnc_port);
+                if (rc <= 0) {
+                        LASSERT (rc != -EAGAIN);
 
-                ksocknal_close_conn_and_siblings (conn, rc);
-                return (rc == 0 ? -ESHUTDOWN : rc);
-        }
+                        if (rc == 0)
+                                CDEBUG (D_NET, "[%p] EOF from %s"
+                                        " ip %d.%d.%d.%d:%d\n", conn, 
+                                        libcfs_id2str(conn->ksnc_peer->ksnp_id),
+                                        HIPQUAD(conn->ksnc_ipaddr),
+                                        conn->ksnc_port);
+                        else if (!conn->ksnc_closing)
+                                CERROR ("[%p] Error %d on read from %s"
+                                        " ip %d.%d.%d.%d:%d\n",
+                                        conn, rc, 
+                                        libcfs_id2str(conn->ksnc_peer->ksnp_id),
+                                        HIPQUAD(conn->ksnc_ipaddr),
+                                        conn->ksnc_port);
 
-        if (conn->ksnc_rx_nob_wanted != 0) {
-                /* short read */
-                return (-EAGAIN);
+                        ksocknal_close_conn_and_siblings (conn, rc);
+                        return (rc == 0 ? -ESHUTDOWN : rc);
+                }
+                
+                if (conn->ksnc_rx_nob_wanted != 0) {
+                        /* short read */
+                        return (-EAGAIN);
+                }
         }
         
         switch (conn->ksnc_rx_state) {
@@ -1280,40 +1010,28 @@ ksocknal_process_receive (ksock_conn_t *conn)
                         conn->ksnc_hdr.src_pid = cpu_to_le32(id->pid);
                         conn->ksnc_hdr.src_nid = cpu_to_le64(id->nid);
                 }
-                rc = lnet_parse(conn->ksnc_peer->ksnp_ni, &conn->ksnc_hdr, conn);
 
-                switch (rc) {
-                case 0:
-                        break;
-                        
-                case 1:
-                        /* This packet isn't for me (still in net byte order) */
-                        rc = ksocknal_fwd_parse (conn);
-                        if (rc == 0) {
-                                switch (conn->ksnc_rx_state) {
-                                case SOCKNAL_RX_HEADER: /* skipped (zero payload) */
-                                        return (0);     /* => come back later */
-                                case SOCKNAL_RX_SLOP:   /* skipping packet's body */
-                                        goto try_read;  /* => go read it */
-                                case SOCKNAL_RX_GET_FMB: /* forwarding */
-                                        goto get_fmb;   /* => go get a fwd msg buffer */
-                                default:
-                                        LBUG ();
-                                }
-                                /* Not Reached */
-                        }
-                        /* fall through */
-                default:
+                conn->ksnc_rx_state = SOCKNAL_RX_PARSE;
+                ksocknal_conn_addref(conn);     /* ++ref while parsing */
+                
+                rc = lnet_parse(conn->ksnc_peer->ksnp_ni, &conn->ksnc_hdr, conn);
+                if (rc < 0) {
                         /* I just received garbage: give up on this conn */
+                        ksocknal_new_packet(conn, 0);
                         ksocknal_close_conn_and_siblings (conn, rc);
+                        ksocknal_conn_decref(conn);
                         return (-EPROTO);
                 }
 
-                if (conn->ksnc_rx_nob_wanted != 0) { /* need to get payload? */
-                        conn->ksnc_rx_state = SOCKNAL_RX_BODY;
-                        goto try_read;          /* go read the payload */
-                }
-                /* Fall through (completed packet for me) */
+                /* I'm racing with ksocknal_recv() */
+                LASSERT (conn->ksnc_rx_state == SOCKNAL_RX_PARSE ||
+                         conn->ksnc_rx_state == SOCKNAL_RX_BODY);
+                
+                if (conn->ksnc_rx_state != SOCKNAL_RX_BODY)
+                        return 0;
+                
+                /* ksocknal_recv() got called */
+                goto again;
 
         case SOCKNAL_RX_BODY:
                 /* payload all received */
@@ -1323,26 +1041,8 @@ ksocknal_process_receive (ksock_conn_t *conn)
         case SOCKNAL_RX_SLOP:
                 /* starting new packet? */
                 if (ksocknal_new_packet (conn, conn->ksnc_rx_nob_left))
-                        return (0);     /* come back later */
-                goto try_read;          /* try to finish reading slop now */
-
-        case SOCKNAL_RX_BODY_FWD:
-                /* payload all received */
-                CDEBUG (D_NET, "%p %s->%s %d fwd_start (got body)\n", conn, 
-                        libcfs_nid2str(le64_to_cpu(conn->ksnc_hdr.src_nid)),
-                        libcfs_nid2str(le64_to_cpu(conn->ksnc_hdr.dest_nid)),
-                        conn->ksnc_rx_nob_left);
-
-                /* forward the packet. NB ksocknal_init_fmb() put fmb into
-                 * conn->ksnc_cookie */
-                fmb = (ksock_fmb_t *)conn->ksnc_cookie;
-                lnet_fwd_start (conn->ksnc_peer->ksnp_ni, &fmb->fmb_fwd);
-
-                /* no slop in forwarded packets */
-                LASSERT (conn->ksnc_rx_nob_left == 0);
-
-                ksocknal_new_packet (conn, 0);  /* on to next packet */
-                return (0);                     /* (later) */
+                        return 0;       /* come back later */
+                goto again;             /* try to finish reading slop now */
 
         default:
                 break;
@@ -1354,11 +1054,13 @@ ksocknal_process_receive (ksock_conn_t *conn)
 }
 
 int
-ksocknal_recv (ptl_ni_t *ni, void *private, ptl_msg_t *msg,
+ksocknal_recv (lnet_ni_t *ni, void *private, lnet_msg_t *msg, int delayed,
                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;
+        ksock_conn_t  *conn = (ksock_conn_t *)private;
+        ksock_sched_t *sched = conn->ksnc_scheduler;
+        unsigned int   flags;
 
         LASSERT (mlen <= rlen);
         LASSERT (niov <= PTL_MD_MAX_IOV);
@@ -1387,6 +1089,26 @@ ksocknal_recv (ptl_ni_t *ni, void *private, ptl_msg_t *msg,
                  lnet_iov_nob (conn->ksnc_rx_niov, conn->ksnc_rx_iov) +
                  lnet_kiov_nob (conn->ksnc_rx_nkiov, conn->ksnc_rx_kiov));
 
+        LASSERT (conn->ksnc_rx_scheduled);
+
+        spin_lock_irqsave(&sched->kss_lock, flags);
+
+        switch (conn->ksnc_rx_state) {
+        case SOCKNAL_RX_PARSE_WAIT:
+                list_add_tail(&conn->ksnc_rx_list, &sched->kss_rx_conns);
+                cfs_waitq_signal (&sched->kss_waitq);
+                LASSERT (conn->ksnc_rx_ready);
+                break;
+                
+        case SOCKNAL_RX_PARSE:
+                /* scheduler hasn't noticed I'm parsing yet */
+                break;
+        }
+
+        conn->ksnc_rx_state = SOCKNAL_RX_BODY;
+        
+        spin_unlock_irqrestore(&sched->kss_lock, flags);
+        ksocknal_conn_decref(conn);
         return (0);
 }
 
@@ -1468,13 +1190,11 @@ int ksocknal_scheduler (void *arg)
                         if (rc == 0)
                                 conn->ksnc_rx_ready = 1;
 
-                        if (conn->ksnc_rx_state == SOCKNAL_RX_FMB_SLEEP ||
-                            conn->ksnc_rx_state == SOCKNAL_RX_GET_FMB) {
-                                /* Conn blocked for a forwarding buffer.
-                                 * It will get queued for my attention when
-                                 * one becomes available (and it might just
-                                 * already have been!).  Meanwhile my ref
-                                 * on it stays put. */
+                        if (conn->ksnc_rx_state == SOCKNAL_RX_PARSE) {
+                                /* Conn blocked waiting for ksocknal_recv()
+                                 * I change its state (under lock) to signal
+                                 * it can be rescheduled */
+                                conn->ksnc_rx_state = SOCKNAL_RX_PARSE_WAIT;
                         } else if (conn->ksnc_rx_ready) {
                                 /* reschedule for rx */
                                 list_add_tail (&conn->ksnc_rx_list,
@@ -1637,34 +1357,34 @@ void ksocknal_write_callback (ksock_conn_t *conn)
 }
 
 int
-ksocknal_send_hello (ptl_ni_t *ni, ksock_conn_t *conn, lnet_nid_t peer_nid,
+ksocknal_send_hello (lnet_ni_t *ni, ksock_conn_t *conn, lnet_nid_t peer_nid,
                      __u32 *ipaddrs, int nipaddrs)
 {
         /* CAVEAT EMPTOR: this byte flips 'ipaddrs' */
-        ksock_net_t        *net = (ksock_net_t *)ni->ni_data;
-        struct socket      *sock = conn->ksnc_sock;
-        ptl_hdr_t           hdr;
-        ptl_magicversion_t *hmv = (ptl_magicversion_t *)&hdr.dest_nid;
-        int                 i;
-        int                 rc;
-        lnet_nid_t          srcnid;
+        ksock_net_t         *net = (ksock_net_t *)ni->ni_data;
+        struct socket       *sock = conn->ksnc_sock;
+        lnet_hdr_t           hdr;
+        lnet_magicversion_t *hmv = (lnet_magicversion_t *)&hdr.dest_nid;
+        int                  i;
+        int                  rc;
+        lnet_nid_t           srcnid;
 
-        LASSERT (conn->ksnc_type != SOCKNAL_CONN_NONE);
-        LASSERT (0 <= nipaddrs && nipaddrs <= PTL_MAX_INTERFACES);
+        LASSERT (conn->ksnc_type != SOCKLND_CONN_NONE);
+        LASSERT (0 <= nipaddrs && nipaddrs <= LNET_MAX_INTERFACES);
 
         /* No need for getconnsock/putconnsock */
         LASSERT (!conn->ksnc_closing);
 
         LASSERT (sizeof (*hmv) == sizeof (hdr.dest_nid));
-        hmv->magic         = cpu_to_le32 (PTL_PROTO_TCP_MAGIC);
-        hmv->version_major = cpu_to_le16 (PTL_PROTO_TCP_VERSION_MAJOR);
-        hmv->version_minor = cpu_to_le16 (PTL_PROTO_TCP_VERSION_MINOR);
+        hmv->magic         = cpu_to_le32 (LNET_PROTO_TCP_MAGIC);
+        hmv->version_major = cpu_to_le16 (LNET_PROTO_TCP_VERSION_MAJOR);
+        hmv->version_minor = cpu_to_le16 (LNET_PROTO_TCP_VERSION_MINOR);
 
         srcnid = lnet_ptlcompat_srcnid(ni->ni_nid, peer_nid);
         
         hdr.src_nid        = cpu_to_le64 (srcnid);
-        hdr.src_pid        = cpu_to_le64 (lnet_getpid());
-        hdr.type           = cpu_to_le32 (PTL_MSG_HELLO);
+        hdr.src_pid        = cpu_to_le64 (the_lnet.ln_pid);
+        hdr.type           = cpu_to_le32 (LNET_MSG_HELLO);
         hdr.payload_length = cpu_to_le32 (nipaddrs * sizeof(*ipaddrs));
 
         hdr.msg.hello.type = cpu_to_le32 (conn->ksnc_type);
@@ -1699,39 +1419,39 @@ ksocknal_invert_type(int type)
 {
         switch (type)
         {
-        case SOCKNAL_CONN_ANY:
-        case SOCKNAL_CONN_CONTROL:
+        case SOCKLND_CONN_ANY:
+        case SOCKLND_CONN_CONTROL:
                 return (type);
-        case SOCKNAL_CONN_BULK_IN:
-                return SOCKNAL_CONN_BULK_OUT;
-        case SOCKNAL_CONN_BULK_OUT:
-                return SOCKNAL_CONN_BULK_IN;
+        case SOCKLND_CONN_BULK_IN:
+                return SOCKLND_CONN_BULK_OUT;
+        case SOCKLND_CONN_BULK_OUT:
+                return SOCKLND_CONN_BULK_IN;
         default:
-                return (SOCKNAL_CONN_NONE);
+                return (SOCKLND_CONN_NONE);
         }
 }
 
 int
-ksocknal_recv_hello (ptl_ni_t *ni, ksock_conn_t *conn, 
+ksocknal_recv_hello (lnet_ni_t *ni, ksock_conn_t *conn, 
                      lnet_process_id_t *peerid, 
                      __u64 *incarnation, __u32 *ipaddrs)
 {
-        struct socket      *sock = conn->ksnc_sock;
-        int                 active;
-        int                 timeout;
-        int                 rc;
-        int                 nips;
-        int                 i;
-        int                 type;
-        ptl_hdr_t           hdr;
-        lnet_process_id_t   recv_id;
-        ptl_magicversion_t *hmv;
+        struct socket       *sock = conn->ksnc_sock;
+        int                  active;
+        int                  timeout;
+        int                  rc;
+        int                  nips;
+        int                  i;
+        int                  type;
+        lnet_hdr_t           hdr;
+        lnet_process_id_t    recv_id;
+        lnet_magicversion_t *hmv;
 
         active = (peerid->nid != LNET_NID_ANY);
         timeout = active ? *ksocknal_tunables.ksnd_timeout :
                             lnet_acceptor_timeout();
 
-        hmv = (ptl_magicversion_t *)&hdr.dest_nid;
+        hmv = (lnet_magicversion_t *)&hdr.dest_nid;
         LASSERT (sizeof (*hmv) == sizeof (hdr.dest_nid));
 
         rc = libcfs_sock_read(sock, &hmv->magic, sizeof (hmv->magic), timeout);
@@ -1742,7 +1462,7 @@ ksocknal_recv_hello (ptl_ni_t *ni, ksock_conn_t *conn,
         }
 
         if (!active && 
-            hmv->magic != le32_to_cpu (PTL_PROTO_TCP_MAGIC)) {
+            hmv->magic != le32_to_cpu (LNET_PROTO_TCP_MAGIC)) {
                 /* Is this a generic acceptor connection request? */
                 rc = lnet_accept(ni, sock, hmv->magic);
                 if (rc != 0)
@@ -1759,9 +1479,9 @@ ksocknal_recv_hello (ptl_ni_t *ni, ksock_conn_t *conn,
                 }
         }
         
-        if (hmv->magic != le32_to_cpu (PTL_PROTO_TCP_MAGIC)) {
+        if (hmv->magic != le32_to_cpu (LNET_PROTO_TCP_MAGIC)) {
                 CERROR ("Bad magic %#08x (%#08x expected) from %u.%u.%u.%u\n",
-                        __cpu_to_le32 (hmv->magic), PTL_PROTO_TCP_MAGIC,
+                        __cpu_to_le32 (hmv->magic), LNET_PROTO_TCP_MAGIC,
                         HIPQUAD(conn->ksnc_ipaddr));
                 return (-EPROTO);
         }
@@ -1774,19 +1494,19 @@ ksocknal_recv_hello (ptl_ni_t *ni, ksock_conn_t *conn,
                 return (rc);
         }
         
-        if (hmv->version_major != cpu_to_le16 (PTL_PROTO_TCP_VERSION_MAJOR) ||
-            hmv->version_minor != cpu_to_le16 (PTL_PROTO_TCP_VERSION_MINOR)) {
+        if (hmv->version_major != cpu_to_le16 (LNET_PROTO_TCP_VERSION_MAJOR) ||
+            hmv->version_minor != cpu_to_le16 (LNET_PROTO_TCP_VERSION_MINOR)) {
                 CERROR ("Incompatible protocol version %d.%d (%d.%d expected)"
                         " from %u.%u.%u.%u\n",
                         le16_to_cpu (hmv->version_major),
                         le16_to_cpu (hmv->version_minor),
-                        PTL_PROTO_TCP_VERSION_MAJOR,
-                        PTL_PROTO_TCP_VERSION_MINOR,
+                        LNET_PROTO_TCP_VERSION_MAJOR,
+                        LNET_PROTO_TCP_VERSION_MINOR,
                         HIPQUAD(conn->ksnc_ipaddr));
                 return (-EPROTO);
         }
 
-#if (PTL_PROTO_TCP_VERSION_MAJOR != 1)
+#if (LNET_PROTO_TCP_VERSION_MAJOR != 1)
 # error "This code only understands protocol version 1.x"
 #endif
         /* version 1 sends magic/version as the dest_nid of a 'hello'
@@ -1802,7 +1522,7 @@ ksocknal_recv_hello (ptl_ni_t *ni, ksock_conn_t *conn,
         }
 
         /* ...and check we got what we expected */
-        if (hdr.type != cpu_to_le32 (PTL_MSG_HELLO)) {
+        if (hdr.type != cpu_to_le32 (LNET_MSG_HELLO)) {
                 CERROR ("Expecting a HELLO hdr,"
                         " but got type %d from %u.%u.%u.%u\n",
                         le32_to_cpu (hdr.type),
@@ -1816,16 +1536,16 @@ ksocknal_recv_hello (ptl_ni_t *ni, ksock_conn_t *conn,
                 return (-EPROTO);
         }
 
-        if (conn->ksnc_port > PTL_ACCEPTOR_MAX_RESERVED_PORT) {          
+        if (conn->ksnc_port > LNET_ACCEPTOR_MAX_RESERVED_PORT) {          
                 /* Userspace NAL assigns peer process ID from socket */
                 recv_id.pid = conn->ksnc_port | LNET_PID_USERFLAG;
                 recv_id.nid = PTL_MKNID(PTL_NIDNET(ni->ni_nid), conn->ksnc_ipaddr);
         } else {
                 recv_id.nid = le64_to_cpu(hdr.src_nid);
 
-                if (lnet_apini.apini_ptlcompat > 1 && /* portals peers may exist */
+                if (the_lnet.ln_ptlcompat > 1 && /* portals peers may exist */
                     PTL_NIDNET(recv_id.nid) == 0) /* this is one */
-                        recv_id.pid = lnet_getpid(); /* give it a sensible pid */
+                        recv_id.pid = the_lnet.ln_pid; /* give it a sensible pid */
                 else
                         recv_id.pid = le32_to_cpu(hdr.src_pid);
 
@@ -1853,10 +1573,10 @@ ksocknal_recv_hello (ptl_ni_t *ni, ksock_conn_t *conn,
 
         type = __le32_to_cpu(hdr.msg.hello.type);
 
-        if (conn->ksnc_type == SOCKNAL_CONN_NONE) {
+        if (conn->ksnc_type == SOCKLND_CONN_NONE) {
                 /* I've accepted this connection; peer determines type */
                 conn->ksnc_type = ksocknal_invert_type(type);
-                if (conn->ksnc_type == SOCKNAL_CONN_NONE) {
+                if (conn->ksnc_type == SOCKLND_CONN_NONE) {
                         CERROR ("Unexpected type %d from %s ip %u.%u.%u.%u\n",
                                 type, libcfs_id2str(*peerid), 
                                 HIPQUAD(conn->ksnc_ipaddr));
@@ -1874,7 +1594,7 @@ ksocknal_recv_hello (ptl_ni_t *ni, ksock_conn_t *conn,
 
         nips = __le32_to_cpu (hdr.payload_length) / sizeof (__u32);
 
-        if (nips > PTL_MAX_INTERFACES ||
+        if (nips > LNET_MAX_INTERFACES ||
             nips * sizeof(__u32) != __le32_to_cpu (hdr.payload_length)) {
                 CERROR("Bad payload length %d from %s ip %u.%u.%u.%u\n",
                        __le32_to_cpu (hdr.payload_length),
@@ -1920,17 +1640,17 @@ ksocknal_connect (ksock_route_t *route)
 
         for (;;) {
                 if (!*ksocknal_tunables.ksnd_typed_conns) {
-                        if ((route->ksnr_connected & (1<<SOCKNAL_CONN_ANY)) == 0)
-                                type = SOCKNAL_CONN_ANY;
+                        if ((route->ksnr_connected & (1<<SOCKLND_CONN_ANY)) == 0)
+                                type = SOCKLND_CONN_ANY;
                         else
                                 break;  /* got connected while route queued */
                 } else {
-                        if ((route->ksnr_connected & (1<<SOCKNAL_CONN_CONTROL)) == 0)
-                                type = SOCKNAL_CONN_CONTROL;
-                        else if ((route->ksnr_connected & (1<<SOCKNAL_CONN_BULK_IN)) == 0)
-                                type = SOCKNAL_CONN_BULK_IN;
-                        else if ((route->ksnr_connected & (1<<SOCKNAL_CONN_BULK_OUT)) == 0)
-                                type = SOCKNAL_CONN_BULK_OUT;
+                        if ((route->ksnr_connected & (1<<SOCKLND_CONN_CONTROL)) == 0)
+                                type = SOCKLND_CONN_CONTROL;
+                        else if ((route->ksnr_connected & (1<<SOCKLND_CONN_BULK_IN)) == 0)
+                                type = SOCKLND_CONN_BULK_IN;
+                        else if ((route->ksnr_connected & (1<<SOCKLND_CONN_BULK_OUT)) == 0)
+                                type = SOCKLND_CONN_BULK_OUT;
                         else
                                 break;  /* got connected while route queued */
                 }
@@ -2047,8 +1767,8 @@ ksocknal_connd (void *arg)
                                                flags);
                         
                         ksocknal_create_conn(cr->ksncr_ni, NULL, 
-                                             cr->ksncr_sock, SOCKNAL_CONN_NONE);
-                        ptl_ni_decref(cr->ksncr_ni);
+                                             cr->ksncr_sock, SOCKLND_CONN_NONE);
+                        lnet_ni_decref(cr->ksncr_ni);
                         PORTAL_FREE(cr, sizeof(*cr));
                         
                         spin_lock_irqsave(&ksocknal_data.ksnd_connd_lock,
index d7cb6e9..22257dc 100644 (file)
@@ -171,10 +171,10 @@ ksocknal_lib_send_iov (ksock_conn_t *conn, ksock_tx_t *tx)
 #if SOCKNAL_SINGLE_FRAG_TX 
         struct iovec    scratch; 
         struct iovec   *scratchiov = &scratch; 
-        int             niov = 1;
+        unsigned int    niov = 1;
 #else 
         struct iovec   *scratchiov = conn->ksnc_tx_scratch_iov; 
-        int             niov = tx->tx_niov;
+        unsigned int    niov = tx->tx_niov;
 #endif
         struct socket *sock = conn->ksnc_sock;
         int            nob;
@@ -227,10 +227,10 @@ ksocknal_lib_send_kiov (ksock_conn_t *conn, ksock_tx_t *tx)
 #if SOCKNAL_SINGLE_FRAG_TX || !SOCKNAL_RISK_KMAP_DEADLOCK 
         struct iovec  scratch; 
         struct iovec *scratchiov = &scratch; 
-        int           niov = 1;
+        unsigned int  niov = 1;
 #else
         struct iovec *scratchiov = conn->ksnc_tx_scratch_iov; 
-        int           niov = tx->tx_nkiov;
+        unsigned int  niov = tx->tx_nkiov;
 #endif
         struct socket *sock = conn->ksnc_sock;
         lnet_kiov_t    *kiov = tx->tx_kiov;
@@ -369,10 +369,10 @@ ksocknal_lib_recv_iov (ksock_conn_t *conn)
 #if SOCKNAL_SINGLE_FRAG_RX 
         struct iovec  scratch; 
         struct iovec *scratchiov = &scratch; 
-        int           niov = 1;
+        unsigned int  niov = 1;
 #else 
         struct iovec *scratchiov = conn->ksnc_rx_scratch_iov; 
-        int           niov = conn->ksnc_rx_niov;
+        unsigned int  niov = conn->ksnc_rx_niov;
 #endif
         struct iovec *iov = conn->ksnc_rx_iov;
         int          nob;
@@ -423,10 +423,10 @@ ksocknal_lib_recv_kiov (ksock_conn_t *conn)
 #if SOCKNAL_SINGLE_FRAG_RX || !SOCKNAL_RISK_KMAP_DEADLOCK 
         struct iovec  scratch; 
         struct iovec *scratchiov = &scratch; 
-        int           niov = 1;
+        unsigned int  niov = 1;
 #else 
         struct iovec *scratchiov = conn->ksnc_rx_scratch_iov; 
-        int           niov = conn->ksnc_rx_nkiov;
+        unsigned int  niov = conn->ksnc_rx_nkiov;
 #endif
         lnet_kiov_t    *kiov = conn->ksnc_rx_kiov;
         int           nob;
index ab26d36..66f6d45 100644 (file)
@@ -172,7 +172,7 @@ ksocknal_lib_sock_irq (struct socket *sock)
 #if CPU_AFFINITY
         struct dst_entry  *dst;
 
-        if (!ksocknal_tunables.ksnd_irq_affinity)
+        if (!*ksocknal_tunables.ksnd_irq_affinity)
                 return 0;
 
         dst = sk_dst_get (sock->sk);
@@ -254,10 +254,10 @@ ksocknal_lib_send_iov (ksock_conn_t *conn, ksock_tx_t *tx)
 #if SOCKNAL_SINGLE_FRAG_TX
                 struct iovec    scratch;
                 struct iovec   *scratchiov = &scratch;
-                int             niov = 1;
+                unsigned int    niov = 1;
 #else
                 struct iovec   *scratchiov = conn->ksnc_tx_scratch_iov;
-                int             niov = tx->tx_niov;
+                unsigned int    niov = tx->tx_niov;
 #endif
                 struct msghdr msg = {
                         .msg_name       = NULL,
@@ -322,13 +322,13 @@ ksocknal_lib_send_kiov (ksock_conn_t *conn, ksock_tx_t *tx)
 #if SOCKNAL_SINGLE_FRAG_TX || !SOCKNAL_RISK_KMAP_DEADLOCK
                 struct iovec  scratch;
                 struct iovec *scratchiov = &scratch;
-                int           niov = 1;
+                unsigned int  niov = 1;
 #else
 #ifdef CONFIG_HIGHMEM
 #warning "XXX risk of kmap deadlock on multiple frags..."
 #endif
                 struct iovec *scratchiov = conn->ksnc_tx_scratch_iov;
-                int           niov = tx->tx_nkiov;
+                unsigned int  niov = tx->tx_nkiov;
 #endif
                 struct msghdr msg = {
                         .msg_name       = NULL,
@@ -386,10 +386,10 @@ ksocknal_lib_recv_iov (ksock_conn_t *conn)
 #if SOCKNAL_SINGLE_FRAG_RX
         struct iovec  scratch;
         struct iovec *scratchiov = &scratch;
-        int           niov = 1;
+        unsigned int  niov = 1;
 #else
         struct iovec *scratchiov = conn->ksnc_rx_scratch_iov;
-        int           niov = conn->ksnc_rx_niov;
+        unsigned int  niov = conn->ksnc_rx_niov;
 #endif
         struct iovec *iov = conn->ksnc_rx_iov;
         struct msghdr msg = {
@@ -430,13 +430,13 @@ ksocknal_lib_recv_kiov (ksock_conn_t *conn)
 #if SOCKNAL_SINGLE_FRAG_RX || !SOCKNAL_RISK_KMAP_DEADLOCK
         struct iovec  scratch;
         struct iovec *scratchiov = &scratch;
-        int           niov = 1;
+        unsigned int  niov = 1;
 #else
 #ifdef CONFIG_HIGHMEM
 #warning "XXX risk of kmap deadlock on multiple frags..."
 #endif
         struct iovec *scratchiov = conn->ksnc_rx_scratch_iov;
-        int           niov = conn->ksnc_rx_nkiov;
+        unsigned int  niov = conn->ksnc_rx_nkiov;
 #endif
         lnet_kiov_t   *kiov = conn->ksnc_rx_kiov;
         struct msghdr msg = {
@@ -561,7 +561,7 @@ ksocknal_lib_setup_sock (struct socket *sock)
                 return (rc);
         }
 
-        if (!ksocknal_tunables.ksnd_nagle) {
+        if (!*ksocknal_tunables.ksnd_nagle) {
                 option = 1;
 
                 set_fs (KERNEL_DS);
index 07d88eb..527c198 100644 (file)
 
 #include "viblnd.h"
 
-ptl_nal_t               kibnal_nal = {
-        .nal_type       = VIBNAL,
-        .nal_startup    = kibnal_startup,
-        .nal_shutdown   = kibnal_shutdown,
-        .nal_ctl        = kibnal_ctl,
-        .nal_send       = kibnal_send,
-        .nal_recv       = kibnal_recv,
+lnd_t the_kiblnd = {
+        .lnd_type       = VIBLND,
+        .lnd_startup    = kibnal_startup,
+        .lnd_shutdown   = kibnal_shutdown,
+        .lnd_ctl        = kibnal_ctl,
+        .lnd_send       = kibnal_send,
+        .lnd_recv       = kibnal_recv,
 };
 
 kib_data_t              kibnal_data;
@@ -405,7 +405,7 @@ kibnal_unpack_msg(kib_msg_t *msg, int nob)
 }
 
 int
-kibnal_start_listener (ptl_ni_t *ni)
+kibnal_start_listener (lnet_ni_t *ni)
 {
         static cm_listen_data_t info;
 
@@ -442,7 +442,7 @@ kibnal_start_listener (ptl_ni_t *ni)
 }
 
 void
-kibnal_stop_listener(ptl_ni_t *ni)
+kibnal_stop_listener(lnet_ni_t *ni)
 {
         cm_return_t      cmrc;
 
@@ -1135,7 +1135,7 @@ kibnal_close_matching_conns (lnet_nid_t nid)
 }
 
 int
-kibnal_ctl(ptl_ni_t *ni, unsigned int cmd, void *arg)
+kibnal_ctl(lnet_ni_t *ni, unsigned int cmd, void *arg)
 {
         struct portal_ioctl_data *data = arg;
         int                       rc = -EINVAL;
@@ -1430,7 +1430,7 @@ kibnal_setup_tx_descs (void)
 }
 
 void
-kibnal_shutdown (ptl_ni_t *ni)
+kibnal_shutdown (lnet_ni_t *ni)
 {
         int           i;
         vv_return_t   vvrc;
@@ -1546,7 +1546,7 @@ kibnal_shutdown (ptl_ni_t *ni)
 }
 
 int
-kibnal_startup (ptl_ni_t *ni)
+kibnal_startup (lnet_ni_t *ni)
 {
         char                      scratch[32];
         char                      ipif_name[32];
@@ -1562,7 +1562,7 @@ kibnal_startup (ptl_ni_t *ni)
         vv_request_event_record_t req_er;
         vv_return_t               vvrc;
 
-        LASSERT (ni->ni_nal == &kibnal_nal);
+        LASSERT (ni->ni_lnd == &the_kiblnd);
 
         /* Only 1 instance supported */
         if (kibnal_data.kib_init != IBNAL_INIT_NOTHING) {
@@ -1570,7 +1570,7 @@ kibnal_startup (ptl_ni_t *ni)
                 return -EPERM;
         }
 
-        CLASSERT (PTL_MAX_INTERFACES > 1);
+        CLASSERT (LNET_MAX_INTERFACES > 1);
         
         if (ni->ni_interfaces[0] != NULL) {
                 /* Use the HCA specified in 'networks=' */
@@ -1865,7 +1865,7 @@ kibnal_startup (ptl_ni_t *ni)
 void __exit
 kibnal_module_fini (void)
 {
-        lnet_unregister_nal(&kibnal_nal);
+        lnet_unregister_lnd(&the_kiblnd);
         kibnal_tunables_fini();
 }
 
@@ -1891,7 +1891,7 @@ kibnal_module_init (void)
         if (rc != 0)
                 return rc;
 
-        lnet_register_nal(&kibnal_nal);
+        lnet_register_lnd(&the_kiblnd);
 
         return 0;
 }
index 2b09c7e..0cc7906 100644 (file)
@@ -214,7 +214,7 @@ typedef struct
         __u64             kib_incarnation;      /* which one am I */
         int               kib_shutdown;         /* shut down? */
         atomic_t          kib_nthreads;         /* # live threads */
-        ptl_ni_t         *kib_ni;               /* _the_ nal instance */
+        lnet_ni_t        *kib_ni;               /* _the_ nal instance */
 
         vv_gid_t          kib_port_gid;         /* device/port GID */
         vv_p_key_t        kib_port_pkey;        /* device/port pkey */
@@ -282,7 +282,7 @@ typedef struct kib_rx                           /* receive message */
         struct list_head          rx_list;      /* queue for attention */
         struct kib_conn          *rx_conn;      /* owning conn */
         int                       rx_responded; /* responded to peer? */
-        int                       rx_posted;    /* posted? */
+        int                       rx_nob;       /* # bytes received (-1 while posted) */
         vv_l_key_t                rx_lkey;      /* local key */
         kib_msg_t                *rx_msg;       /* pre-mapped buffer (host vaddr) */
         vv_wr_t                   rx_wrq;       /* receive work item */
@@ -300,7 +300,7 @@ typedef struct kib_tx                           /* transmit message */
         int                       tx_status;    /* completion status */
         unsigned long             tx_deadline;  /* completion deadline */
         __u64                     tx_cookie;    /* completion cookie */
-        ptl_msg_t                *tx_ptlmsg[2]; /* ptl msgs to finalize on completion */
+        lnet_msg_t               *tx_lntmsg[2]; /* ptl msgs to finalize on completion */
         vv_l_key_t                tx_lkey;      /* local key for message buffer */
         kib_msg_t                *tx_msg;       /* message buffer (host vaddr) */
         int                       tx_nwrq;      /* # send work items */
@@ -403,17 +403,13 @@ typedef struct kib_peer
 extern kib_data_t      kibnal_data;
 extern kib_tunables_t  kibnal_tunables;
 
-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 tgt_is_router, 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,
+int kibnal_startup (lnet_ni_t *ni);
+void kibnal_shutdown (lnet_ni_t *ni);
+int kibnal_ctl(lnet_ni_t *ni, unsigned int cmd, void *arg);
+int kibnal_send (lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg);
+int kibnal_recv(lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg, 
+                int delayed, 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);
index af2b524..17836e7 100644 (file)
@@ -27,8 +27,8 @@
 void
 kibnal_tx_done (kib_tx_t *tx)
 {
-        int        ptlrc = (tx->tx_status == 0) ? 0 : -EIO;
-        int              i;
+        int        rc = tx->tx_status;
+        int        i;
 
         LASSERT (!in_interrupt());
         LASSERT (!tx->tx_queued);               /* mustn't be queued for sending */
@@ -37,7 +37,7 @@ kibnal_tx_done (kib_tx_t *tx)
 
 #if IBNAL_USE_FMR
         if (tx->tx_md.md_fmrcount == 0 ||
-            (ptlrc != 0 && tx->tx_md.md_active)) {
+            (rc != 0 && tx->tx_md.md_active)) {
                 vv_return_t      vvrc;
 
                 /* mapping must be active (it dropped fmrcount to 0) */
@@ -53,11 +53,11 @@ kibnal_tx_done (kib_tx_t *tx)
 #endif
         for (i = 0; i < 2; i++) {
                 /* tx may have up to 2 ptlmsgs to finalise */
-                if (tx->tx_ptlmsg[i] == NULL)
+                if (tx->tx_lntmsg[i] == NULL)
                         continue;
 
-                lnet_finalize (kibnal_data.kib_ni, NULL, tx->tx_ptlmsg[i], ptlrc);
-                tx->tx_ptlmsg[i] = NULL;
+                lnet_finalize (kibnal_data.kib_ni, NULL, tx->tx_lntmsg[i], rc);
+                tx->tx_lntmsg[i] = NULL;
         }
         
         if (tx->tx_conn != NULL) {
@@ -130,8 +130,8 @@ kibnal_get_idle_tx (int may_block)
                 LASSERT (!tx->tx_waiting);
                 LASSERT (tx->tx_status == 0);
                 LASSERT (tx->tx_conn == NULL);
-                LASSERT (tx->tx_ptlmsg[0] == NULL);
-                LASSERT (tx->tx_ptlmsg[1] == NULL);
+                LASSERT (tx->tx_lntmsg[0] == NULL);
+                LASSERT (tx->tx_lntmsg[1] == NULL);
         }
 
         spin_unlock(&kibnal_data.kib_tx_lock);
@@ -164,7 +164,7 @@ kibnal_post_rx (kib_rx_t *rx, int credit)
         };
 
         LASSERT (conn->ibc_state >= IBNAL_CONN_INIT);
-        LASSERT (!rx->rx_posted);
+        LASSERT (rx->rx_nob >= 0);              /* not posted */
 
         CDEBUG(D_NET, "posting rx [%d %x "LPX64"]\n", 
                rx->rx_wrq.scatgat_list->length,
@@ -177,8 +177,8 @@ kibnal_post_rx (kib_rx_t *rx, int credit)
                 return 0;
         }
         
-        rx->rx_posted = 1;
-
+        rx->rx_nob = -1;                        /* flag posted */
+        
         spin_lock(&conn->ibc_lock);
         /* Serialise vv_post_receive; it's not re-entrant on the same QP */
         vvrc = vv_post_receive(kibnal_data.kib_hca,
@@ -274,11 +274,11 @@ kibnal_handle_completion(kib_conn_t *conn, int txtype, int status, __u64 cookie)
                         tx->tx_status = status;
                 } else if (txtype == IBNAL_MSG_GET_REQ) { 
                         /* XXX layering violation: set REPLY data length */
-                        LASSERT (tx->tx_ptlmsg[1] != NULL);
-                        LASSERT (tx->tx_ptlmsg[1]->msg_ev.type == 
+                        LASSERT (tx->tx_lntmsg[1] != NULL);
+                        LASSERT (tx->tx_lntmsg[1]->msg_ev.type == 
                                  LNET_EVENT_REPLY);
 
-                        tx->tx_ptlmsg[1]->msg_ev.mlength = status;
+                        tx->tx_lntmsg[1]->msg_ev.mlength = status;
                 }
         }
         
@@ -319,7 +319,9 @@ kibnal_handle_rx (kib_rx_t *rx)
         kib_conn_t   *conn = rx->rx_conn;
         int           credits = msg->ibm_credits;
         kib_tx_t     *tx;
-        int           rc;
+        int           rc = 0;
+        int           repost = 1;
+        int           rc2;
 
         LASSERT (conn->ibc_state >= IBNAL_CONN_ESTABLISHED);
 
@@ -335,29 +337,27 @@ kibnal_handle_rx (kib_rx_t *rx)
                 kibnal_check_sends(conn);
         }
 
+        /* clear flag so GET_REQ can see if it caused a REPLY */
+        rx->rx_responded = 0;
+
         switch (msg->ibm_type) {
         default:
                 CERROR("Bad IBNAL message type %x from %s\n",
                        msg->ibm_type, libcfs_nid2str(conn->ibc_peer->ibp_nid));
+                rc = -EPROTO;
                 break;
 
         case IBNAL_MSG_NOOP:
                 break;
 
         case IBNAL_MSG_IMMEDIATE:
-                lnet_parse(kibnal_data.kib_ni, &msg->ibm_u.immediate.ibim_hdr, rx);
+                rc = lnet_parse(kibnal_data.kib_ni, &msg->ibm_u.immediate.ibim_hdr, rx);
+                repost = rc < 0;                /* repost on error */
                 break;
                 
         case IBNAL_MSG_PUT_REQ:
-                rx->rx_responded = 0;
-                lnet_parse(kibnal_data.kib_ni, &msg->ibm_u.putreq.ibprm_hdr, rx);
-                if (rx->rx_responded)
-                        break;
-
-                /* I wasn't asked to transfer any payload data.  This happens
-                 * if the PUT didn't match, or got truncated. */
-                kibnal_send_completion(rx->rx_conn, IBNAL_MSG_PUT_NAK, 0,
-                                       msg->ibm_u.putreq.ibprm_cookie);
+                rc = lnet_parse(kibnal_data.kib_ni, &msg->ibm_u.putreq.ibprm_hdr, rx);
+                repost = rc < 0;                /* repost on error */
                 break;
 
         case IBNAL_MSG_PUT_NAK:
@@ -378,7 +378,7 @@ kibnal_handle_rx (kib_rx_t *rx)
                 if (tx == NULL) {
                         CERROR("Unmatched PUT_ACK from %s\n",
                                libcfs_nid2str(conn->ibc_peer->ibp_nid));
-                        kibnal_close_conn(conn, -EPROTO);
+                        rc = -EPROTO;
                         break;
                 }
 
@@ -389,17 +389,17 @@ kibnal_handle_rx (kib_rx_t *rx)
 
                 tx->tx_nwrq = 0;                /* overwrite PUT_REQ */
 
-                rc = kibnal_init_rdma(tx, IBNAL_MSG_PUT_DONE, 
-                                      kibnal_rd_size(&msg->ibm_u.putack.ibpam_rd),
-                                      &msg->ibm_u.putack.ibpam_rd,
-                                      msg->ibm_u.putack.ibpam_dst_cookie);
-                if (rc < 0)
+                rc2 = kibnal_init_rdma(tx, IBNAL_MSG_PUT_DONE, 
+                                       kibnal_rd_size(&msg->ibm_u.putack.ibpam_rd),
+                                       &msg->ibm_u.putack.ibpam_rd,
+                                       msg->ibm_u.putack.ibpam_dst_cookie);
+                if (rc2 < 0)
                         CERROR("Can't setup rdma for PUT to %s: %d\n",
                                libcfs_nid2str(conn->ibc_peer->ibp_nid), rc);
 
                 spin_lock(&conn->ibc_lock);
-                if (tx->tx_status == 0 && rc < 0)
-                        tx->tx_status = rc;
+                if (tx->tx_status == 0 && rc2 < 0)
+                        tx->tx_status = rc2;
                 tx->tx_waiting = 0;             /* clear waiting and queue atomically */
                 kibnal_queue_tx_locked(tx, conn);
                 spin_unlock(&conn->ibc_lock);
@@ -412,14 +412,8 @@ kibnal_handle_rx (kib_rx_t *rx)
                 break;
 
         case IBNAL_MSG_GET_REQ:
-                rx->rx_responded = 0;
-                lnet_parse(kibnal_data.kib_ni, &msg->ibm_u.get.ibgm_hdr, rx);
-                if (rx->rx_responded)           /* I responded to the GET_REQ */
-                        break;
-                /* NB GET didn't match (I'd have responded even with no payload
-                 * data) */
-                kibnal_send_completion(rx->rx_conn, IBNAL_MSG_GET_DONE, -ENODATA,
-                                       msg->ibm_u.get.ibgm_cookie);
+                rc = lnet_parse(kibnal_data.kib_ni, &msg->ibm_u.get.ibgm_hdr, rx);
+                repost = rc < 0;                /* repost on error */
                 break;
 
         case IBNAL_MSG_GET_DONE:
@@ -429,7 +423,11 @@ kibnal_handle_rx (kib_rx_t *rx)
                 break;
         }
 
-        kibnal_post_rx(rx, 1);
+        if (rc < 0)                             /* protocol error */
+                kibnal_close_conn(conn, rc);
+
+        if (repost)
+                kibnal_post_rx(rx, 1);
 }
 
 void
@@ -441,8 +439,8 @@ kibnal_rx_complete (kib_rx_t *rx, vv_comp_status_t vvrc, int nob, __u64 rxseq)
         int           rc;
 
         CDEBUG (D_NET, "rx %p conn %p\n", rx, conn);
-        LASSERT (rx->rx_posted);
-        rx->rx_posted = 0;
+        LASSERT (rx->rx_nob < 0);               /* was posted */
+        rx->rx_nob = 0;                         /* isn't now */
 
         if (conn->ibc_state > IBNAL_CONN_ESTABLISHED)
                 goto ignore;
@@ -460,6 +458,8 @@ kibnal_rx_complete (kib_rx_t *rx, vv_comp_status_t vvrc, int nob, __u64 rxseq)
                 goto failed;
         }
 
+        rx->rx_nob = nob;                       /* Can trust 'nob' now */
+
         if (msg->ibm_srcnid != conn->ibc_peer->ibp_nid ||
             !lnet_ptlcompat_matchnid(kibnal_data.kib_ni->ni_nid, 
                                      msg->ibm_dstnid) ||
@@ -588,7 +588,7 @@ kibnal_append_rdfrag(kib_rdma_desc_t *rd, int active, struct page *page,
 int
 kibnal_setup_rd_iov(kib_tx_t *tx, kib_rdma_desc_t *rd, 
                     vv_access_con_bit_mask_t access,
-                    int niov, struct iovec *iov, int offset, int nob)
+                    unsigned int niov, struct iovec *iov, int offset, int nob)
                  
 {
         /* active if I'm sending */
@@ -733,7 +733,7 @@ kibnal_map_tx (kib_tx_t *tx, kib_rdma_desc_t *rd, int active,
 int
 kibnal_setup_rd_iov (kib_tx_t *tx, kib_rdma_desc_t *rd,
                      vv_access_con_bit_mask_t access,
-                     int niov, struct iovec *iov, int offset, int nob)
+                     unsigned int niov, struct iovec *iov, int offset, int nob)
                  
 {
         /* active if I'm sending */
@@ -1376,24 +1376,22 @@ kibnal_launch_tx (kib_tx_t *tx, lnet_nid_t nid)
 }
 
 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               target_is_router,
-            int               routing,
-            unsigned int      payload_niov, 
-            struct iovec     *payload_iov, 
-            lnet_kiov_t      *payload_kiov,
-            unsigned int      payload_offset,
-            unsigned int      payload_nob)
+kibnal_send(lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg)
 {
-        kib_msg_t  *ibmsg;
-        kib_tx_t   *tx;
-        int         nob;
-        int         rc;
+        lnet_hdr_t       *hdr = &lntmsg->msg_hdr; 
+        int               type = lntmsg->msg_type; 
+        lnet_process_id_t target = lntmsg->msg_target;
+        int               target_is_router = lntmsg->msg_target_is_router;
+        int               routing = lntmsg->msg_routing;
+        unsigned int      payload_niov = lntmsg->msg_niov; 
+        struct iovec     *payload_iov = lntmsg->msg_iov; 
+        lnet_kiov_t      *payload_kiov = lntmsg->msg_kiov;
+        unsigned int      payload_offset = lntmsg->msg_offset;
+        unsigned int      payload_nob = lntmsg->msg_len;
+        kib_msg_t        *ibmsg;
+        kib_tx_t         *tx;
+        int               nob;
+        int               rc;
 
         /* NB 'private' is different depending on what we're sending.... */
 
@@ -1413,16 +1411,16 @@ kibnal_send(ptl_ni_t         *ni,
                 LBUG();
                 return (-EIO);
                 
-        case PTL_MSG_ACK:
+        case LNET_MSG_ACK:
                 LASSERT (payload_nob == 0);
                 break;
 
-        case PTL_MSG_GET:
+        case LNET_MSG_GET:
                 if (routing || target_is_router)
                         break;                  /* send IMMEDIATE */
                 
                 /* is the REPLY message too small for RDMA? */
-                nob = offsetof(kib_msg_t, ibm_u.immediate.ibim_payload[ptlmsg->msg_md->md_length]);
+                nob = offsetof(kib_msg_t, ibm_u.immediate.ibim_payload[lntmsg->msg_md->md_length]);
                 if (nob <= IBNAL_MSG_SIZE)
                         break;                  /* send IMMEDIATE */
 
@@ -1433,18 +1431,18 @@ kibnal_send(ptl_ni_t         *ni,
                 ibmsg->ibm_u.get.ibgm_hdr = *hdr;
                 ibmsg->ibm_u.get.ibgm_cookie = tx->tx_cookie;
 
-                if ((ptlmsg->msg_md->md_options & LNET_MD_KIOV) == 0)
+                if ((lntmsg->msg_md->md_options & LNET_MD_KIOV) == 0)
                         rc = kibnal_setup_rd_iov(tx, &ibmsg->ibm_u.get.ibgm_rd,
                                                  vv_acc_r_mem_write,
-                                                 ptlmsg->msg_md->md_niov,
-                                                 ptlmsg->msg_md->md_iov.iov,
-                                                 0, ptlmsg->msg_md->md_length);
+                                                 lntmsg->msg_md->md_niov,
+                                                 lntmsg->msg_md->md_iov.iov,
+                                                 0, lntmsg->msg_md->md_length);
                 else
                         rc = kibnal_setup_rd_kiov(tx, &ibmsg->ibm_u.get.ibgm_rd,
                                                   vv_acc_r_mem_write,
-                                                  ptlmsg->msg_md->md_niov,
-                                                  ptlmsg->msg_md->md_iov.kiov,
-                                                  0, ptlmsg->msg_md->md_length);
+                                                  lntmsg->msg_md->md_niov,
+                                                  lntmsg->msg_md->md_iov.kiov,
+                                                  0, lntmsg->msg_md->md_length);
                 if (rc != 0) {
                         CERROR("Can't setup GET sink for %s: %d\n",
                                libcfs_nid2str(target.nid), rc);
@@ -1463,21 +1461,21 @@ kibnal_send(ptl_ni_t         *ni,
 #endif
                 kibnal_init_tx_msg(tx, IBNAL_MSG_GET_REQ, nob);
 
-                tx->tx_ptlmsg[1] = lnet_create_reply_msg(kibnal_data.kib_ni,
-                                                         target.nid, ptlmsg);
-                if (tx->tx_ptlmsg[1] == NULL) {
+                tx->tx_lntmsg[1] = lnet_create_reply_msg(kibnal_data.kib_ni,
+                                                         lntmsg);
+                if (tx->tx_lntmsg[1] == NULL) {
                         CERROR("Can't create reply for GET -> %s\n",
                                libcfs_nid2str(target.nid));
                         kibnal_tx_done(tx);
                         return -EIO;
                 }
 
-                tx->tx_ptlmsg[0] = ptlmsg;      /* finalise ptlmsg[0,1] on completion */
+                tx->tx_lntmsg[0] = lntmsg;      /* finalise lntmsg[0,1] on completion */
                 tx->tx_waiting = 1;             /* waiting for GET_DONE */
                 kibnal_launch_tx(tx, target.nid);
                 return 0;
 
-        case PTL_MSG_REPLY: {
+        case LNET_MSG_REPLY: {
                 /* reply's 'private' is the incoming receive */
                 kib_rx_t *rx = private;
 
@@ -1531,11 +1529,11 @@ kibnal_send(ptl_ni_t         *ni,
                         } else if (rc == 0) {
                                 /* No RDMA: local completion may happen now! */
                                 lnet_finalize (kibnal_data.kib_ni, NULL, 
-                                               ptlmsg, 0);
+                                               lntmsg, 0);
                         } else {
-                                /* RDMA: lnet_finalize(ptlmsg) when it
+                                /* RDMA: lnet_finalize(lntmsg) when it
                                  * completes */
-                                tx->tx_ptlmsg[0] = ptlmsg;
+                                tx->tx_lntmsg[0] = lntmsg;
                         }
 
                         kibnal_queue_tx(tx, rx->rx_conn);
@@ -1545,17 +1543,17 @@ kibnal_send(ptl_ni_t         *ni,
                 /* fall through to handle like PUT */
         }
 
-        case PTL_MSG_PUT:
+        case LNET_MSG_PUT:
                 /* Is the payload small enough not to need RDMA? */
                 nob = offsetof(kib_msg_t, ibm_u.immediate.ibim_payload[payload_nob]);
                 if (nob <= IBNAL_MSG_SIZE)
                         break;                  /* send IMMEDIATE */
 
                 /* may block if caller is app thread */
-                tx = kibnal_get_idle_tx(!(routing || type == PTL_MSG_REPLY));
+                tx = kibnal_get_idle_tx(!(routing || type == LNET_MSG_REPLY));
                 if (tx == NULL) {
                         CERROR("Can't allocate %s txd for %s\n",
-                               type == PTL_MSG_PUT ? "PUT" : "REPLY",
+                               type == LNET_MSG_PUT ? "PUT" : "REPLY",
                                libcfs_nid2str(target.nid));
                         return -ENOMEM;
                 }
@@ -1580,7 +1578,7 @@ kibnal_send(ptl_ni_t         *ni,
                 ibmsg->ibm_u.putreq.ibprm_cookie = tx->tx_cookie;
                 kibnal_init_tx_msg(tx, IBNAL_MSG_PUT_REQ, sizeof(kib_putreq_msg_t));
 
-                tx->tx_ptlmsg[0] = ptlmsg;      /* finalise ptlmsg on completion */
+                tx->tx_lntmsg[0] = lntmsg;      /* finalise lntmsg on completion */
                 tx->tx_waiting = 1;             /* waiting for PUT_{ACK,NAK} */
                 kibnal_launch_tx(tx, target.nid);
                 return 0;
@@ -1592,8 +1590,8 @@ kibnal_send(ptl_ni_t         *ni,
                  <= IBNAL_MSG_SIZE);
 
         tx = kibnal_get_idle_tx(!(routing ||
-                                  type == PTL_MSG_ACK ||
-                                  type == PTL_MSG_REPLY));
+                                  type == LNET_MSG_ACK ||
+                                  type == LNET_MSG_REPLY));
         if (tx == NULL) {
                 CERROR ("Can't send %d to %s: tx descs exhausted\n",
                         type, libcfs_nid2str(target.nid));
@@ -1603,27 +1601,27 @@ kibnal_send(ptl_ni_t         *ni,
         ibmsg = tx->tx_msg;
         ibmsg->ibm_u.immediate.ibim_hdr = *hdr;
 
-        if (payload_nob > 0) {
-                if (payload_kiov != NULL)
-                        lnet_copy_kiov2buf(ibmsg->ibm_u.immediate.ibim_payload,
-                                          payload_niov, payload_kiov,
-                                          payload_offset, payload_nob);
-                else
-                        lnet_copy_iov2buf(ibmsg->ibm_u.immediate.ibim_payload,
-                                         payload_niov, payload_iov,
-                                         payload_offset, payload_nob);
-        }
+        if (payload_kiov != NULL)
+                lnet_copy_kiov2flat(IBNAL_MSG_SIZE, ibmsg,
+                                    offsetof(kib_msg_t, ibm_u.immediate.ibim_payload),
+                                    payload_niov, payload_kiov,
+                                    payload_offset, payload_nob);
+        else
+                lnet_copy_iov2flat(IBNAL_MSG_SIZE, ibmsg,
+                                   offsetof(kib_msg_t, ibm_u.immediate.ibim_payload),
+                                   payload_niov, payload_iov,
+                                   payload_offset, payload_nob);
 
         nob = offsetof(kib_immediate_msg_t, ibim_payload[payload_nob]);
         kibnal_init_tx_msg (tx, IBNAL_MSG_IMMEDIATE, nob);
 
-        tx->tx_ptlmsg[0] = ptlmsg;              /* finalise ptlmsg on completion */
+        tx->tx_lntmsg[0] = lntmsg;              /* finalise lntmsg on completion */
         kibnal_launch_tx(tx, target.nid);
         return 0;
 }
 
 int
-kibnal_recv (ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg,
+kibnal_recv (lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg, int delayed,
              unsigned int niov, struct iovec *iov, lnet_kiov_t *kiov,
              unsigned int offset, unsigned int mlen, unsigned int rlen)
 {
@@ -1633,7 +1631,7 @@ kibnal_recv (ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg,
         kib_tx_t    *tx;
         kib_msg_t   *txmsg;
         int          nob;
-        int          rc;
+        int          rc = 0;
         
         LASSERT (mlen <= rlen);
         LASSERT (mlen >= 0);
@@ -1647,39 +1645,42 @@ kibnal_recv (ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg,
                 
         case IBNAL_MSG_IMMEDIATE:
                 nob = offsetof(kib_msg_t, ibm_u.immediate.ibim_payload[rlen]);
-                if (nob > IBNAL_MSG_SIZE) {
-                        CERROR ("Immediate message from %s too big: %d\n",
+                if (nob > rx->rx_nob) {
+                        CERROR ("Immediate message from %s too big: %d(%d)\n",
                                 libcfs_nid2str(rxmsg->ibm_u.immediate.ibim_hdr.src_nid),
-                                rlen);
-                        return (-EIO);
+                                rlen, rx->rx_nob);
+                        rc = -EPROTO;
+                        break;
                 }
 
                 if (kiov != NULL)
-                        lnet_copy_buf2kiov(niov, kiov, offset,
-                                          rxmsg->ibm_u.immediate.ibim_payload,
-                                          mlen);
+                        lnet_copy_flat2kiov(niov, kiov, offset,
+                                            IBNAL_MSG_SIZE, rxmsg,
+                                            offsetof(kib_msg_t, ibm_u.immediate.ibim_payload),
+                                            mlen);
                 else
-                        lnet_copy_buf2iov(niov, iov, offset,
-                                         rxmsg->ibm_u.immediate.ibim_payload,
-                                         mlen);
-
-                lnet_finalize (ni, NULL, ptlmsg, 0);
-                return (0);
+                        lnet_copy_flat2iov(niov, iov, offset,
+                                           IBNAL_MSG_SIZE, rxmsg,
+                                           offsetof(kib_msg_t, ibm_u.immediate.ibim_payload),
+                                           mlen);
+                lnet_finalize (ni, NULL, lntmsg, 0);
+                break;
 
         case IBNAL_MSG_PUT_REQ:
-                /* NB handle_rx() will send PUT_NAK when I return to it from
-                 * here, unless I set rx_responded!  */
-
-                if (mlen == 0) { /* No payload to RDMA */
-                        lnet_finalize(ni, NULL, ptlmsg, 0);
-                        return 0;
+                if (mlen == 0) {
+                        lnet_finalize(ni, NULL, lntmsg, 0);
+                        kibnal_send_completion(rx->rx_conn, IBNAL_MSG_PUT_NAK, 0,
+                                               rxmsg->ibm_u.putreq.ibprm_cookie);
+                        break;
                 }
-
+                
                 tx = kibnal_get_idle_tx(0);
                 if (tx == NULL) {
                         CERROR("Can't allocate tx for %s\n",
                                libcfs_nid2str(conn->ibc_peer->ibp_nid));
-                        return -ENOMEM;
+                        /* Not replying will break the connection */
+                        rc = -ENOMEM;
+                        break;
                 }
 
                 txmsg = tx->tx_msg;
@@ -1697,7 +1698,10 @@ kibnal_recv (ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg,
                         CERROR("Can't setup PUT sink for %s: %d\n",
                                libcfs_nid2str(conn->ibc_peer->ibp_nid), rc);
                         kibnal_tx_done(tx);
-                        return -EIO;
+                        /* tell peer it's over */
+                        kibnal_send_completion(rx->rx_conn, IBNAL_MSG_PUT_NAK, rc,
+                                               rxmsg->ibm_u.putreq.ibprm_cookie);
+                        break;
                 }
 
                 txmsg->ibm_u.putack.ibpam_src_cookie = rxmsg->ibm_u.putreq.ibprm_cookie;
@@ -1713,21 +1717,24 @@ kibnal_recv (ptl_ni_t *ni, void *private, ptl_msg_t *ptlmsg,
 #endif
                 kibnal_init_tx_msg(tx, IBNAL_MSG_PUT_ACK, nob);
 
-                tx->tx_ptlmsg[0] = ptlmsg;      /* finalise ptlmsg on completion */
+                tx->tx_lntmsg[0] = lntmsg;      /* finalise lntmsg on completion */
                 tx->tx_waiting = 1;             /* waiting for PUT_DONE */
                 kibnal_queue_tx(tx, conn);
-
-                LASSERT (!rx->rx_responded);
-                rx->rx_responded = 1;
-                return 0;
+                break;
 
         case IBNAL_MSG_GET_REQ:
-                /* We get called here just to discard any junk after the
-                 * GET hdr. */
-                LASSERT (ptlmsg == NULL);
-                lnet_finalize (ni, NULL, ptlmsg, 0);
-                return (0);
+                LASSERT (lntmsg == NULL);       /* no need to finalise */
+                if (!rx->rx_responded) {
+                        /* GET didn't match anything */
+                        kibnal_send_completion(rx->rx_conn, IBNAL_MSG_GET_DONE, 
+                                               -ENODATA,
+                                               rxmsg->ibm_u.get.ibgm_cookie);
+                }
+                break;
         }
+
+        kibnal_post_rx(rx, 1);
+        return rc;
 }
 
 int
index 6dacf6d..90e336c 100644 (file)
@@ -12,7 +12,7 @@ typedef struct kib_connparams
 
 typedef struct
 {
-        ptl_hdr_t         ibim_hdr;             /* portals header */
+        lnet_hdr_t        ibim_hdr;             /* portals header */
         char              ibim_payload[0];      /* piggy-backed payload */
 } WIRE_ATTR kib_immediate_msg_t;
 
@@ -48,7 +48,7 @@ typedef struct
 
 typedef struct
 {
-        ptl_hdr_t         ibprm_hdr;            /* portals header */
+        lnet_hdr_t        ibprm_hdr;            /* portals header */
         __u64             ibprm_cookie;         /* opaque completion cookie */
 } WIRE_ATTR kib_putreq_msg_t;
 
@@ -61,7 +61,7 @@ typedef struct
 
 typedef struct
 {
-        ptl_hdr_t         ibgm_hdr;             /* portals header */
+        lnet_hdr_t        ibgm_hdr;             /* portals header */
         __u64             ibgm_cookie;          /* opaque completion cookie */
         kib_rdma_desc_t   ibgm_rd;              /* rdma descriptor */
 } WIRE_ATTR kib_get_msg_t;
index a1c8b42..5f76612 100644 (file)
  * between getting its string and using it.
  */
 
-#define PTL_NIDSTR_COUNT  128     /* # of nidstrings */
-#define PTL_NIDSTR_SIZE   32      /* size of each one (see below for usage) */
+#define LNET_NIDSTR_COUNT  128     /* # of nidstrings */
+#define LNET_NIDSTR_SIZE   32      /* size of each one (see below for usage) */
 
-static char      libcfs_nidstrings[PTL_NIDSTR_COUNT][PTL_NIDSTR_SIZE];
+static char      libcfs_nidstrings[LNET_NIDSTR_COUNT][LNET_NIDSTR_SIZE];
 static int       libcfs_nidstring_idx = 0;
 
 #ifdef __KERNEL__
@@ -88,60 +88,60 @@ static int  libcfs_ip_str2addr(char *str, int nob, __u32 *addr);
 static void libcfs_num_addr2str(__u32 addr, char *str);
 static int  libcfs_num_str2addr(char *str, int nob, __u32 *addr);
 
-struct nalstrfns {
-        int          nf_nal;
+struct netstrfns {
+        int          nf_lnd;
         char        *nf_name;
         char        *nf_modname;
         void       (*nf_addr2str)(__u32 addr, char *str);
         int        (*nf_str2addr)(char *str, int nob, __u32 *addr);
 };
 
-static struct nalstrfns  libcfs_nalstrfns[] = {
-        {.nf_nal      = LONAL,     
+static struct netstrfns  libcfs_netstrfns[] = {
+        {.nf_lnd      = LOLND,     
          .nf_name     = "lo",         
          .nf_modname  = "klolnd",  
          .nf_addr2str = libcfs_num_addr2str,  
          .nf_str2addr = libcfs_lo_str2addr},
-        {.nf_nal      = SOCKNAL,    
+        {.nf_lnd      = SOCKLND,    
          .nf_name     = "tcp",     
          .nf_modname  = "ksocklnd",  
          .nf_addr2str = libcfs_ip_addr2str,  
          .nf_str2addr = libcfs_ip_str2addr},
-        {.nf_nal      = OPENIBNAL
+        {.nf_lnd      = OPENIBLND
          .nf_name     = "openib", 
          .nf_modname  = "kopeniblnd",  
          .nf_addr2str = libcfs_ip_addr2str,  
          .nf_str2addr = libcfs_ip_str2addr},
-        {.nf_nal      = IIBNAL,    
+        {.nf_lnd      = IIBLND,    
          .nf_name     = "iib",       
          .nf_modname  = "kiiblnd",  
          .nf_addr2str = libcfs_ip_addr2str,  
          .nf_str2addr = libcfs_ip_str2addr},
-        {.nf_nal      = VIBNAL,    
+        {.nf_lnd      = VIBLND,    
          .nf_name     = "vib",       
          .nf_modname  = "kviblnd",  
          .nf_addr2str = libcfs_ip_addr2str,  
          .nf_str2addr = libcfs_ip_str2addr},
-        {.nf_nal      = RANAL,     
+        {.nf_lnd      = RALND,     
          .nf_name     = "ra",         
          .nf_modname  = "kralnd",  
          .nf_addr2str = libcfs_ip_addr2str,  
          .nf_str2addr = libcfs_ip_str2addr},
-        {.nf_nal      = QSWNAL,   
+        {.nf_lnd      = QSWLND,
          .nf_name     = "elan",       
          .nf_modname  = "kqswlnd", 
          .nf_addr2str = libcfs_num_addr2str, 
          .nf_str2addr = libcfs_num_str2addr},
-        {.nf_nal      = GMNAL,     
+        {.nf_lnd      = GMLND,     
          .nf_name     = "gm",         
          .nf_modname  = "kgmlnd", 
          .nf_addr2str = libcfs_num_addr2str, 
          .nf_str2addr = libcfs_num_str2addr},
         /* placeholder for net0 alias.  It MUST BE THE LAST ENTRY */
-        {.nf_nal      = -1},
+        {.nf_lnd      = -1},
 };
 
-const int libcfs_nnalstrfns = sizeof(libcfs_nalstrfns)/sizeof(libcfs_nalstrfns[0]);
+const int libcfs_nnetstrfns = sizeof(libcfs_netstrfns)/sizeof(libcfs_netstrfns[0]);
 
 int
 libcfs_lo_str2addr(char *str, int nob, __u32 *addr)
@@ -158,11 +158,11 @@ libcfs_ip_addr2str(__u32 addr, char *str)
         struct hostent *he = gethostbyaddr(&netip, sizeof(netip), AF_INET);
         
         if (he != NULL) {
-                snprintf(str, PTL_NIDSTR_SIZE, "%s", he->h_name);
+                snprintf(str, LNET_NIDSTR_SIZE, "%s", he->h_name);
                 return;
         }
 #endif
-        snprintf(str, PTL_NIDSTR_SIZE, "%u.%u.%u.%u",
+        snprintf(str, LNET_NIDSTR_SIZE, "%u.%u.%u.%u",
                  (addr >> 24) & 0xff, (addr >> 16) & 0xff,
                  (addr >> 8) & 0xff, addr & 0xff);
 }
@@ -224,7 +224,7 @@ libcfs_ip_str2addr(char *str, int nob, __u32 *addr)
 void
 libcfs_num_addr2str(__u32 addr, char *str)
 {
-        snprintf(str, PTL_NIDSTR_SIZE, "%u", addr);
+        snprintf(str, LNET_NIDSTR_SIZE, "%u", addr);
 }
 
 int
@@ -241,67 +241,67 @@ libcfs_num_str2addr(char *str, int nob, __u32 *addr)
         return 1;
 }
 
-struct nalstrfns *
-libcfs_nal2nalstrfns(int nal
+struct netstrfns *
+libcfs_lnd2netstrfns(int lnd
 {
         int    i;
 
-        if (nal >= 0)
-                for (i = 0; i < libcfs_nnalstrfns; i++)
-                        if (nal == libcfs_nalstrfns[i].nf_nal)
-                                return &libcfs_nalstrfns[i];
+        if (lnd >= 0)
+                for (i = 0; i < libcfs_nnetstrfns; i++)
+                        if (lnd == libcfs_netstrfns[i].nf_lnd)
+                                return &libcfs_netstrfns[i];
 
         return NULL;
 }
 
-struct nalstrfns *
-libcfs_name2nalstrfns(char *name)
+struct netstrfns *
+libcfs_name2netstrfns(char *name)
 {
         int    i;
         
-        for (i = 0; i < libcfs_nnalstrfns; i++)
-                if (libcfs_nalstrfns[i].nf_nal >= 0 &&
-                    !strcmp(libcfs_nalstrfns[i].nf_name, name))
-                        return &libcfs_nalstrfns[i];
+        for (i = 0; i < libcfs_nnetstrfns; i++)
+                if (libcfs_netstrfns[i].nf_lnd >= 0 &&
+                    !strcmp(libcfs_netstrfns[i].nf_name, name))
+                        return &libcfs_netstrfns[i];
 
         return NULL;
 }
 
 int
-libcfs_isknown_nal(int nal)
+libcfs_isknown_lnd(int type)
 {
-        return libcfs_nal2nalstrfns(nal) != NULL;
+        return libcfs_lnd2netstrfns(type) != NULL;
 }
 
 char *
-libcfs_nal2modname(int nal
+libcfs_lnd2modname(int lnd
 {
-        struct nalstrfns *nf = libcfs_nal2nalstrfns(nal);
+        struct netstrfns *nf = libcfs_lnd2netstrfns(lnd);
 
         return (nf == NULL) ? NULL : nf->nf_modname;
 }
 
 char *
-libcfs_nal2str(int nal
+libcfs_lnd2str(int lnd
 {
         char           *str;
-        struct nalstrfns *nf = libcfs_nal2nalstrfns(nal);
+        struct netstrfns *nf = libcfs_lnd2netstrfns(lnd);
         
         if (nf != NULL)
                 return nf->nf_name;
         
         str = libcfs_next_nidstring();
-        snprintf(str, PTL_NIDSTR_SIZE, "?%u?", nal);
+        snprintf(str, LNET_NIDSTR_SIZE, "?%u?", lnd);
         return str;
 }
 
 int
-libcfs_str2nal(char *str)
+libcfs_str2lnd(char *str)
 {
-        struct nalstrfns *nf = libcfs_name2nalstrfns(str);
+        struct netstrfns *nf = libcfs_name2netstrfns(str);
         
         if (nf != NULL)
-                return nf->nf_nal;
+                return nf->nf_lnd;
         
         return -1;
 }
@@ -309,17 +309,17 @@ libcfs_str2nal(char *str)
 char *
 libcfs_net2str(__u32 net)
 {
-        int               nal = PTL_NETNAL(net);
+        int               lnd = PTL_NETTYP(net);
         int               num = PTL_NETNUM(net);
-        struct nalstrfns *nf  = libcfs_nal2nalstrfns(nal);
+        struct netstrfns *nf  = libcfs_lnd2netstrfns(lnd);
         char             *str = libcfs_next_nidstring();
 
         if (nf == NULL) 
-                snprintf(str, PTL_NIDSTR_SIZE, "<%u:%u>", nal, num);
+                snprintf(str, LNET_NIDSTR_SIZE, "<%u:%u>", lnd, num);
         else if (num == 0)
-                snprintf(str, PTL_NIDSTR_SIZE, "%s", nf->nf_name);
+                snprintf(str, LNET_NIDSTR_SIZE, "%s", nf->nf_name);
         else
-                snprintf(str, PTL_NIDSTR_SIZE, "%s%u", nf->nf_name, num);
+                snprintf(str, LNET_NIDSTR_SIZE, "%s%u", nf->nf_name, num);
 
         return str;
 }
@@ -327,52 +327,52 @@ libcfs_net2str(__u32 net)
 char *
 libcfs_nid2str(lnet_nid_t nid)
 {
-        __u32           addr = PTL_NIDADDR(nid);
-        __u32           net = PTL_NIDNET(nid);
-        int             nal = PTL_NETNAL(net);
-        int             nnum = PTL_NETNUM(net);
-        struct nalstrfns *nf;
-        char           *str;
-        int             nob;
+        __u32             addr = PTL_NIDADDR(nid);
+        __u32             net = PTL_NIDNET(nid);
+        int               lnd = PTL_NETTYP(net);
+        int               nnum = PTL_NETNUM(net);
+        struct netstrfns *nf;
+        char             *str;
+        int               nob;
 
         if (nid == LNET_NID_ANY)
                 return "LNET_NID_ANY";
 
-        nf = libcfs_nal2nalstrfns(PTL_NETNAL(net));
+        nf = libcfs_lnd2netstrfns(PTL_NETTYP(net));
         str = libcfs_next_nidstring();
 
         if (nf == NULL)
-                snprintf(str, PTL_NIDSTR_SIZE, "%x@<%u:%u>", addr, nal, nnum);
+                snprintf(str, LNET_NIDSTR_SIZE, "%x@<%u:%u>", addr, lnd, nnum);
         else {
                 nf->nf_addr2str(addr, str);
                 nob = strlen(str);
                 if (nnum == 0)
-                        snprintf(str + nob, PTL_NIDSTR_SIZE - nob, "@%s",
+                        snprintf(str + nob, LNET_NIDSTR_SIZE - nob, "@%s",
                                  nf->nf_name);
                 else
-                        snprintf(str + nob, PTL_NIDSTR_SIZE - nob, "@%s%u",
+                        snprintf(str + nob, LNET_NIDSTR_SIZE - nob, "@%s%u",
                                  nf->nf_name, nnum);
         }
 
         return str;
 }
 
-static struct nalstrfns *
-libcfs_str2net_internal(char *str, __u32 *net)
+static struct netstrfns *
+libcfs_str2net_interlnd(char *str, __u32 *net)
 {
-        struct nalstrfns *nf;
+        struct netstrfns *nf;
         int               nob;
         int               netnum;
         unsigned int      i;
 
-        for (i = 0; i < libcfs_nnalstrfns; i++) {
-                nf = &libcfs_nalstrfns[i];
+        for (i = 0; i < libcfs_nnetstrfns; i++) {
+                nf = &libcfs_netstrfns[i];
 
                 if (!strncmp(str, nf->nf_name, strlen(nf->nf_name)))
                         break;
         }
 
-        if (i == libcfs_nnalstrfns)
+        if (i == libcfs_nnetstrfns)
                 return NULL;
         
         nob = strlen(nf->nf_name);
@@ -380,7 +380,7 @@ libcfs_str2net_internal(char *str, __u32 *net)
         if (strlen(str) == nob) {
                 netnum = 0;
         } else {
-                if (nf->nf_nal == LONAL) /* net number not allowed */
+                if (nf->nf_lnd == LOLND) /* net number not allowed */
                         return NULL;
           
                 str += nob;
@@ -390,7 +390,7 @@ libcfs_str2net_internal(char *str, __u32 *net)
                         return NULL;
         }
         
-        *net = PTL_MKNET(nf->nf_nal, netnum);
+        *net = PTL_MKNET(nf->nf_lnd, netnum);
         return nf;
 }
 
@@ -399,7 +399,7 @@ libcfs_str2net(char *str)
 {
         __u32  net;
         
-        if (libcfs_str2net_internal(str, &net) != NULL)
+        if (libcfs_str2net_interlnd(str, &net) != NULL)
                 return net;
         
         return PTL_NIDNET(LNET_NID_ANY);
@@ -409,18 +409,18 @@ lnet_nid_t
 libcfs_str2nid(char *str)
 {
         char             *sep = strchr(str, '@');
-        struct nalstrfns *nf;
+        struct netstrfns *nf;
         __u32             net;
         __u32             addr;
 
         if (sep != NULL) {
-                nf = libcfs_str2net_internal(sep + 1, &net);
+                nf = libcfs_str2net_interlnd(sep + 1, &net);
                 if (nf == NULL)
                         return LNET_NID_ANY;
         } else {
                 sep = str + strlen(str);
-                net = PTL_MKNET(SOCKNAL, 0);
-                nf = libcfs_nal2nalstrfns(SOCKNAL);
+                net = PTL_MKNET(SOCKLND, 0);
+                nf = libcfs_lnd2netstrfns(SOCKLND);
                 LASSERT (nf != NULL);
         }
 
@@ -435,7 +435,7 @@ libcfs_id2str(lnet_process_id_t id)
 {
         char *str = libcfs_next_nidstring();
         
-        snprintf(str, PTL_NIDSTR_SIZE, "%s%u-%s", 
+        snprintf(str, LNET_NIDSTR_SIZE, "%s%u-%s", 
                  ((id.pid & LNET_PID_USERFLAG) != 0) ? "U" : "",
                  (id.pid & ~LNET_PID_USERFLAG), libcfs_nid2str(id.nid));
         return str;
@@ -455,30 +455,30 @@ libcfs_str2anynid(lnet_nid_t *nidp, char *str)
 
 #ifdef __KERNEL__
 void
-libcfs_setnet0alias(int nal)
+libcfs_setnet0alias(int lnd)
 {
-        struct nalstrfns *nf = libcfs_nal2nalstrfns(nal);
-        struct nalstrfns *nf0 = &libcfs_nalstrfns[libcfs_nnalstrfns - 1];
+        struct netstrfns *nf = libcfs_lnd2netstrfns(lnd);
+        struct netstrfns *nf0 = &libcfs_netstrfns[libcfs_nnetstrfns - 1];
 
         /* Ghastly hack to allow LNET to inter-operate with portals.  
          * NET type 0 becomes an alias for whatever local network we have, and
          * this assignment here means we can parse and print its NIDs */
 
         LASSERT (nf != NULL);
-        LASSERT (nf0->nf_nal < 0);
+        LASSERT (nf0->nf_lnd < 0);
         
         nf0->nf_name = "zero";//nf->nf_name;
         nf0->nf_modname = nf->nf_modname;
         nf0->nf_addr2str = nf->nf_addr2str;
         nf0->nf_str2addr = nf->nf_str2addr;
         mb();
-        nf0->nf_nal = 0;
+        nf0->nf_lnd = 0;
 }
 
-EXPORT_SYMBOL(libcfs_isknown_nal);
-EXPORT_SYMBOL(libcfs_nal2modname);
-EXPORT_SYMBOL(libcfs_nal2str);
-EXPORT_SYMBOL(libcfs_str2nal);
+EXPORT_SYMBOL(libcfs_isknown_lnd);
+EXPORT_SYMBOL(libcfs_lnd2modname);
+EXPORT_SYMBOL(libcfs_lnd2str);
+EXPORT_SYMBOL(libcfs_str2lnd);
 EXPORT_SYMBOL(libcfs_net2str);
 EXPORT_SYMBOL(libcfs_nid2str);
 EXPORT_SYMBOL(libcfs_str2net);
@@ -488,7 +488,7 @@ EXPORT_SYMBOL(libcfs_str2anynid);
 EXPORT_SYMBOL(libcfs_setnet0alias);
 #else  /* __KERNEL__ */
 void
-libcfs_setnet0alias(int nal)
+libcfs_setnet0alias(int lnd)
 {
         LCONSOLE_ERROR("Liblustre cannot interoperate with old Portals.\n"
                        "portals_compatibility must be set to 'none'.\n");
index d82e585..8c167b4 100644 (file)
@@ -40,7 +40,7 @@ static int accept_timeout = 5;
 CFS_MODULE_PARM(accept_timeout, "i", int, 0644,
                "Acceptor's timeout (seconds)");
 
-static int accept_proto_version = PTL_PROTO_ACCEPTOR_VERSION;
+static int accept_proto_version = LNET_PROTO_ACCEPTOR_VERSION;
 CFS_MODULE_PARM(accept_proto_version, "i", int, 0444,
                 "Acceptor protocol version (outgoing connection requests)");
 
@@ -135,8 +135,8 @@ lnet_connect(struct socket **sockp, lnet_nid_t peer_nid,
 
         CLASSERT (sizeof(cr) <= 16);            /* not too big to be on the stack */
 
-        for (port = PTL_ACCEPTOR_MAX_RESERVED_PORT; 
-             port >= PTL_ACCEPTOR_MIN_RESERVED_PORT; 
+        for (port = LNET_ACCEPTOR_MAX_RESERVED_PORT; 
+             port >= LNET_ACCEPTOR_MIN_RESERVED_PORT; 
              --port) {
                 /* Iterate through reserved ports. */
 
@@ -157,14 +157,14 @@ lnet_connect(struct socket **sockp, lnet_nid_t peer_nid,
                         goto failed_sock;
                 }
 
-                CLASSERT (PTL_PROTO_ACCEPTOR_VERSION == 1);
+                CLASSERT (LNET_PROTO_ACCEPTOR_VERSION == 1);
 
-                if (accept_proto_version == PTL_PROTO_ACCEPTOR_VERSION) {
+                if (accept_proto_version == LNET_PROTO_ACCEPTOR_VERSION) {
 
-                        LASSERT (lnet_apini.apini_ptlcompat < 2); /* no portals peers */
+                        LASSERT (the_lnet.ln_ptlcompat < 2); /* no portals peers */
                                 
-                        cr.acr_magic   = PTL_PROTO_ACCEPTOR_MAGIC;
-                        cr.acr_version = PTL_PROTO_ACCEPTOR_VERSION;
+                        cr.acr_magic   = LNET_PROTO_ACCEPTOR_MAGIC;
+                        cr.acr_version = LNET_PROTO_ACCEPTOR_VERSION;
                         cr.acr_nid     = peer_nid;
 
                         rc = libcfs_sock_write(sock, &cr, sizeof(cr), 0);
@@ -195,14 +195,14 @@ lnet_accept_magic(__u32 magic, __u32 constant)
 }
 
 int
-lnet_accept(ptl_ni_t *blind_ni, struct socket *sock, __u32 magic)
+lnet_accept(lnet_ni_t *blind_ni, struct socket *sock, __u32 magic)
 {
         lnet_acceptor_connreq_t  cr;
         __u32                   peer_ip;
         int                     peer_port;
         int                     rc;
         int                     flip;
-        ptl_ni_t               *ni;
+        lnet_ni_t              *ni;
         char                   *str;
 
         /* CAVEAT EMPTOR: I may be called by a NAL in any thread's context if I
@@ -214,13 +214,13 @@ lnet_accept(ptl_ni_t *blind_ni, struct socket *sock, __u32 magic)
         rc = libcfs_sock_getaddr(sock, 1, &peer_ip, &peer_port);
         LASSERT (rc == 0);                      /* we succeeded before */
 
-        if (!lnet_accept_magic(magic, PTL_PROTO_ACCEPTOR_MAGIC)) {
+        if (!lnet_accept_magic(magic, LNET_PROTO_ACCEPTOR_MAGIC)) {
 
-                if (magic == le32_to_cpu(PTL_PROTO_TCP_MAGIC))
+                if (magic == le32_to_cpu(LNET_PROTO_TCP_MAGIC))
                         str = "'old' socknal/tcpnal";
-                else if (lnet_accept_magic(magic, PTL_PROTO_RA_MAGIC))
+                else if (lnet_accept_magic(magic, LNET_PROTO_RA_MAGIC))
                         str = "'old' ranal";
-                else if (lnet_accept_magic(magic, PTL_PROTO_OPENIB_MAGIC))
+                else if (lnet_accept_magic(magic, LNET_PROTO_OPENIB_MAGIC))
                         str = "'old' openibnal";
                 else
                         str = "unrecognised";
@@ -231,7 +231,7 @@ lnet_accept(ptl_ni_t *blind_ni, struct socket *sock, __u32 magic)
                 return -EPROTO;
         }
 
-        flip = magic != PTL_PROTO_ACCEPTOR_MAGIC;
+        flip = magic != LNET_PROTO_ACCEPTOR_MAGIC;
 
         /* FTTB, we only have 1 acceptor protocol version.  When this changes,
          * we'll have to read the version number first before we know how much
@@ -251,7 +251,7 @@ lnet_accept(ptl_ni_t *blind_ni, struct socket *sock, __u32 magic)
                 __swab64s(&cr.acr_nid);
         }
         
-        if (cr.acr_version != PTL_PROTO_ACCEPTOR_VERSION) {
+        if (cr.acr_version != LNET_PROTO_ACCEPTOR_VERSION) {
                 LCONSOLE_ERROR("Refusing connection from %u.%u.%u.%u: "
                                " unrecognised protocol version %d\n",
                                HIPQUAD(peer_ip), cr.acr_version);
@@ -262,15 +262,15 @@ lnet_accept(ptl_ni_t *blind_ni, struct socket *sock, __u32 magic)
         if (ni == NULL ||             /* no matching net */
             ni->ni_nid != cr.acr_nid) /* right NET, but wrong NID! */ {
                 if (ni != NULL)
-                        ptl_ni_decref(ni);
+                        lnet_ni_decref(ni);
                 LCONSOLE_ERROR("Refusing connection from %u.%u.%u.%u for %s: "
                                " No matching NI\n",
                                HIPQUAD(peer_ip), libcfs_nid2str(cr.acr_nid));
                 return -EPERM;
         }
 
-        if (ni->ni_nal->nal_accept == NULL) {
-                ptl_ni_decref(ni);
+        if (ni->ni_lnd->lnd_accept == NULL) {
+                lnet_ni_decref(ni);
                 LCONSOLE_ERROR("Refusing connection from %u.%u.%u.%u for %s: "
                                " NI doesn not accept IP connections\n",
                                HIPQUAD(peer_ip), libcfs_nid2str(cr.acr_nid));
@@ -282,7 +282,7 @@ lnet_accept(ptl_ni_t *blind_ni, struct socket *sock, __u32 magic)
                blind_ni == NULL ? "" : " (blind)");
 
         if (blind_ni == NULL) {
-                rc = ni->ni_nal->nal_accept(ni, sock);
+                rc = ni->ni_lnd->lnd_accept(ni, sock);
                 if (rc != 0)
                         CERROR("NI %s refused connection from %u.%u.%u.%u\n",
                                libcfs_nid2str(ni->ni_nid), HIPQUAD(peer_ip));
@@ -296,7 +296,7 @@ lnet_accept(ptl_ni_t *blind_ni, struct socket *sock, __u32 magic)
                 rc = 0;
         }
 
-        ptl_ni_decref(ni);
+        lnet_ni_decref(ni);
         return rc;
 }
 EXPORT_SYMBOL(lnet_accept);
@@ -311,7 +311,7 @@ lnet_acceptor(void *arg)
        __u32          magic;
        __u32          peer_ip;
        int            peer_port;
-        ptl_ni_t      *blind_ni;
+        lnet_ni_t     *blind_ni;
         int            secure = (int)((unsigned long)arg);
 
        LASSERT (lnet_acceptor_state.pta_sock == NULL);
@@ -320,10 +320,10 @@ lnet_acceptor(void *arg)
          * connections "blind".  Otherwise I'll have to read the bytestream to
          * see which NI the connection is for.  NB I don't get to run at all if
          * there are 0 acceptor_nis... */
-        n_acceptor_nis = ptl_count_acceptor_nis(&blind_ni);
+        n_acceptor_nis = lnet_count_acceptor_nis(&blind_ni);
         LASSERT (n_acceptor_nis > 0);
         if (n_acceptor_nis > 1) {
-                ptl_ni_decref(blind_ni);
+                lnet_ni_decref(blind_ni);
                 blind_ni = NULL;
         }
 
@@ -374,7 +374,7 @@ lnet_acceptor(void *arg)
                        goto failed;
                }
 
-                if (secure && peer_port > PTL_ACCEPTOR_MAX_RESERVED_PORT) {
+                if (secure && peer_port > LNET_ACCEPTOR_MAX_RESERVED_PORT) {
                         CERROR("Refusing connection from %u.%u.%u.%u: "
                                "insecure port %d\n",
                                HIPQUAD(peer_ip), peer_port);
@@ -392,7 +392,7 @@ lnet_acceptor(void *arg)
                 }
 
                 if (blind_ni != NULL) {
-                        rc = blind_ni->ni_nal->nal_accept(blind_ni, newsock);
+                        rc = blind_ni->ni_lnd->lnd_accept(blind_ni, newsock);
                         if (rc != 0) {
                                 CERROR("NI %s refused 'blind' connection from "
                                        "%u.%u.%u.%u\n", 
@@ -425,7 +425,7 @@ lnet_acceptor(void *arg)
         lnet_acceptor_state.pta_sock = NULL;
 
         if (blind_ni != NULL)
-                ptl_ni_decref(blind_ni);
+                lnet_ni_decref(blind_ni);
 
         LCONSOLE(0,"Acceptor stopping\n");
        
@@ -442,7 +442,7 @@ lnet_acceptor_start(void)
 
         /* If we're talking to any portals (pre-LNET) nodes we force the old
          * acceptor protocol on outgoing connections */
-        if (lnet_apini.apini_ptlcompat > 1)
+        if (the_lnet.ln_ptlcompat > 1)
                 accept_proto_version = 0;
         
        LASSERT (lnet_acceptor_state.pta_sock == NULL);
@@ -460,7 +460,7 @@ lnet_acceptor_start(void)
                 return -EINVAL;
         }
        
-       if (ptl_count_acceptor_nis(NULL) == 0)  /* not required */
+       if (lnet_count_acceptor_nis(NULL) == 0)  /* not required */
                return 0;
        
        pid = cfs_kernel_thread(lnet_acceptor, (void *)secure, 0);
index 6c00af4..87bced7 100644 (file)
@@ -31,9 +31,9 @@ static char *portals_compatibility = "none";
 CFS_MODULE_PARM(portals_compatibility, "s", charp, 0444,
                 "wire protocol compatibility: 'strong'|'weak'|'none'");
 
-lnet_apini_t      lnet_apini;                   /* THE network interface (at the API) */
+lnet_t      the_lnet;                           /* THE state of the network */
 
-void ptl_assert_wire_constants (void)
+void lnet_assert_wire_constants (void)
 {
         /* Wire protocol assertions generated by 'wirecheck'
          * running on Linux robert.bartonsoftware.com 2.6.8-1.521
@@ -41,167 +41,167 @@ void ptl_assert_wire_constants (void)
          * with gcc version 3.3.3 20040412 (Red Hat Linux 3.3.3-7) */
 
         /* Constants... */
-        CLASSERT (PTL_PROTO_TCP_MAGIC == 0xeebc0ded);
-        CLASSERT (PTL_PROTO_TCP_VERSION_MAJOR == 1);
-        CLASSERT (PTL_PROTO_TCP_VERSION_MINOR == 0);
-        CLASSERT (PTL_MSG_ACK == 0);
-        CLASSERT (PTL_MSG_PUT == 1);
-        CLASSERT (PTL_MSG_GET == 2);
-        CLASSERT (PTL_MSG_REPLY == 3);
-        CLASSERT (PTL_MSG_HELLO == 4);
+        CLASSERT (LNET_PROTO_TCP_MAGIC == 0xeebc0ded);
+        CLASSERT (LNET_PROTO_TCP_VERSION_MAJOR == 1);
+        CLASSERT (LNET_PROTO_TCP_VERSION_MINOR == 0);
+        CLASSERT (LNET_MSG_ACK == 0);
+        CLASSERT (LNET_MSG_PUT == 1);
+        CLASSERT (LNET_MSG_GET == 2);
+        CLASSERT (LNET_MSG_REPLY == 3);
+        CLASSERT (LNET_MSG_HELLO == 4);
 
         /* Checks for struct ptl_handle_wire_t */
-        CLASSERT ((int)sizeof(ptl_handle_wire_t) == 16);
-        CLASSERT ((int)offsetof(ptl_handle_wire_t, wh_interface_cookie) == 0);
-        CLASSERT ((int)sizeof(((ptl_handle_wire_t *)0)->wh_interface_cookie) == 8);
-        CLASSERT ((int)offsetof(ptl_handle_wire_t, wh_object_cookie) == 8);
-        CLASSERT ((int)sizeof(((ptl_handle_wire_t *)0)->wh_object_cookie) == 8);
-
-        /* Checks for struct ptl_magicversion_t */
-        CLASSERT ((int)sizeof(ptl_magicversion_t) == 8);
-        CLASSERT ((int)offsetof(ptl_magicversion_t, magic) == 0);
-        CLASSERT ((int)sizeof(((ptl_magicversion_t *)0)->magic) == 4);
-        CLASSERT ((int)offsetof(ptl_magicversion_t, version_major) == 4);
-        CLASSERT ((int)sizeof(((ptl_magicversion_t *)0)->version_major) == 2);
-        CLASSERT ((int)offsetof(ptl_magicversion_t, version_minor) == 6);
-        CLASSERT ((int)sizeof(((ptl_magicversion_t *)0)->version_minor) == 2);
-
-        /* Checks for struct ptl_hdr_t */
-        CLASSERT ((int)sizeof(ptl_hdr_t) == 72);
-        CLASSERT ((int)offsetof(ptl_hdr_t, dest_nid) == 0);
-        CLASSERT ((int)sizeof(((ptl_hdr_t *)0)->dest_nid) == 8);
-        CLASSERT ((int)offsetof(ptl_hdr_t, src_nid) == 8);
-        CLASSERT ((int)sizeof(((ptl_hdr_t *)0)->src_nid) == 8);
-        CLASSERT ((int)offsetof(ptl_hdr_t, dest_pid) == 16);
-        CLASSERT ((int)sizeof(((ptl_hdr_t *)0)->dest_pid) == 4);
-        CLASSERT ((int)offsetof(ptl_hdr_t, src_pid) == 20);
-        CLASSERT ((int)sizeof(((ptl_hdr_t *)0)->src_pid) == 4);
-        CLASSERT ((int)offsetof(ptl_hdr_t, type) == 24);
-        CLASSERT ((int)sizeof(((ptl_hdr_t *)0)->type) == 4);
-        CLASSERT ((int)offsetof(ptl_hdr_t, payload_length) == 28);
-        CLASSERT ((int)sizeof(((ptl_hdr_t *)0)->payload_length) == 4);
-        CLASSERT ((int)offsetof(ptl_hdr_t, msg) == 32);
-        CLASSERT ((int)sizeof(((ptl_hdr_t *)0)->msg) == 40);
+        CLASSERT ((int)sizeof(lnet_handle_wire_t) == 16);
+        CLASSERT ((int)offsetof(lnet_handle_wire_t, wh_interface_cookie) == 0);
+        CLASSERT ((int)sizeof(((lnet_handle_wire_t *)0)->wh_interface_cookie) == 8);
+        CLASSERT ((int)offsetof(lnet_handle_wire_t, wh_object_cookie) == 8);
+        CLASSERT ((int)sizeof(((lnet_handle_wire_t *)0)->wh_object_cookie) == 8);
+
+        /* Checks for struct lnet_magicversion_t */
+        CLASSERT ((int)sizeof(lnet_magicversion_t) == 8);
+        CLASSERT ((int)offsetof(lnet_magicversion_t, magic) == 0);
+        CLASSERT ((int)sizeof(((lnet_magicversion_t *)0)->magic) == 4);
+        CLASSERT ((int)offsetof(lnet_magicversion_t, version_major) == 4);
+        CLASSERT ((int)sizeof(((lnet_magicversion_t *)0)->version_major) == 2);
+        CLASSERT ((int)offsetof(lnet_magicversion_t, version_minor) == 6);
+        CLASSERT ((int)sizeof(((lnet_magicversion_t *)0)->version_minor) == 2);
+
+        /* Checks for struct lnet_hdr_t */
+        CLASSERT ((int)sizeof(lnet_hdr_t) == 72);
+        CLASSERT ((int)offsetof(lnet_hdr_t, dest_nid) == 0);
+        CLASSERT ((int)sizeof(((lnet_hdr_t *)0)->dest_nid) == 8);
+        CLASSERT ((int)offsetof(lnet_hdr_t, src_nid) == 8);
+        CLASSERT ((int)sizeof(((lnet_hdr_t *)0)->src_nid) == 8);
+        CLASSERT ((int)offsetof(lnet_hdr_t, dest_pid) == 16);
+        CLASSERT ((int)sizeof(((lnet_hdr_t *)0)->dest_pid) == 4);
+        CLASSERT ((int)offsetof(lnet_hdr_t, src_pid) == 20);
+        CLASSERT ((int)sizeof(((lnet_hdr_t *)0)->src_pid) == 4);
+        CLASSERT ((int)offsetof(lnet_hdr_t, type) == 24);
+        CLASSERT ((int)sizeof(((lnet_hdr_t *)0)->type) == 4);
+        CLASSERT ((int)offsetof(lnet_hdr_t, payload_length) == 28);
+        CLASSERT ((int)sizeof(((lnet_hdr_t *)0)->payload_length) == 4);
+        CLASSERT ((int)offsetof(lnet_hdr_t, msg) == 32);
+        CLASSERT ((int)sizeof(((lnet_hdr_t *)0)->msg) == 40);
 
         /* Ack */
-        CLASSERT ((int)offsetof(ptl_hdr_t, msg.ack.dst_wmd) == 32);
-        CLASSERT ((int)sizeof(((ptl_hdr_t *)0)->msg.ack.dst_wmd) == 16);
-        CLASSERT ((int)offsetof(ptl_hdr_t, msg.ack.match_bits) == 48);
-        CLASSERT ((int)sizeof(((ptl_hdr_t *)0)->msg.ack.match_bits) == 8);
-        CLASSERT ((int)offsetof(ptl_hdr_t, msg.ack.mlength) == 56);
-        CLASSERT ((int)sizeof(((ptl_hdr_t *)0)->msg.ack.mlength) == 4);
+        CLASSERT ((int)offsetof(lnet_hdr_t, msg.ack.dst_wmd) == 32);
+        CLASSERT ((int)sizeof(((lnet_hdr_t *)0)->msg.ack.dst_wmd) == 16);
+        CLASSERT ((int)offsetof(lnet_hdr_t, msg.ack.match_bits) == 48);
+        CLASSERT ((int)sizeof(((lnet_hdr_t *)0)->msg.ack.match_bits) == 8);
+        CLASSERT ((int)offsetof(lnet_hdr_t, msg.ack.mlength) == 56);
+        CLASSERT ((int)sizeof(((lnet_hdr_t *)0)->msg.ack.mlength) == 4);
 
         /* Put */
-        CLASSERT ((int)offsetof(ptl_hdr_t, msg.put.ack_wmd) == 32);
-        CLASSERT ((int)sizeof(((ptl_hdr_t *)0)->msg.put.ack_wmd) == 16);
-        CLASSERT ((int)offsetof(ptl_hdr_t, msg.put.match_bits) == 48);
-        CLASSERT ((int)sizeof(((ptl_hdr_t *)0)->msg.put.match_bits) == 8);
-        CLASSERT ((int)offsetof(ptl_hdr_t, msg.put.hdr_data) == 56);
-        CLASSERT ((int)sizeof(((ptl_hdr_t *)0)->msg.put.hdr_data) == 8);
-        CLASSERT ((int)offsetof(ptl_hdr_t, msg.put.ptl_index) == 64);
-        CLASSERT ((int)sizeof(((ptl_hdr_t *)0)->msg.put.ptl_index) == 4);
-        CLASSERT ((int)offsetof(ptl_hdr_t, msg.put.offset) == 68);
-        CLASSERT ((int)sizeof(((ptl_hdr_t *)0)->msg.put.offset) == 4);
+        CLASSERT ((int)offsetof(lnet_hdr_t, msg.put.ack_wmd) == 32);
+        CLASSERT ((int)sizeof(((lnet_hdr_t *)0)->msg.put.ack_wmd) == 16);
+        CLASSERT ((int)offsetof(lnet_hdr_t, msg.put.match_bits) == 48);
+        CLASSERT ((int)sizeof(((lnet_hdr_t *)0)->msg.put.match_bits) == 8);
+        CLASSERT ((int)offsetof(lnet_hdr_t, msg.put.hdr_data) == 56);
+        CLASSERT ((int)sizeof(((lnet_hdr_t *)0)->msg.put.hdr_data) == 8);
+        CLASSERT ((int)offsetof(lnet_hdr_t, msg.put.ptl_index) == 64);
+        CLASSERT ((int)sizeof(((lnet_hdr_t *)0)->msg.put.ptl_index) == 4);
+        CLASSERT ((int)offsetof(lnet_hdr_t, msg.put.offset) == 68);
+        CLASSERT ((int)sizeof(((lnet_hdr_t *)0)->msg.put.offset) == 4);
 
         /* Get */
-        CLASSERT ((int)offsetof(ptl_hdr_t, msg.get.return_wmd) == 32);
-        CLASSERT ((int)sizeof(((ptl_hdr_t *)0)->msg.get.return_wmd) == 16);
-        CLASSERT ((int)offsetof(ptl_hdr_t, msg.get.match_bits) == 48);
-        CLASSERT ((int)sizeof(((ptl_hdr_t *)0)->msg.get.match_bits) == 8);
-        CLASSERT ((int)offsetof(ptl_hdr_t, msg.get.ptl_index) == 56);
-        CLASSERT ((int)sizeof(((ptl_hdr_t *)0)->msg.get.ptl_index) == 4);
-        CLASSERT ((int)offsetof(ptl_hdr_t, msg.get.src_offset) == 60);
-        CLASSERT ((int)sizeof(((ptl_hdr_t *)0)->msg.get.src_offset) == 4);
-        CLASSERT ((int)offsetof(ptl_hdr_t, msg.get.sink_length) == 64);
-        CLASSERT ((int)sizeof(((ptl_hdr_t *)0)->msg.get.sink_length) == 4);
+        CLASSERT ((int)offsetof(lnet_hdr_t, msg.get.return_wmd) == 32);
+        CLASSERT ((int)sizeof(((lnet_hdr_t *)0)->msg.get.return_wmd) == 16);
+        CLASSERT ((int)offsetof(lnet_hdr_t, msg.get.match_bits) == 48);
+        CLASSERT ((int)sizeof(((lnet_hdr_t *)0)->msg.get.match_bits) == 8);
+        CLASSERT ((int)offsetof(lnet_hdr_t, msg.get.ptl_index) == 56);
+        CLASSERT ((int)sizeof(((lnet_hdr_t *)0)->msg.get.ptl_index) == 4);
+        CLASSERT ((int)offsetof(lnet_hdr_t, msg.get.src_offset) == 60);
+        CLASSERT ((int)sizeof(((lnet_hdr_t *)0)->msg.get.src_offset) == 4);
+        CLASSERT ((int)offsetof(lnet_hdr_t, msg.get.sink_length) == 64);
+        CLASSERT ((int)sizeof(((lnet_hdr_t *)0)->msg.get.sink_length) == 4);
 
         /* Reply */
-        CLASSERT ((int)offsetof(ptl_hdr_t, msg.reply.dst_wmd) == 32);
-        CLASSERT ((int)sizeof(((ptl_hdr_t *)0)->msg.reply.dst_wmd) == 16);
+        CLASSERT ((int)offsetof(lnet_hdr_t, msg.reply.dst_wmd) == 32);
+        CLASSERT ((int)sizeof(((lnet_hdr_t *)0)->msg.reply.dst_wmd) == 16);
 
         /* Hello */
-        CLASSERT ((int)offsetof(ptl_hdr_t, msg.hello.incarnation) == 32);
-        CLASSERT ((int)sizeof(((ptl_hdr_t *)0)->msg.hello.incarnation) == 8);
-        CLASSERT ((int)offsetof(ptl_hdr_t, msg.hello.type) == 40);
-        CLASSERT ((int)sizeof(((ptl_hdr_t *)0)->msg.hello.type) == 4);
+        CLASSERT ((int)offsetof(lnet_hdr_t, msg.hello.incarnation) == 32);
+        CLASSERT ((int)sizeof(((lnet_hdr_t *)0)->msg.hello.incarnation) == 8);
+        CLASSERT ((int)offsetof(lnet_hdr_t, msg.hello.type) == 40);
+        CLASSERT ((int)sizeof(((lnet_hdr_t *)0)->msg.hello.type) == 4);
 }
 
-ptl_nal_t *
-ptl_find_nal_by_type (int type) 
+lnd_t *
+lnet_find_lnd_by_type (int type) 
 {
-        ptl_nal_t          *nal;
+        lnd_t              *lnd;
         struct list_head   *tmp;
 
-        /* holding nal mutex */
-        list_for_each (tmp, &lnet_apini.apini_nals) {
-                nal = list_entry(tmp, ptl_nal_t, nal_list);
+        /* holding lnd mutex */
+        list_for_each (tmp, &the_lnet.ln_lnds) {
+                lnd = list_entry(tmp, lnd_t, lnd_list);
 
-                if (nal->nal_type == type)
-                        return nal;
+                if (lnd->lnd_type == type)
+                        return lnd;
         }
         
         return NULL;
 }
 
 void
-lnet_register_nal (ptl_nal_t *nal)
+lnet_register_lnd (lnd_t *lnd)
 {
-        PTL_MUTEX_DOWN(&lnet_apini.apini_nal_mutex);
+        LNET_MUTEX_DOWN(&the_lnet.ln_lnd_mutex);
 
-        LASSERT (lnet_apini.apini_init);
-        LASSERT (libcfs_isknown_nal(nal->nal_type));
-        LASSERT (ptl_find_nal_by_type(nal->nal_type) == NULL);
+        LASSERT (the_lnet.ln_init);
+        LASSERT (libcfs_isknown_lnd(lnd->lnd_type));
+        LASSERT (lnet_find_lnd_by_type(lnd->lnd_type) == NULL);
         
-        list_add (&nal->nal_list, &lnet_apini.apini_nals);
-        nal->nal_refcount = 0;
+        list_add (&lnd->lnd_list, &the_lnet.ln_lnds);
+        lnd->lnd_refcount = 0;
 
-        if (nal->nal_type != LONAL)
+        if (lnd->lnd_type != LOLND)
                 LCONSOLE(0, "%s LND registered\n",
-                         libcfs_nal2str(nal->nal_type));
+                         libcfs_lnd2str(lnd->lnd_type));
 
-        PTL_MUTEX_UP(&lnet_apini.apini_nal_mutex);
+        LNET_MUTEX_UP(&the_lnet.ln_lnd_mutex);
 }
 
 void
-lnet_unregister_nal (ptl_nal_t *nal)
+lnet_unregister_lnd (lnd_t *lnd)
 {
-        PTL_MUTEX_DOWN(&lnet_apini.apini_nal_mutex);
+        LNET_MUTEX_DOWN(&the_lnet.ln_lnd_mutex);
 
-        LASSERT (lnet_apini.apini_init);
-        LASSERT (ptl_find_nal_by_type(nal->nal_type) == nal);
-        LASSERT (nal->nal_refcount == 0);
+        LASSERT (the_lnet.ln_init);
+        LASSERT (lnet_find_lnd_by_type(lnd->lnd_type) == lnd);
+        LASSERT (lnd->lnd_refcount == 0);
         
-        list_del (&nal->nal_list);
-        if (nal->nal_type != LONAL)
+        list_del (&lnd->lnd_list);
+        if (lnd->lnd_type != LOLND)
                 LCONSOLE(0, "%s LND unregistered\n",
-                         libcfs_nal2str(nal->nal_type));
+                         libcfs_lnd2str(lnd->lnd_type));
 
-        PTL_MUTEX_UP(&lnet_apini.apini_nal_mutex);
+        LNET_MUTEX_UP(&the_lnet.ln_lnd_mutex);
 }
 
-#ifndef PTL_USE_LIB_FREELIST
+#ifndef LNET_USE_LIB_FREELIST
 
 int
-ptl_descriptor_setup (void)
+lnet_descriptor_setup (void)
 {
         return 0;
 }
 
 void
-ptl_descriptor_cleanup (void)
+lnet_descriptor_cleanup (void)
 {
 }
 
 #else
 
 int
-ptl_freelist_init (ptl_freelist_t *fl, int n, int size)
+lnet_freelist_init (lnet_freelist_t *fl, int n, int size)
 {
         char *space;
 
         LASSERT (n > 0);
 
-        size += offsetof (ptl_freeobj_t, fo_contents);
+        size += offsetof (lnet_freeobj_t, fo_contents);
 
         PORTAL_ALLOC(space, n * size);
         if (space == NULL)
@@ -223,7 +223,7 @@ ptl_freelist_init (ptl_freelist_t *fl, int n, int size)
 }
 
 void
-ptl_freelist_fini (ptl_freelist_t *fl)
+lnet_freelist_fini (lnet_freelist_t *fl)
 {
         struct list_head *el;
         int               count;
@@ -242,50 +242,50 @@ ptl_freelist_fini (ptl_freelist_t *fl)
 }
 
 int
-ptl_descriptor_setup (void)
+lnet_descriptor_setup (void)
 {
-        /* NB on failure caller must still call ptl_descriptor_cleanup */
-        /*               ******                                        */
+        /* NB on failure caller must still call lnet_descriptor_cleanup */
+        /*               ******                                         */
         int        rc;
 
-        memset (&lnet_apini.apini_free_mes,  0, sizeof (lnet_apini.apini_free_mes));
-        memset (&lnet_apini.apini_free_msgs, 0, sizeof (lnet_apini.apini_free_msgs));
-        memset (&lnet_apini.apini_free_mds,  0, sizeof (lnet_apini.apini_free_mds));
-        memset (&lnet_apini.apini_free_eqs,  0, sizeof (lnet_apini.apini_free_eqs));
+        memset (&the_lnet.ln_free_mes,  0, sizeof (the_lnet.ln_free_mes));
+        memset (&the_lnet.ln_free_msgs, 0, sizeof (the_lnet.ln_free_msgs));
+        memset (&the_lnet.ln_free_mds,  0, sizeof (the_lnet.ln_free_mds));
+        memset (&the_lnet.ln_free_eqs,  0, sizeof (the_lnet.ln_free_eqs));
 
-        rc = ptl_freelist_init (&lnet_apini.apini_free_mes,
-                                MAX_MES, sizeof (ptl_me_t));
+        rc = lnet_freelist_init(&the_lnet.ln_free_mes,
+                                MAX_MES, sizeof (lnet_me_t));
         if (rc != 0)
                 return (rc);
 
-        rc = ptl_freelist_init (&lnet_apini.apini_free_msgs,
-                                MAX_MSGS, sizeof (ptl_msg_t));
+        rc = lnet_freelist_init(&the_lnet.ln_free_msgs,
+                                MAX_MSGS, sizeof (lnet_msg_t));
         if (rc != 0)
                 return (rc);
 
-        rc = ptl_freelist_init (&lnet_apini.apini_free_mds,
-                                MAX_MDS, sizeof (ptl_libmd_t));
+        rc = lnet_freelist_init(&the_lnet.ln_free_mds,
+                                MAX_MDS, sizeof (lnet_libmd_t));
         if (rc != 0)
                 return (rc);
 
-        rc = ptl_freelist_init (&lnet_apini.apini_free_eqs,
-                                MAX_EQS, sizeof (ptl_eq_t));
+        rc = lnet_freelist_init(&the_lnet.ln_free_eqs,
+                                MAX_EQS, sizeof (lnet_eq_t));
         return (rc);
 }
 
 void
-ptl_descriptor_cleanup (void)
+lnet_descriptor_cleanup (void)
 {
-        ptl_freelist_fini (&lnet_apini.apini_free_mes);
-        ptl_freelist_fini (&lnet_apini.apini_free_msgs);
-        ptl_freelist_fini (&lnet_apini.apini_free_mds);
-        ptl_freelist_fini (&lnet_apini.apini_free_eqs);
+        lnet_freelist_fini (&the_lnet.ln_free_mes);
+        lnet_freelist_fini (&the_lnet.ln_free_msgs);
+        lnet_freelist_fini (&the_lnet.ln_free_mds);
+        lnet_freelist_fini (&the_lnet.ln_free_eqs);
 }
 
 #endif
 
 __u64
-ptl_create_interface_cookie (void)
+lnet_create_interface_cookie (void)
 {
         /* NB the interface cookie in wire handles guards against delayed
          * replies and ACKs appearing valid after reboot. Initialisation time,
@@ -306,55 +306,55 @@ ptl_create_interface_cookie (void)
 }
 
 int
-ptl_setup_handle_hash (void) 
+lnet_setup_handle_hash (void) 
 {
         int       i;
         
         /* Arbitrary choice of hash table size */
 #ifdef __KERNEL__
-        lnet_apini.apini_lh_hash_size = PAGE_SIZE / sizeof (struct list_head);
+        the_lnet.ln_lh_hash_size = PAGE_SIZE / sizeof (struct list_head);
 #else
-        lnet_apini.apini_lh_hash_size = (MAX_MES + MAX_MDS + MAX_EQS)/4;
+        the_lnet.ln_lh_hash_size = (MAX_MES + MAX_MDS + MAX_EQS)/4;
 #endif
-        PORTAL_ALLOC(lnet_apini.apini_lh_hash_table,
-                     lnet_apini.apini_lh_hash_size * sizeof (struct list_head));
-        if (lnet_apini.apini_lh_hash_table == NULL)
+        PORTAL_ALLOC(the_lnet.ln_lh_hash_table,
+                     the_lnet.ln_lh_hash_size * sizeof (struct list_head));
+        if (the_lnet.ln_lh_hash_table == NULL)
                 return (-ENOMEM);
         
-        for (i = 0; i < lnet_apini.apini_lh_hash_size; i++)
-                CFS_INIT_LIST_HEAD (&lnet_apini.apini_lh_hash_table[i]);
+        for (i = 0; i < the_lnet.ln_lh_hash_size; i++)
+                CFS_INIT_LIST_HEAD (&the_lnet.ln_lh_hash_table[i]);
 
-        lnet_apini.apini_next_object_cookie = PTL_COOKIE_TYPES;
+        the_lnet.ln_next_object_cookie = LNET_COOKIE_TYPES;
         
         return (0);
 }
 
 void
-ptl_cleanup_handle_hash (void)
+lnet_cleanup_handle_hash (void)
 {
-        if (lnet_apini.apini_lh_hash_table == NULL)
+        if (the_lnet.ln_lh_hash_table == NULL)
                 return;
         
-        PORTAL_FREE(lnet_apini.apini_lh_hash_table,
-                    lnet_apini.apini_lh_hash_size * sizeof (struct list_head));
+        PORTAL_FREE(the_lnet.ln_lh_hash_table,
+                    the_lnet.ln_lh_hash_size * sizeof (struct list_head));
 }
 
-ptl_libhandle_t *
-ptl_lookup_cookie (__u64 cookie, int type) 
+lnet_libhandle_t *
+lnet_lookup_cookie (__u64 cookie, int type) 
 {
-        /* ALWAYS called with PTL_LOCK held */
+        /* ALWAYS called with LNET_LOCK held */
         struct list_head    *list;
         struct list_head    *el;
         unsigned int         hash;
 
-        if ((cookie & (PTL_COOKIE_TYPES - 1)) != type)
+        if ((cookie & (LNET_COOKIE_TYPES - 1)) != type)
                 return (NULL);
         
-        hash = ((unsigned int)cookie) % lnet_apini.apini_lh_hash_size;
-        list = &lnet_apini.apini_lh_hash_table[hash];
+        hash = ((unsigned int)cookie) % the_lnet.ln_lh_hash_size;
+        list = &the_lnet.ln_lh_hash_table[hash];
         
         list_for_each (el, list) {
-                ptl_libhandle_t *lh = list_entry (el, ptl_libhandle_t,
+                lnet_libhandle_t *lh = list_entry (el, lnet_libhandle_t,
                                                   lh_hash_chain);
                 
                 if (lh->lh_cookie == cookie)
@@ -365,180 +365,180 @@ ptl_lookup_cookie (__u64 cookie, int type)
 }
 
 void
-ptl_initialise_handle (ptl_libhandle_t *lh, int type) 
+lnet_initialise_handle (lnet_libhandle_t *lh, int type) 
 {
-        /* ALWAYS called with PTL_LOCK held */
+        /* ALWAYS called with LNET_LOCK held */
         unsigned int    hash;
 
-        LASSERT (type >= 0 && type < PTL_COOKIE_TYPES);
-        lh->lh_cookie = lnet_apini.apini_next_object_cookie | type;
-        lnet_apini.apini_next_object_cookie += PTL_COOKIE_TYPES;
+        LASSERT (type >= 0 && type < LNET_COOKIE_TYPES);
+        lh->lh_cookie = the_lnet.ln_next_object_cookie | type;
+        the_lnet.ln_next_object_cookie += LNET_COOKIE_TYPES;
         
-        hash = ((unsigned int)lh->lh_cookie) % lnet_apini.apini_lh_hash_size;
-        list_add (&lh->lh_hash_chain, &lnet_apini.apini_lh_hash_table[hash]);
+        hash = ((unsigned int)lh->lh_cookie) % the_lnet.ln_lh_hash_size;
+        list_add (&lh->lh_hash_chain, &the_lnet.ln_lh_hash_table[hash]);
 }
 
 void
-ptl_invalidate_handle (ptl_libhandle_t *lh)
+lnet_invalidate_handle (lnet_libhandle_t *lh)
 {
-        /* ALWAYS called with PTL_LOCK held */
+        /* ALWAYS called with LNET_LOCK held */
         list_del (&lh->lh_hash_chain);
 }
 
 int
-lnet_apini_init(lnet_pid_t requested_pid)
+lnet_init(lnet_pid_t requested_pid)
 {
         int               rc = 0;
         int               i;
         ENTRY;
 
-        LASSERT (lnet_apini.apini_refcount == 0);
+        LASSERT (the_lnet.ln_refcount == 0);
 
-        lnet_apini.apini_pid = requested_pid;
+        the_lnet.ln_pid = requested_pid;
 
 #ifdef __KERNEL__
         LASSERT ((requested_pid & LNET_PID_USERFLAG) == 0);
 #else
-        lnet_apini.apini_pid |= LNET_PID_USERFLAG;
+        the_lnet.ln_pid |= LNET_PID_USERFLAG;
 #endif
 
-        rc = ptl_descriptor_setup ();
+        rc = lnet_descriptor_setup ();
         if (rc != 0)
                 goto out;
 
-        memset(&lnet_apini.apini_counters, 0, 
-               sizeof(lnet_apini.apini_counters));
+        memset(&the_lnet.ln_counters, 0, 
+               sizeof(the_lnet.ln_counters));
 
-        CFS_INIT_LIST_HEAD (&lnet_apini.apini_active_msgs);
-        CFS_INIT_LIST_HEAD (&lnet_apini.apini_active_mds);
-        CFS_INIT_LIST_HEAD (&lnet_apini.apini_active_eqs);
-        CFS_INIT_LIST_HEAD (&lnet_apini.apini_test_peers);
-        CFS_INIT_LIST_HEAD (&lnet_apini.apini_nis);
-        CFS_INIT_LIST_HEAD (&lnet_apini.apini_zombie_nis);
+        CFS_INIT_LIST_HEAD (&the_lnet.ln_active_msgs);
+        CFS_INIT_LIST_HEAD (&the_lnet.ln_active_mds);
+        CFS_INIT_LIST_HEAD (&the_lnet.ln_active_eqs);
+        CFS_INIT_LIST_HEAD (&the_lnet.ln_test_peers);
+        CFS_INIT_LIST_HEAD (&the_lnet.ln_nis);
+        CFS_INIT_LIST_HEAD (&the_lnet.ln_zombie_nis);
 
-        lnet_apini.apini_interface_cookie = ptl_create_interface_cookie();
+        the_lnet.ln_interface_cookie = lnet_create_interface_cookie();
 
-        rc = ptl_setup_handle_hash ();
+        rc = lnet_setup_handle_hash ();
         if (rc != 0)
                 goto out;
         
-        lnet_apini.apini_nportals = MAX_PORTALS;
-        PORTAL_ALLOC(lnet_apini.apini_portals, 
-                     lnet_apini.apini_nportals * 
-                     sizeof(*lnet_apini.apini_portals));
-        if (lnet_apini.apini_portals == NULL) {
+        the_lnet.ln_nportals = MAX_PORTALS;
+        PORTAL_ALLOC(the_lnet.ln_portals, 
+                     the_lnet.ln_nportals * 
+                     sizeof(*the_lnet.ln_portals));
+        if (the_lnet.ln_portals == NULL) {
                 rc = -ENOMEM;
                 goto out;
         }
 
-        for (i = 0; i < lnet_apini.apini_nportals; i++)
-                CFS_INIT_LIST_HEAD(&(lnet_apini.apini_portals[i]));
+        for (i = 0; i < the_lnet.ln_nportals; i++)
+                CFS_INIT_LIST_HEAD(&(the_lnet.ln_portals[i]));
 
  out:
         if (rc != 0) {
-                ptl_cleanup_handle_hash ();
-                ptl_descriptor_cleanup ();
+                lnet_cleanup_handle_hash ();
+                lnet_descriptor_cleanup ();
         }
 
         RETURN (rc);
 }
 
 int
-lnet_apini_fini (void)
+lnet_fini (void)
 {
         int       idx;
         
-        /* NB no PTL_LOCK since this is the last reference.  All NAL instances
+        /* NB no LNET_LOCK since this is the last reference.  All LND instances
          * have shut down already, so it is safe to unlink and free all
          * descriptors, even those that appear committed to a network op (eg MD
          * with non-zero pending count) */
 
-        ptl_fail_nid(LNET_NID_ANY, 0);
+        lnet_fail_nid(LNET_NID_ANY, 0);
 
-        LASSERT (list_empty(&lnet_apini.apini_test_peers));
-        LASSERT (lnet_apini.apini_refcount == 0);
-        LASSERT (list_empty(&lnet_apini.apini_nis));
-        LASSERT (list_empty(&lnet_apini.apini_zombie_nis));
-        LASSERT (lnet_apini.apini_nzombie_nis == 0);
+        LASSERT (list_empty(&the_lnet.ln_test_peers));
+        LASSERT (the_lnet.ln_refcount == 0);
+        LASSERT (list_empty(&the_lnet.ln_nis));
+        LASSERT (list_empty(&the_lnet.ln_zombie_nis));
+        LASSERT (the_lnet.ln_nzombie_nis == 0);
                
-        for (idx = 0; idx < lnet_apini.apini_nportals; idx++)
-                while (!list_empty (&lnet_apini.apini_portals[idx])) {
-                        ptl_me_t *me = list_entry (lnet_apini.apini_portals[idx].next,
-                                                   ptl_me_t, me_list);
+        for (idx = 0; idx < the_lnet.ln_nportals; idx++)
+                while (!list_empty (&the_lnet.ln_portals[idx])) {
+                        lnet_me_t *me = list_entry (the_lnet.ln_portals[idx].next,
+                                                    lnet_me_t, me_list);
 
                         CERROR ("Active me %p on exit\n", me);
                         list_del (&me->me_list);
-                        ptl_me_free (me);
+                        lnet_me_free (me);
                 }
 
-        while (!list_empty (&lnet_apini.apini_active_mds)) {
-                ptl_libmd_t *md = list_entry (lnet_apini.apini_active_mds.next,
-                                           ptl_libmd_t, md_list);
+        while (!list_empty (&the_lnet.ln_active_mds)) {
+                lnet_libmd_t *md = list_entry (the_lnet.ln_active_mds.next,
+                                               lnet_libmd_t, md_list);
 
                 CERROR ("Active md %p on exit\n", md);
                 list_del (&md->md_list);
-                ptl_md_free (md);
+                lnet_md_free (md);
         }
 
-        while (!list_empty (&lnet_apini.apini_active_eqs)) {
-                ptl_eq_t *eq = list_entry (lnet_apini.apini_active_eqs.next,
-                                           ptl_eq_t, eq_list);
+        while (!list_empty (&the_lnet.ln_active_eqs)) {
+                lnet_eq_t *eq = list_entry (the_lnet.ln_active_eqs.next,
+                                            lnet_eq_t, eq_list);
 
                 CERROR ("Active eq %p on exit\n", eq);
                 list_del (&eq->eq_list);
-                ptl_eq_free (eq);
+                lnet_eq_free (eq);
         }
 
-        while (!list_empty (&lnet_apini.apini_active_msgs)) {
-                ptl_msg_t *msg = list_entry (lnet_apini.apini_active_msgs.next,
-                                             ptl_msg_t, msg_list);
+        while (!list_empty (&the_lnet.ln_active_msgs)) {
+                lnet_msg_t *msg = list_entry (the_lnet.ln_active_msgs.next,
+                                              lnet_msg_t, msg_activelist);
 
                 CERROR ("Active msg %p on exit\n", msg);
-                list_del (&msg->msg_list);
-                ptl_msg_free (msg);
+                list_del (&msg->msg_activelist);
+                lnet_msg_free (msg);
         }
 
-        PORTAL_FREE(lnet_apini.apini_portals,  
-                    lnet_apini.apini_nportals * sizeof(*lnet_apini.apini_portals));
+        PORTAL_FREE(the_lnet.ln_portals,  
+                    the_lnet.ln_nportals * sizeof(*the_lnet.ln_portals));
 
-        ptl_cleanup_handle_hash ();
-        ptl_descriptor_cleanup ();
+        lnet_cleanup_handle_hash ();
+        lnet_descriptor_cleanup ();
 
 #ifndef __KERNEL__
-        pthread_mutex_destroy(&lnet_apini.apini_mutex);
-        pthread_cond_destroy(&lnet_apini.apini_cond);
+        pthread_mutex_destroy(&the_lnet.ln_mutex);
+        pthread_cond_destroy(&the_lnet.ln_cond);
 #endif
 
         return (0);
 }
 
-ptl_ni_t  *
+lnet_ni_t  *
 lnet_net2ni (__u32 net)
 {
         struct list_head *tmp;
-        ptl_ni_t         *ni;
+        lnet_ni_t        *ni;
         unsigned long     flags;
 
-        PTL_LOCK(flags);
-        list_for_each (tmp, &lnet_apini.apini_nis) {
-                ni = list_entry(tmp, ptl_ni_t, ni_list);
+        LNET_LOCK(flags);
+        list_for_each (tmp, &the_lnet.ln_nis) {
+                ni = list_entry(tmp, lnet_ni_t, ni_list);
 
                 if (PTL_NIDNET(ni->ni_nid) == net ||
-                    (lnet_apini.apini_ptlcompat > 0 &&
+                    (the_lnet.ln_ptlcompat > 0 &&
                      net == 0 &&
-                     PTL_NETNAL(PTL_NIDNET(ni->ni_nid)) != LONAL)) {
-                        ptl_ni_addref_locked(ni);
-                        PTL_UNLOCK(flags);
+                     PTL_NETTYP(PTL_NIDNET(ni->ni_nid)) != LOLND)) {
+                        lnet_ni_addref_locked(ni);
+                        LNET_UNLOCK(flags);
                         return ni;
                 }
         }
         
-        PTL_UNLOCK(flags);
+        LNET_UNLOCK(flags);
         return NULL;
 }
 
 int
-ptl_count_acceptor_nis (ptl_ni_t **first_ni)
+lnet_count_acceptor_nis (lnet_ni_t **first_ni)
 {
         /* Return the # of NIs that need the acceptor.  Return the first one in
          * *first_ni so the acceptor can pass it connections "blind" to retain
@@ -547,39 +547,39 @@ ptl_count_acceptor_nis (ptl_ni_t **first_ni)
 #ifdef __KERNEL__
         unsigned long      flags;
         struct list_head  *tmp;
-        ptl_ni_t          *ni;
+        lnet_ni_t         *ni;
 
-        PTL_LOCK(flags);
-        list_for_each (tmp, &lnet_apini.apini_nis) {
-                ni = list_entry(tmp, ptl_ni_t, ni_list);
+        LNET_LOCK(flags);
+        list_for_each (tmp, &the_lnet.ln_nis) {
+                ni = list_entry(tmp, lnet_ni_t, ni_list);
 
-                if (ni->ni_nal->nal_accept != NULL) {
-                        /* This NAL uses the acceptor */
+                if (ni->ni_lnd->lnd_accept != NULL) {
+                        /* This LND uses the acceptor */
                         if (count == 0 && first_ni != NULL) {
-                                ptl_ni_addref_locked(ni);
+                                lnet_ni_addref_locked(ni);
                                 *first_ni = ni;
                         }
                         count++;
                 }
         }
         
-        PTL_UNLOCK(flags);
+        LNET_UNLOCK(flags);
 #endif
         return count;
 }
 
 int
-ptl_islocalnid (lnet_nid_t nid)
+lnet_islocalnid (lnet_nid_t nid)
 {
         struct list_head *tmp;
-        ptl_ni_t         *ni;
+        lnet_ni_t        *ni;
         unsigned long     flags;
         int               islocal = 0;
 
-        PTL_LOCK(flags);
+        LNET_LOCK(flags);
 
-        list_for_each (tmp, &lnet_apini.apini_nis) {
-                ni = list_entry(tmp, ptl_ni_t, ni_list);
+        list_for_each (tmp, &the_lnet.ln_nis) {
+                ni = list_entry(tmp, lnet_ni_t, ni_list);
 
                 if (ni->ni_nid == nid) {
                         islocal = 1;
@@ -587,23 +587,23 @@ ptl_islocalnid (lnet_nid_t nid)
                 }
         }
         
-        PTL_UNLOCK(flags);
+        LNET_UNLOCK(flags);
         return islocal;
 }
 
 int
-ptl_islocalnet (__u32 net, int *orderp)
+lnet_islocalnet (__u32 net, int *orderp)
 {
         struct list_head *tmp;
-        ptl_ni_t         *ni;
+        lnet_ni_t        *ni;
         unsigned long     flags;
         int               order = 0;
         int               islocal = 0;
 
-        PTL_LOCK(flags);
+        LNET_LOCK(flags);
 
-        list_for_each (tmp, &lnet_apini.apini_nis) {
-                ni = list_entry(tmp, ptl_ni_t, ni_list);
+        list_for_each (tmp, &the_lnet.ln_nis) {
+                ni = list_entry(tmp, lnet_ni_t, ni_list);
 
                 if (PTL_NIDNET(ni->ni_nid) == net) {
                         islocal = 1;
@@ -614,74 +614,74 @@ ptl_islocalnet (__u32 net, int *orderp)
                 order++;
         }
         
-        PTL_UNLOCK(flags);
+        LNET_UNLOCK(flags);
         return islocal;
 }
 
 void
-ptl_shutdown_nalnis (void)
+lnet_shutdown_lndnis (void)
 {
         int                i;
         int                islo;
-        ptl_ni_t          *ni;
+        lnet_ni_t         *ni;
         unsigned long      flags;
 
         /* NB called holding the global mutex */
 
         /* All quiet on the API front */
-        LASSERT (lnet_apini.apini_refcount == 0);
-        LASSERT (list_empty(&lnet_apini.apini_zombie_nis));
-        LASSERT (lnet_apini.apini_nzombie_nis == 0);
+        LASSERT (the_lnet.ln_refcount == 0);
+        LASSERT (list_empty(&the_lnet.ln_zombie_nis));
+        LASSERT (the_lnet.ln_nzombie_nis == 0);
 
         /* First unlink the NIs from the global list and drop its ref.  When
          * the last ref goes, the NI is queued on apini_zombie_nis....*/
 
-        PTL_LOCK(flags);
-        while (!list_empty(&lnet_apini.apini_nis)) {
-                ni = list_entry(lnet_apini.apini_nis.next, 
-                                ptl_ni_t, ni_list);
+        LNET_LOCK(flags);
+        while (!list_empty(&the_lnet.ln_nis)) {
+                ni = list_entry(the_lnet.ln_nis.next, 
+                                lnet_ni_t, ni_list);
                 list_del (&ni->ni_list);
 
                 ni->ni_shutdown = 1;
-                lnet_apini.apini_nzombie_nis++;
+                the_lnet.ln_nzombie_nis++;
 
-                ptl_ni_decref_locked(ni); /* drop apini's ref (shutdown on last ref) */
+                lnet_ni_decref_locked(ni); /* drop apini's ref (shutdown on last ref) */
         }
 
         /* Drop the cached loopback NI. */
-        if (ptl_loni != NULL) {
-                ptl_ni_decref_locked(ptl_loni);
-                ptl_loni = NULL;
+        if (lnet_loni != NULL) {
+                lnet_ni_decref_locked(lnet_loni);
+                lnet_loni = NULL;
         }
 
         /* Now wait for the NI's I just nuked to show up on apini_zombie_nis
          * and shut them down in guaranteed thread context */
         i = 2;
-        while (lnet_apini.apini_nzombie_nis != 0) {
+        while (the_lnet.ln_nzombie_nis != 0) {
 
-                while (list_empty(&lnet_apini.apini_zombie_nis)) {
-                        PTL_UNLOCK(flags);
+                while (list_empty(&the_lnet.ln_zombie_nis)) {
+                        LNET_UNLOCK(flags);
                         ++i;
                         if ((i & (-i)) == i)
                                 CDEBUG(D_WARNING,"Waiting for %d zombie NIs\n",
-                                       lnet_apini.apini_nzombie_nis);
+                                       the_lnet.ln_nzombie_nis);
                         cfs_pause(cfs_time_seconds(1));
-                        PTL_LOCK(flags);
+                        LNET_LOCK(flags);
                 }
 
-                ni = list_entry(lnet_apini.apini_zombie_nis.next,
-                                ptl_ni_t, ni_list);
+                ni = list_entry(the_lnet.ln_zombie_nis.next,
+                                lnet_ni_t, ni_list);
                 list_del(&ni->ni_list);
-                ni->ni_nal->nal_refcount--;
+                ni->ni_lnd->lnd_refcount--;
 
-                PTL_UNLOCK(flags);
+                LNET_UNLOCK(flags);
 
-                islo = ni->ni_nal->nal_type == LONAL;
+                islo = ni->ni_lnd->lnd_type == LOLND;
 
                 LASSERT (!in_interrupt());
-                (ni->ni_nal->nal_shutdown)(ni);
+                (ni->ni_lnd->lnd_shutdown)(ni);
 
-                /* can't deref nal anymore now; it might have unregistered
+                /* can't deref lnd anymore now; it might have unregistered
                  * itself...  */
 
                 if (!islo)
@@ -690,27 +690,27 @@ ptl_shutdown_nalnis (void)
 
                 PORTAL_FREE(ni, sizeof(*ni));
 
-                PTL_LOCK(flags);
-                lnet_apini.apini_nzombie_nis--;
+                LNET_LOCK(flags);
+                the_lnet.ln_nzombie_nis--;
         }
-        PTL_UNLOCK(flags);
+        LNET_UNLOCK(flags);
 
-        if (lnet_apini.apini_network_tokens != NULL) {
-                PORTAL_FREE(lnet_apini.apini_network_tokens,
-                            lnet_apini.apini_network_tokens_nob);
-                lnet_apini.apini_network_tokens = NULL;
+        if (the_lnet.ln_network_tokens != NULL) {
+                PORTAL_FREE(the_lnet.ln_network_tokens,
+                            the_lnet.ln_network_tokens_nob);
+                the_lnet.ln_network_tokens = NULL;
         }
 }
 
 int
-ptl_startup_nalnis (void)
+lnet_startup_lndnis (void)
 {
-        ptl_nal_t         *nal;
-        ptl_ni_t          *ni;
+        lnd_t             *lnd;
+        lnet_ni_t         *ni;
         struct list_head   nilist;
-        int          rc = 0;
+        int                rc = 0;
         unsigned long      flags;
-        int                nal_type;
+        int                lnd_type;
         int                retry;
 
         INIT_LIST_HEAD(&nilist);
@@ -719,83 +719,83 @@ ptl_startup_nalnis (void)
                 goto failed;
 
         while (!list_empty(&nilist)) {
-                ni = list_entry(nilist.next, ptl_ni_t, ni_list);
-                nal_type = PTL_NETNAL(PTL_NIDNET(ni->ni_nid));
+                ni = list_entry(nilist.next, lnet_ni_t, ni_list);
+                lnd_type = PTL_NETTYP(PTL_NIDNET(ni->ni_nid));
 
-                LASSERT (libcfs_isknown_nal(nal_type));
+                LASSERT (libcfs_isknown_lnd(lnd_type));
 
-                PTL_MUTEX_DOWN(&lnet_apini.apini_nal_mutex);
+                LNET_MUTEX_DOWN(&the_lnet.ln_lnd_mutex);
 
                 for (retry = 0;; retry = 1) {
-                        nal = ptl_find_nal_by_type(nal_type);
-                        if (nal != NULL) 
+                        lnd = lnet_find_lnd_by_type(lnd_type);
+                        if (lnd != NULL) 
                                 break;
 
-                        PTL_MUTEX_UP(&lnet_apini.apini_nal_mutex);
+                        LNET_MUTEX_UP(&the_lnet.ln_lnd_mutex);
 #ifdef __KERNEL__
                         if (retry) {
-                                CERROR("Can't load NAL %s, module %s\n",
-                                       libcfs_nal2str(nal_type),
-                                       libcfs_nal2modname(nal_type));
+                                CERROR("Can't load LND %s, module %s\n",
+                                       libcfs_lnd2str(lnd_type),
+                                       libcfs_lnd2modname(lnd_type));
                                 goto failed;
                         }
 
-                        request_module(libcfs_nal2modname(nal_type));
+                        request_module(libcfs_lnd2modname(lnd_type));
 #else
-                        CERROR("NAL %s not supported\n",
-                               libcfs_nal2str(nal_type));
+                        CERROR("LND %s not supported\n",
+                               libcfs_lnd2str(lnd_type));
                         goto failed;
 #endif
-                        PTL_MUTEX_DOWN(&lnet_apini.apini_nal_mutex);
+                        LNET_MUTEX_DOWN(&the_lnet.ln_lnd_mutex);
                 }
 
                 ni->ni_refcount = 1;
 
-                PTL_LOCK(flags);
-                nal->nal_refcount++;
-                PTL_UNLOCK(flags);
+                LNET_LOCK(flags);
+                lnd->lnd_refcount++;
+                LNET_UNLOCK(flags);
                 
-                ni->ni_nal = nal;
+                ni->ni_lnd = lnd;
 
-                rc = (nal->nal_startup)(ni);
+                rc = (lnd->lnd_startup)(ni);
 
-                PTL_MUTEX_UP(&lnet_apini.apini_nal_mutex);
+                LNET_MUTEX_UP(&the_lnet.ln_lnd_mutex);
 
                 if (rc != 0) {
                         CERROR("Error %d starting up NI %s\n",
-                               rc, libcfs_nal2str(nal->nal_type));
-                        PTL_LOCK(flags);
-                        nal->nal_refcount--;
-                        PTL_UNLOCK(flags);
+                               rc, libcfs_lnd2str(lnd->lnd_type));
+                        LNET_LOCK(flags);
+                        lnd->lnd_refcount--;
+                        LNET_UNLOCK(flags);
                         goto failed;
                 }
 
-                if (nal->nal_type != LONAL) {
+                if (lnd->lnd_type != LOLND) {
                         LCONSOLE(0, "Added NI %s\n", 
                                  libcfs_nid2str(ni->ni_nid));
 
                         /* Handle nidstrings for network 0 just like this one */
-                        if (lnet_apini.apini_ptlcompat > 0)
-                                libcfs_setnet0alias(nal->nal_type);
+                        if (the_lnet.ln_ptlcompat > 0)
+                                libcfs_setnet0alias(lnd->lnd_type);
                 }
                 
                 list_del(&ni->ni_list);
                 
-                PTL_LOCK(flags);
-                list_add_tail(&ni->ni_list, &lnet_apini.apini_nis);
-                PTL_UNLOCK(flags);
+                LNET_LOCK(flags);
+                list_add_tail(&ni->ni_list, &the_lnet.ln_nis);
+                LNET_UNLOCK(flags);
         }
 
-        ptl_loni = lnet_net2ni(PTL_MKNET(LONAL, 0));
-        LASSERT (ptl_loni != NULL);
+        lnet_loni = lnet_net2ni(PTL_MKNET(LOLND, 0));
+        LASSERT (lnet_loni != NULL);
 
         return 0;
         
  failed:
-        ptl_shutdown_nalnis();
+        lnet_shutdown_lndnis();
 
         while (!list_empty(&nilist)) {
-                ni = list_entry(nilist.next, ptl_ni_t, ni_list);
+                ni = list_entry(nilist.next, lnet_ni_t, ni_list);
                 list_del(&ni->ni_list);
                 PORTAL_FREE(ni, sizeof(*ni));
         }
@@ -804,40 +804,40 @@ ptl_startup_nalnis (void)
 }
 
 #ifndef __KERNEL__
-extern ptl_nal_t tcpnal_nal;
+extern lnd_t the_tcplnd;
 #endif
 
 int
 LNetInit(void)
 {
-        ptl_assert_wire_constants ();
+        lnet_assert_wire_constants ();
 
-        LASSERT (!lnet_apini.apini_init);
+        LASSERT (!the_lnet.ln_init);
         
-        lnet_apini.apini_refcount = 0;
-        CFS_INIT_LIST_HEAD(&lnet_apini.apini_nals);
+        the_lnet.ln_refcount = 0;
+        CFS_INIT_LIST_HEAD(&the_lnet.ln_lnds);
 
 #ifdef __KERNEL__
-        spin_lock_init (&lnet_apini.apini_lock);
-        cfs_waitq_init (&lnet_apini.apini_waitq);
-        init_mutex(&lnet_apini.apini_nal_mutex);
-        init_mutex(&lnet_apini.apini_api_mutex);
+        spin_lock_init (&the_lnet.ln_lock);
+        cfs_waitq_init (&the_lnet.ln_waitq);
+        init_mutex(&the_lnet.ln_lnd_mutex);
+        init_mutex(&the_lnet.ln_api_mutex);
 #else
-        pthread_mutex_init(&lnet_apini.apini_mutex, NULL);
-        pthread_cond_init(&lnet_apini.apini_cond, NULL);
-        pthread_mutex_init(&lnet_apini.apini_nal_mutex, NULL);
-        pthread_mutex_init(&lnet_apini.apini_api_mutex, NULL);
+        pthread_mutex_init(&the_lnet.ln_mutex, NULL);
+        pthread_cond_init(&the_lnet.ln_cond, NULL);
+        pthread_mutex_init(&the_lnet.ln_lnd_mutex, NULL);
+        pthread_mutex_init(&the_lnet.ln_api_mutex, NULL);
 #endif
 
-        lnet_apini.apini_init = 1;
+        the_lnet.ln_init = 1;
 
         if (!strcmp(portals_compatibility, "none")) {
-                lnet_apini.apini_ptlcompat = 0;
+                the_lnet.ln_ptlcompat = 0;
         } else if (!strcmp(portals_compatibility, "weak")) {
-                lnet_apini.apini_ptlcompat = 1;
+                the_lnet.ln_ptlcompat = 1;
                 LCONSOLE_WARN("Starting in weak portals-compatible mode\n");
         } else if (!strcmp(portals_compatibility, "strong")) {
-                lnet_apini.apini_ptlcompat = 2;
+                the_lnet.ln_ptlcompat = 2;
                 LCONSOLE_WARN("Starting in strong portals-compatible mode\n");
         } else {
                 LCONSOLE_ERROR("portals_compatibility=\"%s\" not supported\n",
@@ -849,9 +849,9 @@ LNetInit(void)
          * loads, and unregister themselves when their module is unloaded.
          * Otherwise they are plugged in explicitly here... */
 
-        lnet_register_nal (&ptl_lonal);
+        lnet_register_lnd (&the_lolnd);
 #ifndef __KERNEL__
-        lnet_register_nal (&tcpnal_nal);
+        lnet_register_lnd (&the_tcplnd);
 #endif
         return 0;
 }
@@ -859,18 +859,18 @@ LNetInit(void)
 void
 LNetFini(void)
 {
-        LASSERT (lnet_apini.apini_init);
-        LASSERT (lnet_apini.apini_refcount == 0);
+        LASSERT (the_lnet.ln_init);
+        LASSERT (the_lnet.ln_refcount == 0);
 
-        /* See comment where tcpnal_nal registers itself */
+        /* See comment where the_tcplnd registers itself */
 #ifndef __KERNEL__
-        lnet_unregister_nal(&tcpnal_nal);
+        lnet_unregister_lnd(&the_tcplnd);
 #endif
-        lnet_unregister_nal(&ptl_lonal);
+        lnet_unregister_lnd(&the_lolnd);
 
-        LASSERT (list_empty(&lnet_apini.apini_nals));
+        LASSERT (list_empty(&the_lnet.ln_lnds));
 
-        lnet_apini.apini_init = 0;
+        the_lnet.ln_init = 0;
 }
 
 int
@@ -878,65 +878,65 @@ LNetNIInit(lnet_pid_t requested_pid)
 {
         int         rc;
 
-        PTL_MUTEX_DOWN(&lnet_apini.apini_api_mutex);
+        LNET_MUTEX_DOWN(&the_lnet.ln_api_mutex);
 
-        LASSERT (lnet_apini.apini_init);
-        CDEBUG(D_OTHER, "refs %d\n", lnet_apini.apini_refcount);
+        LASSERT (the_lnet.ln_init);
+        CDEBUG(D_OTHER, "refs %d\n", the_lnet.ln_refcount);
 
-        if (lnet_apini.apini_refcount > 0) {
-                rc = lnet_apini.apini_refcount++;
+        if (the_lnet.ln_refcount > 0) {
+                rc = the_lnet.ln_refcount++;
                 goto out;
         }
 
-        rc = lnet_apini_init(requested_pid);
+        rc = lnet_init(requested_pid);
         if (rc != 0)
                 goto out;
 
         rc = kpr_initialise();
         if (rc != 0) {
-                lnet_apini_fini();
+                lnet_fini();
                 goto out;
         }
         
-        rc = ptl_startup_nalnis();
+        rc = lnet_startup_lndnis();
         if (rc != 0) {
                 kpr_finalise();
-                lnet_apini_fini();
+                lnet_fini();
                 goto out;
         }
 
         rc = lnet_acceptor_start();
         if (rc != 0) {
-                ptl_shutdown_nalnis();
+                lnet_shutdown_lndnis();
                 kpr_finalise();
-                lnet_apini_fini();
+                lnet_fini();
                 goto out;
         }
 
-        lnet_apini.apini_refcount = 1;
+        the_lnet.ln_refcount = 1;
 
  out:
-        PTL_MUTEX_UP(&lnet_apini.apini_api_mutex);
+        LNET_MUTEX_UP(&the_lnet.ln_api_mutex);
         return rc;
 }
 
 int
 LNetNIFini()
 {
-        PTL_MUTEX_DOWN(&lnet_apini.apini_api_mutex);
+        LNET_MUTEX_DOWN(&the_lnet.ln_api_mutex);
 
-        LASSERT (lnet_apini.apini_init);
-        LASSERT (lnet_apini.apini_refcount > 0);
+        LASSERT (the_lnet.ln_init);
+        LASSERT (the_lnet.ln_refcount > 0);
 
-        lnet_apini.apini_refcount--;
-        if (lnet_apini.apini_refcount == 0) {
+        the_lnet.ln_refcount--;
+        if (the_lnet.ln_refcount == 0) {
                 lnet_acceptor_stop();
-                ptl_shutdown_nalnis();
+                lnet_shutdown_lndnis();
                 kpr_finalise();
-                lnet_apini_fini();
+                lnet_fini();
         }
 
-        PTL_MUTEX_UP(&lnet_apini.apini_api_mutex);
+        LNET_MUTEX_UP(&the_lnet.ln_api_mutex);
         return 0;
 }
 
@@ -945,11 +945,11 @@ LNetCtl(unsigned int cmd, void *arg)
 {
         struct portal_ioctl_data *data = arg;
         lnet_process_id_t         id;
-        ptl_ni_t                 *ni;
+        lnet_ni_t                *ni;
         int                       rc;
 
-        LASSERT (lnet_apini.apini_init);
-        LASSERT (lnet_apini.apini_refcount > 0);
+        LASSERT (the_lnet.ln_init);
+        LASSERT (the_lnet.ln_refcount > 0);
 
         switch (cmd) {
         case IOC_PORTAL_GET_NI:
@@ -958,7 +958,7 @@ LNetCtl(unsigned int cmd, void *arg)
                 return rc;
 
         case IOC_PORTAL_FAIL_NID:
-                return ptl_fail_nid(data->ioc_nid, data->ioc_count);
+                return lnet_fail_nid(data->ioc_nid, data->ioc_count);
                 
         case IOC_PORTAL_ADD_ROUTE:
         case IOC_PORTAL_DEL_ROUTE:
@@ -967,19 +967,19 @@ LNetCtl(unsigned int cmd, void *arg)
                 return kpr_ctl(cmd, arg);
 
         case IOC_PORTAL_PORTALS_COMPATIBILITY:
-                return lnet_apini.apini_ptlcompat;
+                return the_lnet.ln_ptlcompat;
 
         default:
                 ni = lnet_net2ni(data->ioc_net);
                 if (ni == NULL)
                         return -EINVAL;
 
-                if (ni->ni_nal->nal_ctl == NULL)
+                if (ni->ni_lnd->lnd_ctl == NULL)
                         rc = -EINVAL;
                 else
-                        rc = ni->ni_nal->nal_ctl(ni, cmd, arg);
+                        rc = ni->ni_lnd->lnd_ctl(ni, cmd, arg);
 
-                ptl_ni_decref(ni);
+                lnet_ni_decref(ni);
                 return rc;
         }
         /* not reached */
@@ -988,29 +988,29 @@ LNetCtl(unsigned int cmd, void *arg)
 int
 LNetGetId(unsigned int index, lnet_process_id_t *id)
 {
-        ptl_ni_t         *ni;
+        lnet_ni_t        *ni;
         unsigned long     flags;
         struct list_head *tmp;
         int               rc = -ENOENT;
 
-        LASSERT (lnet_apini.apini_init);
-        LASSERT (lnet_apini.apini_refcount > 0);
+        LASSERT (the_lnet.ln_init);
+        LASSERT (the_lnet.ln_refcount > 0);
 
-        PTL_LOCK(flags);
+        LNET_LOCK(flags);
 
-        list_for_each(tmp, &lnet_apini.apini_nis) {
+        list_for_each(tmp, &the_lnet.ln_nis) {
                 if (index-- != 0)
                         continue;
                 
-                ni = list_entry(tmp, ptl_ni_t, ni_list);
+                ni = list_entry(tmp, lnet_ni_t, ni_list);
 
                 id->nid = ni->ni_nid;
-                id->pid = lnet_apini.apini_pid;
+                id->pid = the_lnet.ln_pid;
                 rc = 0;
                 break;
         }
 
-        PTL_UNLOCK(flags);
+        LNET_UNLOCK(flags);
 
         return rc;
 }
index 4fdef05..58ef458 100644 (file)
@@ -26,14 +26,14 @@ typedef struct {                                /* tmp struct for parsing routes
        struct list_head   ptb_list;            /* stash on lists */
        int                ptb_size;            /* allocated size */
        char               ptb_text[0];         /* text buffer */
-} ptl_text_buf_t;
+} lnet_text_buf_t;
 
-static int ptl_tbnob = 0;                      /* track text buf allocation */
-#define PTL_MAX_TEXTBUF_NOB     (64<<10)       /* bound allocation */
-#define PTL_SINGLE_TEXTBUF_NOB  (4<<10)
+static int lnet_tbnob = 0;                     /* track text buf allocation */
+#define LNET_MAX_TEXTBUF_NOB     (64<<10)      /* bound allocation */
+#define LNET_SINGLE_TEXTBUF_NOB  (4<<10)
 
 void 
-ptl_syntax(char *name, char *str, int offset, int width)
+lnet_syntax(char *name, char *str, int offset, int width)
 {
         const char *dots = "................................"
                            "................................"
@@ -59,7 +59,7 @@ ptl_syntax(char *name, char *str, int offset, int width)
 }
 
 int 
-ptl_issep (char c)
+lnet_issep (char c)
 {
        switch (c) {
        case '\n':
@@ -72,7 +72,7 @@ ptl_issep (char c)
 }
 
 int
-ptl_iswhite (char c)
+lnet_iswhite (char c)
 {
        switch (c) {
        case ' ':
@@ -86,16 +86,16 @@ ptl_iswhite (char c)
 }
 
 char *
-ptl_trimwhite(char *str)
+lnet_trimwhite(char *str)
 {
        char *end;
        
-       while (ptl_iswhite(*str))
+       while (lnet_iswhite(*str))
                str++;
        
        end = str + strlen(str);
        while (end > str) {
-               if (!ptl_iswhite(end[-1]))
+               if (!lnet_iswhite(end[-1]))
                        break;
                end--;
        }
@@ -105,13 +105,13 @@ ptl_trimwhite(char *str)
 }
 
 int
-ptl_net_unique(__u32 net, struct list_head *nilist)
+lnet_net_unique(__u32 net, struct list_head *nilist)
 {
         struct list_head *tmp;
-        ptl_ni_t         *ni;
+        lnet_ni_t        *ni;
 
         list_for_each (tmp, nilist) {
-                ni = list_entry(tmp, ptl_ni_t, ni_list);
+                ni = list_entry(tmp, lnet_ni_t, ni_list);
 
                 if (PTL_NIDNET(ni->ni_nid) == net)
                         return 0;
@@ -120,12 +120,12 @@ ptl_net_unique(__u32 net, struct list_head *nilist)
         return 1;
 }
 
-ptl_ni_t *
-ptl_new_ni(__u32 net, struct list_head *nilist)
+lnet_ni_t *
+lnet_new_ni(__u32 net, struct list_head *nilist)
 {
-        ptl_ni_t *ni;
+        lnet_ni_t *ni;
 
-        if (!ptl_net_unique(net, nilist)) {
+        if (!lnet_net_unique(net, nilist)) {
                 LCONSOLE_ERROR("Duplicate network specified: %s\n",
                                libcfs_net2str(net));
                 return NULL;
@@ -151,14 +151,14 @@ ptl_new_ni(__u32 net, struct list_head *nilist)
 int
 lnet_parse_networks(struct list_head *nilist, char *networks)
 {
-       int       tokensize = strlen(networks) + 1;
-        char     *tokens;
-        char     *str;
-        ptl_ni_t *ni;
-        __u32     net;
-        int       count = 0;
-
-       if (strlen(networks) > PTL_SINGLE_TEXTBUF_NOB) {
+       int        tokensize = strlen(networks) + 1;
+        char      *tokens;
+        char      *str;
+        lnet_ni_t *ni;
+        __u32      net;
+        int        count = 0;
+
+       if (strlen(networks) > LNET_SINGLE_TEXTBUF_NOB) {
                /* _WAY_ conservative */
                LCONSOLE_ERROR("Can't parse networks: string too long\n");
                return -EINVAL;
@@ -170,13 +170,13 @@ lnet_parse_networks(struct list_head *nilist, char *networks)
                return -ENOMEM;
         }
 
-        lnet_apini.apini_network_tokens = tokens;
-        lnet_apini.apini_network_tokens_nob = tokensize;
+        the_lnet.ln_network_tokens = tokens;
+        the_lnet.ln_network_tokens_nob = tokensize;
         memcpy (tokens, networks, tokensize);
        str = tokens;
         
         /* Add in the loopback network */
-        ni = ptl_new_ni(PTL_MKNET(LONAL, 0), nilist);
+        ni = lnet_new_ni(PTL_MKNET(LOLND, 0), nilist);
         if (ni == NULL)
                 goto failed;
         
@@ -196,15 +196,15 @@ lnet_parse_networks(struct list_head *nilist, char *networks)
 
                        if (comma != NULL)
                                *comma++ = 0;
-                       net = libcfs_str2net(ptl_trimwhite(str));
+                       net = libcfs_str2net(lnet_trimwhite(str));
                        
                        if (net == PTL_NIDNET(LNET_NID_ANY)) {
-                                ptl_syntax("networks", networks, 
-                                           str - tokens, strlen(str));
+                                lnet_syntax("networks", networks, 
+                                            str - tokens, strlen(str));
                                 goto failed;
                         }
 
-                        if (ptl_new_ni(net, nilist) == NULL)
+                        if (lnet_new_ni(net, nilist) == NULL)
                                 goto failed;
 
                        str = comma;
@@ -212,10 +212,10 @@ lnet_parse_networks(struct list_head *nilist, char *networks)
                }
 
                *bracket = 0;
-               net = libcfs_str2net(ptl_trimwhite(str));
+               net = libcfs_str2net(lnet_trimwhite(str));
                if (net == PTL_NIDNET(LNET_NID_ANY)) {
-                        ptl_syntax("networks", networks,
-                                   str - tokens, strlen(str));
+                        lnet_syntax("networks", networks,
+                                    str - tokens, strlen(str));
                         goto failed;
                 } 
 
@@ -225,7 +225,7 @@ lnet_parse_networks(struct list_head *nilist, char *networks)
                         goto failed;
                 }
 
-                ni = ptl_new_ni(net, nilist);
+                ni = lnet_new_ni(net, nilist);
                 if (ni == NULL)
                         goto failed;
 
@@ -234,7 +234,7 @@ lnet_parse_networks(struct list_head *nilist, char *networks)
 
                bracket = strchr(iface, ')');
                if (bracket == NULL) {
-                        ptl_syntax ("networks", networks,
+                        lnet_syntax("networks", networks,
                                     iface - tokens, strlen(iface));
                         goto failed;
                }
@@ -245,14 +245,14 @@ lnet_parse_networks(struct list_head *nilist, char *networks)
                        if (comma != NULL)
                                *comma++ = 0;
                        
-                       iface = ptl_trimwhite(iface);
+                       iface = lnet_trimwhite(iface);
                        if (*iface == 0) {
-                                ptl_syntax("networks", networks, 
-                                           iface - tokens, strlen(iface));
+                                lnet_syntax("networks", networks, 
+                                            iface - tokens, strlen(iface));
                                 goto failed;
                         }
 
-                        if (niface == PTL_MAX_INTERFACES) {
+                        if (niface == LNET_MAX_INTERFACES) {
                                 LCONSOLE_ERROR("Too many interfaces for net %s\n",
                                                libcfs_net2str(net));
                                 goto failed;
@@ -266,9 +266,9 @@ lnet_parse_networks(struct list_head *nilist, char *networks)
                comma = strchr(bracket + 1, ',');
                if (comma != NULL) {
                        *comma = 0;
-                       str = ptl_trimwhite(str);
+                       str = lnet_trimwhite(str);
                        if (*str != 0) {
-                                ptl_syntax ("networks", networks,
+                                lnet_syntax("networks", networks,
                                             str - tokens, strlen(str));
                                 goto failed;
                         }
@@ -276,9 +276,9 @@ lnet_parse_networks(struct list_head *nilist, char *networks)
                        continue;
                }
                
-               str = ptl_trimwhite(str);
+               str = lnet_trimwhite(str);
                if (*str != 0) {
-                        ptl_syntax ("networks", networks,
+                        lnet_syntax("networks", networks,
                                     str - tokens, strlen(str));
                         goto failed;
                 }
@@ -292,31 +292,31 @@ lnet_parse_networks(struct list_head *nilist, char *networks)
 
  failed:
         while (!list_empty(nilist)) {
-                ni = list_entry(nilist->next, ptl_ni_t, ni_list);
+                ni = list_entry(nilist->next, lnet_ni_t, ni_list);
                 
                 list_del(&ni->ni_list);
                 PORTAL_FREE(ni, sizeof(*ni));
         }
        PORTAL_FREE(tokens, tokensize);
-        lnet_apini.apini_network_tokens = NULL;
+        the_lnet.ln_network_tokens = NULL;
 
         return -EINVAL;
 }
 
-ptl_text_buf_t *
-ptl_new_text_buf (int str_len) 
+lnet_text_buf_t *
+lnet_new_text_buf (int str_len) 
 {
-       ptl_text_buf_t *ptb;
-       int             nob;
+       lnet_text_buf_t *ptb;
+       int              nob;
 
-       nob = offsetof(ptl_text_buf_t, ptb_text[str_len + 1]);
-       if (nob > PTL_SINGLE_TEXTBUF_NOB) {
+       nob = offsetof(lnet_text_buf_t, ptb_text[str_len + 1]);
+       if (nob > LNET_SINGLE_TEXTBUF_NOB) {
                /* _way_ conservative for "route net gateway..." */
                CERROR("text buffer too big\n");
                return NULL;
        }
 
-       if (ptl_tbnob + nob > PTL_MAX_TEXTBUF_NOB) {
+       if (lnet_tbnob + nob > LNET_MAX_TEXTBUF_NOB) {
                CERROR("Too many text buffers\n");
                return NULL;
        }
@@ -326,77 +326,77 @@ ptl_new_text_buf (int str_len)
                return NULL;
 
        ptb->ptb_size = nob;
-       ptl_tbnob += nob;
+       lnet_tbnob += nob;
        return ptb;
 }
 
 void
-ptl_free_text_buf (ptl_text_buf_t *ptb)
+lnet_free_text_buf (lnet_text_buf_t *ptb)
 {
        PORTAL_FREE(ptb, ptb->ptb_size);
-       ptl_tbnob -= ptb->ptb_size;
+       lnet_tbnob -= ptb->ptb_size;
 }
 
 void
-ptl_free_text_bufs(struct list_head *tbs)
+lnet_free_text_bufs(struct list_head *tbs)
 {
-       ptl_text_buf_t  *ptb;
+       lnet_text_buf_t  *ptb;
        
        while (!list_empty(tbs)) {
-               ptb = list_entry(tbs->next, ptl_text_buf_t, ptb_list);
+               ptb = list_entry(tbs->next, lnet_text_buf_t, ptb_list);
                
                list_del(&ptb->ptb_list);
-               ptl_free_text_buf(ptb);
+               lnet_free_text_buf(ptb);
        }
 }
 
 void
-ptl_print_text_bufs(struct list_head *tbs)
+lnet_print_text_bufs(struct list_head *tbs)
 {
        struct list_head *tmp;
-       ptl_text_buf_t   *ptb;
+       lnet_text_buf_t   *ptb;
 
        list_for_each (tmp, tbs) {
-               ptb = list_entry(tmp, ptl_text_buf_t, ptb_list);
+               ptb = list_entry(tmp, lnet_text_buf_t, ptb_list);
 
                CDEBUG(D_WARNING, "%s\n", ptb->ptb_text);
        }
 
-       CDEBUG(D_WARNING, "%d allocated\n", ptl_tbnob);
+       CDEBUG(D_WARNING, "%d allocated\n", lnet_tbnob);
 }
 
 int
-ptl_str2tbs_sep (struct list_head *tbs, char *str) 
+lnet_str2tbs_sep (struct list_head *tbs, char *str) 
 {
        struct list_head  pending;
        char             *sep;
        int               nob;
         int               i;
-       ptl_text_buf_t   *ptb;
+       lnet_text_buf_t   *ptb;
 
        INIT_LIST_HEAD(&pending);
 
        /* Split 'str' into separate commands */
        for (;;) {
                 /* skip leading whitespace */
-                while (ptl_iswhite(*str))
+                while (lnet_iswhite(*str))
                         str++;
                 
                /* scan for separator or comment */
                for (sep = str; *sep != 0; sep++)
-                       if (ptl_issep(*sep) || *sep == '#')
+                       if (lnet_issep(*sep) || *sep == '#')
                                break;
 
                nob = sep - str;
                if (nob > 0) {
-                       ptb = ptl_new_text_buf(nob + 1);
+                       ptb = lnet_new_text_buf(nob + 1);
                        if (ptb == NULL) {
-                               ptl_free_text_bufs(&pending);
+                               lnet_free_text_bufs(&pending);
                                return -1;
                        }
                        
                         for (i = 0; i < nob; i++)
-                                if (ptl_iswhite(str[i]))
+                                if (lnet_iswhite(str[i]))
                                         ptb->ptb_text[i] = ' ';
                                 else
                                         ptb->ptb_text[i] = str[i];
@@ -410,7 +410,7 @@ ptl_str2tbs_sep (struct list_head *tbs, char *str)
                        /* scan for separator */
                        do {
                                sep++;
-                       } while (*sep != 0 && !ptl_issep(*sep));
+                       } while (*sep != 0 && !lnet_issep(*sep));
                }
                
                if (*sep == 0)
@@ -424,18 +424,18 @@ ptl_str2tbs_sep (struct list_head *tbs, char *str)
 }
 
 int
-ptl_expand1tb (struct list_head *list, 
+lnet_expand1tb (struct list_head *list, 
               char *str, char *sep1, char *sep2, 
               char *item, int itemlen)
 {
        int             len1 = sep1 - str;
        int             len2 = strlen(sep2 + 1);
-       ptl_text_buf_t *ptb;
+       lnet_text_buf_t *ptb;
 
        LASSERT (*sep1 == '[');
        LASSERT (*sep2 == ']');
 
-       ptb = ptl_new_text_buf(len1 + itemlen + len2 + 1);
+       ptb = lnet_new_text_buf(len1 + itemlen + len2 + 1);
        if (ptb == NULL)
                return -ENOMEM;
        
@@ -449,7 +449,7 @@ ptl_expand1tb (struct list_head *list,
 }
 
 int
-ptl_str2tbs_expand (struct list_head *tbs, char *str)
+lnet_str2tbs_expand (struct list_head *tbs, char *str)
 {
        char              num[16];
        struct list_head  pending;
@@ -488,8 +488,8 @@ ptl_str2tbs_expand (struct list_head *tbs, char *str)
                        if (sscanf(parsed, "%d-%d%n", &lo, &hi, &scanned) < 2) {
 
                                /* simple string enumeration */
-                               if (ptl_expand1tb(&pending, str, sep, sep2,
-                                                 parsed, enditem - parsed) != 0)
+                               if (lnet_expand1tb(&pending, str, sep, sep2,
+                                                   parsed, enditem - parsed) != 0)
                                        goto failed;
                                
                                continue;
@@ -514,8 +514,8 @@ ptl_str2tbs_expand (struct list_head *tbs, char *str)
                        if (nob + 1 == sizeof(num))
                                goto failed;
                        
-                       if (ptl_expand1tb(&pending, str, sep, sep2, 
-                                         num, nob) != 0)
+                       if (lnet_expand1tb(&pending, str, sep, sep2, 
+                                           num, nob) != 0)
                                goto failed;
                }
        }
@@ -524,7 +524,7 @@ ptl_str2tbs_expand (struct list_head *tbs, char *str)
        return 1;
        
  failed:
-       ptl_free_text_bufs(&pending);
+       lnet_free_text_bufs(&pending);
        return -1;
 }
 
@@ -544,7 +544,7 @@ int
 lnet_parse_route (char *str)
 {
        /* static scratch buffer OK (single threaded) */
-       static char       cmd[PTL_SINGLE_TEXTBUF_NOB];
+       static char       cmd[LNET_SINGLE_TEXTBUF_NOB];
 
        struct list_head  nets;
        struct list_head  gateways;
@@ -552,7 +552,7 @@ lnet_parse_route (char *str)
        struct list_head *tmp2;
        __u32             net;
        lnet_nid_t        nid;
-       ptl_text_buf_t   *ptb;
+       lnet_text_buf_t   *ptb;
        int               rc;
        char             *sep;
        char             *token = str;
@@ -571,7 +571,7 @@ lnet_parse_route (char *str)
        sep = str;
        for (;;) {
                /* scan for token start */
-               while (ptl_iswhite(*sep))
+               while (lnet_iswhite(*sep))
                        sep++;
                if (*sep == 0) {
                        if (ntokens < (got_hops ? 3 : 2))
@@ -583,7 +583,7 @@ lnet_parse_route (char *str)
                token = sep++;
 
                /* scan for token end */
-               while (*sep != 0 && !ptl_iswhite(*sep))
+               while (*sep != 0 && !lnet_iswhite(*sep))
                        sep++;
                if (*sep != 0)
                        *sep++ = 0;
@@ -598,7 +598,7 @@ lnet_parse_route (char *str)
                        tmp2 = &gateways;       /* expanding gateways */
                 }
                 
-               ptb = ptl_new_text_buf(strlen(token));
+               ptb = lnet_new_text_buf(strlen(token));
                if (ptb == NULL)
                        goto out;
 
@@ -607,9 +607,9 @@ lnet_parse_route (char *str)
                list_add_tail(tmp1, tmp2);
                
                while (tmp1 != tmp2) {
-                       ptb = list_entry(tmp1, ptl_text_buf_t, ptb_list);
+                       ptb = list_entry(tmp1, lnet_text_buf_t, ptb_list);
 
-                       rc = ptl_str2tbs_expand(tmp1->next, ptb->ptb_text);
+                       rc = lnet_str2tbs_expand(tmp1->next, ptb->ptb_text);
                        if (rc < 0)
                                goto token_error;
 
@@ -617,7 +617,7 @@ lnet_parse_route (char *str)
                        
                        if (rc > 0) {           /* expanded! */
                                list_del(&ptb->ptb_list);
-                               ptl_free_text_buf(ptb);
+                               lnet_free_text_buf(ptb);
                                continue;
                        }
 
@@ -640,12 +640,12 @@ lnet_parse_route (char *str)
        LASSERT (!list_empty(&gateways));
 
        list_for_each (tmp1, &nets) {
-               ptb = list_entry(tmp1, ptl_text_buf_t, ptb_list);
+               ptb = list_entry(tmp1, lnet_text_buf_t, ptb_list);
                net = libcfs_str2net(ptb->ptb_text);
                LASSERT (net != PTL_NIDNET(LNET_NID_ANY));
 
                list_for_each (tmp2, &gateways) {
-                       ptb = list_entry(tmp2, ptl_text_buf_t, ptb_list);
+                       ptb = list_entry(tmp2, lnet_text_buf_t, ptb_list);
                        nid = libcfs_str2nid(ptb->ptb_text);
                        LASSERT (nid != LNET_NID_ANY);
 
@@ -664,28 +664,28 @@ lnet_parse_route (char *str)
         goto out;
         
  token_error:
-       ptl_syntax("routes", cmd, token - str, strlen(token));
+       lnet_syntax("routes", cmd, token - str, strlen(token));
  out:
-       ptl_free_text_bufs(&nets);
-       ptl_free_text_bufs(&gateways);
+       lnet_free_text_bufs(&nets);
+       lnet_free_text_bufs(&gateways);
        return myrc;
 }
 
 int
 lnet_parse_route_tbs(struct list_head *tbs)
 {
-       ptl_text_buf_t   *ptb;
+       lnet_text_buf_t   *ptb;
 
        while (!list_empty(tbs)) {
-               ptb = list_entry(tbs->next, ptl_text_buf_t, ptb_list);
+               ptb = list_entry(tbs->next, lnet_text_buf_t, ptb_list);
 
                if (lnet_parse_route(ptb->ptb_text) < 0) {
-                       ptl_free_text_bufs(tbs);
+                       lnet_free_text_bufs(tbs);
                        return -EINVAL;
                }
 
                list_del(&ptb->ptb_list);
-               ptl_free_text_buf(ptb);
+               lnet_free_text_buf(ptb);
        }
 
         return 0;
@@ -697,7 +697,7 @@ lnet_parse_routes (char *routes)
        struct list_head  tbs;
        int               rc = 0;
 
-        if (lnet_apini.apini_ptlcompat > 0 && 
+        if (the_lnet.ln_ptlcompat > 0 && 
             routes[0] != 0) {
                 /* Can't route when running in compatibility mode */
                 LCONSOLE_ERROR("Route tables are not supported when "
@@ -707,20 +707,20 @@ lnet_parse_routes (char *routes)
         
        INIT_LIST_HEAD(&tbs);
 
-       if (ptl_str2tbs_sep(&tbs, routes) < 0) {
+       if (lnet_str2tbs_sep(&tbs, routes) < 0) {
                CERROR("Error parsing routes\n");
                rc = -EINVAL;
        } else {
                 rc = lnet_parse_route_tbs(&tbs);
         }
 
-       LASSERT (ptl_tbnob == 0);
+       LASSERT (lnet_tbnob == 0);
        return rc;
 }
 
 #ifdef __KERNEL__
 int
-lnet_set_ip_niaddr (ptl_ni_t *ni) 
+lnet_set_ip_niaddr (lnet_ni_t *ni) 
 {
         __u32  net = PTL_NIDNET(ni->ni_nid);
         char **names;
@@ -736,7 +736,7 @@ lnet_set_ip_niaddr (ptl_ni_t *ni)
 
         if (ni->ni_interfaces[0] != NULL) {
 
-                CLASSERT (PTL_MAX_INTERFACES > 1);
+                CLASSERT (LNET_MAX_INTERFACES > 1);
 
                 if (ni->ni_interfaces[1] != NULL) {
                         CERROR("Net %s doesn't support multiple interfaces\n",
index 79c91d1..99eb32a 100644 (file)
@@ -29,11 +29,11 @@ int
 LNetEQAlloc(unsigned int count, lnet_eq_handler_t callback, 
             lnet_handle_eq_t *handle)
 {
-        ptl_eq_t      *eq;
+        lnet_eq_t     *eq;
         unsigned long  flags;
 
-        LASSERT (lnet_apini.apini_init);
-        LASSERT (lnet_apini.apini_refcount > 0);
+        LASSERT (the_lnet.ln_init);
+        LASSERT (the_lnet.ln_refcount > 0);
         
         /* We need count to be a power of 2 so that when eq_{enq,deq}_seq
          * overflow, they don't skip entries, so the queue has the same
@@ -50,15 +50,15 @@ LNetEQAlloc(unsigned int count, lnet_eq_handler_t callback,
         if (count == 0)        /* catch bad parameter / overflow on roundup */
                 return (-EINVAL);
         
-        eq = ptl_eq_alloc();
+        eq = lnet_eq_alloc();
         if (eq == NULL)
                 return (-ENOMEM);
 
         PORTAL_ALLOC(eq->eq_events, count * sizeof(lnet_event_t));
         if (eq->eq_events == NULL) {
-                PTL_LOCK(flags);
-                ptl_eq_free (eq);
-                PTL_UNLOCK(flags);
+                LNET_LOCK(flags);
+                lnet_eq_free (eq);
+                LNET_UNLOCK(flags);
         }
 
         /* NB this resets all event sequence numbers to 0, to be earlier
@@ -71,38 +71,38 @@ LNetEQAlloc(unsigned int count, lnet_eq_handler_t callback,
         eq->eq_refcount = 0;
         eq->eq_callback = callback;
 
-        PTL_LOCK(flags);
+        LNET_LOCK(flags);
 
-        ptl_initialise_handle (&eq->eq_lh, PTL_COOKIE_TYPE_EQ);
-        list_add (&eq->eq_list, &lnet_apini.apini_active_eqs);
+        lnet_initialise_handle (&eq->eq_lh, LNET_COOKIE_TYPE_EQ);
+        list_add (&eq->eq_list, &the_lnet.ln_active_eqs);
 
-        PTL_UNLOCK(flags);
+        LNET_UNLOCK(flags);
 
-        ptl_eq2handle(handle, eq);
+        lnet_eq2handle(handle, eq);
         return (0);
 }
 
 int
 LNetEQFree(lnet_handle_eq_t eqh)
 {
-        ptl_eq_t      *eq;
+        lnet_eq_t     *eq;
         int            size;
-        lnet_event_t   *events;
+        lnet_event_t  *events;
         unsigned long  flags;
 
-        LASSERT (lnet_apini.apini_init);
-        LASSERT (lnet_apini.apini_refcount > 0);
+        LASSERT (the_lnet.ln_init);
+        LASSERT (the_lnet.ln_refcount > 0);
         
-        PTL_LOCK(flags);
+        LNET_LOCK(flags);
 
-        eq = ptl_handle2eq(&eqh);
+        eq = lnet_handle2eq(&eqh);
         if (eq == NULL) {
-                PTL_UNLOCK(flags);
+                LNET_UNLOCK(flags);
                 return (-ENOENT);
         }
 
         if (eq->eq_refcount != 0) {
-                PTL_UNLOCK(flags);
+                LNET_UNLOCK(flags);
                 return (-EBUSY);
         }
 
@@ -110,11 +110,11 @@ LNetEQFree(lnet_handle_eq_t eqh)
         events  = eq->eq_events;
         size    = eq->eq_size;
 
-        ptl_invalidate_handle (&eq->eq_lh);
+        lnet_invalidate_handle (&eq->eq_lh);
         list_del (&eq->eq_list);
-        ptl_eq_free (eq);
+        lnet_eq_free (eq);
 
-        PTL_UNLOCK(flags);
+        LNET_UNLOCK(flags);
 
         PORTAL_FREE(events, size * sizeof (lnet_event_t));
 
@@ -122,11 +122,11 @@ LNetEQFree(lnet_handle_eq_t eqh)
 }
 
 int
-lib_get_event (ptl_eq_t *eq, lnet_event_t *ev)
+lib_get_event (lnet_eq_t *eq, lnet_event_t *ev)
 {
-        int          new_index = eq->eq_deq_seq & (eq->eq_size - 1);
+        int           new_index = eq->eq_deq_seq & (eq->eq_size - 1);
         lnet_event_t *new_event = &eq->eq_events[new_index];
-        int          rc;
+        int           rc;
         ENTRY;
 
         CDEBUG(D_INFO, "event: %p, sequence: %lu, eq->size: %u\n",
@@ -173,7 +173,7 @@ LNetEQWait (lnet_handle_eq_t eventq, lnet_event_t *event)
 
 int
 LNetEQPoll (lnet_handle_eq_t *eventqs, int neq, int timeout_ms,
-           lnet_event_t *event, int *which)
+            lnet_event_t *event, int *which)
 {
         unsigned long    flags;
         int              i;
@@ -188,28 +188,28 @@ LNetEQPoll (lnet_handle_eq_t *eventqs, int neq, int timeout_ms,
 #endif
         ENTRY;
 
-        LASSERT (lnet_apini.apini_init);
-        LASSERT (lnet_apini.apini_refcount > 0);
+        LASSERT (the_lnet.ln_init);
+        LASSERT (the_lnet.ln_refcount > 0);
 
         if (neq < 1)
                 RETURN(-ENOENT);
 
-        PTL_LOCK(flags);
+        LNET_LOCK(flags);
 
         for (;;) {
                 for (i = 0; i < neq; i++) {
-                        ptl_eq_t *eq = ptl_handle2eq(&eventqs[i]);
+                        lnet_eq_t *eq = lnet_handle2eq(&eventqs[i]);
 
                         rc = lib_get_event (eq, event);
                         if (rc != 0) {
-                                PTL_UNLOCK(flags);
+                                LNET_UNLOCK(flags);
                                 *which = i;
                                 RETURN(rc);
                         }
                 }
                 
                 if (timeout_ms == 0) {
-                        PTL_UNLOCK (flags);
+                        LNET_UNLOCK (flags);
                         RETURN (0);
                 }
 
@@ -219,9 +219,9 @@ LNetEQPoll (lnet_handle_eq_t *eventqs, int neq, int timeout_ms,
 #ifdef __KERNEL__
                 cfs_waitlink_init(&wl);
                 set_current_state(TASK_INTERRUPTIBLE);
-                cfs_waitq_add(&lnet_apini.apini_waitq, &wl);
+                cfs_waitq_add(&the_lnet.ln_waitq, &wl);
 
-                PTL_UNLOCK(flags);
+                LNET_UNLOCK(flags);
 
                 if (timeout_ms < 0) {
                         cfs_waitq_wait (&wl);
@@ -236,12 +236,12 @@ LNetEQPoll (lnet_handle_eq_t *eventqs, int neq, int timeout_ms,
                                 timeout_ms = 0;
                 }
                 
-                PTL_LOCK(flags);
-                cfs_waitq_del(&lnet_apini.apini_waitq, &wl);
+                LNET_LOCK(flags);
+                cfs_waitq_del(&the_lnet.ln_waitq, &wl);
 #else
                 if (timeout_ms < 0) {
-                        pthread_cond_wait(&lnet_apini.apini_cond, 
-                                          &lnet_apini.apini_mutex);
+                        pthread_cond_wait(&the_lnet.ln_cond, 
+                                          &the_lnet.ln_mutex);
                 } else {
                         gettimeofday(&then, NULL);
                         
@@ -253,8 +253,8 @@ LNetEQPoll (lnet_handle_eq_t *eventqs, int neq, int timeout_ms,
                                 ts.tv_nsec -= 1000000000;
                         }
                         
-                        pthread_cond_timedwait(&lnet_apini.apini_cond,
-                                               &lnet_apini.apini_mutex, &ts);
+                        pthread_cond_timedwait(&the_lnet.ln_cond,
+                                               &the_lnet.ln_mutex, &ts);
                         
                         gettimeofday(&now, NULL);
                         timeout_ms -= (now.tv_sec - then.tv_sec) * 1000 +
index d7c3740..abfd9a0 100644 (file)
 
 #include <lnet/lib-lnet.h>
 
-/* must be called with PTL_LOCK held */
+/* must be called with LNET_LOCK held */
 void
-ptl_md_unlink(ptl_libmd_t *md)
+lnet_md_unlink(lnet_libmd_t *md)
 {
-        if ((md->md_flags & PTL_MD_FLAG_ZOMBIE) == 0) {
+        if ((md->md_flags & LNET_MD_FLAG_ZOMBIE) == 0) {
                 /* first unlink attempt... */
-                ptl_me_t *me = md->md_me;
+                lnet_me_t *me = md->md_me;
 
-                md->md_flags |= PTL_MD_FLAG_ZOMBIE;
+                md->md_flags |= LNET_MD_FLAG_ZOMBIE;
 
                 /* Disassociate from ME (if any), and unlink it if it was created
                  * with LNET_UNLINK */
                 if (me != NULL) {
                         me->me_md = NULL;
                         if (me->me_unlink == LNET_UNLINK)
-                                ptl_me_unlink(me);
+                                lnet_me_unlink(me);
                 }
 
                 /* emsure all future handle lookups fail */
-                ptl_invalidate_handle(&md->md_lh);
+                lnet_invalidate_handle(&md->md_lh);
         }
 
         if (md->md_pending != 0) {
@@ -61,25 +61,25 @@ ptl_md_unlink(ptl_libmd_t *md)
         }
 
         list_del (&md->md_list);
-        ptl_md_free(md);
+        lnet_md_free(md);
 }
 
-/* must be called with PTL_LOCK held */
+/* must be called with LNET_LOCK held */
 static int
-lib_md_build(ptl_libmd_t *lmd, lnet_md_t *umd, int unlink)
+lib_md_build(lnet_libmd_t *lmd, lnet_md_t *umd, int unlink)
 {
-        ptl_eq_t  *eq = NULL;
-        int        i;
-        int        niov;
-        int        total_length = 0;
+        lnet_eq_t   *eq = NULL;
+        int          i;
+        unsigned int niov;
+        int          total_length = 0;
 
         /* NB we are passed an allocated, but uninitialised/active md.
-         * if we return success, caller may ptl_md_unlink() it.
-         * otherwise caller may only ptl_md_free() it.
+         * if we return success, caller may lnet_md_unlink() it.
+         * otherwise caller may only lnet_md_free() it.
          */
 
         if (!LNetHandleIsEqual (umd->eq_handle, LNET_EQ_NONE)) {
-                eq = ptl_handle2eq(&umd->eq_handle);
+                eq = lnet_handle2eq(&umd->eq_handle);
                 if (eq == NULL)
                         return -ENOENT;
         }
@@ -102,7 +102,7 @@ lib_md_build(ptl_libmd_t *lmd, lnet_md_t *umd, int unlink)
         lmd->md_eq = eq;
         lmd->md_threshold = umd->threshold;
         lmd->md_pending = 0;
-        lmd->md_flags = (unlink == LNET_UNLINK) ? PTL_MD_FLAG_AUTO_UNLINK : 0;
+        lmd->md_flags = (unlink == LNET_UNLINK) ? LNET_MD_FLAG_AUTO_UNLINK : 0;
 
         if ((umd->options & LNET_MD_IOVEC) != 0) {
 
@@ -168,15 +168,15 @@ lib_md_build(ptl_libmd_t *lmd, lnet_md_t *umd, int unlink)
                 eq->eq_refcount++;
 
         /* It's good; let handle2md succeed and add to active mds */
-        ptl_initialise_handle (&lmd->md_lh, PTL_COOKIE_TYPE_MD);
-        list_add (&lmd->md_list, &lnet_apini.apini_active_mds);
+        lnet_initialise_handle (&lmd->md_lh, LNET_COOKIE_TYPE_MD);
+        list_add (&lmd->md_list, &the_lnet.ln_active_mds);
 
         return 0;
 }
 
-/* must be called with PTL_LOCK held */
+/* must be called with LNET_LOCK held */
 void
-ptl_md_deconstruct(ptl_libmd_t *lmd, lnet_md_t *umd)
+lnet_md_deconstruct(lnet_libmd_t *lmd, lnet_md_t *umd)
 {
         /* NB this doesn't copy out all the iov entries so when a
          * discontiguous MD is copied out, the target gets to know the
@@ -190,32 +190,32 @@ ptl_md_deconstruct(ptl_libmd_t *lmd, lnet_md_t *umd)
         umd->max_size = lmd->md_max_size;
         umd->options = lmd->md_options;
         umd->user_ptr = lmd->md_user_ptr;
-        ptl_eq2handle(&umd->eq_handle, lmd->md_eq);
+        lnet_eq2handle(&umd->eq_handle, lmd->md_eq);
 }
 
 int
 LNetMDAttach(lnet_handle_me_t meh, lnet_md_t umd,
-            lnet_unlink_t unlink, lnet_handle_md_t *handle)
+             lnet_unlink_t unlink, lnet_handle_md_t *handle)
 {
-        ptl_me_t     *me;
-        ptl_libmd_t  *md;
-        unsigned long flags;
-        int           rc;
+        lnet_me_t     *me;
+        lnet_libmd_t  *md;
+        unsigned long  flags;
+        int            rc;
 
-        LASSERT (lnet_apini.apini_init);
-        LASSERT (lnet_apini.apini_refcount > 0);
+        LASSERT (the_lnet.ln_init);
+        LASSERT (the_lnet.ln_refcount > 0);
         
         if ((umd.options & (LNET_MD_KIOV | LNET_MD_IOVEC)) != 0 &&
             umd.length > PTL_MD_MAX_IOV) /* too many fragments */
                 return -EINVAL;
 
-        md = ptl_md_alloc(&umd);
+        md = lnet_md_alloc(&umd);
         if (md == NULL)
                 return -ENOMEM;
 
-        PTL_LOCK(flags);
+        LNET_LOCK(flags);
 
-        me = ptl_handle2me(&meh);
+        me = lnet_handle2me(&meh);
         if (me == NULL) {
                 rc = -ENOENT;
         } else if (me->me_md != NULL) {
@@ -226,73 +226,73 @@ LNetMDAttach(lnet_handle_me_t meh, lnet_md_t umd,
                         me->me_md = md;
                         md->md_me = me;
 
-                        ptl_md2handle(handle, md);
+                        lnet_md2handle(handle, md);
 
-                        PTL_UNLOCK(flags);
+                        LNET_UNLOCK(flags);
                         return (0);
                 }
         }
 
-        ptl_md_free (md);
+        lnet_md_free (md);
 
-        PTL_UNLOCK(flags);
+        LNET_UNLOCK(flags);
         return (rc);
 }
 
 int
 LNetMDBind(lnet_md_t umd, lnet_unlink_t unlink, lnet_handle_md_t *handle)
 {
-        ptl_libmd_t  *md;
-        unsigned long flags;
-        int           rc;
+        lnet_libmd_t  *md;
+        unsigned long  flags;
+        int            rc;
 
-        LASSERT (lnet_apini.apini_init);
-        LASSERT (lnet_apini.apini_refcount > 0);
+        LASSERT (the_lnet.ln_init);
+        LASSERT (the_lnet.ln_refcount > 0);
         
         if ((umd.options & (LNET_MD_KIOV | LNET_MD_IOVEC)) != 0 &&
             umd.length > PTL_MD_MAX_IOV) /* too many fragments */
                 return -EINVAL;
 
-        md = ptl_md_alloc(&umd);
+        md = lnet_md_alloc(&umd);
         if (md == NULL)
                 return -ENOMEM;
 
-        PTL_LOCK(flags);
+        LNET_LOCK(flags);
 
         rc = lib_md_build(md, &umd, unlink);
 
         if (rc == 0) {
-                ptl_md2handle(handle, md);
+                lnet_md2handle(handle, md);
 
-                PTL_UNLOCK(flags);
+                LNET_UNLOCK(flags);
                 return (0);
         }
 
-        ptl_md_free (md);
+        lnet_md_free (md);
 
-        PTL_UNLOCK(flags);
+        LNET_UNLOCK(flags);
         return (rc);
 }
 
 int
 LNetMDUnlink (lnet_handle_md_t mdh)
 {
-        lnet_event_t      ev;
-        ptl_libmd_t     *md;
+        lnet_event_t     ev;
+        lnet_libmd_t    *md;
         unsigned long    flags;
 
-        LASSERT (lnet_apini.apini_init);
-        LASSERT (lnet_apini.apini_refcount > 0);
+        LASSERT (the_lnet.ln_init);
+        LASSERT (the_lnet.ln_refcount > 0);
         
-        PTL_LOCK(flags);
+        LNET_LOCK(flags);
 
-        md = ptl_handle2md(&mdh);
+        md = lnet_handle2md(&mdh);
         if (md == NULL) {
-                PTL_UNLOCK(flags);
+                LNET_UNLOCK(flags);
                 return -ENOENT;
         }
 
-        /* If the MD is busy, ptl_md_unlink just marks it for deletion, and
+        /* If the MD is busy, lnet_md_unlink just marks it for deletion, and
          * when the NAL is done, the completion event flags that the MD was
          * unlinked.  Otherwise, we enqueue an event now... */
 
@@ -303,15 +303,15 @@ LNetMDUnlink (lnet_handle_md_t mdh)
                 ev.type = LNET_EVENT_UNLINK;
                 ev.status = 0;
                 ev.unlinked = 1;
-                ptl_md_deconstruct(md, &ev.md);
-                ptl_md2handle(&ev.md_handle, md);
+                lnet_md_deconstruct(md, &ev.md);
+                lnet_md2handle(&ev.md_handle, md);
 
-                ptl_enq_event_locked(NULL, md->md_eq, &ev);
+                lnet_enq_event_locked(NULL, md->md_eq, &ev);
         }
 
-        ptl_md_unlink(md);
+        lnet_md_unlink(md);
 
-        PTL_UNLOCK(flags);
+        LNET_UNLOCK(flags);
         return 0;
 }
 
index 46e81d5..3d49280 100644 (file)
@@ -33,20 +33,20 @@ LNetMEAttach(unsigned int portal,
              lnet_unlink_t unlink, lnet_ins_pos_t pos, 
              lnet_handle_me_t *handle)
 {
-        ptl_me_t      *me;
+        lnet_me_t     *me;
         unsigned long  flags;
 
-        LASSERT (lnet_apini.apini_init);
-        LASSERT (lnet_apini.apini_refcount > 0);
+        LASSERT (the_lnet.ln_init);
+        LASSERT (the_lnet.ln_refcount > 0);
         
-        if (portal >= lnet_apini.apini_nportals)
+        if (portal >= the_lnet.ln_nportals)
                 return -EINVAL;
 
-        me = ptl_me_alloc();
+        me = lnet_me_alloc();
         if (me == NULL)
                 return -ENOMEM;
 
-        PTL_LOCK(flags);
+        LNET_LOCK(flags);
 
         me->me_match_id = match_id;
         me->me_match_bits = match_bits;
@@ -54,45 +54,45 @@ LNetMEAttach(unsigned int portal,
         me->me_unlink = unlink;
         me->me_md = NULL;
 
-        ptl_initialise_handle (&me->me_lh, PTL_COOKIE_TYPE_ME);
+        lnet_initialise_handle (&me->me_lh, LNET_COOKIE_TYPE_ME);
 
         if (pos == LNET_INS_AFTER)
-                list_add_tail(&me->me_list, &(lnet_apini.apini_portals[portal]));
+                list_add_tail(&me->me_list, &(the_lnet.ln_portals[portal]));
         else
-                list_add(&me->me_list, &(lnet_apini.apini_portals[portal]));
+                list_add(&me->me_list, &(the_lnet.ln_portals[portal]));
 
-        ptl_me2handle(handle, me);
+        lnet_me2handle(handle, me);
 
-        PTL_UNLOCK(flags);
+        LNET_UNLOCK(flags);
 
         return 0;
 }
 
 int 
 LNetMEInsert(lnet_handle_me_t current_meh, 
-            lnet_process_id_t match_id, 
-            __u64 match_bits, __u64 ignore_bits,
-            lnet_unlink_t unlink, lnet_ins_pos_t pos,
-            lnet_handle_me_t *handle)
+             lnet_process_id_t match_id, 
+             __u64 match_bits, __u64 ignore_bits,
+             lnet_unlink_t unlink, lnet_ins_pos_t pos,
+             lnet_handle_me_t *handle)
 {
-        ptl_me_t     *current_me;
-        ptl_me_t     *new_me;
+        lnet_me_t     *current_me;
+        lnet_me_t     *new_me;
         unsigned long flags;
 
-        LASSERT (lnet_apini.apini_init);        
-        LASSERT (lnet_apini.apini_refcount > 0);
+        LASSERT (the_lnet.ln_init);        
+        LASSERT (the_lnet.ln_refcount > 0);
         
-        new_me = ptl_me_alloc();
+        new_me = lnet_me_alloc();
         if (new_me == NULL)
                 return -ENOMEM;
 
-        PTL_LOCK(flags);
+        LNET_LOCK(flags);
 
-        current_me = ptl_handle2me(&current_meh);
+        current_me = lnet_handle2me(&current_meh);
         if (current_me == NULL) {
-                ptl_me_free (new_me);
+                lnet_me_free (new_me);
 
-                PTL_UNLOCK(flags);
+                LNET_UNLOCK(flags);
                 return -ENOENT;
         }
 
@@ -102,16 +102,16 @@ LNetMEInsert(lnet_handle_me_t current_meh,
         new_me->me_unlink = unlink;
         new_me->me_md = NULL;
 
-        ptl_initialise_handle (&new_me->me_lh, PTL_COOKIE_TYPE_ME);
+        lnet_initialise_handle (&new_me->me_lh, LNET_COOKIE_TYPE_ME);
 
         if (pos == LNET_INS_AFTER)
                 list_add_tail(&new_me->me_list, &current_me->me_list);
         else
                 list_add(&new_me->me_list, &current_me->me_list);
 
-        ptl_me2handle(handle, new_me);
+        lnet_me2handle(handle, new_me);
 
-        PTL_UNLOCK(flags);
+        LNET_UNLOCK(flags);
 
         return 0;
 }
@@ -120,45 +120,45 @@ int
 LNetMEUnlink(lnet_handle_me_t meh)
 {
         unsigned long flags;
-        ptl_me_t     *me;
+        lnet_me_t     *me;
         int           rc;
 
-        LASSERT (lnet_apini.apini_init);        
-        LASSERT (lnet_apini.apini_refcount > 0);
+        LASSERT (the_lnet.ln_init);        
+        LASSERT (the_lnet.ln_refcount > 0);
         
-        PTL_LOCK(flags);
+        LNET_LOCK(flags);
 
-        me = ptl_handle2me(&meh);
+        me = lnet_handle2me(&meh);
         if (me == NULL) {
                 rc = -ENOENT;
         } else {
-                ptl_me_unlink(me);
+                lnet_me_unlink(me);
                 rc = 0;
         }
 
-        PTL_UNLOCK(flags);
+        LNET_UNLOCK(flags);
 
         return (rc);
 }
 
-/* call with PTL_LOCK please */
+/* call with LNET_LOCK please */
 void
-ptl_me_unlink(ptl_me_t *me)
+lnet_me_unlink(lnet_me_t *me)
 {
         list_del (&me->me_list);
 
         if (me->me_md) {
                 me->me_md->md_me = NULL;
-                ptl_md_unlink(me->me_md);
+                lnet_md_unlink(me->me_md);
         }
 
-        ptl_invalidate_handle (&me->me_lh);
-        ptl_me_free(me);
+        lnet_invalidate_handle (&me->me_lh);
+        lnet_me_free(me);
 }
 
 #if 0
 static void
-lib_me_dump(ptl_me_t *me)
+lib_me_dump(lnet_me_t *me)
 {
         CWARN("Match Entry %p ("LPX64")\n", me,
               me->me_lh.lh_cookie);
@@ -168,8 +168,8 @@ lib_me_dump(ptl_me_t *me)
 
         CWARN("\tMD\t= %p\n", me->md);
         CWARN("\tprev\t= %p\n",
-              list_entry(me->me_list.prev, ptl_me_t, me_list));
+              list_entry(me->me_list.prev, lnet_me_t, me_list));
         CWARN("\tnext\t= %p\n",
-              list_entry(me->me_list.next, ptl_me_t, me_list));
+              list_entry(me->me_list.next, lnet_me_t, me_list));
 }
 #endif
index ce23b9c..c5d3768 100644 (file)
@@ -41,18 +41,18 @@ CFS_MODULE_PARM(implicit_loopback, "i", int, 0644,
                 "Boolean: substitute 0@lo when sending to any local NID");
 
 /* forward ref */
-static void ptl_commit_md (ptl_libmd_t *md, ptl_msg_t *msg);
+static void lnet_commit_md (lnet_libmd_t *md, lnet_msg_t *msg);
 
-static ptl_libmd_t *
-ptl_match_md(int index, int op_mask, lnet_process_id_t src,
-             unsigned int rlength, unsigned int roffset,
-             __u64 match_bits, ptl_msg_t *msg,
-             unsigned int *mlength_out, unsigned int *offset_out)
+static lnet_libmd_t *
+lnet_match_md(int index, int op_mask, lnet_process_id_t src,
+              unsigned int rlength, unsigned int roffset,
+              __u64 match_bits, lnet_msg_t *msg,
+              unsigned int *mlength_out, unsigned int *offset_out)
 {
-        struct list_head *match_list = &lnet_apini.apini_portals[index];
+        struct list_head *match_list = &the_lnet.ln_portals[index];
         struct list_head *tmp;
-        ptl_me_t         *me;
-        ptl_libmd_t      *md;
+        lnet_me_t        *me;
+        lnet_libmd_t     *md;
         unsigned int      mlength;
         unsigned int      offset;
         ENTRY;
@@ -60,14 +60,14 @@ ptl_match_md(int index, int op_mask, lnet_process_id_t src,
         CDEBUG (D_NET, "Request from %s of length %d into portal %d "
                 "MB="LPX64"\n", libcfs_id2str(src), rlength, index, match_bits);
 
-        if (index < 0 || index >= lnet_apini.apini_nportals) {
+        if (index < 0 || index >= the_lnet.ln_nportals) {
                 CERROR("Invalid portal %d not in [0-%d]\n",
-                       index, lnet_apini.apini_nportals);
+                       index, the_lnet.ln_nportals);
                 goto failed;
         }
 
         list_for_each (tmp, match_list) {
-                me = list_entry(tmp, ptl_me_t, me_list);
+                me = list_entry(tmp, lnet_me_t, me_list);
                 md = me->me_md;
 
                  /* ME attached but MD not attached yet */
@@ -81,7 +81,7 @@ ptl_match_md(int index, int op_mask, lnet_process_id_t src,
                         continue;
 
                 /* MD exhausted */
-                if (ptl_md_exhausted(md))
+                if (lnet_md_exhausted(md))
                         continue;
 
                 /* mismatched ME nid/pid? */
@@ -128,7 +128,7 @@ ptl_match_md(int index, int op_mask, lnet_process_id_t src,
                        index, libcfs_id2str(src), mlength, rlength,
                        md->md_lh.lh_cookie, md->md_niov, offset);
 
-                ptl_commit_md(md, msg);
+                lnet_commit_md(md, msg);
                 md->md_offset = offset + mlength;
 
                 /* NB Caller sets ev.type and ev.hdr_data */
@@ -139,8 +139,8 @@ ptl_match_md(int index, int op_mask, lnet_process_id_t src,
                 msg->msg_ev.mlength = mlength;
                 msg->msg_ev.offset = offset;
 
-                ptl_md_deconstruct(md, &msg->msg_ev.md);
-                ptl_md2handle(&msg->msg_ev.md_handle, md);
+                lnet_md_deconstruct(md, &msg->msg_ev.md);
+                lnet_md2handle(&msg->msg_ev.md_handle, md);
 
                 *offset_out = offset;
                 *mlength_out = mlength;
@@ -148,9 +148,9 @@ ptl_match_md(int index, int op_mask, lnet_process_id_t src,
                 /* Auto-unlink NOW, so the ME gets unlinked if required.
                  * We bumped md->pending above so the MD just gets flagged
                  * for unlink when it is finalized. */
-                if ((md->md_flags & PTL_MD_FLAG_AUTO_UNLINK) != 0 &&
-                    ptl_md_exhausted(md))
-                        ptl_md_unlink(md);
+                if ((md->md_flags & LNET_MD_FLAG_AUTO_UNLINK) != 0 &&
+                    lnet_md_exhausted(md))
+                        lnet_md_unlink(md);
 
                 RETURN (md);
         }
@@ -164,15 +164,15 @@ ptl_match_md(int index, int op_mask, lnet_process_id_t src,
 }
 
 int
-ptl_fail_nid (lnet_nid_t nid, unsigned int threshold)
+lnet_fail_nid (lnet_nid_t nid, unsigned int threshold)
 {
-        ptl_test_peer_t   *tp;
+        lnet_test_peer_t   *tp;
         unsigned long      flags;
         struct list_head  *el;
         struct list_head  *next;
         struct list_head   cull;
 
-        LASSERT (lnet_apini.apini_init);
+        LASSERT (the_lnet.ln_init);
         
         if (threshold != 0) {
                 /* Adding a new entry */
@@ -183,19 +183,19 @@ ptl_fail_nid (lnet_nid_t nid, unsigned int threshold)
                 tp->tp_nid = nid;
                 tp->tp_threshold = threshold;
 
-                PTL_LOCK(flags);
-                list_add_tail (&tp->tp_list, &lnet_apini.apini_test_peers);
-                PTL_UNLOCK(flags);
+                LNET_LOCK(flags);
+                list_add_tail (&tp->tp_list, &the_lnet.ln_test_peers);
+                LNET_UNLOCK(flags);
                 return 0;
         }
 
         /* removing entries */
         CFS_INIT_LIST_HEAD (&cull);
 
-        PTL_LOCK(flags);
+        LNET_LOCK(flags);
 
-        list_for_each_safe (el, next, &lnet_apini.apini_test_peers) {
-                tp = list_entry (el, ptl_test_peer_t, tp_list);
+        list_for_each_safe (el, next, &the_lnet.ln_test_peers) {
+                tp = list_entry (el, lnet_test_peer_t, tp_list);
 
                 if (tp->tp_threshold == 0 ||    /* needs culling anyway */
                     nid == LNET_NID_ANY ||       /* removing all entries */
@@ -206,10 +206,10 @@ ptl_fail_nid (lnet_nid_t nid, unsigned int threshold)
                 }
         }
 
-        PTL_UNLOCK(flags);
+        LNET_UNLOCK(flags);
 
         while (!list_empty (&cull)) {
-                tp = list_entry (cull.next, ptl_test_peer_t, tp_list);
+                tp = list_entry (cull.next, lnet_test_peer_t, tp_list);
 
                 list_del (&tp->tp_list);
                 PORTAL_FREE(tp, sizeof (*tp));
@@ -220,7 +220,7 @@ ptl_fail_nid (lnet_nid_t nid, unsigned int threshold)
 static int
 fail_peer (lnet_nid_t nid, int outgoing)
 {
-        ptl_test_peer_t  *tp;
+        lnet_test_peer_t  *tp;
         struct list_head *el;
         struct list_head *next;
         unsigned long     flags;
@@ -229,10 +229,10 @@ fail_peer (lnet_nid_t nid, int outgoing)
 
         CFS_INIT_LIST_HEAD (&cull);
 
-        PTL_LOCK(flags);
+        LNET_LOCK(flags);
 
-        list_for_each_safe (el, next, &lnet_apini.apini_test_peers) {
-                tp = list_entry (el, ptl_test_peer_t, tp_list);
+        list_for_each_safe (el, next, &the_lnet.ln_test_peers) {
+                tp = list_entry (el, lnet_test_peer_t, tp_list);
 
                 if (tp->tp_threshold == 0) {
                         /* zombie entry */
@@ -263,10 +263,10 @@ fail_peer (lnet_nid_t nid, int outgoing)
                 }
         }
 
-        PTL_UNLOCK (flags);
+        LNET_UNLOCK (flags);
 
         while (!list_empty (&cull)) {
-                tp = list_entry (cull.next, ptl_test_peer_t, tp_list);
+                tp = list_entry (cull.next, lnet_test_peer_t, tp_list);
                 list_del (&tp->tp_list);
 
                 PORTAL_FREE(tp, sizeof (*tp));
@@ -276,7 +276,7 @@ fail_peer (lnet_nid_t nid, int outgoing)
 }
 
 unsigned int
-lnet_iov_nob (int niov, struct iovec *iov)
+lnet_iov_nob (unsigned int niov, struct iovec *iov)
 {
         unsigned int nob = 0;
 
@@ -287,65 +287,59 @@ lnet_iov_nob (int niov, struct iovec *iov)
 }
 
 void
-lnet_copy_iov2buf (char *dest, int niov, struct iovec *iov,
-                   unsigned int offset, unsigned int len)
+lnet_copy_iov2iov (unsigned int ndiov, struct iovec *diov, unsigned int doffset,
+                   unsigned int nsiov, struct iovec *siov, unsigned int soffset,
+                   unsigned int nob)
 {
-        unsigned int nob;
+        /* NB diov, siov are READ-ONLY */
+        unsigned int  this_nob;
 
-        if (len == 0)
+        if (nob == 0)
                 return;
 
-        /* skip complete frags before 'offset' */
-        LASSERT (niov > 0);
-        while (offset >= iov->iov_len) {
-                offset -= iov->iov_len;
-                iov++;
-                niov--;
-                LASSERT (niov > 0);
+        /* skip complete frags before 'doffset' */
+        LASSERT (ndiov > 0);
+        while (doffset >= diov->iov_len) {
+                doffset -= diov->iov_len;
+                diov++;
+                ndiov--;
+                LASSERT (ndiov > 0);
         }
-
-        do {
-                LASSERT (niov > 0);
-                nob = MIN (iov->iov_len - offset, len);
-                memcpy (dest, iov->iov_base + offset, nob);
-
-                len -= nob;
-                dest += nob;
-                niov--;
-                iov++;
-                offset = 0;
-        } while (len > 0);
-}
-
-void
-lnet_copy_buf2iov (int niov, struct iovec *iov, unsigned int offset,
-                   char *src, unsigned int len)
-{
-        unsigned int nob;
-
-        if (len == 0)
-                return;
-
-        /* skip complete frags before 'offset' */
-        LASSERT (niov > 0);
-        while (offset >= iov->iov_len) {
-                offset -= iov->iov_len;
-                iov++;
-                niov--;
-                LASSERT (niov > 0);
+        
+        /* skip complete frags before 'soffset' */
+        LASSERT (nsiov > 0);
+        while (soffset >= siov->iov_len) {
+                soffset -= siov->iov_len;
+                siov++;
+                nsiov--;
+                LASSERT (nsiov > 0);
         }
 
         do {
-                LASSERT (niov > 0);
-                nob = MIN (iov->iov_len - offset, len);
-                memcpy (iov->iov_base + offset, src, nob);
-
-                len -= nob;
-                src += nob;
-                niov--;
-                iov++;
-                offset = 0;
-        } while (len > 0);
+                LASSERT (ndiov > 0);
+                LASSERT (nsiov > 0);
+                this_nob = MIN(diov->iov_len - doffset,
+                               siov->iov_len - soffset);
+                this_nob = MIN(this_nob, nob);
+
+                memcpy (diov->iov_base + doffset,
+                        siov->iov_base + soffset, this_nob);
+                nob -= this_nob;
+
+                if (diov->iov_len < doffset + this_nob) {
+                        doffset += this_nob;
+                } else {
+                        diov++;
+                        doffset = 0;
+                }
+                
+                if (siov->iov_len < soffset + this_nob) {
+                        soffset += this_nob;
+                } else {
+                        siov++;
+                        soffset = 0;
+                }
+        } while (nob > 0);
 }
 
 int
@@ -357,7 +351,7 @@ lnet_extract_iov (int dst_niov, struct iovec *dst,
          * for exactly 'len' bytes, and return the number of entries.
          * NB not destructive to 'src' */
         unsigned int    frag_len;
-        int             niov;
+        unsigned int    niov;
 
         if (len == 0)                           /* no data => */
                 return (0);                     /* no frags */
@@ -396,22 +390,32 @@ lnet_extract_iov (int dst_niov, struct iovec *dst,
 
 #ifndef __KERNEL__
 unsigned int
-lnet_kiov_nob (int niov, lnet_kiov_t *kiov)
+lnet_kiov_nob (unsigned int niov, lnet_kiov_t *kiov)
 {
         LASSERT (0);
         return (0);
 }
 
 void
-lnet_copy_kiov2buf (char *dest, int niov, lnet_kiov_t *kiov,
-                    unsigned int offset, unsigned int len)
+lnet_copy_kiov2kiov (unsigned int ndkiov, lnet_kiov_t *dkiov, unsigned int doffset,
+                     unsigned int nskiov, lnet_kiov_t *skiov, unsigned int soffset,
+                     unsigned int nob)
+{
+        LASSERT (0);
+}
+
+void
+lnet_copy_kiov2iov (unsigned int niov, struct iovec *iov, unsigned int iovoffset,
+                    unsigned int nkiov, lnet_kiov_t *kiov, unsigned int kiovoffset,
+                    unsigned int nob)
 {
         LASSERT (0);
 }
 
 void
-lnet_copy_buf2kiov (int niov, lnet_kiov_t *kiov, unsigned int offset,
-                    char *src, unsigned int len)
+lnet_copy_iov2kiov (unsigned int nkiov, lnet_kiov_t *kiov, unsigned int kiovoffset,
+                    unsigned int niov, struct iovec *iov, unsigned int iovoffset,
+                    unsigned int nob)
 {
         LASSERT (0);
 }
@@ -427,7 +431,7 @@ lnet_extract_kiov (int dst_niov, lnet_kiov_t *dst,
 #else /* __KERNEL__ */
 
 unsigned int
-lnet_kiov_nob (int niov, lnet_kiov_t *kiov)
+lnet_kiov_nob (unsigned int niov, lnet_kiov_t *kiov)
 {
         unsigned int  nob = 0;
 
@@ -438,77 +442,215 @@ lnet_kiov_nob (int niov, lnet_kiov_t *kiov)
 }
 
 void
-lnet_copy_kiov2buf (char *dest, int niov, lnet_kiov_t *kiov,
-                    unsigned int offset, unsigned int len)
+lnet_copy_kiov2kiov (unsigned int ndiov, lnet_kiov_t *diov, unsigned int doffset,
+                     unsigned int nsiov, lnet_kiov_t *siov, unsigned int soffset,
+                     unsigned int nob)
 {
-        unsigned int  nob;
-        char         *addr;
+        /* NB diov, siov are READ-ONLY */
+        unsigned int    this_nob;
+        char           *daddr = NULL;
+        char           *saddr = NULL;
 
-        if (len == 0)
+        if (nob == 0)
+                return;
+
+        LASSERT (!in_interrupt ());
+
+        LASSERT (ndiov > 0);
+        while (doffset > diov->kiov_len) {
+                doffset -= diov->kiov_len;
+                diov++;
+                ndiov--;
+                LASSERT (ndiov > 0);
+        }
+
+        LASSERT (nsiov > 0);
+        while (soffset > siov->kiov_len) {
+                soffset -= siov->kiov_len;
+                siov++;
+                nsiov--;
+                LASSERT (nsiov > 0);
+        }
+
+        do {
+                LASSERT (ndiov > 0);
+                LASSERT (nsiov > 0);
+                this_nob = MIN(diov->kiov_len - doffset,
+                               siov->kiov_len - soffset);
+                this_nob = MIN(this_nob, nob);
+
+                if (daddr == NULL)
+                        daddr = ((char *)cfs_kmap(diov->kiov_page)) + 
+                                diov->kiov_offset + doffset;
+                if (saddr == NULL)
+                        saddr = ((char *)cfs_kmap(siov->kiov_page)) + 
+                                siov->kiov_offset + soffset;
+
+                /* Vanishing risk of kmap deadlock when mapping 2 pages.
+                 * However in practice at least one of the kiovs will be mapped
+                 * kernel pages and the map/unmap will be NOOPs */
+
+                memcpy (daddr, saddr, this_nob);
+                nob -= this_nob;
+
+                if (diov->kiov_len > doffset + this_nob) {
+                        daddr += this_nob;
+                        doffset += this_nob;
+                } else {
+                        cfs_kunmap(diov->kiov_page);
+                        daddr = NULL;
+                        diov++;
+                        doffset = 0;
+                }
+
+                if (siov->kiov_len > soffset + this_nob) {
+                        saddr += this_nob;
+                        soffset += this_nob;
+                } else {
+                        cfs_kunmap(siov->kiov_page);
+                        saddr = NULL;
+                        siov++;
+                        soffset = 0;
+                }
+        } while (nob > 0);
+
+        if (daddr != NULL)
+                cfs_kunmap(diov->kiov_page);
+        if (saddr != NULL)
+                cfs_kunmap(siov->kiov_page);
+}
+
+void
+lnet_copy_kiov2iov (unsigned int niov, struct iovec *iov, unsigned int iovoffset,
+                    unsigned int nkiov, lnet_kiov_t *kiov, unsigned int kiovoffset,
+                    unsigned int nob)
+{
+        /* NB iov, kiov are READ-ONLY */
+        unsigned int    this_nob;
+        char           *addr = NULL;
+
+        if (nob == 0)
                 return;
 
         LASSERT (!in_interrupt ());
 
         LASSERT (niov > 0);
-        while (offset > kiov->kiov_len) {
-                offset -= kiov->kiov_len;
-                kiov++;
+        while (iovoffset > iov->iov_len) {
+                iovoffset -= iov->iov_len;
+                iov++;
                 niov--;
                 LASSERT (niov > 0);
         }
 
+        LASSERT (nkiov > 0);
+        while (kiovoffset > kiov->kiov_len) {
+                kiovoffset -= kiov->kiov_len;
+                kiov++;
+                nkiov--;
+                LASSERT (nkiov > 0);
+        }
+
         do {
                 LASSERT (niov > 0);
-                nob = MIN (kiov->kiov_len - offset, len);
+                LASSERT (nkiov > 0);
+                this_nob = MIN(iov->iov_len - iovoffset,
+                               kiov->kiov_len - kiovoffset);
+                this_nob = MIN(this_nob, nob);
 
-                addr = ((char *)cfs_kmap(kiov->kiov_page)) + kiov->kiov_offset +
-                        offset;
-                memcpy (dest, addr, nob);
-                cfs_kunmap (kiov->kiov_page);
+                if (addr == NULL)
+                        addr = ((char *)cfs_kmap(kiov->kiov_page)) + 
+                                kiov->kiov_offset + kiovoffset;
 
-                len -= nob;
-                dest += nob;
-                niov--;
-                kiov++;
-                offset = 0;
-        } while (len > 0);
+                memcpy (iov->iov_base + iovoffset, addr, this_nob);
+                nob -= this_nob;
+
+                if (iov->iov_len < iovoffset + this_nob) {
+                        iovoffset += this_nob;
+                } else {
+                        iov++;
+                        iovoffset = 0;
+                }
+
+                if (kiov->kiov_len < kiovoffset + this_nob) {
+                        addr += this_nob;
+                        kiovoffset += this_nob;
+                } else {
+                        cfs_kunmap(kiov->kiov_page);
+                        addr = NULL;
+                        kiov++;
+                        kiovoffset = 0;
+                }
+
+        } while (nob > 0);
+
+        if (addr != NULL)
+                cfs_kunmap(kiov->kiov_page);
 }
 
 void
-lnet_copy_buf2kiov (int niov, lnet_kiov_t *kiov, unsigned int offset,
-                    char *src, unsigned int len)
+lnet_copy_iov2kiov (unsigned int nkiov, lnet_kiov_t *kiov, unsigned int kiovoffset,
+                    unsigned int niov, struct iovec *iov, unsigned int iovoffset,
+                    unsigned int nob)
 {
-        unsigned int  nob;
-        char         *addr;
+        /* NB kiov, iov are READ-ONLY */
+        unsigned int    this_nob;
+        char           *addr = NULL;
 
-        if (len == 0)
+        if (nob == 0)
                 return;
 
         LASSERT (!in_interrupt ());
 
-        LASSERT (niov > 0);
-        while (offset >= kiov->kiov_len) {
-                offset -= kiov->kiov_len;
+        LASSERT (nkiov > 0);
+        while (kiovoffset > kiov->kiov_len) {
+                kiovoffset -= kiov->kiov_len;
                 kiov++;
+                nkiov--;
+                LASSERT (nkiov > 0);
+        }
+
+        LASSERT (niov > 0);
+        while (iovoffset > iov->iov_len) {
+                iovoffset -= iov->iov_len;
+                iov++;
                 niov--;
                 LASSERT (niov > 0);
         }
 
         do {
+                LASSERT (nkiov > 0);
                 LASSERT (niov > 0);
-                nob = MIN (kiov->kiov_len - offset, len);
+                this_nob = MIN(kiov->kiov_len - kiovoffset,
+                               iov->iov_len - iovoffset);
+                this_nob = MIN(this_nob, nob);
 
-                addr = ((char *)cfs_kmap(kiov->kiov_page)) + kiov->kiov_offset +
-                        offset;
-                memcpy (addr, src, nob);
-                cfs_kunmap (kiov->kiov_page);
+                if (addr == NULL)
+                        addr = ((char *)cfs_kmap(kiov->kiov_page)) + 
+                                kiov->kiov_offset + kiovoffset;
 
-                len -= nob;
-                src += nob;
-                niov--;
-                kiov++;
-                offset = 0;
-        } while (len > 0);
+                memcpy (addr, iov->iov_base + iovoffset, this_nob);
+                nob -= this_nob;
+
+                if (kiov->kiov_len < kiovoffset + this_nob) {
+                        addr += this_nob;
+                        kiovoffset += this_nob;
+                } else {
+                        cfs_kunmap(kiov->kiov_page);
+                        addr = NULL;
+                        kiov++;
+                        kiovoffset = 0;
+                }
+
+                if (iov->iov_len < iovoffset + this_nob) {
+                        iovoffset += this_nob;
+                } else {
+                        iov++;
+                        iovoffset = 0;
+                }
+        } while (nob > 0);
+
+        if (addr != NULL)
+                cfs_kunmap(kiov->kiov_page);
 }
 
 int
@@ -520,7 +662,7 @@ lnet_extract_kiov (int dst_niov, lnet_kiov_t *dst,
          * for exactly 'len' bytes, and return the number of entries.
          * NB not destructive to 'src' */
         unsigned int    frag_len;
-        int             niov;
+        unsigned int    niov;
 
         if (len == 0)                           /* no data => */
                 return (0);                     /* no frags */
@@ -561,43 +703,44 @@ lnet_extract_kiov (int dst_niov, lnet_kiov_t *dst,
 }
 #endif
 
-int
-ptl_recv (ptl_ni_t *ni, void *private, ptl_msg_t *msg, ptl_libmd_t *md,
+void
+lnet_recv(lnet_ni_t *ni, void *private, lnet_msg_t *msg, int delayed,
           unsigned int offset, unsigned int mlen, unsigned int rlen)
 {
-        int           niov = 0;
+        unsigned int  niov = 0;
         struct iovec *iov = NULL;
         lnet_kiov_t  *kiov = NULL;
+        int           rc;
 
         if (mlen != 0) {
+                lnet_libmd_t *md = msg->msg_md;
+                
                 niov = md->md_niov;
-                if (((md->md_options) & LNET_MD_KIOV) != 0)
+                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);
+        rc = (ni->ni_lnd->lnd_recv)(ni, private, msg, delayed,
+                                    niov, iov, kiov, offset, mlen, rlen);
+        if (rc != 0)
+                lnet_finalize(ni, private, msg, rc);
 }
 
 int
-ptl_send (ptl_ni_t *ni, void *private, ptl_msg_t *msg,
-          ptl_hdr_t *hdr, int type, lnet_process_id_t target,
-          ptl_libmd_t *md, unsigned int offset, unsigned int len)
+lnet_send(lnet_ni_t *ni, void *private, lnet_msg_t *msg,
+          int type, lnet_process_id_t target,
+          lnet_libmd_t *md, unsigned int offset, unsigned int len)
 {
         unsigned long flags;
         lnet_nid_t    gw_nid;
         lnet_nid_t    src_nid;
-        int           niov = 0;
-        struct iovec *iov = NULL;
-        lnet_kiov_t  *kiov = NULL;
-        int           target_is_router = 0;
         int           rc;
 
         /* CAVEAT EMPTOR! ni != NULL == interface pre-determined (ACK) */
 
-        gw_nid = lnet_lookup (&ni, target.nid, sizeof(*hdr) + len);
+        gw_nid = lnet_lookup (&ni, target.nid, sizeof(lnet_hdr_t) + len);
         if (gw_nid == LNET_NID_ANY) {
                 CERROR("No route to %s\n", libcfs_id2str(target));
                 LCONSOLE_ERROR("Cannot send to %s: %s is not a local network "
@@ -609,60 +752,70 @@ ptl_send (ptl_ni_t *ni, void *private, ptl_msg_t *msg,
         }
 
         /* set the completion event's initiator.nid now we know it */
-        if (type == PTL_MSG_PUT || type == PTL_MSG_GET)
+        if (type == LNET_MSG_PUT || type == LNET_MSG_GET)
                 msg->msg_ev.initiator.nid = ni->ni_nid;
 
         src_nid = lnet_ptlcompat_srcnid(ni->ni_nid, target.nid);
+
+        msg->msg_type               = type;
+        msg->msg_target             = target;
+        msg->msg_target_is_router   = 0;
+        msg->msg_routing            = 0;
                 
-        hdr->type           = cpu_to_le32(type);
-        hdr->dest_nid       = cpu_to_le64(target.nid);
-        hdr->dest_pid       = cpu_to_le32(target.pid);
-        hdr->src_nid        = cpu_to_le64(src_nid);
-        hdr->src_pid        = cpu_to_le64(lnet_apini.apini_pid);
-        hdr->payload_length = cpu_to_le32(len);
-
-        if (PTL_NETNAL(PTL_NIDNET(ni->ni_nid)) != LONAL) {
+        msg->msg_hdr.type           = cpu_to_le32(type);
+        msg->msg_hdr.dest_nid       = cpu_to_le64(target.nid);
+        msg->msg_hdr.dest_pid       = cpu_to_le32(target.pid);
+        msg->msg_hdr.src_nid        = cpu_to_le64(src_nid);
+        msg->msg_hdr.src_pid        = cpu_to_le64(the_lnet.ln_pid);
+        msg->msg_hdr.payload_length = cpu_to_le32(len);
+
+        if (PTL_NETTYP(PTL_NIDNET(ni->ni_nid)) != LOLND) {
                 if (!lnet_ptlcompat_matchnid(ni->ni_nid, gw_nid)) {
                         /* it's not for me: will the gateway have to forward? */
                         if (gw_nid != target.nid &&
-                            lnet_apini.apini_ptlcompat == 0) {
-                                target_is_router = 1;
-                                target.pid = LUSTRE_SRV_PTL_PID;
-                                target.nid = gw_nid;
+                            the_lnet.ln_ptlcompat == 0) {
+                                msg->msg_target_is_router = 1;
+                                msg->msg_target.pid = LUSTRE_SRV_PTL_PID;
+                                msg->msg_target.nid = gw_nid;
                         }
                 } else if (implicit_loopback) { /* its for me: force lonal? */
-                        PTL_LOCK(flags);
-                        ptl_ni_decref_locked(ni);
-                        ni = ptl_loni;
+                        LNET_LOCK(flags);
+                        lnet_ni_decref_locked(ni);
+                        ni = lnet_loni;
                         if (ni != NULL)
-                                ptl_ni_addref_locked(ni);
-                        PTL_UNLOCK(flags);
+                                lnet_ni_addref_locked(ni);
+                        LNET_UNLOCK(flags);
                         
                         if (ni == NULL)         /* shutdown in progress */
                                 return -ENETDOWN;
                 }
         }
+
+        msg->msg_len = len;
+        msg->msg_offset = offset;
+        msg->msg_niov = 0;
+        msg->msg_iov = NULL;
+        msg->msg_kiov = NULL;
         
-        if (len != 0) {
-                niov = md->md_niov;
+        if (len > 0) {
+                msg->msg_niov = md->md_niov;
+
                 if (((md->md_options) & LNET_MD_KIOV) != 0)
-                        kiov = md->md_iov.kiov;
+                        msg->msg_kiov = md->md_iov.kiov;
                 else
-                        iov = md->md_iov.iov;
+                        msg->msg_iov = md->md_iov.iov;
         }
         
-        rc = (ni->ni_nal->nal_send)(ni, private, msg, hdr, type, target, 
-                                    target_is_router, 0,
-                                    niov, iov, kiov, offset, len);
+        rc = (ni->ni_lnd->lnd_send)(ni, private, msg);
 
-        ptl_ni_decref(ni);                      /* lose ref from lnet_lookup */
+        lnet_ni_decref(ni);                     /* lose ref from lnet_lookup */
         return rc;
 }
 
 static void
-ptl_commit_md (ptl_libmd_t *md, ptl_msg_t *msg)
+lnet_commit_md (lnet_libmd_t *md, lnet_msg_t *msg)
 {
-        /* ALWAYS called holding the PTL_LOCK */
+        /* ALWAYS called holding the LNET_LOCK */
         /* Here, we commit the MD to a network OP by marking it busy and
          * decrementing its threshold.  Come what may, the network "owns"
          * the MD until a call to lnet_finalize() signals completion. */
@@ -674,50 +827,37 @@ ptl_commit_md (ptl_libmd_t *md, ptl_msg_t *msg)
                 md->md_threshold--;
         }
 
-        lnet_apini.apini_counters.msgs_alloc++;
-        if (lnet_apini.apini_counters.msgs_alloc > 
-            lnet_apini.apini_counters.msgs_max)
-                lnet_apini.apini_counters.msgs_max = 
-                        lnet_apini.apini_counters.msgs_alloc;
+        the_lnet.ln_counters.msgs_alloc++;
+        if (the_lnet.ln_counters.msgs_alloc > 
+            the_lnet.ln_counters.msgs_max)
+                the_lnet.ln_counters.msgs_max = 
+                        the_lnet.ln_counters.msgs_alloc;
 
-        list_add (&msg->msg_list, &lnet_apini.apini_active_msgs);
+        list_add (&msg->msg_activelist, &the_lnet.ln_active_msgs);
 }
 
-static void
-ptl_drop_message (ptl_ni_t *ni, void *private, ptl_hdr_t *hdr)
+void
+lnet_drop_message (lnet_ni_t *ni, void *private, unsigned int nob)
 {
         unsigned long flags;
 
-        /* CAVEAT EMPTOR: this only drops messages that we've not committed
-         * to receive (init_msg() not called) and therefore can't cause an
-         * event. */
-
-        PTL_LOCK(flags);
-        lnet_apini.apini_counters.drop_count++;
-        lnet_apini.apini_counters.drop_length += hdr->payload_length;
-        PTL_UNLOCK(flags);
-
-        /* NULL msg => if NAL calls lnet_finalize it will be a noop */
-        (void) ptl_recv(ni, private, NULL, NULL, 0, 0,
-                        hdr->payload_length);
+        LNET_LOCK(flags);
+        the_lnet.ln_counters.drop_count++;
+        the_lnet.ln_counters.drop_length += nob;
+        LNET_UNLOCK(flags);
+        
+        lnet_recv(ni, private, NULL, 0, 0, 0, nob);
 }
 
-/*
- * Incoming messages have a ptl_msg_t object associated with them
- * by the library.  This object encapsulates the state of the
- * message and allows the NAL to do non-blocking receives or sends
- * of long messages.
- *
- */
 static int
-lnet_parse_put(ptl_ni_t *ni, ptl_hdr_t *hdr, void *private, ptl_msg_t *msg)
+lnet_parse_put(lnet_ni_t *ni, lnet_hdr_t *hdr, void *private, lnet_msg_t *msg)
 {
+        unsigned int      rlength = hdr->payload_length;
         unsigned int      mlength = 0;
         unsigned int      offset = 0;
         lnet_process_id_t src = {.nid = hdr->src_nid,
                                  .pid = hdr->src_pid};
-        int               rc;
-        ptl_libmd_t      *md;
+        lnet_libmd_t     *md;
         unsigned long     flags;
 
         /* Convert put fields to host byte order */
@@ -725,49 +865,42 @@ lnet_parse_put(ptl_ni_t *ni, ptl_hdr_t *hdr, void *private, ptl_msg_t *msg)
         hdr->msg.put.ptl_index = le32_to_cpu(hdr->msg.put.ptl_index);
         hdr->msg.put.offset = le32_to_cpu(hdr->msg.put.offset);
 
-        PTL_LOCK(flags);
+        LNET_LOCK(flags);
 
-        md = ptl_match_md(hdr->msg.put.ptl_index, LNET_MD_OP_PUT, src,
-                          hdr->payload_length, hdr->msg.put.offset,
-                          hdr->msg.put.match_bits, msg,
-                          &mlength, &offset);
+        md = lnet_match_md(hdr->msg.put.ptl_index, LNET_MD_OP_PUT, src,
+                           rlength, hdr->msg.put.offset,
+                           hdr->msg.put.match_bits, msg,
+                           &mlength, &offset);
         if (md == NULL) {
-                PTL_UNLOCK(flags);
-                return (-ENOENT);
+                LNET_UNLOCK(flags);
+                return ENOENT;                  /* +ve: OK but no match */
         }
 
         msg->msg_ev.type = LNET_EVENT_PUT;
         msg->msg_ev.hdr_data = hdr->msg.put.hdr_data;
 
-        if (!ptl_is_wire_handle_none(&hdr->msg.put.ack_wmd) &&
+        if (!lnet_is_wire_handle_none(&hdr->msg.put.ack_wmd) &&
             !(md->md_options & LNET_MD_ACK_DISABLE)) {
                 msg->msg_ack_wmd = hdr->msg.put.ack_wmd;
         }
 
-        lnet_apini.apini_counters.recv_count++;
-        lnet_apini.apini_counters.recv_length += mlength;
-
-        PTL_UNLOCK(flags);
+        the_lnet.ln_counters.recv_count++;
+        the_lnet.ln_counters.recv_length += mlength;
 
-        rc = ptl_recv(ni, private, msg, md, offset, mlength,
-                      hdr->payload_length);
-
-        if (rc != 0)
-                CERROR("%s: error on receiving PUT from %s: %d\n",
-                       libcfs_nid2str(ni->ni_nid), libcfs_id2str(src), rc);
+        LNET_UNLOCK(flags);
 
-        return (rc);
+        lnet_recv(ni, private, msg, 0, offset, mlength, rlength);
+        return 0;
 }
 
 static int
-lnet_parse_get(ptl_ni_t *ni, ptl_hdr_t *hdr, void *private, ptl_msg_t *msg)
+lnet_parse_get(lnet_ni_t *ni, lnet_hdr_t *hdr, void *private, lnet_msg_t *msg)
 {
         unsigned int      mlength = 0;
         unsigned int      offset = 0;
         lnet_process_id_t src = {.nid = hdr->src_nid,
                                  .pid = hdr->src_pid};
-        ptl_libmd_t      *md;
-        ptl_hdr_t         reply;
+        lnet_libmd_t     *md;
         unsigned long     flags;
         int               rc;
 
@@ -777,58 +910,58 @@ lnet_parse_get(ptl_ni_t *ni, ptl_hdr_t *hdr, void *private, ptl_msg_t *msg)
         hdr->msg.get.sink_length = le32_to_cpu(hdr->msg.get.sink_length);
         hdr->msg.get.src_offset = le32_to_cpu(hdr->msg.get.src_offset);
 
-        PTL_LOCK(flags);
+        LNET_LOCK(flags);
 
-        md = ptl_match_md(hdr->msg.get.ptl_index, LNET_MD_OP_GET, src,
-                          hdr->msg.get.sink_length, hdr->msg.get.src_offset,
-                          hdr->msg.get.match_bits, msg,
-                          &mlength, &offset);
+        md = lnet_match_md(hdr->msg.get.ptl_index, LNET_MD_OP_GET, src,
+                           hdr->msg.get.sink_length, hdr->msg.get.src_offset,
+                           hdr->msg.get.match_bits, msg,
+                           &mlength, &offset);
         if (md == NULL) {
-                PTL_UNLOCK(flags);
-                return (-ENOENT);
+                LNET_UNLOCK(flags);
+                return ENOENT;                  /* +ve: OK but no match */
         }
 
         msg->msg_ev.type = LNET_EVENT_GET;
         msg->msg_ev.hdr_data = 0;
 
-        lnet_apini.apini_counters.send_count++;
-        lnet_apini.apini_counters.send_length += mlength;
+        the_lnet.ln_counters.send_count++;
+        the_lnet.ln_counters.send_length += mlength;
 
-        PTL_UNLOCK(flags);
+        LNET_UNLOCK(flags);
 
-        memset (&reply, 0, sizeof (reply));
-        reply.msg.reply.dst_wmd = hdr->msg.get.return_wmd;
+        memset (&msg->msg_hdr, 0, sizeof (msg->msg_hdr));
+        msg->msg_hdr.msg.reply.dst_wmd = hdr->msg.get.return_wmd;
 
-        /* NB call ptl_send() _BEFORE_ ptl_recv() completes the incoming
+        /* NB call lnet_send() _BEFORE_ lnet_recv() completes the incoming
          * message.  Some NALs _require_ this to implement optimized GET */
 
-        rc = ptl_send (ni, private, msg, &reply, PTL_MSG_REPLY, src,
+        rc = lnet_send(ni, private, msg, LNET_MSG_REPLY, src,
                        md, offset, mlength);
-        if (rc != 0)
+        if (rc != 0) {
+                /* LND won't lnet_finalize()... */
                 CERROR("%s: Unable to send REPLY for GET from %s: %d\n",
                        libcfs_nid2str(ni->ni_nid), libcfs_id2str(src), rc);
+                lnet_finalize(ni, private, msg, rc);
+        }
 
-        /* Discard any junk after the hdr */
-        (void) ptl_recv(ni, private, NULL, NULL, 0, 0,
-                        hdr->payload_length);
-        return (rc);
+        lnet_recv(ni, private, NULL, 0, 0, 0, 0);
+        return 0;
 }
 
 static int
-lnet_parse_reply(ptl_ni_t *ni, ptl_hdr_t *hdr, void *private, ptl_msg_t *msg)
+lnet_parse_reply(lnet_ni_t *ni, lnet_hdr_t *hdr, void *private, lnet_msg_t *msg)
 {
         lnet_process_id_t src = {.nid = hdr->src_nid,
-                                .pid = hdr->src_pid};
-        ptl_libmd_t     *md;
-        int              rlength;
-        int              length;
-        unsigned long    flags;
-        int              rc;
+                                 .pid = hdr->src_pid};
+        lnet_libmd_t     *md;
+        int               rlength;
+        int               mlength;
+        unsigned long     flags;
 
-        PTL_LOCK(flags);
+        LNET_LOCK(flags);
 
         /* NB handles only looked up by creator (no flips) */
-        md = ptl_wire_handle2md(&hdr->msg.reply.dst_wmd);
+        md = lnet_wire_handle2md(&hdr->msg.reply.dst_wmd);
         if (md == NULL || md->md_threshold == 0) {
                 CERROR ("%s: Dropping REPLY from %s for %s "
                         "MD "LPX64"."LPX64"\n", 
@@ -837,123 +970,116 @@ lnet_parse_reply(ptl_ni_t *ni, ptl_hdr_t *hdr, void *private, ptl_msg_t *msg)
                         hdr->msg.reply.dst_wmd.wh_interface_cookie,
                         hdr->msg.reply.dst_wmd.wh_object_cookie);
 
-                PTL_UNLOCK(flags);
-                return (-EIO);
+                LNET_UNLOCK(flags);
+                return ENOENT;                  /* +ve: OK but no match */
         }
 
         LASSERT (md->md_offset == 0);
 
-        length = rlength = hdr->payload_length;
-
-        if (length > md->md_length) {
-                if ((md->md_options & LNET_MD_TRUNCATE) == 0) {
-                        CERROR ("%s: Dropping REPLY from %s length %d "
-                                "for MD "LPX64" would overflow (%d)\n",
-                                libcfs_nid2str(ni->ni_nid), libcfs_id2str(src),
-                                length, hdr->msg.reply.dst_wmd.wh_object_cookie,
-                                md->md_length);
-                        PTL_UNLOCK(flags);
-                        return (-EIO);
-                }
-                length = md->md_length;
+        rlength = hdr->payload_length;
+        mlength = MIN(rlength, md->md_length);
+
+        if (mlength < rlength &&
+            (md->md_options & LNET_MD_TRUNCATE) == 0) {
+                CERROR ("%s: Dropping REPLY from %s length %d "
+                        "for MD "LPX64" would overflow (%d)\n",
+                        libcfs_nid2str(ni->ni_nid), libcfs_id2str(src),
+                        rlength, hdr->msg.reply.dst_wmd.wh_object_cookie,
+                        mlength);
+                LNET_UNLOCK(flags);
+                return ENOENT;          /* +ve: OK but no match */
         }
 
         CDEBUG(D_NET, "%s: Reply from %s of length %d/%d into md "LPX64"\n",
                libcfs_nid2str(ni->ni_nid), libcfs_id2str(src), 
-               length, rlength, hdr->msg.reply.dst_wmd.wh_object_cookie);
+               mlength, rlength, hdr->msg.reply.dst_wmd.wh_object_cookie);
 
-        ptl_commit_md(md, msg);
+        lnet_commit_md(md, msg);
 
         msg->msg_ev.type = LNET_EVENT_REPLY;
         msg->msg_ev.initiator = src;
         msg->msg_ev.rlength = rlength;
-        msg->msg_ev.mlength = length;
+        msg->msg_ev.mlength = mlength;
         msg->msg_ev.offset = 0;
 
-        ptl_md_deconstruct(md, &msg->msg_ev.md);
-        ptl_md2handle(&msg->msg_ev.md_handle, md);
-
-        lnet_apini.apini_counters.recv_count++;
-        lnet_apini.apini_counters.recv_length += length;
+        lnet_md_deconstruct(md, &msg->msg_ev.md);
+        lnet_md2handle(&msg->msg_ev.md_handle, md);
 
-        PTL_UNLOCK(flags);
+        the_lnet.ln_counters.recv_count++;
+        the_lnet.ln_counters.recv_length += mlength;
 
-        rc = ptl_recv(ni, private, msg, md, 0, length, rlength);
-        if (rc != 0)
-                CERROR("%s: error on receiving REPLY from %s: %d\n",
-                       libcfs_nid2str(ni->ni_nid), libcfs_id2str(src), rc);
+        LNET_UNLOCK(flags);
 
-        return (rc);
+        lnet_recv(ni, private, msg, 0, 0, mlength, rlength);
+        return 0;
 }
 
 static int
-lnet_parse_ack(ptl_ni_t *ni, ptl_hdr_t *hdr, void *private, ptl_msg_t *msg)
+lnet_parse_ack(lnet_ni_t *ni, lnet_hdr_t *hdr, void *private, lnet_msg_t *msg)
 {
         lnet_process_id_t src = {.nid = hdr->src_nid,
-                                .pid = hdr->src_pid};
-        ptl_libmd_t     *md;
+                                 .pid = hdr->src_pid};
+        lnet_libmd_t    *md;
         unsigned long    flags;
 
         /* Convert ack fields to host byte order */
         hdr->msg.ack.match_bits = le64_to_cpu(hdr->msg.ack.match_bits);
         hdr->msg.ack.mlength = le32_to_cpu(hdr->msg.ack.mlength);
 
-        PTL_LOCK(flags);
+        LNET_LOCK(flags);
 
         /* NB handles only looked up by creator (no flips) */
-        md = ptl_wire_handle2md(&hdr->msg.ack.dst_wmd);
+        md = lnet_wire_handle2md(&hdr->msg.ack.dst_wmd);
         if (md == NULL || md->md_threshold == 0) {
+#if 0
+                /* Don't moan; this is expected */
                 CERROR ("%s: Dropping ACK from %s to %s MD "LPX64"."LPX64"\n",
                         libcfs_nid2str(ni->ni_nid), libcfs_id2str(src),
                         (md == NULL) ? "invalid" : "inactive",
                         hdr->msg.ack.dst_wmd.wh_interface_cookie,
                         hdr->msg.ack.dst_wmd.wh_object_cookie);
-
-                PTL_UNLOCK(flags);
-                return (-EIO);
+#endif
+                LNET_UNLOCK(flags);
+                return ENOENT;                  /* +ve! */
         }
 
         CDEBUG(D_NET, "%s: ACK from %s into md "LPX64"\n",
                libcfs_nid2str(ni->ni_nid), libcfs_id2str(src), 
                hdr->msg.ack.dst_wmd.wh_object_cookie);
 
-        ptl_commit_md(md, msg);
+        lnet_commit_md(md, msg);
 
         msg->msg_ev.type = LNET_EVENT_ACK;
         msg->msg_ev.initiator = src;
         msg->msg_ev.mlength = hdr->msg.ack.mlength;
         msg->msg_ev.match_bits = hdr->msg.ack.match_bits;
 
-        ptl_md_deconstruct(md, &msg->msg_ev.md);
-        ptl_md2handle(&msg->msg_ev.md_handle, md);
+        lnet_md_deconstruct(md, &msg->msg_ev.md);
+        lnet_md2handle(&msg->msg_ev.md_handle, md);
 
-        lnet_apini.apini_counters.recv_count++;
+        the_lnet.ln_counters.recv_count++;
 
-        PTL_UNLOCK(flags);
+        LNET_UNLOCK(flags);
 
-        /* We have received and matched up the ack OK, create the
-         * completion event now... */
         lnet_finalize(ni, private, msg, 0);
 
-        /* ...and now discard any junk after the hdr */
-        (void) ptl_recv(ni, private, NULL, NULL, 0, 0, hdr->payload_length);
-
-       return (0);
+        lnet_recv(ni, private, NULL, 0, 0, 0, 0);
+        return 0;
 }
 
 static char *
-hdr_type_string (ptl_hdr_t *hdr)
+hdr_type_string (lnet_hdr_t *hdr)
 {
         switch (hdr->type) {
-        case PTL_MSG_ACK:
+        case LNET_MSG_ACK:
                 return ("ACK");
-        case PTL_MSG_PUT:
+        case LNET_MSG_PUT:
                 return ("PUT");
-        case PTL_MSG_GET:
+        case LNET_MSG_GET:
                 return ("GET");
-        case PTL_MSG_REPLY:
+        case LNET_MSG_REPLY:
                 return ("REPLY");
-        case PTL_MSG_HELLO:
+        case LNET_MSG_HELLO:
                 return ("HELLO");
         default:
                 return ("<UNKNOWN>");
@@ -961,12 +1087,12 @@ hdr_type_string (ptl_hdr_t *hdr)
 }
 
 void
-ptl_print_hdr(ptl_hdr_t * hdr)
+lnet_print_hdr(lnet_hdr_t * hdr)
 {
         lnet_process_id_t src = {.nid = hdr->src_nid,
-                                .pid = hdr->src_pid};
+                                 .pid = hdr->src_pid};
         lnet_process_id_t dst = {.nid = hdr->dest_nid,
-                                .pid = hdr->dest_pid};
+                                 .pid = hdr->dest_pid};
         char *type_str = hdr_type_string (hdr);
 
         CWARN("P3 Header at %p of type %s\n", hdr, type_str);
@@ -977,7 +1103,7 @@ ptl_print_hdr(ptl_hdr_t * hdr)
         default:
                 break;
 
-        case PTL_MSG_PUT:
+        case LNET_MSG_PUT:
                 CWARN("    Ptl index %d, ack md "LPX64"."LPX64", "
                       "match bits "LPX64"\n",
                       hdr->msg.put.ptl_index,
@@ -989,7 +1115,7 @@ ptl_print_hdr(ptl_hdr_t * hdr)
                       hdr->msg.put.hdr_data);
                 break;
 
-        case PTL_MSG_GET:
+        case LNET_MSG_GET:
                 CWARN("    Ptl index %d, return md "LPX64"."LPX64", "
                       "match bits "LPX64"\n", hdr->msg.get.ptl_index,
                       hdr->msg.get.return_wmd.wh_interface_cookie,
@@ -1000,7 +1126,7 @@ ptl_print_hdr(ptl_hdr_t * hdr)
                       hdr->msg.get.src_offset);
                 break;
 
-        case PTL_MSG_ACK:
+        case LNET_MSG_ACK:
                 CWARN("    dst md "LPX64"."LPX64", "
                       "manipulated length %d\n",
                       hdr->msg.ack.dst_wmd.wh_interface_cookie,
@@ -1008,7 +1134,7 @@ ptl_print_hdr(ptl_hdr_t * hdr)
                       hdr->msg.ack.mlength);
                 break;
 
-        case PTL_MSG_REPLY:
+        case LNET_MSG_REPLY:
                 CWARN("    dst md "LPX64"."LPX64", "
                       "length %d\n",
                       hdr->msg.reply.dst_wmd.wh_interface_cookie,
@@ -1020,35 +1146,35 @@ ptl_print_hdr(ptl_hdr_t * hdr)
 
 
 int
-lnet_parse(ptl_ni_t *ni, ptl_hdr_t *hdr, void *private)
+lnet_parse(lnet_ni_t *ni, lnet_hdr_t *hdr, void *private)
 {
         unsigned long  flags;
-        int            rc;
+        int            rc = 0;
         int            for_me;
-        ptl_msg_t     *msg;
+        lnet_msg_t    *msg;
         lnet_nid_t     dest_nid;
         __u32          type = le32_to_cpu(hdr->type);
 
         /* NB we return 0 if we manage to parse the header and believe
          * it looks OK.  Anything that goes wrong with receiving the
-         * message after that point is the responsibility of the NAL.
+         * message after that point is the responsibility of the LND.
          * If we don't think the packet is for us, return 1 */
 
         dest_nid = le64_to_cpu(hdr->dest_nid);
 
-        for_me = (PTL_NETNAL(PTL_NIDNET(ni->ni_nid)) == LONAL ||
+        for_me = (PTL_NETTYP(PTL_NIDNET(ni->ni_nid)) == LOLND ||
                   lnet_ptlcompat_matchnid(ni->ni_nid, dest_nid));
 
         if (!for_me) {
-                if (lnet_apini.apini_ptlcompat > 0) {
+                if (the_lnet.ln_ptlcompat > 0) {
                         CERROR ("%s: Dropping message from %s: wrong nid %s\n",
                                 libcfs_nid2str(ni->ni_nid),
                                 libcfs_nid2str(le64_to_cpu(hdr->src_nid)),
                                 libcfs_nid2str(dest_nid));
-                        return -EIO;
+                        return -EPROTO;
                 }
 
-                if (!ptl_islocalnid(dest_nid))  /* tell NAL to use the router */
+                if (!lnet_islocalnid(dest_nid)) /* tell LND to use the router */
                         return 1;               /* to forward */
 
                 /* dest_nid is one of my NIs */
@@ -1061,7 +1187,7 @@ lnet_parse(ptl_ni_t *ni, ptl_hdr_t *hdr, void *private)
                                 libcfs_nid2str(ni->ni_nid),
                                 libcfs_nid2str(le64_to_cpu(hdr->src_nid)),
                                 libcfs_nid2str(dest_nid));
-                        return -EIO;
+                        return -EPROTO;
                 }
         }
         
@@ -1074,77 +1200,87 @@ lnet_parse(ptl_ni_t *ni, ptl_hdr_t *hdr, void *private)
         hdr->payload_length = le32_to_cpu(hdr->payload_length);
 
         switch (type) {
-        case PTL_MSG_ACK:
-        case PTL_MSG_PUT:
-        case PTL_MSG_GET:
-        case PTL_MSG_REPLY:
+        case LNET_MSG_ACK:
+        case LNET_MSG_GET:
+                if (hdr->payload_length > 0) {
+                        CERROR("%s: Bad %s from %s: "
+                               "payload size %d sent (0 expected)\n", 
+                               libcfs_nid2str(ni->ni_nid),
+                               hdr_type_string(hdr),
+                               libcfs_nid2str(hdr->src_nid),
+                               hdr->payload_length);
+                        return -EPROTO;
+                }
+                break;
+                               
+        case LNET_MSG_PUT:
+        case LNET_MSG_REPLY:
+                if (hdr->payload_length > PTL_MTU) {
+                        CERROR("%s: Bad %s from %s: "
+                               "payload size %d sent (%d max expected)\n", 
+                               libcfs_nid2str(ni->ni_nid),
+                               hdr_type_string(hdr),
+                               libcfs_nid2str(hdr->src_nid),
+                               hdr->payload_length, PTL_MTU);
+                        return -EPROTO;
+                }
                 break;
 
         default:
                 CERROR("%s: Bad message type 0x%x from %s\n",
                        libcfs_nid2str(ni->ni_nid), hdr->type, 
                        libcfs_nid2str(hdr->src_nid));
-
-                return -EIO;
+                return -EPROTO;
         }
 
-        /* We've decided we're not receiving garbage since we can parse the
-         * header.  We will return 0 come what may... */
-
-        if (!list_empty (&lnet_apini.apini_test_peers) && /* normally we don't */
+        if (!list_empty (&the_lnet.ln_test_peers) && /* normally we don't */
             fail_peer (hdr->src_nid, 0))        /* shall we now? */
         {
                 CERROR("%s: Dropping incoming %s from %s: simulated failure\n",
-                       libcfs_nid2str(ni->ni_nid), hdr_type_string (hdr),
+                       libcfs_nid2str(ni->ni_nid), hdr_type_string(hdr),
                        libcfs_nid2str(hdr->src_nid));
-                ptl_drop_message(ni, private, hdr);
-                return 0;
+                goto drop;
         }
 
-        msg = ptl_msg_alloc();
+        msg = lnet_msg_alloc();
         if (msg == NULL) {
                 CERROR("%s: Dropping incoming %s from %s: "
-                       "can't allocate a ptl_msg_t\n",
-                       libcfs_nid2str(ni->ni_nid), hdr_type_string (hdr),
+                       "can't allocate a lnet_msg_t\n",
+                       libcfs_nid2str(ni->ni_nid), hdr_type_string(hdr),
                        libcfs_nid2str(hdr->src_nid));
-                ptl_drop_message(ni, private, hdr);
-                return 0;
+                goto drop;
         }
 
         switch (hdr->type) {
-        case PTL_MSG_ACK:
+        case LNET_MSG_ACK:
                 rc = lnet_parse_ack(ni, hdr, private, msg);
                 break;
-        case PTL_MSG_PUT:
+        case LNET_MSG_PUT:
                 rc = lnet_parse_put(ni, hdr, private, msg);
                 break;
-        case PTL_MSG_GET:
+        case LNET_MSG_GET:
                 rc = lnet_parse_get(ni, hdr, private, msg);
                 break;
-        case PTL_MSG_REPLY:
+        case LNET_MSG_REPLY:
                 rc = lnet_parse_reply(ni, hdr, private, msg);
                 break;
         default:
                 LASSERT(0);
-                rc = -EIO;                  /* no compiler warning please */
                 break;
         }
 
-        if (rc != 0) {
-                if (msg->msg_md != NULL) {
-                        /* committed... */
-                        lnet_finalize(ni, private, msg, rc);
-                } else {
-                        PTL_LOCK(flags);
-                        ptl_msg_free(msg); /* expects PTL_LOCK held */
-                        PTL_UNLOCK(flags);
-
-                        ptl_drop_message(ni, private, hdr);
-                }
-        }
-
-        return 0;
-        /* That's "OK I can parse it", not "OK I like it" :) */
+        if (rc == 0)
+                return 0;
+        
+        LASSERT (rc == ENOENT);
+        LASSERT (msg->msg_md == NULL);
+        
+        LNET_LOCK(flags);
+        lnet_msg_free(msg);                     /* expects LNET_LOCK held */
+        LNET_UNLOCK(flags);
+ drop:
+        lnet_drop_message(ni, private, hdr->payload_length);
+        return ENOENT;
 }
 
 int
@@ -1153,16 +1289,15 @@ LNetPut(lnet_handle_md_t mdh, lnet_ack_req_t ack,
         __u64 match_bits, unsigned int offset, 
         __u64 hdr_data)
 {
-        ptl_msg_t        *msg;
-        ptl_hdr_t         hdr;
-        ptl_libmd_t      *md;
+        lnet_msg_t       *msg;
+        lnet_libmd_t     *md;
         unsigned long     flags;
         int               rc;
 
-        LASSERT (lnet_apini.apini_init);
-        LASSERT (lnet_apini.apini_refcount > 0);
+        LASSERT (the_lnet.ln_init);
+        LASSERT (the_lnet.ln_refcount > 0);
         
-        if (!list_empty (&lnet_apini.apini_test_peers) && /* normally we don't */
+        if (!list_empty (&the_lnet.ln_test_peers) && /* normally we don't */
             fail_peer (target.nid, 1))          /* shall we now? */
         {
                 CERROR("Dropping PUT to %s: simulated failure\n",
@@ -1170,19 +1305,19 @@ LNetPut(lnet_handle_md_t mdh, lnet_ack_req_t ack,
                 return -EIO;
         }
 
-        msg = ptl_msg_alloc();
+        msg = lnet_msg_alloc();
         if (msg == NULL) {
-                CERROR("Dropping PUT to %s: ENOMEM on ptl_msg_t\n",
+                CERROR("Dropping PUT to %s: ENOMEM on lnet_msg_t\n",
                        libcfs_id2str(target));
                 return -ENOMEM;
         }
 
-        PTL_LOCK(flags);
+        LNET_LOCK(flags);
 
-        md = ptl_handle2md(&mdh);
+        md = lnet_handle2md(&mdh);
         if (md == NULL || md->md_threshold == 0) {
-                ptl_msg_free(msg);
-                PTL_UNLOCK(flags);
+                lnet_msg_free(msg);
+                LNET_UNLOCK(flags);
 
                 CERROR("Dropping PUT to %s: MD invalid\n", 
                        libcfs_id2str(target));
@@ -1191,27 +1326,28 @@ LNetPut(lnet_handle_md_t mdh, lnet_ack_req_t ack,
 
         CDEBUG(D_NET, "LNetPut -> %s\n", libcfs_id2str(target));
 
-        memset (&hdr, 0, sizeof (hdr));
+        memset (&msg->msg_hdr, 0, sizeof (msg->msg_hdr));
 
         /* NB handles only looked up by creator (no flips) */
         if (ack == LNET_ACK_REQ) {
-                hdr.msg.put.ack_wmd.wh_interface_cookie = 
-                        lnet_apini.apini_interface_cookie;
-                hdr.msg.put.ack_wmd.wh_object_cookie = md->md_lh.lh_cookie;
+                msg->msg_hdr.msg.put.ack_wmd.wh_interface_cookie = 
+                        the_lnet.ln_interface_cookie;
+                msg->msg_hdr.msg.put.ack_wmd.wh_object_cookie = 
+                        md->md_lh.lh_cookie;
         } else {
-                hdr.msg.put.ack_wmd = PTL_WIRE_HANDLE_NONE;
+                msg->msg_hdr.msg.put.ack_wmd = LNET_WIRE_HANDLE_NONE;
         }
 
-        hdr.msg.put.match_bits = cpu_to_le64(match_bits);
-        hdr.msg.put.ptl_index = cpu_to_le32(portal);
-        hdr.msg.put.offset = cpu_to_le32(offset);
-        hdr.msg.put.hdr_data = hdr_data;
+        msg->msg_hdr.msg.put.match_bits = cpu_to_le64(match_bits);
+        msg->msg_hdr.msg.put.ptl_index = cpu_to_le32(portal);
+        msg->msg_hdr.msg.put.offset = cpu_to_le32(offset);
+        msg->msg_hdr.msg.put.hdr_data = hdr_data;
 
-        ptl_commit_md(md, msg);
+        lnet_commit_md(md, msg);
 
         msg->msg_ev.type = LNET_EVENT_SEND;
         msg->msg_ev.initiator.nid = LNET_NID_ANY;
-        msg->msg_ev.initiator.pid = lnet_apini.apini_pid;
+        msg->msg_ev.initiator.pid = the_lnet.ln_pid;
         msg->msg_ev.pt_index = portal;
         msg->msg_ev.match_bits = match_bits;
         msg->msg_ev.rlength = md->md_length;
@@ -1219,15 +1355,15 @@ LNetPut(lnet_handle_md_t mdh, lnet_ack_req_t ack,
         msg->msg_ev.offset = offset;
         msg->msg_ev.hdr_data = hdr_data;
 
-        ptl_md_deconstruct(md, &msg->msg_ev.md);
-        ptl_md2handle(&msg->msg_ev.md_handle, md);
+        lnet_md_deconstruct(md, &msg->msg_ev.md);
+        lnet_md2handle(&msg->msg_ev.md_handle, md);
 
-        lnet_apini.apini_counters.send_count++;
-        lnet_apini.apini_counters.send_length += md->md_length;
+        the_lnet.ln_counters.send_count++;
+        the_lnet.ln_counters.send_length += md->md_length;
 
-        PTL_UNLOCK(flags);
+        LNET_UNLOCK(flags);
 
-        rc = ptl_send (NULL, NULL, msg, &hdr, PTL_MSG_PUT, target, 
+        rc = lnet_send(NULL, NULL, msg, LNET_MSG_PUT, target, 
                        md, 0, md->md_length);
         if (rc != 0) {
                 CERROR("Error sending PUT to %s: %d\n",
@@ -1239,21 +1375,25 @@ LNetPut(lnet_handle_md_t mdh, lnet_ack_req_t ack,
         return 0;
 }
 
-ptl_msg_t *
-lnet_create_reply_msg (ptl_ni_t *ni, lnet_nid_t peer_nid, ptl_msg_t *getmsg)
+lnet_msg_t *
+lnet_create_reply_msg (lnet_ni_t *ni, lnet_msg_t *getmsg)
 {
-        /* The NAL can DMA direct to the GET md (i.e. no REPLY msg).  This
-         * returns a msg for the NAL to pass to lnet_finalize() when the sink
+        /* The LND can DMA direct to the GET md (i.e. no REPLY msg).  This
+         * returns a msg for the LND to pass to lnet_finalize() when the sink
          * data has been received.
          *
          * CAVEAT EMPTOR: 'getmsg' is the original GET, which is freed when
-         * lnet_finalize() is called on it, so the NAL must call this first */
+         * lnet_finalize() is called on it, so the LND must call this first */
 
-        ptl_msg_t       *msg = ptl_msg_alloc();
-        ptl_libmd_t     *getmd = getmsg->msg_md;
+        lnet_msg_t      *msg = lnet_msg_alloc();
+        lnet_libmd_t    *getmd = getmsg->msg_md;
+        lnet_nid_t       peer_nid = getmsg->msg_target.nid;
         unsigned long    flags;
 
-        PTL_LOCK(flags);
+        LASSERT (!getmsg->msg_target_is_router);
+        LASSERT (!getmsg->msg_routing);
+
+        LNET_LOCK(flags);
 
         LASSERT (getmd->md_pending > 0);
 
@@ -1275,7 +1415,7 @@ lnet_create_reply_msg (ptl_ni_t *ni, lnet_nid_t peer_nid, ptl_msg_t *getmsg)
         CDEBUG(D_NET, "%s: Reply from %s md %p\n", 
                libcfs_nid2str(ni->ni_nid), libcfs_nid2str(peer_nid), getmd);
 
-        ptl_commit_md (getmd, msg);
+        lnet_commit_md (getmd, msg);
 
         msg->msg_ev.type = LNET_EVENT_REPLY;
         msg->msg_ev.initiator.nid = peer_nid;
@@ -1283,23 +1423,23 @@ lnet_create_reply_msg (ptl_ni_t *ni, lnet_nid_t peer_nid, ptl_msg_t *getmsg)
         msg->msg_ev.rlength = msg->msg_ev.mlength = getmd->md_length;
         msg->msg_ev.offset = 0;
 
-        ptl_md_deconstruct(getmd, &msg->msg_ev.md);
-        ptl_md2handle(&msg->msg_ev.md_handle, getmd);
+        lnet_md_deconstruct(getmd, &msg->msg_ev.md);
+        lnet_md2handle(&msg->msg_ev.md_handle, getmd);
 
-        lnet_apini.apini_counters.recv_count++;
-        lnet_apini.apini_counters.recv_length += getmd->md_length;
+        the_lnet.ln_counters.recv_count++;
+        the_lnet.ln_counters.recv_length += getmd->md_length;
 
-        PTL_UNLOCK(flags);
+        LNET_UNLOCK(flags);
 
         return msg;
 
  drop_msg:
-        ptl_msg_free(msg);
+        lnet_msg_free(msg);
  drop:
-        lnet_apini.apini_counters.drop_count++;
-        lnet_apini.apini_counters.drop_length += getmd->md_length;
+        the_lnet.ln_counters.drop_count++;
+        the_lnet.ln_counters.drop_length += getmd->md_length;
 
-        PTL_UNLOCK (flags);
+        LNET_UNLOCK (flags);
 
         return NULL;
 }
@@ -1309,16 +1449,15 @@ LNetGet(lnet_handle_md_t mdh,
         lnet_process_id_t target, unsigned int portal, 
         __u64 match_bits, unsigned int offset)
 {
-        ptl_msg_t        *msg;
-        ptl_hdr_t         hdr;
-        ptl_libmd_t      *md;
+        lnet_msg_t       *msg;
+        lnet_libmd_t     *md;
         unsigned long     flags;
         int               rc;
 
-        LASSERT (lnet_apini.apini_init);
-        LASSERT (lnet_apini.apini_refcount > 0);
+        LASSERT (the_lnet.ln_init);
+        LASSERT (the_lnet.ln_refcount > 0);
         
-        if (!list_empty (&lnet_apini.apini_test_peers) && /* normally we don't */
+        if (!list_empty (&the_lnet.ln_test_peers) && /* normally we don't */
             fail_peer (target.nid, 1))          /* shall we now? */
         {
                 CERROR("Dropping GET to %s: simulated failure\n",
@@ -1326,19 +1465,19 @@ LNetGet(lnet_handle_md_t mdh,
                 return -EIO;
         }
 
-        msg = ptl_msg_alloc();
+        msg = lnet_msg_alloc();
         if (msg == NULL) {
-                CERROR("Dropping GET to %s: ENOMEM on ptl_msg_t\n",
+                CERROR("Dropping GET to %s: ENOMEM on lnet_msg_t\n",
                        libcfs_id2str(target));
                 return -ENOMEM;
         }
 
-        PTL_LOCK(flags);
+        LNET_LOCK(flags);
 
-        md = ptl_handle2md(&mdh);
+        md = lnet_handle2md(&mdh);
         if (md == NULL || md->md_threshold == 0) {
-                ptl_msg_free(msg);
-                PTL_UNLOCK(flags);
+                lnet_msg_free(msg);
+                LNET_UNLOCK(flags);
 
                 CERROR("Dropping GET to %s: MD invalid\n",
                        libcfs_id2str(target));
@@ -1347,23 +1486,24 @@ LNetGet(lnet_handle_md_t mdh,
 
         CDEBUG(D_NET, "LNetGet -> %s\n", libcfs_id2str(target));
 
-        memset (&hdr, 0, sizeof (hdr));
+        memset (&msg->msg_hdr, 0, sizeof (msg->msg_hdr));
 
         /* NB handles only looked up by creator (no flips) */
-        hdr.msg.get.return_wmd.wh_interface_cookie = 
-                lnet_apini.apini_interface_cookie;
-        hdr.msg.get.return_wmd.wh_object_cookie = md->md_lh.lh_cookie;
+        msg->msg_hdr.msg.get.return_wmd.wh_interface_cookie = 
+                the_lnet.ln_interface_cookie;
+        msg->msg_hdr.msg.get.return_wmd.wh_object_cookie = 
+                md->md_lh.lh_cookie;
 
-        hdr.msg.get.match_bits = cpu_to_le64(match_bits);
-        hdr.msg.get.ptl_index = cpu_to_le32(portal);
-        hdr.msg.get.src_offset = cpu_to_le32(offset);
-        hdr.msg.get.sink_length = cpu_to_le32(md->md_length);
+        msg->msg_hdr.msg.get.match_bits = cpu_to_le64(match_bits);
+        msg->msg_hdr.msg.get.ptl_index = cpu_to_le32(portal);
+        msg->msg_hdr.msg.get.src_offset = cpu_to_le32(offset);
+        msg->msg_hdr.msg.get.sink_length = cpu_to_le32(md->md_length);
 
-        ptl_commit_md(md, msg);
+        lnet_commit_md(md, msg);
 
         msg->msg_ev.type = LNET_EVENT_SEND;
         msg->msg_ev.initiator.nid = LNET_NID_ANY;
-        msg->msg_ev.initiator.pid = lnet_apini.apini_pid;
+        msg->msg_ev.initiator.pid = the_lnet.ln_pid;
         msg->msg_ev.pt_index = portal;
         msg->msg_ev.match_bits = match_bits;
         msg->msg_ev.rlength = md->md_length;
@@ -1371,14 +1511,14 @@ LNetGet(lnet_handle_md_t mdh,
         msg->msg_ev.offset = offset;
         msg->msg_ev.hdr_data = 0;
 
-        ptl_md_deconstruct(md, &msg->msg_ev.md);
-        ptl_md2handle(&msg->msg_ev.md_handle, md);
+        lnet_md_deconstruct(md, &msg->msg_ev.md);
+        lnet_md2handle(&msg->msg_ev.md_handle, md);
 
-        lnet_apini.apini_counters.send_count++;
+        the_lnet.ln_counters.send_count++;
 
-        PTL_UNLOCK(flags);
+        LNET_UNLOCK(flags);
 
-        rc = ptl_send (NULL, NULL, msg, &hdr, PTL_MSG_GET, target, 
+        rc = lnet_send(NULL, NULL, msg, LNET_MSG_GET, target, 
                        NULL, 0, 0);
         if (rc != 0) {
                 CERROR("error sending GET to %s: %d\n",
@@ -1393,8 +1533,8 @@ LNetGet(lnet_handle_md_t mdh,
 int
 LNetDist (lnet_nid_t nid, int *order)
 {
-        LASSERT (lnet_apini.apini_init);
-        LASSERT (lnet_apini.apini_refcount > 0);
+        LASSERT (the_lnet.ln_init);
+        LASSERT (the_lnet.ln_refcount > 0);
         
         return kpr_distance(nid, order);
 }
index 1b77d0a..80b8c1c 100644 (file)
@@ -27,7 +27,7 @@
 #include <lnet/lib-lnet.h>
 
 void
-ptl_enq_event_locked (void *private, ptl_eq_t *eq, lnet_event_t *ev)
+lnet_enq_event_locked (void *private, lnet_eq_t *eq, lnet_event_t *ev)
 {
         lnet_event_t  *eq_slot;
 
@@ -43,7 +43,7 @@ ptl_enq_event_locked (void *private, ptl_eq_t *eq, lnet_event_t *ev)
         eq_slot = eq->eq_events + (ev->sequence & (eq->eq_size - 1));
 
         /* There is no race since both event consumers and event producers
-         * take the PTL_LOCK, so we don't screw around with memory
+         * take the LNET_LOCK, so we don't screw around with memory
          * barriers, setting the sequence number last or wierd structure
          * layout assertions. */
         *eq_slot = *ev;
@@ -54,80 +54,90 @@ ptl_enq_event_locked (void *private, ptl_eq_t *eq, lnet_event_t *ev)
 
         /* Wake anyone sleeping for an event (see lib-eq.c) */
 #ifdef __KERNEL__
-        if (cfs_waitq_active(&lnet_apini.apini_waitq))
-                cfs_waitq_broadcast(&lnet_apini.apini_waitq);
+        if (cfs_waitq_active(&the_lnet.ln_waitq))
+                cfs_waitq_broadcast(&the_lnet.ln_waitq);
 #else
-        pthread_cond_broadcast(&lnet_apini.apini_cond);
+        pthread_cond_broadcast(&the_lnet.ln_cond);
 #endif
 }
 
 void
-lnet_finalize (ptl_ni_t *ni, void *private, ptl_msg_t *msg, int status)
+lnet_finalize (lnet_ni_t *ni, void *private, lnet_msg_t *msg, int status)
 {
-        ptl_libmd_t  *md;
+        lnet_libmd_t *md;
         int           unlink;
         unsigned long flags;
         int           rc;
-        ptl_hdr_t     ack;
+        int           send_ack;
 
         if (msg == NULL)
                 return;
 
-        /* Only send an ACK if the PUT completed successfully */
-        if (status == 0 &&
-            !ptl_is_wire_handle_none(&msg->msg_ack_wmd)) {
-
-                LASSERT(msg->msg_ev.type == LNET_EVENT_PUT);
-
-                memset (&ack, 0, sizeof (ack));
-                ack.msg.ack.dst_wmd = msg->msg_ack_wmd;
-                ack.msg.ack.match_bits = msg->msg_ev.match_bits;
-                ack.msg.ack.mlength = cpu_to_le32(msg->msg_ev.mlength);
-
-                rc = ptl_send (ni, private, NULL, &ack, PTL_MSG_ACK,
-                               msg->msg_ev.initiator, NULL, 0, 0);
-                if (rc != 0) {
-                        /* send failed: there's nothing else to clean up. */
-                        CERROR("Error %d sending ACK to %s\n",
-                               rc, libcfs_id2str(msg->msg_ev.initiator));
-                }
-        }
+        LNET_LOCK(flags);
 
         md = msg->msg_md;
+        if (md != NULL) {
+                /* Now it's safe to drop my caller's ref */
+                md->md_pending--;
+                LASSERT (md->md_pending >= 0);
+
+                /* Should I unlink this MD? */
+                if (md->md_pending != 0)        /* other refs */
+                        unlink = 0;
+                else if ((md->md_flags & LNET_MD_FLAG_ZOMBIE) != 0)
+                        unlink = 1;
+                else if ((md->md_flags & LNET_MD_FLAG_AUTO_UNLINK) == 0)
+                        unlink = 0;
+                else
+                        unlink = lnet_md_exhausted(md);
+                
+                msg->msg_ev.status = status;
+                msg->msg_ev.unlinked = unlink;
+                
+                if (md->md_eq != NULL)
+                        lnet_enq_event_locked(private, md->md_eq, &msg->msg_ev);
+                
+                if (unlink)
+                        lnet_md_unlink(md);
+
+                msg->msg_md = NULL;
+        }
+        
+        /* Only send an ACK if the PUT completed successfully */
+        send_ack = (status == 0 &&
+                    !lnet_is_wire_handle_none(&msg->msg_ack_wmd));
 
-        PTL_LOCK(flags);
-
-        /* Now it's safe to drop my caller's ref */
-        md->md_pending--;
-        LASSERT (md->md_pending >= 0);
-
-        /* Should I unlink this MD? */
-        if (md->md_pending != 0)                   /* other refs */
-                unlink = 0;
-        else if ((md->md_flags & PTL_MD_FLAG_ZOMBIE) != 0)
-                unlink = 1;
-        else if ((md->md_flags & PTL_MD_FLAG_AUTO_UNLINK) == 0)
-                unlink = 0;
-        else
-                unlink = ptl_md_exhausted(md);
-
-        msg->msg_ev.status = status;
-        msg->msg_ev.unlinked = unlink;
-
-        if (md->md_eq != NULL)
-                ptl_enq_event_locked(private, md->md_eq, &msg->msg_ev);
-
-        if (unlink)
-                ptl_md_unlink(md);
-
-        list_del (&msg->msg_list);
-        lnet_apini.apini_counters.msgs_alloc--;
-        ptl_msg_free(msg);
-
-        PTL_UNLOCK(flags);
-}
+        if (!send_ack) {
+                list_del (&msg->msg_activelist);
+                the_lnet.ln_counters.msgs_alloc--;
+                lnet_msg_free(msg);
 
-lnet_pid_t  lnet_getpid(void) 
-{
-        return lnet_apini.apini_pid;
+                LNET_UNLOCK(flags);
+                return;
+        }
+                
+        LNET_UNLOCK(flags);
+
+        LASSERT(msg->msg_ev.type == LNET_EVENT_PUT);
+
+        memset (&msg->msg_hdr, 0, sizeof(msg->msg_hdr));
+        msg->msg_hdr.msg.ack.dst_wmd = msg->msg_ack_wmd;
+        msg->msg_hdr.msg.ack.match_bits = msg->msg_ev.match_bits;
+        msg->msg_hdr.msg.ack.mlength = cpu_to_le32(msg->msg_ev.mlength);
+
+        msg->msg_ack_wmd = LNET_WIRE_HANDLE_NONE;
+
+        rc = lnet_send(ni, private, msg, LNET_MSG_ACK,
+                       msg->msg_ev.initiator, NULL, 0, 0);
+        if (rc != 0) {
+                /* send failed: there's nothing else to clean up. */
+                CERROR("Error %d sending ACK to %s\n",
+                       rc, libcfs_id2str(msg->msg_ev.initiator));
+
+                LNET_LOCK(flags);
+                list_del (&msg->msg_activelist);
+                the_lnet.ln_counters.msgs_alloc--;
+                lnet_msg_free(msg);
+                LNET_UNLOCK(flags);
+        }
 }
index bb55986..2fa1708 100644 (file)
 #include <lnet/lib-lnet.h>
 
 int
-lonal_send (ptl_ni_t         *ni,
-           void             *private,
-           ptl_msg_t        *ptlmsg,
-           ptl_hdr_t        *hdr,
-           int               type,
-           lnet_process_id_t target,
-           int               target_is_router,
-           int               routing,
-           unsigned int      payload_niov,
-           struct iovec     *payload_iov,
-            lnet_kiov_t      *payload_kiov,
-           unsigned int      payload_offset,
-           unsigned int      payload_nob)
+lolnd_send (lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg)
 {
-        lo_desc_t lod = { .lod_niov    = payload_niov,
-                          .lod_offset  = payload_offset,
-                          .lod_nob     = payload_nob};
         int rc;
 
-        LASSERT (!routing);
+        LASSERT (!lntmsg->msg_routing);
+        LASSERT (!lntmsg->msg_target_is_router);
 
-        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);
+        rc = lnet_parse(ni, &lntmsg->msg_hdr, lntmsg);
+        if (rc >= 0)
+                lnet_finalize(ni, private, lntmsg, 0);
         
         return rc;
 }
 
-void
-lonal_copy_iov(lo_desc_t    *lod,
-               unsigned int  niov,
-               struct iovec *iov,
-               unsigned int  offset,
-               unsigned int  mlen)
-{
-        /* I only copy iovec->iovec */
-        LASSERT(lod->lod_type == LOD_IOV);
-        LASSERT(mlen > 0);
-
-        while (offset >= iov->iov_len) {
-                offset -= iov->iov_len;
-                iov++;
-                niov--;
-                LASSERT(niov > 0);
-        }
-        
-        while (lod->lod_offset >= lod->lod_iov.iov->iov_len) {
-                lod->lod_offset -= lod->lod_iov.iov->iov_len;
-                lod->lod_iov.iov++;
-                lod->lod_niov--;
-                LASSERT(lod->lod_niov > 0);
-        }
-        
-        do {
-                int fraglen = MIN(iov->iov_len - offset,
-                                  lod->lod_iov.iov->iov_len - lod->lod_offset);
-
-                LASSERT(niov > 0);
-                LASSERT(lod->lod_niov > 0);
-
-                if (fraglen > mlen)
-                        fraglen = mlen;
-                
-                memcpy((void *)((unsigned long)iov->iov_base + offset),
-                       (void *)((unsigned long)lod->lod_iov.iov->iov_base +
-                                lod->lod_offset),
-                       fraglen);
-
-                if (offset + fraglen < iov->iov_len) {
-                        offset += fraglen;
-                } else {
-                        offset = 0;
-                        iov++;
-                        niov--;
-                }
-
-                if (lod->lod_offset + fraglen < lod->lod_iov.iov->iov_len ) {
-                        lod->lod_offset += fraglen;
-                } else {
-                        lod->lod_offset = 0;
-                        lod->lod_iov.iov++;
-                        lod->lod_niov--;
-                }
-
-                mlen -= fraglen;
-        } while (mlen > 0);
-}
-
-void
-lonal_copy_kiov(lo_desc_t    *lod,
-                unsigned int  niov,
-                lnet_kiov_t  *kiov,
-                unsigned int  offset,
-                unsigned int  mlen)
+int
+lolnd_recv (lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg,
+            int delayed, unsigned int niov, 
+            struct iovec *iov, lnet_kiov_t *kiov,
+            unsigned int offset, unsigned int mlen, unsigned int rlen)
 {
-#ifndef __KERNEL__
-        LBUG();
-#else
-        void          *srcaddr = NULL;
-        void          *dstaddr = NULL;
-        unsigned long  srcfrag = 0;
-        unsigned long  dstfrag = 0;
-        unsigned long  fraglen;
-
-        /* I only copy kiov->kiov */
-        LASSERT(lod->lod_type == LOD_KIOV);
-        LASSERT(mlen > 0);
-
-        while (offset >= kiov->kiov_len) {
-                offset -= kiov->kiov_len;
-                kiov++;
-                niov--;
-                LASSERT(niov > 0);
-        }
-
-        while (lod->lod_offset >= lod->lod_iov.kiov->kiov_len) {
-                lod->lod_offset -= lod->lod_iov.kiov->kiov_len;
-                lod->lod_iov.kiov++;
-                lod->lod_niov--;
-                LASSERT(lod->lod_niov > 0);
-        }
-
-        do {
-        /* CAVEAT EMPTOR: I kmap 2 pages at once == slight risk of deadlock */
-                LASSERT(niov > 0);
-                if (dstaddr == NULL) {
-                        dstaddr = (void *)((unsigned long)kmap(kiov->kiov_page) +
-                                           kiov->kiov_offset + offset);
-                        dstfrag = kiov->kiov_len -  offset;
-                }
-
-                LASSERT(lod->lod_niov > 0);
-                if (srcaddr == NULL) {
-                        srcaddr = (void *)((unsigned long)kmap(lod->lod_iov.kiov->kiov_page) +
-                                           lod->lod_iov.kiov->kiov_offset + lod->lod_offset);
-                        srcfrag = lod->lod_iov.kiov->kiov_len - lod->lod_offset;
-                }
-                
-                fraglen = MIN(srcfrag, dstfrag);
-                if (fraglen > mlen)
-                        fraglen = mlen;
-                
-                memcpy(dstaddr, srcaddr, fraglen);
-                
-                if (fraglen < dstfrag) {
-                        dstfrag -= fraglen;
-                        dstaddr = (void *)((unsigned long)dstaddr + fraglen);
-                } else {
-                        kunmap(kiov->kiov_page);
-                        dstaddr = NULL;
-                        offset = 0;
-                        kiov++;
-                        niov--;
-                }
-
-                if (fraglen < srcfrag) {
-                        srcfrag -= fraglen;
-                        srcaddr = (void *)((unsigned long)srcaddr + fraglen);
-                } else {
-                        kunmap(lod->lod_iov.kiov->kiov_page);
-                        srcaddr = NULL;
-                        lod->lod_offset = 0;
-                        lod->lod_iov.kiov++;
-                        lod->lod_niov--;
-                }
+        lnet_msg_t *sendmsg = private;
 
-                mlen -= fraglen;
-        } while (mlen > 0);
+        LASSERT (!delayed);
 
-        if (dstaddr != NULL)
-                kunmap(kiov->kiov_page);
+        if (lntmsg == NULL)                     /* discarding */
+                return 0;
 
-        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 (sendmsg->msg_iov != NULL) {
                 if (iov != NULL)
-                        lonal_copy_iov(lod, niov, iov, offset, mlen);
+                        lnet_copy_iov2iov(niov, iov, offset,
+                                          sendmsg->msg_niov, sendmsg->msg_iov,
+                                          sendmsg->msg_offset, mlen);
                 else
-                        lonal_copy_kiov(lod, niov, kiov, offset, mlen);
+                        lnet_copy_iov2kiov(niov, kiov, offset,
+                                           sendmsg->msg_niov, sendmsg->msg_iov,
+                                           sendmsg->msg_offset, mlen);
+        } else {
+                if (iov != NULL)
+                        lnet_copy_kiov2iov(niov, iov, offset,
+                                           sendmsg->msg_niov, sendmsg->msg_kiov,
+                                           sendmsg->msg_offset, mlen);
+                else
+                        lnet_copy_kiov2kiov(niov, kiov, offset,
+                                            sendmsg->msg_niov, sendmsg->msg_kiov,
+                                            sendmsg->msg_offset, mlen);
         }
 
-        lnet_finalize(ni, private, ptlmsg, 0);
+        lnet_finalize(ni, private, lntmsg, 0);
         return 0;
 }
 
-
-static int lonal_instanced;
+static int lolnd_instanced;
 
 void
-lonal_shutdown(ptl_ni_t *ni)
+lolnd_shutdown(lnet_ni_t *ni)
 {
        CDEBUG (D_NET, "shutdown\n");
-        LASSERT (lonal_instanced);
+        LASSERT (lolnd_instanced);
         
-        lonal_instanced = 0;
+        lolnd_instanced = 0;
 }
 
 int
-lonal_startup (ptl_ni_t *ni)
+lolnd_startup (lnet_ni_t *ni)
 {
-       LASSERT (ni->ni_nal == &ptl_lonal);
-       LASSERT (!lonal_instanced);
-        lonal_instanced = 1;
+       LASSERT (ni->ni_lnd == &the_lolnd);
+       LASSERT (!lolnd_instanced);
+        lolnd_instanced = 1;
 
        return (0);
 }
 
-ptl_nal_t ptl_lonal = {
-        .nal_type       = LONAL,
-        .nal_startup    = lonal_startup,
-        .nal_shutdown   = lonal_shutdown,
-        .nal_send       = lonal_send,
-        .nal_recv       = lonal_recv,
+lnd_t the_lolnd = {
+        .lnd_type       = LOLND,
+        .lnd_startup    = lolnd_startup,
+        .lnd_shutdown   = lolnd_shutdown,
+        .lnd_send       = lolnd_send,
+        .lnd_recv       = lolnd_recv,
 };
 
-ptl_ni_t *ptl_loni;
+lnet_ni_t *lnet_loni;
index 0da39fe..cf48eec 100644 (file)
@@ -29,18 +29,18 @@ static int config_on_load = 0;
 CFS_MODULE_PARM(config_on_load, "i", int, 0444,
                 "configure network at module load");
 
-static int kportal_ioctl(unsigned int cmd, struct portal_ioctl_data *data)
+static int lnet_ioctl(unsigned int cmd, struct portal_ioctl_data *data)
 {
         int                initrc;
         int                rc;
 
         if (cmd == IOC_PORTAL_UNCONFIGURE) {
                 /* ghastly hack to prevent repeated net config */
-                PTL_MUTEX_DOWN(&lnet_apini.apini_api_mutex);
-                initrc = lnet_apini.apini_niinit_self;
-                lnet_apini.apini_niinit_self = 0;
-                rc = lnet_apini.apini_refcount;
-                PTL_MUTEX_UP(&lnet_apini.apini_api_mutex);
+                LNET_MUTEX_DOWN(&the_lnet.ln_api_mutex);
+                initrc = the_lnet.ln_niinit_self;
+                the_lnet.ln_niinit_self = 0;
+                rc = the_lnet.ln_refcount;
+                LNET_MUTEX_UP(&the_lnet.ln_api_mutex);
 
                 if (initrc) {
                         rc--;
@@ -57,10 +57,10 @@ static int kportal_ioctl(unsigned int cmd, struct portal_ioctl_data *data)
         rc = LNetCtl(cmd, data);
 
         if (initrc == 0) {
-                PTL_MUTEX_DOWN(&lnet_apini.apini_api_mutex);
+                LNET_MUTEX_DOWN(&the_lnet.ln_api_mutex);
                 /* I instantiated the network */
-                lnet_apini.apini_niinit_self = 1;
-                PTL_MUTEX_UP(&lnet_apini.apini_api_mutex);
+                the_lnet.ln_niinit_self = 1;
+                LNET_MUTEX_UP(&the_lnet.ln_api_mutex);
         } else {
                 LNetNIFini();
         }
@@ -68,9 +68,9 @@ static int kportal_ioctl(unsigned int cmd, struct portal_ioctl_data *data)
         return rc;
 }
 
-DECLARE_IOCTL_HANDLER(kportal_ioctl_handler, kportal_ioctl);
+DECLARE_IOCTL_HANDLER(lnet_ioctl_handler, lnet_ioctl);
 
-static int init_kportals_module(void)
+static int init_lnet(void)
 {
         int rc;
         ENTRY;
@@ -82,37 +82,37 @@ static int init_kportals_module(void)
         }
 
         if (config_on_load) {
-                PTL_MUTEX_DOWN(&lnet_apini.apini_api_mutex);
-                lnet_apini.apini_niinit_self = 1;
-                PTL_MUTEX_UP(&lnet_apini.apini_api_mutex);
+                LNET_MUTEX_DOWN(&the_lnet.ln_api_mutex);
+                the_lnet.ln_niinit_self = 1;
+                LNET_MUTEX_UP(&the_lnet.ln_api_mutex);
 
                 rc = LNetNIInit(LUSTRE_SRV_PTL_PID);
                 if (rc != 0) {
                         /* Can't LNetFini or fail now if I loaded NALs */
-                        PTL_MUTEX_DOWN(&lnet_apini.apini_api_mutex);
-                        lnet_apini.apini_niinit_self = 0;
-                        PTL_MUTEX_UP(&lnet_apini.apini_api_mutex);
+                        LNET_MUTEX_DOWN(&the_lnet.ln_api_mutex);
+                        the_lnet.ln_niinit_self = 0;
+                        LNET_MUTEX_UP(&the_lnet.ln_api_mutex);
                 }
         }
         
-        rc = libcfs_register_ioctl(&kportal_ioctl_handler);
+        rc = libcfs_register_ioctl(&lnet_ioctl_handler);
         LASSERT (rc == 0);
 
         RETURN(rc);
 }
 
-static void exit_kportals_module(void)
+static void fini_lnet(void)
 {
         int rc;
 
-        rc = libcfs_deregister_ioctl(&kportal_ioctl_handler);
+        rc = libcfs_deregister_ioctl(&lnet_ioctl_handler);
         LASSERT (rc == 0);
 
         LNetFini();
 }
 
-EXPORT_SYMBOL(lnet_register_nal);
-EXPORT_SYMBOL(lnet_unregister_nal);
+EXPORT_SYMBOL(lnet_register_lnd);
+EXPORT_SYMBOL(lnet_unregister_lnd);
 
 EXPORT_SYMBOL(LNetMEAttach);
 EXPORT_SYMBOL(LNetMEInsert);
@@ -134,23 +134,22 @@ EXPORT_SYMBOL(LNetGetId);
 EXPORT_SYMBOL(LNetMDBind);
 EXPORT_SYMBOL(LNetDist);
 EXPORT_SYMBOL(LNetCtl);
-EXPORT_SYMBOL(lnet_apini);
+EXPORT_SYMBOL(the_lnet);
 EXPORT_SYMBOL(lnet_iov_nob);
-EXPORT_SYMBOL(lnet_copy_iov2buf);
-EXPORT_SYMBOL(lnet_copy_buf2iov);
 EXPORT_SYMBOL(lnet_extract_iov);
 EXPORT_SYMBOL(lnet_kiov_nob);
-EXPORT_SYMBOL(lnet_copy_kiov2buf);
-EXPORT_SYMBOL(lnet_copy_buf2kiov);
 EXPORT_SYMBOL(lnet_extract_kiov);
+EXPORT_SYMBOL(lnet_copy_iov2iov);
+EXPORT_SYMBOL(lnet_copy_iov2kiov);
+EXPORT_SYMBOL(lnet_copy_kiov2iov);
+EXPORT_SYMBOL(lnet_copy_kiov2kiov);
 EXPORT_SYMBOL(lnet_finalize);
 EXPORT_SYMBOL(lnet_parse);
 EXPORT_SYMBOL(lnet_create_reply_msg);
 EXPORT_SYMBOL(lnet_net2ni);
-EXPORT_SYMBOL(lnet_getpid);
 
 MODULE_AUTHOR("Peter J. Braam <braam@clusterfs.com>");
 MODULE_DESCRIPTION("Portals v3.1");
 MODULE_LICENSE("GPL");
 
-cfs_module(portals, "1.0.0", init_kportals_module, exit_kportals_module);
+cfs_module(portals, "1.0.0", init_lnet, fini_lnet);
index 8dfb553..1231f1c 100644 (file)
@@ -85,7 +85,7 @@ kpr_upcall (lnet_nid_t gw_nid, int alive, time_t when)
 }
 
 int
-lnet_notify (ptl_ni_t *ni, lnet_nid_t gateway_nid, int alive, time_t when)
+lnet_notify (lnet_ni_t *ni, lnet_nid_t gateway_nid, int alive, time_t when)
 {
        unsigned long        flags;
         int                  found;
@@ -176,8 +176,8 @@ lnet_notify (ptl_ni_t *ni, lnet_nid_t gateway_nid, int alive, time_t when)
                 /* userland notified me: notify NAL? */
                 ni = lnet_net2ni(PTL_NIDNET(gateway_nid));
                 if (ni != NULL) {
-                        ni->ni_nal->nal_notify(ni, gateway_nid, alive);
-                        ptl_ni_decref(ni);
+                        ni->ni_lnd->lnd_notify(ni, gateway_nid, alive);
+                        lnet_ni_decref(ni);
                 }
         } else {
                 /* It wasn't userland that notified me... */
@@ -215,7 +215,7 @@ kpr_ge_isbetter (kpr_gateway_entry_t *ge1, kpr_gateway_entry_t *ge2)
 void
 kpr_update_weight (kpr_gateway_entry_t *ge, int nob)
 {
-        int weight = 1 + (nob + sizeof (ptl_hdr_t)/2)/sizeof (ptl_hdr_t);
+        int weight = 1 + (nob + sizeof (lnet_hdr_t)/2)/sizeof (lnet_hdr_t);
 
         /* We've chosen this route entry (i.e. gateway) to forward payload
          * of length 'nob'; update the route's weight to make it less
@@ -230,16 +230,16 @@ kpr_update_weight (kpr_gateway_entry_t *ge, int nob)
 }
 
 lnet_nid_t
-lnet_lookup (ptl_ni_t **nip, lnet_nid_t target_nid, int nob)
+lnet_lookup (lnet_ni_t **nip, lnet_nid_t target_nid, int nob)
 {
-        ptl_ni_t            *ni = *nip;
+        lnet_ni_t           *ni = *nip;
         lnet_nid_t           gwnid;
        struct list_head    *e;
         kpr_net_entry_t     *ne = NULL;
         kpr_route_entry_t   *re;
         int                  found;
         unsigned long        flags;
-        ptl_ni_t            *gwni = NULL;
+        lnet_ni_t           *gwni = NULL;
         kpr_gateway_entry_t *ge = NULL;
         __u32                target_net = PTL_NIDNET(target_nid);
         __u32                gateway_net;
@@ -256,11 +256,11 @@ lnet_lookup (ptl_ni_t **nip, lnet_nid_t target_nid, int nob)
                         return target_nid;
                 }
         } else {                                /* ni already determined */
-                if (PTL_NETNAL(PTL_NIDNET(ni->ni_nid)) == LONAL ||
+                if (PTL_NETTYP(PTL_NIDNET(ni->ni_nid)) == LOLND ||
                     target_net == PTL_NIDNET(ni->ni_nid) ||
-                    (lnet_apini.apini_ptlcompat > 0 &&
-                     PTL_NETNAL(target_net) == 0)) {
-                        ptl_ni_addref(ni);      /* extra ref so caller can drop blindly */
+                    (the_lnet.ln_ptlcompat > 0 &&
+                     PTL_NETTYP(target_net) == 0)) {
+                        lnet_ni_addref(ni);     /* extra ref so caller can drop blindly */
                         return target_nid;
                 }
         }
@@ -310,7 +310,7 @@ lnet_lookup (ptl_ni_t **nip, lnet_nid_t target_nid, int nob)
                             kpr_ge_isbetter (ge, re->kpre_gateway))
                                 continue;
 
-                } else if (!ptl_islocalnet(gateway_net, NULL)) {
+                } else if (!lnet_islocalnet(gateway_net, NULL)) {
                         continue;               /* not on a local net */
                 } else if (ge != NULL) {        
                         /* already got 1 candidate gateway */
@@ -349,7 +349,7 @@ lnet_lookup (ptl_ni_t **nip, lnet_nid_t target_nid, int nob)
         LASSERT ((gwni == NULL) != (ni == NULL));
 
         if (ni != NULL)
-                ptl_ni_addref(ni);              /* extra ref so caller can drop blindly */
+                lnet_ni_addref(ni);              /* extra ref so caller can drop blindly */
         else
                 *nip = gwni;                    /* already got a ref */
 
@@ -366,7 +366,7 @@ kpr_distance (lnet_nid_t nid, int *orderp)
         int               dist = -ENETUNREACH;
         int               order = 0;
 
-        if (ptl_islocalnet(net, orderp))
+        if (lnet_islocalnet(net, orderp))
                 return 0;
 
        read_lock_irqsave(&kpr_state.kpr_rwlock, flags);
@@ -387,225 +387,6 @@ kpr_distance (lnet_nid_t nid, int *orderp)
         return dist;
 }
 
-void
-lnet_fwd_start (ptl_ni_t *src_ni, kpr_fwd_desc_t *fwd)
-{
-       lnet_nid_t           target_nid = fwd->kprfd_target_nid;
-        __u32                target_net = PTL_NIDNET(target_nid);
-        __u32                receiver_net = PTL_NIDNET(src_ni->ni_nid);
-        int                  nob = fwd->kprfd_nob;
-        kpr_gateway_entry_t *ge;
-        ptl_ni_t            *dst_ni;
-        ptl_ni_t            *tmp_ni;
-        unsigned long        flags;
-       struct list_head    *e;
-        kpr_net_entry_t     *ne = NULL;
-        kpr_route_entry_t   *re;
-        int                  rc;
-        int                  found;
-
-        CDEBUG (D_NET, "src %s sender %s receiver %s target %s\n", 
-                libcfs_nid2str(fwd->kprfd_source_nid),
-                libcfs_nid2str(fwd->kprfd_sender_nid),
-                libcfs_nid2str(src_ni->ni_nid),
-                libcfs_nid2str(target_nid));
-
-        LASSERT (nob == lnet_kiov_nob (fwd->kprfd_niov, fwd->kprfd_kiov));
-
-        /* it's not for any local NID (i.e. it's going to get sent) */
-        LASSERT (!ptl_islocalnid(target_nid));
-
-       fwd->kprfd_src_ni = src_ni;             /* stash calling ni */
-
-       read_lock_irqsave(&kpr_state.kpr_rwlock, flags);
-
-        spin_lock(&kpr_state.kpr_stats_lock);
-        kpr_state.kpr_fwd_packets++;
-        kpr_state.kpr_fwd_bytes += nob + sizeof(ptl_hdr_t);
-        spin_unlock(&kpr_state.kpr_stats_lock);
-
-        rc = -EDESTADDRREQ;
-        if (target_net == receiver_net) {
-                read_unlock_irqrestore(&kpr_state.kpr_rwlock, flags);
-                LCONSOLE_ERROR("Refusing to forward message from %s for %s "
-                               "received from %s on %s: it should have been "
-                               "sent directly\n",
-                               libcfs_nid2str(fwd->kprfd_source_nid),
-                               libcfs_nid2str(fwd->kprfd_target_nid),
-                               libcfs_nid2str(fwd->kprfd_sender_nid),
-                               libcfs_nid2str(src_ni->ni_nid));
-                goto failed;
-        }
-
-        rc = -ESHUTDOWN;
-       if (src_ni->ni_shutdown) {              /* caller is shutting down */
-                read_unlock_irqrestore(&kpr_state.kpr_rwlock, flags);
-                LCONSOLE_ERROR("Refusing to forward message from %s for %s "
-                               "received from %s on %s: system shutting down\n",
-                               libcfs_nid2str(fwd->kprfd_source_nid),
-                               libcfs_nid2str(fwd->kprfd_target_nid),
-                               libcfs_nid2str(fwd->kprfd_sender_nid),
-                               libcfs_nid2str(src_ni->ni_nid));
-               goto failed;
-        }
-        
-        rc = -ENETUNREACH;
-        if (!lnet_forwarding()) {                /* I'm not a router */
-                read_unlock_irqrestore(&kpr_state.kpr_rwlock, flags);
-                LCONSOLE_ERROR("Refusing to forward message from %s for %s "
-                               "received from %s on %s: forwarding disabled!\n",
-                               libcfs_nid2str(fwd->kprfd_source_nid),
-                               libcfs_nid2str(fwd->kprfd_target_nid),
-                               libcfs_nid2str(fwd->kprfd_sender_nid),
-                               libcfs_nid2str(src_ni->ni_nid));
-                goto failed;
-        }
-        
-        /* Is the target_nid on a local network? */
-        dst_ni = lnet_net2ni(target_net);
-        if (dst_ni != NULL) {
-                if (dst_ni->ni_nal->nal_fwd == NULL) {
-                        read_unlock_irqrestore(&kpr_state.kpr_rwlock, flags);
-                        LCONSOLE_ERROR("Refusing to forward message from %s for %s "
-                                       "received from %s on %s: "
-                                       "net %s doesn't route!\n",
-                                       libcfs_nid2str(fwd->kprfd_source_nid),
-                                       libcfs_nid2str(fwd->kprfd_target_nid),
-                                       libcfs_nid2str(fwd->kprfd_sender_nid),
-                                       libcfs_nid2str(src_ni->ni_nid),
-                                       libcfs_net2str(PTL_NIDNET(dst_ni->ni_nid)));
-                        goto failed;
-                }
-                
-                fwd->kprfd_gateway_nid = target_nid;
-                atomic_inc (&kpr_state.kpr_queue_depth);
-
-                read_unlock_irqrestore(&kpr_state.kpr_rwlock, flags);
-
-                CDEBUG (D_NET, "forward [%p] %s: src ni %s dst ni %s\n",
-                        fwd, libcfs_nid2str(target_nid),
-                        libcfs_nid2str(src_ni->ni_nid),
-                        libcfs_nid2str(dst_ni->ni_nid));
-
-                dst_ni->ni_nal->nal_fwd(dst_ni, fwd);
-                ptl_ni_decref(dst_ni);
-                return;
-        }
-
-        /* Search nets */
-        found = 0;
-        list_for_each (e, &kpr_state.kpr_nets) {
-                ne = list_entry (e, kpr_net_entry_t, kpne_list);
-
-                found = (ne->kpne_net == target_net);
-                if (found)
-                        break;
-        }
-
-        if (!found) {
-                read_unlock_irqrestore(&kpr_state.kpr_rwlock, flags);
-                LCONSOLE_ERROR("Can't forward message from %s for %s "
-                               "received from %s on %s: "
-                               "no routes to destination network!\n",
-                               libcfs_nid2str(fwd->kprfd_source_nid),
-                               libcfs_nid2str(fwd->kprfd_target_nid),
-                               libcfs_nid2str(fwd->kprfd_sender_nid),
-                               libcfs_nid2str(src_ni->ni_nid));
-                goto failed;
-        }
-        
-       /* Search routes for one that has a gateway to target_nid NOT on the caller's network */
-        dst_ni = NULL;
-        ge = NULL;
-        list_for_each (e, &ne->kpne_routes) {
-               re = list_entry (e, kpr_route_entry_t, kpre_list);
-
-               if (PTL_NIDNET(re->kpre_gateway->kpge_nid) == receiver_net)
-                       continue;               /* don't route to same net */
-
-                if (!re->kpre_gateway->kpge_alive)
-                        continue;               /* gateway is dead */
-
-                tmp_ni = lnet_net2ni(PTL_NIDNET(re->kpre_gateway->kpge_nid));
-                if (tmp_ni == NULL)
-                        continue;
-
-                if (tmp_ni->ni_nal->nal_fwd == NULL) { 
-                        ptl_ni_decref(tmp_ni);  /* doesn't forward */
-                        continue;
-                }
-                
-                if (ge != NULL &&
-                    kpr_ge_isbetter(ge, re->kpre_gateway)) {
-                        ptl_ni_decref(tmp_ni);
-                        continue;
-                }
-                
-                if (dst_ni != NULL)
-                        ptl_ni_decref(dst_ni);
-                                
-                dst_ni = tmp_ni;
-                ge = re->kpre_gateway;
-        }
-
-        LASSERT ((ge == NULL) == (dst_ni == NULL));
-        
-        if (ge == NULL) {
-                read_unlock_irqrestore(&kpr_state.kpr_rwlock, flags);
-                LCONSOLE_ERROR("Can't forward message from %s for %s "
-                               "received from %s on %s: "
-                               "all relevant gateways are down!\n",
-                               libcfs_nid2str(fwd->kprfd_source_nid),
-                               libcfs_nid2str(fwd->kprfd_target_nid),
-                               libcfs_nid2str(fwd->kprfd_sender_nid),
-                               libcfs_nid2str(src_ni->ni_nid));
-                goto failed;
-        }
-        
-        kpr_update_weight (ge, nob);
-
-        fwd->kprfd_gateway_nid = ge->kpge_nid;
-        atomic_inc (&kpr_state.kpr_queue_depth);
-
-        read_unlock_irqrestore(&kpr_state.kpr_rwlock, flags);
-
-        CDEBUG (D_NET, "forward [%p] %s: src ni %s dst ni %s gw %s\n",
-                fwd, libcfs_nid2str(target_nid),
-                libcfs_nid2str(src_ni->ni_nid),
-                libcfs_nid2str(dst_ni->ni_nid),
-                libcfs_nid2str(fwd->kprfd_gateway_nid));
-
-        dst_ni->ni_nal->nal_fwd(dst_ni, fwd);
-        ptl_ni_decref(dst_ni);
-        return;
-
- failed:
-        spin_lock_irqsave(&kpr_state.kpr_stats_lock, flags);
-        kpr_state.kpr_fwd_errors++;
-        spin_unlock_irqrestore(&kpr_state.kpr_stats_lock, flags);
-
-        read_unlock_irqrestore(&kpr_state.kpr_rwlock, flags);
-
-        CDEBUG (D_NET, "Failed to forward [%p] %s from %s\n", fwd, 
-                libcfs_nid2str(target_nid), libcfs_nid2str(src_ni->ni_nid));
-
-       (fwd->kprfd_callback)(src_ni, fwd->kprfd_callback_arg, rc);
-}
-
-void
-lnet_fwd_done (ptl_ni_t *dst_ni, kpr_fwd_desc_t *fwd, int error)
-{
-       ptl_ni_t *src_ni = fwd->kprfd_src_ni;
-
-        CDEBUG (D_NET, "complete(1) [%p] from %s to %s: %d\n", fwd,
-                libcfs_nid2str(src_ni->ni_nid),
-                libcfs_nid2str(dst_ni->ni_nid), error);
-
-       (fwd->kprfd_callback)(src_ni, fwd->kprfd_callback_arg, error);
-
-        atomic_dec (&kpr_state.kpr_queue_depth);
-}
-
 int
 kpr_add_route (__u32 net, unsigned int hops, lnet_nid_t gateway_nid)
 {
@@ -832,8 +613,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, NULL) ||
-                                           !ptl_islocalnet(PTL_NIDNET(ge->kpge_nid), NULL);
+                                *ignored = lnet_islocalnet(ne->kpne_net, NULL) ||
+                                           !lnet_islocalnet(PTL_NIDNET(ge->kpge_nid), NULL);
 
                                 read_unlock_irqrestore(&kpr_state.kpr_rwlock, 
                                                        flags);
@@ -944,18 +725,16 @@ kpr_initialise (void)
 
 EXPORT_SYMBOL(lnet_forwarding);
 EXPORT_SYMBOL(lnet_lookup);
-EXPORT_SYMBOL(lnet_fwd_start);
-EXPORT_SYMBOL(lnet_fwd_done);
 EXPORT_SYMBOL(lnet_notify);
 
 #else
 
 lnet_nid_t
-lnet_lookup (ptl_ni_t **nip, lnet_nid_t target_nid, int nob)
+lnet_lookup (lnet_ni_t **nip, lnet_nid_t target_nid, int nob)
 {
-        ptl_ni_t            *ni = *nip;
-        ptl_ni_t            *gwni;
-        __u32                target_net = PTL_NIDNET(target_nid);
+        lnet_ni_t  *ni = *nip;
+        lnet_ni_t  *gwni;
+        __u32       target_net = PTL_NIDNET(target_nid);
 
         if (ni == NULL) {                       /* ni not determined yet */
                 gwni = lnet_net2ni(target_net);  /* is it a local network? */
@@ -965,7 +744,7 @@ lnet_lookup (ptl_ni_t **nip, lnet_nid_t target_nid, int nob)
                 }
         } else {                                /* ni already determined */
                 if (target_net == PTL_NIDNET(ni->ni_nid)) {
-                        ptl_ni_addref(ni);      /* extra ref so caller can drop blindly */
+                        lnet_ni_addref(ni);      /* extra ref so caller can drop blindly */
                         return target_nid;
                 }
         }
index 4078b1f..2964854 100644 (file)
@@ -18,8 +18,8 @@
  *
  */
 
-#ifndef _KPTLROUTER_H
-#define _KPTLROUTER_H
+#ifndef _KLNETROUTER_H
+#define _KLNETROUTER_H
 #ifndef EXPORT_SYMTAB
 # define EXPORT_SYMTAB
 #endif
index 9c00182..27318db 100644 (file)
@@ -217,8 +217,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, NULL) ||
-                  !ptl_islocalnet(sri->sri_route->kpre_gateway->kpge_nid, NULL);
+        ignored = lnet_islocalnet(sri->sri_net->kpne_net, NULL) ||
+                  !lnet_islocalnet(sri->sri_route->kpre_gateway->kpge_nid, NULL);
 
         read_unlock_irqrestore(&kpr_state.kpr_rwlock, flags);
 
index 78aabd0..a46cb13 100644 (file)
@@ -13,7 +13,7 @@
 
 typedef struct bridge {
     int alive;
-    ptl_ni_t *b_ni;
+    lnet_ni_t *b_ni;
     void *lower;
     void *local;
     /* this doesn't really belong here */
index ac14cf4..6b54c1b 100644 (file)
@@ -50,7 +50,7 @@
 
 /* tunables (via environment) */
 int tcpnal_acceptor_port = 988;
-int tcpnal_buffer_size   = 2 * (PTL_MTU + sizeof(ptl_hdr_t));
+int tcpnal_buffer_size   = 2 * (PTL_MTU + sizeof(lnet_hdr_t));
 int tcpnal_nagle         = 0;
 
 int
@@ -92,7 +92,7 @@ tcpnal_set_global_params (void)
  */
 static int compare_connection(void *arg1, void *arg2)
 {
-    connection c = arg1;
+    connection  c = arg1;
     lnet_nid_t *nid = arg2;
 
     return (c->peer_nid == *nid);
@@ -177,7 +177,7 @@ static int connection_input(void *d)
 
 static connection 
 allocate_connection(manager        m,
-                    lnet_nid_t      nid,
+                    lnet_nid_t     nid,
                     int            fd)
 {
     connection c=malloc(sizeof(struct connection));
@@ -239,28 +239,28 @@ tcpnal_read(lnet_nid_t nid, int sockfd, void *buffer, int nob)
 int
 tcpnal_hello (int sockfd, lnet_nid_t nid)
 {
-        struct timeval         tv;
-        __u64                  incarnation;
-        int                    rc;
-        int                    nob;
+        struct timeval          tv;
+        __u64                   incarnation;
+        int                     rc;
+        int                     nob;
         lnet_acceptor_connreq_t cr;
-        ptl_hdr_t              hdr;
-        ptl_magicversion_t     hmv;
+        lnet_hdr_t              hdr;
+        lnet_magicversion_t     hmv;
 
         gettimeofday(&tv, NULL);
         incarnation = (((__u64)tv.tv_sec) * 1000000) + tv.tv_usec;
 
         memset(&cr, 0, sizeof(cr));
-        cr.acr_magic   = PTL_PROTO_ACCEPTOR_MAGIC;
-        cr.acr_version = PTL_PROTO_ACCEPTOR_VERSION;
+        cr.acr_magic   = LNET_PROTO_ACCEPTOR_MAGIC;
+        cr.acr_version = LNET_PROTO_ACCEPTOR_VERSION;
         cr.acr_nid     = nid;
 
         /* hmv initialised and copied separately into hdr; compiler "optimize"
          * likely due to confusion about pointer alias of hmv and hdr when this
          * was done in-place. */
-        hmv.magic         = cpu_to_le32(PTL_PROTO_TCP_MAGIC);
-        hmv.version_major = cpu_to_le32(PTL_PROTO_TCP_VERSION_MAJOR);
-        hmv.version_minor = cpu_to_le32(PTL_PROTO_TCP_VERSION_MINOR);
+        hmv.magic         = cpu_to_le32(LNET_PROTO_TCP_MAGIC);
+        hmv.version_major = cpu_to_le32(LNET_PROTO_TCP_VERSION_MAJOR);
+        hmv.version_minor = cpu_to_le32(LNET_PROTO_TCP_VERSION_MINOR);
 
         memset (&hdr, 0, sizeof (hdr));
 
@@ -269,8 +269,8 @@ tcpnal_hello (int sockfd, lnet_nid_t nid)
 
         /* hdr.src_nid/src_pid are ignored at dest */
 
-        hdr.type    = cpu_to_le32(PTL_MSG_HELLO);
-        hdr.msg.hello.type = cpu_to_le32(SOCKNAL_CONN_ANY);
+        hdr.type    = cpu_to_le32(LNET_MSG_HELLO);
+        hdr.msg.hello.type = cpu_to_le32(SOCKLND_CONN_ANY);
         hdr.msg.hello.incarnation = cpu_to_le64(incarnation);
 
         /* I don't send any interface info */
@@ -288,26 +288,26 @@ tcpnal_hello (int sockfd, lnet_nid_t nid)
         if (rc != 0)
                 return -1;
         
-        if (hmv.magic != le32_to_cpu(PTL_PROTO_TCP_MAGIC)) {
+        if (hmv.magic != le32_to_cpu(LNET_PROTO_TCP_MAGIC)) {
                 CERROR ("Bad magic %#08x (%#08x expected) from %s\n",
-                        cpu_to_le32(hmv.magic), PTL_PROTO_TCP_MAGIC, 
+                        cpu_to_le32(hmv.magic), LNET_PROTO_TCP_MAGIC, 
                         libcfs_nid2str(nid));
                 return -1;
         }
 
-        if (hmv.version_major != cpu_to_le16 (PTL_PROTO_TCP_VERSION_MAJOR) ||
-            hmv.version_minor != cpu_to_le16 (PTL_PROTO_TCP_VERSION_MINOR)) {
+        if (hmv.version_major != cpu_to_le16 (LNET_PROTO_TCP_VERSION_MAJOR) ||
+            hmv.version_minor != cpu_to_le16 (LNET_PROTO_TCP_VERSION_MINOR)) {
                 CERROR ("Incompatible protocol version %d.%d (%d.%d expected)"
                         " from %s\n",
                         le16_to_cpu (hmv.version_major),
                         le16_to_cpu (hmv.version_minor),
-                        PTL_PROTO_TCP_VERSION_MAJOR,
-                        PTL_PROTO_TCP_VERSION_MINOR,
+                        LNET_PROTO_TCP_VERSION_MAJOR,
+                        LNET_PROTO_TCP_VERSION_MINOR,
                         libcfs_nid2str(nid));
                 return -1;
         }
 
-#if (PTL_PROTO_TCP_VERSION_MAJOR != 1)
+#if (LNET_PROTO_TCP_VERSION_MAJOR != 1)
 # error "This code only understands protocol version 1.x"
 #endif
         /* version 1 sends magic/version as the dest_nid of a 'hello' header,
@@ -319,7 +319,7 @@ tcpnal_hello (int sockfd, lnet_nid_t nid)
                 return -1;
 
         /* ...and check we got what we expected */
-        if (hdr.type != cpu_to_le32 (PTL_MSG_HELLO)) {
+        if (hdr.type != cpu_to_le32 (LNET_MSG_HELLO)) {
                 CERROR ("Expecting a HELLO hdr "
                         " but got type %d with %d payload from %s\n",
                         le32_to_cpu (hdr.type),
@@ -356,7 +356,7 @@ tcpnal_hello (int sockfd, lnet_nid_t nid)
  * Returns: an allocated connection structure, either
  *          a pre-existing one, or a new connection
  */
-connection force_tcp_connection(manager m,
+connection force_tcp_connection(manager    m,
                                 lnet_nid_t nid,
                                 procbridge pb)
 {
index 3f99af9..7b53cfd 100644 (file)
@@ -64,12 +64,12 @@ void procbridge_wakeup_nal(procbridge p)
     syscall(SYS_write, p->notifier[0], buf, sizeof(buf));
 }
 
-ptl_nal_t tcpnal_nal = {
-        .nal_type      = SOCKNAL,
-        .nal_startup   = procbridge_startup,
-        .nal_shutdown  = procbridge_shutdown,
-        .nal_send      = tcpnal_send,
-        .nal_recv      = tcpnal_recv,
+lnd_t the_tcplnd = {
+        .lnd_type      = SOCKLND,
+        .lnd_startup   = procbridge_startup,
+        .lnd_shutdown  = procbridge_shutdown,
+        .lnd_send      = tcpnal_send,
+        .lnd_recv      = tcpnal_recv,
 };
 int       tcpnal_running;
 
@@ -80,7 +80,7 @@ int       tcpnal_running;
  *   its state using PTL_FINI codepoint
  */
 void
-procbridge_shutdown(ptl_ni_t *ni)
+procbridge_shutdown(lnet_ni_t *ni)
 {
     bridge b=(bridge)ni->ni_data;
     procbridge p=(procbridge)b->local;
@@ -117,7 +117,7 @@ procbridge __global_procbridge = NULL;
  * error wrapper to cut down clutter.
  */
 int
-procbridge_startup (ptl_ni_t *ni)
+procbridge_startup (lnet_ni_t *ni)
 {
     procbridge p;
     bridge     b;
@@ -127,7 +127,7 @@ procbridge_startup (ptl_ni_t *ni)
      * which assigns the src nid/pid on incoming non-privileged connections
      * (i.e. us), and we don't accept connections. */
 
-    LASSERT (ni->ni_nal == &tcpnal_nal);
+    LASSERT (ni->ni_lnd == &the_tcplnd);
     LASSERT (!tcpnal_running);                  /* only single instance supported */
     LASSERT (ni->ni_interfaces[0] == NULL);     /* explicit interface(s) not supported */
 
index f9ecb0a..3e12de2 100644 (file)
@@ -40,16 +40,13 @@ extern void *nal_thread(void *);
 
 extern void procbridge_wakeup_nal(procbridge p);
 
-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, lnet_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, lnet_kiov_t *kiov,
+extern int procbridge_startup (lnet_ni_t *);
+extern void procbridge_shutdown (lnet_ni_t *);
+
+extern int tcpnal_send(lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg);
+int tcpnal_recv(lnet_ni_t *ni, void *private, lnet_msg_t *cookie,
+                int delayed, unsigned int niov,
+                struct iovec *iov, lnet_kiov_t *kiov,
                 unsigned int offset, unsigned int mlen, unsigned int rlen);
 
 
index 62d107e..613dbda 100644 (file)
 #include <syscall.h>
 #endif
 
-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,
-                lnet_kiov_t      *kiov,
-                unsigned int      offset,
-                unsigned int      len)
+/*
+ * sends a packet to the peer, after insuring that a connection exists
+ */
+int tcpnal_send(lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg)
 {
+    lnet_hdr_t        *hdr = &lntmsg->msg_hdr;
+    lnet_process_id_t  target = lntmsg->msg_target;
+    unsigned int       niov = lntmsg->msg_niov;
+    struct iovec      *iov = lntmsg->msg_iov;
+    unsigned int       offset = lntmsg->msg_offset;
+    unsigned int       len = lntmsg->msg_len;
+
     connection c;
     bridge b=(bridge)ni->ni_data;
     struct iovec tiov[257];
@@ -63,11 +62,6 @@ int tcpnal_send(ptl_ni_t         *ni,
     int   ntiov;
     int i;
 
-    if (routing) {
-            CERROR("Can't route\n");
-            return -EIO;
-    }
-    
     if (!(c=force_tcp_connection((manager)b->lower, target.nid,
                                  b->local)))
         return(-EIO);
@@ -83,7 +77,7 @@ int tcpnal_send(ptl_ni_t         *ni,
     LASSERT (len == 0 || iov != NULL);          /* I don't understand kiovs */
 
     tiov[0].iov_base = hdr;
-    tiov[0].iov_len = sizeof(ptl_hdr_t);
+    tiov[0].iov_len = sizeof(lnet_hdr_t);
     ntiov = 1 + lnet_extract_iov(256, &tiov[1], niov, iov, offset, len);
 
     pthread_mutex_lock(&send_lock);
@@ -112,11 +106,11 @@ int tcpnal_send(ptl_ni_t         *ni,
 #endif
 #if 0
     fprintf (stderr, "sent %s total %d in %d frags\n", 
-             hdr->type == PTL_MSG_ACK ? "ACK" :
-             hdr->type == PTL_MSG_PUT ? "PUT" :
-             hdr->type == PTL_MSG_GET ? "GET" :
-             hdr->type == PTL_MSG_REPLY ? "REPLY" :
-             hdr->type == PTL_MSG_HELLO ? "HELLO" : "UNKNOWN",
+             hdr->type == LNET_MSG_ACK ? "ACK" :
+             hdr->type == LNET_MSG_PUT ? "PUT" :
+             hdr->type == LNET_MSG_GET ? "GET" :
+             hdr->type == LNET_MSG_REPLY ? "REPLY" :
+             hdr->type == LNET_MSG_HELLO ? "HELLO" : "UNKNOWN",
              total, niov + 1);
 #endif
     pthread_mutex_unlock(&send_lock);
@@ -124,16 +118,17 @@ int tcpnal_send(ptl_ni_t         *ni,
     if (rc == 0) {
             /* NB the NAL only calls lnet_finalize() if it returns 0
              * from cb_send() */
-            lnet_finalize(ni, private, cookie, 0);
+            lnet_finalize(ni, private, lntmsg, 0);
     }
 
     return(rc);
 }
 
 
-int tcpnal_recv(ptl_ni_t     *ni,
+int tcpnal_recv(lnet_ni_t     *ni,
                 void         *private,
-                ptl_msg_t    *cookie,
+                lnet_msg_t   *cookie,
+                int           delayed,
                 unsigned int  niov,
                 struct iovec *iov,
                 lnet_kiov_t  *kiov,
@@ -148,9 +143,6 @@ int tcpnal_recv(ptl_ni_t     *ni,
     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);
@@ -167,6 +159,8 @@ finalize:
     /* FIXME; we always assume success here... */
     lnet_finalize(ni, private, cookie, 0);
 
+    LASSERT(rlen >= mlen);
+
     if (mlen!=rlen){
         char *trash=malloc(rlen-mlen);
         
@@ -192,16 +186,16 @@ static int from_connection(void *a, void *d)
 {
     connection c = d;
     bridge     b = a;
-    ptl_hdr_t  hdr;
+    lnet_hdr_t hdr;
     int  rc;
 
     if (read_connection(c, (unsigned char *)&hdr, sizeof(hdr))){
             /* replace dest_nid,pid (socknal sets its own) */
             hdr.dest_nid = cpu_to_le64(b->b_ni->ni_nid);
-            hdr.dest_pid = cpu_to_le32(lnet_getpid());
+            hdr.dest_pid = cpu_to_le32(the_lnet.ln_pid);
             
             rc = lnet_parse(b->b_ni, &hdr, c);
-            if (rc != 0) {
+            if (rc < 0) {
                     CERROR("Error %d from lnet_parse\n", rc);
                     return 0;
             }
index d032c2e..52b8be9 100644 (file)
@@ -246,7 +246,7 @@ int g_net_is_compatible (char *cmd, ...)
 
         do {
                 nal = va_arg (ap, int);
-                if (nal == PTL_NETNAL(g_net)) {
+                if (nal == PTL_NETTYP(g_net)) {
                         va_end (ap);
                         return 1;
                 }
@@ -258,7 +258,7 @@ int g_net_is_compatible (char *cmd, ...)
                 fprintf (stderr, 
                          "Command %s not compatible with %s NAL\n",
                          cmd, 
-                         libcfs_nal2str(PTL_NETNAL(g_net)));
+                         libcfs_lnd2str(PTL_NETTYP(g_net)));
         return 0;
 }
 
@@ -355,7 +355,7 @@ jt_ptl_print_interfaces (int argc, char **argv)
         int                      index;
         int                      rc;
 
-        if (!g_net_is_compatible (argv[0], SOCKNAL, 0))
+        if (!g_net_is_compatible (argv[0], SOCKLND, 0))
                 return -1;
 
         for (index = 0;;index++) {
@@ -403,7 +403,7 @@ jt_ptl_add_interface (int argc, char **argv)
                 return 0;
         }
 
-        if (!g_net_is_compatible(argv[0], SOCKNAL, 0))
+        if (!g_net_is_compatible(argv[0], SOCKLND, 0))
                 return -1;
 
         if (lnet_parse_ipaddr(&ipaddr, argv[1]) != 0) {
@@ -450,7 +450,7 @@ jt_ptl_del_interface (int argc, char **argv)
                 return 0;
         }
 
-        if (!g_net_is_compatible(argv[0], SOCKNAL, 0))
+        if (!g_net_is_compatible(argv[0], SOCKLND, 0))
                 return -1;
 
         if (argc == 2 &&
@@ -482,8 +482,8 @@ jt_ptl_print_peers (int argc, char **argv)
         int                      index;
         int                      rc;
 
-        if (!g_net_is_compatible (argv[0], SOCKNAL, RANAL
-                                  OPENIBNAL, IIBNAL, VIBNAL, 0))
+        if (!g_net_is_compatible (argv[0], SOCKLND, RALND
+                                  OPENIBLND, IIBLND, VIBLND, 0))
                 return -1;
 
         for (index = 0;;index++) {
@@ -495,7 +495,7 @@ jt_ptl_print_peers (int argc, char **argv)
                 if (rc != 0)
                         break;
 
-                if (g_net_is_compatible(NULL, SOCKNAL, 0)) {
+                if (g_net_is_compatible(NULL, SOCKLND, 0)) {
                         id.nid = data.ioc_nid;
                         id.pid = data.ioc_u32[4];
                         printf ("%-20s [%d]%s->%s:%d #%d\n",
@@ -505,7 +505,7 @@ jt_ptl_print_peers (int argc, char **argv)
                                 ptl_ipaddr_2_str (data.ioc_u32[0], buffer[1], 1), /* peer ip */
                                 data.ioc_u32[1], /* peer port */
                                 data.ioc_u32[3]); /* conn_count */
-                } else if (g_net_is_compatible(NULL, RANAL, OPENIBNAL, VIBNAL, 0)) {
+                } else if (g_net_is_compatible(NULL, RALND, OPENIBLND, VIBLND, 0)) {
                         printf ("%-20s [%d]@%s:%d\n",
                                 libcfs_nid2str(data.ioc_nid), 
                                 data.ioc_count,
@@ -538,17 +538,17 @@ jt_ptl_add_peer (int argc, char **argv)
         int                      port = 0;
         int                      rc;
 
-        if (!g_net_is_compatible (argv[0], SOCKNAL, RANAL
-                                  OPENIBNAL, IIBNAL, VIBNAL, 0))
+        if (!g_net_is_compatible (argv[0], SOCKLND, RALND
+                                  OPENIBLND, IIBLND, VIBLND, 0))
                 return -1;
 
-        if (g_net_is_compatible(NULL, SOCKNAL, OPENIBNAL, RANAL, 0)) {
+        if (g_net_is_compatible(NULL, SOCKLND, OPENIBLND, RALND, 0)) {
                 if (argc != 4) {
                         fprintf (stderr, "usage(tcp,openib,ra): %s nid ipaddr port\n", 
                                  argv[0]);
                         return 0;
                 }
-        } else if (g_net_is_compatible(NULL, VIBNAL, 0)) {
+        } else if (g_net_is_compatible(NULL, VIBLND, 0)) {
                 if (argc != 3) {
                         fprintf (stderr, "usage(vib): %s nid ipaddr\n", 
                                  argv[0]);
@@ -565,13 +565,13 @@ jt_ptl_add_peer (int argc, char **argv)
                 return -1;
         }
 
-        if (g_net_is_compatible (NULL, SOCKNAL, OPENIBNAL, VIBNAL, RANAL, 0) &&
+        if (g_net_is_compatible (NULL, SOCKLND, OPENIBLND, VIBLND, RALND, 0) &&
             lnet_parse_ipaddr (&ip, argv[2]) != 0) {
                 fprintf (stderr, "Can't parse ip addr: %s\n", argv[2]);
                 return -1;
         }
 
-        if (g_net_is_compatible (NULL, SOCKNAL, OPENIBNAL, RANAL, 0) &&
+        if (g_net_is_compatible (NULL, SOCKLND, OPENIBLND, RALND, 0) &&
             lnet_parse_port (&port, argv[3]) != 0) {
                 fprintf (stderr, "Can't parse port: %s\n", argv[3]);
                 return -1;
@@ -601,11 +601,11 @@ jt_ptl_del_peer (int argc, char **argv)
         __u32                    ip = 0;
         int                      rc;
 
-        if (!g_net_is_compatible (argv[0], SOCKNAL, RANAL
-                                  OPENIBNAL, IIBNAL, VIBNAL, 0))
+        if (!g_net_is_compatible (argv[0], SOCKLND, RALND
+                                  OPENIBLND, IIBLND, VIBLND, 0))
                 return -1;
 
-        if (g_net_is_compatible(NULL, SOCKNAL, 0)) {
+        if (g_net_is_compatible(NULL, SOCKLND, 0)) {
                 if (argc > 3) {
                         fprintf (stderr, "usage: %s [nid] [ipaddr]\n",
                                  argv[0]);
@@ -622,7 +622,7 @@ jt_ptl_del_peer (int argc, char **argv)
                 return -1;
         }
 
-        if (g_net_is_compatible(NULL, SOCKNAL, 0)) {
+        if (g_net_is_compatible(NULL, SOCKLND, 0)) {
                 if (argc > 2 &&
                     lnet_parse_ipaddr (&ip, argv[2]) != 0) {
                         fprintf (stderr, "Can't parse ip addr: %s\n",
@@ -655,8 +655,8 @@ jt_ptl_print_connections (int argc, char **argv)
         int                      index;
         int                      rc;
 
-        if (!g_net_is_compatible (argv[0], SOCKNAL, RANAL
-                                  OPENIBNAL, IIBNAL, VIBNAL, 0))
+        if (!g_net_is_compatible (argv[0], SOCKLND, RALND
+                                  OPENIBLND, IIBLND, VIBLND, 0))
                 return -1;
 
         for (index = 0; ; index++) {
@@ -668,15 +668,15 @@ jt_ptl_print_connections (int argc, char **argv)
                 if (rc != 0)
                         break;
 
-                if (g_net_is_compatible (NULL, SOCKNAL, 0)) {
+                if (g_net_is_compatible (NULL, SOCKLND, 0)) {
                         id.nid = data.ioc_nid;
                         id.pid = data.ioc_u32[6];
                         printf ("%-20s %s[%d]%s->%s:%d %d/%d %s\n",
                                 libcfs_id2str(id),
-                                (data.ioc_u32[3] == SOCKNAL_CONN_ANY) ? "A" :
-                                (data.ioc_u32[3] == SOCKNAL_CONN_CONTROL) ? "C" :
-                                (data.ioc_u32[3] == SOCKNAL_CONN_BULK_IN) ? "I" :
-                                (data.ioc_u32[3] == SOCKNAL_CONN_BULK_OUT) ? "O" : "?",
+                                (data.ioc_u32[3] == SOCKLND_CONN_ANY) ? "A" :
+                                (data.ioc_u32[3] == SOCKLND_CONN_CONTROL) ? "C" :
+                                (data.ioc_u32[3] == SOCKLND_CONN_BULK_IN) ? "I" :
+                                (data.ioc_u32[3] == SOCKLND_CONN_BULK_OUT) ? "O" : "?",
                                 data.ioc_u32[4], /* scheduler */
                                 ptl_ipaddr_2_str (data.ioc_u32[2], buffer[0], 1), /* local IP addr */
                                 ptl_ipaddr_2_str (data.ioc_u32[0], buffer[1], 1), /* remote IP addr */
@@ -684,7 +684,7 @@ jt_ptl_print_connections (int argc, char **argv)
                                 data.ioc_count, /* tx buffer size */
                                 data.ioc_u32[5], /* rx buffer size */
                                 data.ioc_flags ? "nagle" : "nonagle");
-                } else if (g_net_is_compatible (NULL, RANAL, 0)) {
+                } else if (g_net_is_compatible (NULL, RALND, 0)) {
                         printf ("%-20s [%d]\n",
                                 libcfs_nid2str(data.ioc_nid),
                                 data.ioc_u32[0] /* device id */);
@@ -717,8 +717,8 @@ int jt_ptl_disconnect(int argc, char **argv)
                 return 0;
         }
 
-        if (!g_net_is_compatible (NULL, SOCKNAL, RANAL
-                                  OPENIBNAL, IIBNAL, VIBNAL, 0))
+        if (!g_net_is_compatible (NULL, SOCKLND, RALND
+                                  OPENIBLND, IIBLND, VIBLND, 0))
                 return 0;
 
         if (argc >= 2 &&
@@ -727,7 +727,7 @@ int jt_ptl_disconnect(int argc, char **argv)
                 return -1;
         }
 
-        if (g_net_is_compatible (NULL, SOCKNAL, 0) &&
+        if (g_net_is_compatible (NULL, SOCKLND, 0) &&
             argc >= 3 &&
             lnet_parse_ipaddr (&ipaddr, argv[2]) != 0) {
                 fprintf (stderr, "Can't parse ip addr %s\n", argv[2]);
@@ -760,7 +760,7 @@ int jt_ptl_push_connection (int argc, char **argv)
                 return 0;
         }
 
-        if (!g_net_is_compatible (argv[0], SOCKNAL, 0))
+        if (!g_net_is_compatible (argv[0], SOCKLND, 0))
                 return -1;
         
         if (argc > 1 &&
@@ -790,7 +790,7 @@ jt_ptl_print_active_txs (int argc, char **argv)
         int                      index;
         int                      rc;
 
-        if (!g_net_is_compatible (argv[0], QSWNAL, 0))
+        if (!g_net_is_compatible (argv[0], QSWLND, 0))
                 return -1;
 
         for (index = 0;;index++) {
index 43f4927..9590b8b 100644 (file)
@@ -58,64 +58,64 @@ do {                                            \
 } while (0)
 
 void
-check_ptl_handle_wire (void)
+check_lnet_handle_wire (void)
 {
-        CHECK_STRUCT (ptl_handle_wire_t);
-        CHECK_MEMBER (ptl_handle_wire_t, wh_interface_cookie);
-        CHECK_MEMBER (ptl_handle_wire_t, wh_object_cookie);
+        CHECK_STRUCT (lnet_handle_wire_t);
+        CHECK_MEMBER (lnet_handle_wire_t, wh_interface_cookie);
+        CHECK_MEMBER (lnet_handle_wire_t, wh_object_cookie);
 }
 
 void
-check_ptl_magicversion (void)
+check_lnet_magicversion (void)
 {
-        CHECK_STRUCT (ptl_magicversion_t);
-        CHECK_MEMBER (ptl_magicversion_t, magic);
-        CHECK_MEMBER (ptl_magicversion_t, version_major);
-        CHECK_MEMBER (ptl_magicversion_t, version_minor);
+        CHECK_STRUCT (lnet_magicversion_t);
+        CHECK_MEMBER (lnet_magicversion_t, magic);
+        CHECK_MEMBER (lnet_magicversion_t, version_major);
+        CHECK_MEMBER (lnet_magicversion_t, version_minor);
 }
 
 void
-check_ptl_hdr (void)
+check_lnet_hdr (void)
 {
-        CHECK_STRUCT (ptl_hdr_t);
-        CHECK_MEMBER (ptl_hdr_t, dest_nid);
-        CHECK_MEMBER (ptl_hdr_t, src_nid);
-        CHECK_MEMBER (ptl_hdr_t, dest_pid);
-        CHECK_MEMBER (ptl_hdr_t, src_pid);
-        CHECK_MEMBER (ptl_hdr_t, type);
-        CHECK_MEMBER (ptl_hdr_t, payload_length);
-        CHECK_MEMBER (ptl_hdr_t, msg);
+        CHECK_STRUCT (lnet_hdr_t);
+        CHECK_MEMBER (lnet_hdr_t, dest_nid);
+        CHECK_MEMBER (lnet_hdr_t, src_nid);
+        CHECK_MEMBER (lnet_hdr_t, dest_pid);
+        CHECK_MEMBER (lnet_hdr_t, src_pid);
+        CHECK_MEMBER (lnet_hdr_t, type);
+        CHECK_MEMBER (lnet_hdr_t, payload_length);
+        CHECK_MEMBER (lnet_hdr_t, msg);
 
         BLANK_LINE ();
         COMMENT ("Ack");
-        CHECK_MEMBER (ptl_hdr_t, msg.ack.dst_wmd);
-        CHECK_MEMBER (ptl_hdr_t, msg.ack.match_bits);
-        CHECK_MEMBER (ptl_hdr_t, msg.ack.mlength);
+        CHECK_MEMBER (lnet_hdr_t, msg.ack.dst_wmd);
+        CHECK_MEMBER (lnet_hdr_t, msg.ack.match_bits);
+        CHECK_MEMBER (lnet_hdr_t, msg.ack.mlength);
 
         BLANK_LINE ();
         COMMENT ("Put");
-        CHECK_MEMBER (ptl_hdr_t, msg.put.ack_wmd);
-        CHECK_MEMBER (ptl_hdr_t, msg.put.match_bits);
-        CHECK_MEMBER (ptl_hdr_t, msg.put.hdr_data);
-        CHECK_MEMBER (ptl_hdr_t, msg.put.ptl_index);
-        CHECK_MEMBER (ptl_hdr_t, msg.put.offset);
+        CHECK_MEMBER (lnet_hdr_t, msg.put.ack_wmd);
+        CHECK_MEMBER (lnet_hdr_t, msg.put.match_bits);
+        CHECK_MEMBER (lnet_hdr_t, msg.put.hdr_data);
+        CHECK_MEMBER (lnet_hdr_t, msg.put.ptl_index);
+        CHECK_MEMBER (lnet_hdr_t, msg.put.offset);
 
         BLANK_LINE ();
         COMMENT ("Get");
-        CHECK_MEMBER (ptl_hdr_t, msg.get.return_wmd);
-        CHECK_MEMBER (ptl_hdr_t, msg.get.match_bits);
-        CHECK_MEMBER (ptl_hdr_t, msg.get.ptl_index);
-        CHECK_MEMBER (ptl_hdr_t, msg.get.src_offset);
-        CHECK_MEMBER (ptl_hdr_t, msg.get.sink_length);
+        CHECK_MEMBER (lnet_hdr_t, msg.get.return_wmd);
+        CHECK_MEMBER (lnet_hdr_t, msg.get.match_bits);
+        CHECK_MEMBER (lnet_hdr_t, msg.get.ptl_index);
+        CHECK_MEMBER (lnet_hdr_t, msg.get.src_offset);
+        CHECK_MEMBER (lnet_hdr_t, msg.get.sink_length);
 
         BLANK_LINE ();
         COMMENT ("Reply");
-        CHECK_MEMBER (ptl_hdr_t, msg.reply.dst_wmd);
+        CHECK_MEMBER (lnet_hdr_t, msg.reply.dst_wmd);
 
         BLANK_LINE ();
         COMMENT ("Hello");
-        CHECK_MEMBER (ptl_hdr_t, msg.hello.incarnation);
-        CHECK_MEMBER (ptl_hdr_t, msg.hello.type);
+        CHECK_MEMBER (lnet_hdr_t, msg.hello.incarnation);
+        CHECK_MEMBER (lnet_hdr_t, msg.hello.type);
 }
 
 void
@@ -179,7 +179,7 @@ main (int argc, char **argv)
         system_string("uname -a", unameinfo, sizeof(unameinfo));
         system_string("gcc -v 2>&1 | tail -1", gccinfo, sizeof(gccinfo));
 
-        printf ("void ptl_assert_wire_constants (void)\n"
+        printf ("void lnet_assert_wire_constants (void)\n"
                 "{\n"
                 "        /* Wire protocol assertions generated by 'wirecheck'\n"
                 "         * running on %s\n"
@@ -190,22 +190,22 @@ main (int argc, char **argv)
 
         COMMENT ("Constants...");
 
-        CHECK_DEFINE (PTL_PROTO_OPENIB_MAGIC);
-        CHECK_DEFINE (PTL_PROTO_RA_MAGIC);
+        CHECK_DEFINE (LNET_PROTO_OPENIB_MAGIC);
+        CHECK_DEFINE (LNET_PROTO_RA_MAGIC);
 
-        CHECK_DEFINE (PTL_PROTO_TCP_MAGIC);
-        CHECK_DEFINE (PTL_PROTO_TCP_VERSION_MAJOR);
-        CHECK_DEFINE (PTL_PROTO_TCP_VERSION_MINOR);
+        CHECK_DEFINE (LNET_PROTO_TCP_MAGIC);
+        CHECK_DEFINE (LNET_PROTO_TCP_VERSION_MAJOR);
+        CHECK_DEFINE (LNET_PROTO_TCP_VERSION_MINOR);
 
-        CHECK_VALUE (PTL_MSG_ACK);
-        CHECK_VALUE (PTL_MSG_PUT);
-        CHECK_VALUE (PTL_MSG_GET);
-        CHECK_VALUE (PTL_MSG_REPLY);
-        CHECK_VALUE (PTL_MSG_HELLO);
+        CHECK_VALUE (LNET_MSG_ACK);
+        CHECK_VALUE (LNET_MSG_PUT);
+        CHECK_VALUE (LNET_MSG_GET);
+        CHECK_VALUE (LNET_MSG_REPLY);
+        CHECK_VALUE (LNET_MSG_HELLO);
 
-        check_ptl_handle_wire ();
-        check_ptl_magicversion ();
-        check_ptl_hdr ();
+        check_lnet_handle_wire ();
+        check_lnet_magicversion ();
+        check_lnet_hdr ();
 
         printf ("}\n\n");