Whamcloud - gitweb
LU-6245 lnet: remove kernel defines in userland headers
[fs/lustre-release.git] / lnet / include / lnet / lib-types.h
index 884d473..4c0c98b 100644 (file)
 #ifndef __LNET_LIB_TYPES_H__
 #define __LNET_LIB_TYPES_H__
 
-#ifdef __KERNEL__
-# include <linux/uio.h>
-# include <linux/types.h>
-# include <net/sock.h>
-#else /* !__KERNEL__ */
-# include <sys/types.h>
-#endif /* __KERNEL__ */
-
-#include <libcfs/libcfs.h>
-#include <libcfs/list.h>
-#include <lnet/types.h>
-#include <lnet/lnetctl.h>
+#ifndef __KERNEL__
+# error This include is only for kernel use.
+#endif
 
-#define WIRE_ATTR       __attribute__((packed))
+#include <linux/uio.h>
+#include <linux/types.h>
+#include <net/sock.h>
 
-/* Packed version of lnet_process_id_t to transfer via network */
-typedef struct {
-        lnet_nid_t nid;
-        lnet_pid_t pid;   /* node id / process id */
-} WIRE_ATTR lnet_process_id_packed_t;
-
-/* The wire handle's interface cookie only matches one network interface in
- * one epoch (i.e. new cookie when the interface restarts or the node
- * reboots).  The object cookie only matches one object on that interface
- * during that object's lifetime (i.e. no cookie re-use). */
-typedef struct {
-        __u64 wh_interface_cookie;
-        __u64 wh_object_cookie;
-} WIRE_ATTR lnet_handle_wire_t;
-
-typedef enum {
-        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 lnet_ack {
-        lnet_handle_wire_t  dst_wmd;
-        __u64               match_bits;
-        __u32               mlength;
-} WIRE_ATTR lnet_ack_t;
-
-typedef struct lnet_put {
-        lnet_handle_wire_t  ack_wmd;
-        __u64               match_bits;
-        __u64               hdr_data;
-        __u32               ptl_index;
-        __u32               offset;
-} WIRE_ATTR lnet_put_t;
-
-typedef struct lnet_get {
-        lnet_handle_wire_t  return_wmd;
-        __u64               match_bits;
-        __u32               ptl_index;
-        __u32               src_offset;
-        __u32               sink_length;
-} WIRE_ATTR lnet_get_t;
-
-typedef struct lnet_reply {
-        lnet_handle_wire_t  dst_wmd;
-} WIRE_ATTR lnet_reply_t;
-
-typedef struct lnet_hello {
-        __u64              incarnation;
-        __u32              type;
-} WIRE_ATTR lnet_hello_t;
+#include <lnet/lnetctl.h>
 
-typedef struct {
-        lnet_nid_t          dest_nid;
-        lnet_nid_t          src_nid;
-        lnet_pid_t          dest_pid;
-        lnet_pid_t          src_pid;
-        __u32               type;               /* lnet_msg_type_t */
-        __u32               payload_length;     /* payload data to follow */
-        /*<------__u64 aligned------->*/
-        union {
-                lnet_ack_t   ack;
-                lnet_put_t   put;
-                lnet_get_t   get;
-                lnet_reply_t reply;
-                lnet_hello_t hello;
-        } msg;
-} 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
- * 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 LNDs (e.g. TCP/IP) to check the peer is
- * running the same protocol and to find out its NID. These LNDs should
- * exchange HELLO messages when a connection is first established.  Individual
- * LNDs can put whatever else they fancy in lnet_hdr_t::msg.
- */
-typedef struct {
-        __u32   magic;                          /* LNET_PROTO_TCP_MAGIC */
-        __u16   version_major;                  /* increment on incompatible change */
-        __u16   version_minor;                  /* increment on compatible change */
-} WIRE_ATTR lnet_magicversion_t;
-
-/* PROTO MAGIC for LNDs */
-#define LNET_PROTO_IB_MAGIC                 0x0be91b91
-#define LNET_PROTO_RA_MAGIC                 0x0be91b92
-#define LNET_PROTO_QSW_MAGIC                0x0be91b93
-#define LNET_PROTO_GNI_MAGIC                0xb00fbabe /* ask Kim */
-#define LNET_PROTO_TCP_MAGIC                0xeebc0ded
-#define LNET_PROTO_PTL_MAGIC                0x50746C4E /* 'PtlN' unique magic */
-#define LNET_PROTO_MX_MAGIC                 0x4d583130 /* 'MX10'! */
-#define LNET_PROTO_ACCEPTOR_MAGIC           0xacce7100
-#define LNET_PROTO_PING_MAGIC               0x70696E67 /* 'ping' */
-
-/* Placeholder for a future "unified" protocol across all LNDs */
-/* Current LNDs that receive a request with this magic will respond with a
- * "stub" reply using their current protocol */
-#define LNET_PROTO_MAGIC                    0x45726963 /* ! */
-
-
-#define LNET_PROTO_TCP_VERSION_MAJOR        1
-#define LNET_PROTO_TCP_VERSION_MINOR        0
-
-/* Acceptor connection request */
-typedef struct {
-        __u32       acr_magic;                  /* PTL_ACCEPTOR_PROTO_MAGIC */
-        __u32       acr_version;                /* protocol version */
-        __u64       acr_nid;                    /* target NID */
-} WIRE_ATTR lnet_acceptor_connreq_t;
+/* Max payload size */
+#ifndef CONFIG_LNET_MAX_PAYLOAD
+# error "CONFIG_LNET_MAX_PAYLOAD must be defined in config.h"
+#endif
 
-#define LNET_PROTO_ACCEPTOR_VERSION       1
+#define LNET_MAX_PAYLOAD       CONFIG_LNET_MAX_PAYLOAD
+#if (LNET_MAX_PAYLOAD < LNET_MTU)
+# error "LNET_MAX_PAYLOAD too small - error in configure --with-max-payload-mb"
+#elif (LNET_MAX_PAYLOAD > (PAGE_SIZE * LNET_MAX_IOV))
+# error "LNET_MAX_PAYLOAD too large - error in configure --with-max-payload-mb"
+#endif
 
 /* forward refs */
 struct lnet_libmd;
@@ -366,9 +254,6 @@ typedef struct lnet_lnd
        int (*lnd_accept)(struct lnet_ni *ni, struct socket *sock);
 } lnd_t;
 
