-#ifndef _P30_TYPES_H_
-#define _P30_TYPES_H_
-
-#ifdef __linux__
-# include <asm/types.h>
-# if defined(__powerpc__) && !defined(__KERNEL__)
-# define __KERNEL__
-# include <asm/timex.h>
-# undef __KERNEL__
-# else
-# include <asm/timex.h>
-# endif
-#else
-# include <sys/types.h>
-typedef u_int32_t __u32;
-typedef u_int64_t __u64;
-#endif
+#ifndef __LNET_TYPES_H__
+#define __LNET_TYPES_H__
-#ifdef __KERNEL__
-# include <linux/time.h>
-#else
-# include <sys/time.h>
-# define do_gettimeofday(tv) gettimeofday(tv, NULL);
+#include <libcfs/libcfs.h>
+
+#define LNET_RESERVED_PORTAL 0 /* portals reserved for lnet's own use */
+
+typedef __u64 lnet_nid_t;
+typedef __u32 lnet_pid_t;
+
+#define LNET_NID_ANY ((lnet_nid_t) -1)
+#define LNET_PID_ANY ((lnet_pid_t) -1)
+
+#ifdef CRAY_XT3
+typedef __u32 lnet_uid_t;
+#define LNET_UID_ANY ((lnet_uid_t) -1)
#endif
-#include <portals/errno.h>
+#define LNET_PID_RESERVED 0xf0000000 /* reserved bits in PID */
+#define LNET_PID_USERFLAG 0x80000000 /* set in userspace peers */
-typedef __u64 ptl_nid_t;
-typedef __u32 ptl_pid_t;
-typedef __u32 ptl_pt_index_t;
-typedef __u32 ptl_ac_index_t;
-typedef __u64 ptl_match_bits_t;
-typedef __u64 ptl_hdr_data_t;
-typedef __u32 ptl_size_t;
+#define LNET_TIME_FOREVER (-1)
typedef struct {
- unsigned long nal_idx; /* which network interface */
- __u64 cookie; /* which thing on that interface */
-} ptl_handle_any_t;
+ __u64 cookie;
+} lnet_handle_any_t;
-typedef ptl_handle_any_t ptl_handle_ni_t;
-typedef ptl_handle_any_t ptl_handle_eq_t;
-typedef ptl_handle_any_t ptl_handle_md_t;
-typedef ptl_handle_any_t ptl_handle_me_t;
+typedef lnet_handle_any_t lnet_handle_eq_t;
+typedef lnet_handle_any_t lnet_handle_md_t;
+typedef lnet_handle_any_t lnet_handle_me_t;
-#define PTL_HANDLE_NONE \
- ((const ptl_handle_any_t){.nal_idx = -1, .cookie = -1})
-#define PTL_EQ_NONE PTL_HANDLE_NONE
+#define LNET_INVALID_HANDLE \
+ ((const lnet_handle_any_t){.cookie = -1})
+#define LNET_EQ_NONE LNET_INVALID_HANDLE
-static inline int PtlHandleEqual (ptl_handle_any_t h1, ptl_handle_any_t h2)
+static inline int LNetHandleIsEqual (lnet_handle_any_t h1, lnet_handle_any_t h2)
{
- return (h1.nal_idx == h2.nal_idx && h1.cookie == h2.cookie);
+ return (h1.cookie == h2.cookie);
}
-#define PTL_NID_ANY ((ptl_nid_t) -1)
-#define PTL_PID_ANY ((ptl_pid_t) -1)
-
typedef struct {
- ptl_nid_t nid;
- ptl_pid_t pid; /* node id / process id */
-} ptl_process_id_t;
+ lnet_nid_t nid;
+ lnet_pid_t pid; /* node id / process id */
+} lnet_process_id_t;
typedef enum {
- PTL_RETAIN = 0,
- PTL_UNLINK
-} ptl_unlink_t;
+ LNET_RETAIN = 0,
+ LNET_UNLINK
+} lnet_unlink_t;
typedef enum {
- PTL_INS_BEFORE,
- PTL_INS_AFTER
-} ptl_ins_pos_t;
-
-typedef struct {
- struct page *kiov_page;
- unsigned int kiov_len;
- unsigned int kiov_offset;
-} ptl_kiov_t;
+ LNET_INS_BEFORE,
+ LNET_INS_AFTER
+} lnet_ins_pos_t;
typedef struct {
void *start;
- ptl_size_t length;
+ unsigned int length;
int threshold;
int max_size;
unsigned int options;
void *user_ptr;
- ptl_handle_eq_t eventq;
- unsigned int niov;
-} ptl_md_t;
+ lnet_handle_eq_t eq_handle;
+} lnet_md_t;
+
+/* Max Transfer Unit (minimum supported everywhere) */
+#define LNET_MTU_BITS 20
+#define LNET_MTU (1<<LNET_MTU_BITS)
+
+/* limit on the number of entries in discontiguous MDs */
+#define LNET_MAX_IOV 256
+
+/* Max payload size */
+#ifndef LNET_MAX_PAYLOAD
+# error "LNET_MAX_PAYLOAD must be defined in config.h"
+#else
+# if (LNET_MAX_PAYLOAD < LNET_MTU)
+# error "LNET_MAX_PAYLOAD too small - error in configure --with-max-payload-mb"
+# elif defined(__KERNEL__)
+# if (LNET_MAX_PAYLOAD > (PAGE_SIZE * LNET_MAX_IOV))
+/* PAGE_SIZE is a constant: check with cpp! */
+# error "LNET_MAX_PAYLOAD too large - error in configure --with-max-payload-mb"
+# endif
+# endif
+#endif
/* Options for the MD structure */
-#define PTL_MD_OP_PUT (1 << 0)
-#define PTL_MD_OP_GET (1 << 1)
-#define PTL_MD_MANAGE_REMOTE (1 << 2)
-#define PTL_MD_AUTO_UNLINK (1 << 3)
-#define PTL_MD_TRUNCATE (1 << 4)
-#define PTL_MD_ACK_DISABLE (1 << 5)
-#define PTL_MD_IOV (1 << 6)
-#define PTL_MD_MAX_SIZE (1 << 7)
-#define PTL_MD_KIOV (1 << 8)
-
-#define PTL_MD_THRESH_INF (-1)
+#define LNET_MD_OP_PUT (1 << 0)
+#define LNET_MD_OP_GET (1 << 1)
+#define LNET_MD_MANAGE_REMOTE (1 << 2)
+/* unused (1 << 3) */
+#define LNET_MD_TRUNCATE (1 << 4)
+#define LNET_MD_ACK_DISABLE (1 << 5)
+#define LNET_MD_IOVEC (1 << 6)
+#define LNET_MD_MAX_SIZE (1 << 7)
+#define LNET_MD_KIOV (1 << 8)
+
+/* For compatibility with Cray Portals */
+#define LNET_MD_PHYS 0
+
+#define LNET_MD_THRESH_INF (-1)
+
+/* NB lustre portals uses struct iovec internally! */
+typedef struct iovec lnet_md_iovec_t;
+
+typedef struct {
+ cfs_page_t *kiov_page;
+ unsigned int kiov_len;
+ unsigned int kiov_offset;
+} lnet_kiov_t;
typedef enum {
- PTL_EVENT_GET,
- PTL_EVENT_PUT,
- PTL_EVENT_REPLY,
- PTL_EVENT_ACK,
- PTL_EVENT_SENT,
- PTL_EVENT_UNLINK,
-} ptl_event_kind_t;
-
-#define PTL_SEQ_BASETYPE long
-typedef unsigned PTL_SEQ_BASETYPE ptl_seq_t;
-#define PTL_SEQ_GT(a,b) (((signed PTL_SEQ_BASETYPE)((a) - (b))) > 0)
+ LNET_EVENT_GET,
+ LNET_EVENT_PUT,
+ LNET_EVENT_REPLY,
+ LNET_EVENT_ACK,
+ LNET_EVENT_SEND,
+ LNET_EVENT_UNLINK,
+} lnet_event_kind_t;
+
+#define LNET_SEQ_BASETYPE long
+typedef unsigned LNET_SEQ_BASETYPE lnet_seq_t;
+#define LNET_SEQ_GT(a,b) (((signed LNET_SEQ_BASETYPE)((a) - (b))) > 0)
/* XXX
* cygwin need the pragma line, not clear if it's needed in other places.
#pragma pack(push, 4)
#endif
typedef struct {
- ptl_event_kind_t type;
- ptl_err_t status;
- int unlinked;
- ptl_process_id_t initiator;
- ptl_pt_index_t portal;
- ptl_match_bits_t match_bits;
- ptl_size_t rlength;
- ptl_size_t mlength;
- ptl_size_t offset;
- ptl_md_t mem_desc;
- ptl_hdr_data_t hdr_data;
- struct timeval arrival_time;
-
- volatile ptl_seq_t sequence;
-} __attribute__((packed)) ptl_event_t;
+ lnet_process_id_t target;
+ lnet_process_id_t initiator;
+ lnet_nid_t sender;
+ lnet_event_kind_t type;
+ unsigned int pt_index;
+ __u64 match_bits;
+ unsigned int rlength;
+ unsigned int mlength;
+ lnet_handle_md_t md_handle;
+ lnet_md_t md;
+ __u64 hdr_data;
+ int status;
+ int unlinked;
+ unsigned int offset;
+#ifdef CRAY_XT3
+ lnet_uid_t uid;
+#endif
+
+ volatile lnet_seq_t sequence;
+} lnet_event_t;
#ifdef __CYGWIN__
#pragma pop
#endif
typedef enum {
- PTL_ACK_REQ,
- PTL_NOACK_REQ
-} ptl_ack_req_t;
-
-typedef struct {
- volatile ptl_seq_t sequence;
- ptl_size_t size;
- ptl_event_t *base;
- ptl_handle_any_t cb_eq_handle;
-} ptl_eq_t;
-
-typedef struct {
- ptl_eq_t *eq;
-} ptl_ni_t;
+ LNET_ACK_REQ,
+ LNET_NOACK_REQ
+} lnet_ack_req_t;
-typedef struct {
- int max_match_entries; /* max number of match entries */
- int max_mem_descriptors; /* max number of memory descriptors */
- int max_event_queues; /* max number of event queues */
- int max_atable_index; /* maximum access control list table index */
- int max_ptable_index; /* maximum portals table index */
-} ptl_ni_limits_t;
-
-/*
- * Status registers
- */
-typedef enum {
- PTL_SR_DROP_COUNT,
- PTL_SR_DROP_LENGTH,
- PTL_SR_RECV_COUNT,
- PTL_SR_RECV_LENGTH,
- PTL_SR_SEND_COUNT,
- PTL_SR_SEND_LENGTH,
- PTL_SR_MSGS_MAX,
-} ptl_sr_index_t;
-
-typedef int ptl_sr_value_t;
+typedef void (*lnet_eq_handler_t)(lnet_event_t *event);
+#define LNET_EQ_HANDLER_NONE NULL
#endif