Whamcloud - gitweb
- merge 0.7rc1 from b_devel to HEAD (20030612 merge point)
[fs/lustre-release.git] / lnet / klnds / gmlnd / gmlnd.h
1 /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
2  * vim:expandtab:shiftwidth=8:tabstop=8:
3  */
4 #ifndef _GMNAL_H
5 #define _GMNAL_H
6
7 #include <linux/config.h>
8 #include <linux/module.h>
9 #include <linux/kernel.h>
10 #include <linux/mm.h>
11 #include <linux/string.h>
12 #include <linux/stat.h>
13 #include <linux/errno.h>
14 #include <linux/locks.h>
15 #include <linux/unistd.h>
16 #include <linux/init.h>
17
18 #include <asm/system.h>
19 #include <asm/uaccess.h>
20
21 #include <linux/fs.h>
22 #include <linux/file.h>
23 #include <linux/stat.h>
24 #include <linux/list.h>
25 #include <asm/uaccess.h>
26 #include <asm/segment.h>
27
28 #define DEBUG_SUBSYSTEM S_GMNAL
29
30 #include <linux/kp30.h>
31 #include <portals/p30.h>
32 #include <portals/lib-p30.h>
33
34 #include <gm.h>
35
36
37 /*
38  *  Myrinet GM NAL
39  */
40 #define NPAGES_LARGE            16
41 #define NPAGES_SMALL            1
42 #define MSG_LEN_LARGE            NPAGES_LARGE*PAGE_SIZE
43 #define MSG_LEN_SMALL            NPAGES_SMALL*PAGE_SIZE
44 #define MSG_SIZE_LARGE           (gm_min_size_for_length(MSG_LEN_LARGE))
45 #define MSG_SIZE_SMALL           (gm_min_size_for_length(MSG_LEN_SMALL))
46
47 #define TXMSGS                  64 /* Number of Transmit Messages */
48 #define ENVELOPES               8  /* Number of outstanding receive msgs */
49
50 #define KGM_PORT_NUM 3
51 #define KGM_HOSTNAME "kgmnal"
52
53
54 typedef struct {
55         char *krx_buffer;
56         unsigned long   krx_len;
57         unsigned int   krx_size;
58         unsigned int   krx_priority;
59         struct list_head krx_item;
60 }  kgmnal_rx_t;
61
62
63 typedef struct {
64         nal_cb_t  *ktx_nal;
65         void      *ktx_private;
66         lib_msg_t *ktx_cookie;
67         char      *ktx_buffer;
68         size_t     ktx_len;
69         unsigned long ktx_size;
70         int        ktx_ndx;
71         unsigned int ktx_priority;
72         unsigned int ktx_tgt_node;
73         unsigned int ktx_tgt_port_id;
74 }  kgmnal_tx_t;
75
76
77 typedef struct {
78         char              kgm_init;
79         char              kgm_shuttingdown;
80         struct gm_port   *kgm_port;
81         struct list_head  kgm_list;
82         ptl_nid_t         kgm_nid;
83         nal_cb_t         *kgm_cb;
84         struct kgm_trans *kgm_trans;
85         struct tq_struct  kgm_ready_tq;
86         spinlock_t        kgm_dispatch_lock;
87         spinlock_t        kgm_update_lock;
88         spinlock_t        kgm_send_lock;
89 }  kgmnal_data_t;
90
91 int kgm_init(kgmnal_data_t *kgm_data);
92 int kgmnal_recv_thread(void *);
93 int gm_return_mynid(void);
94 void kgmnal_fwd_packet (void *arg, kpr_fwd_desc_t *fwd);
95
96 extern kgmnal_data_t      kgmnal_data;
97 extern nal_t              kgmnal_api;
98 extern nal_cb_t           kgmnal_lib;
99
100 #endif  /* _GMNAL_H */
101