-#define LNET_NI_STATUS_UP      0x15aac0de
-#define LNET_NI_STATUS_DOWN    0xdeadface
-#define LNET_NI_STATUS_INVALID 0x00000000
 typedef struct {
         lnet_nid_t ns_nid;
         __u32      ns_status;
@@ -382,8 +267,6 @@ struct lnet_tx_queue {
        struct list_head        tq_delayed;     /* delayed TXs */
 };
 
-#define LNET_MAX_INTERFACES    16
-
 typedef struct lnet_ni {
        spinlock_t              ni_lock;
        struct list_head        ni_list;        /* chain on ln_nis */
@@ -562,29 +445,8 @@ typedef struct {
        lnet_kiov_t              rb_kiov[0];    /* the buffer space */
 } lnet_rtrbuf_t;
 
-typedef struct lnet_counters {
-       __u32 msgs_alloc;
-       __u32 msgs_max;
-       __u32 errors;
-       __u32 send_count;
-       __u32 recv_count;
-       __u32 route_count;
-       __u32 drop_count;
-       __u64 send_length;
-       __u64 recv_length;
-       __u64 route_length;
-       __u64 drop_length;
-} WIRE_ATTR lnet_counters_t;
-
 #define LNET_PEER_HASHSIZE   503                /* prime! */
 
-#define LNET_TINY_BUF_IDX      0
-#define LNET_SMALL_BUF_IDX     1
-#define LNET_LARGE_BUF_IDX     2
-
-/* # different router buffer pools */
-#define LNET_NRBPOOLS          (LNET_LARGE_BUF_IDX + 1)
-
 enum {
        /* Didn't match anything */
        LNET_MATCHMD_NONE       = (1 << 0),