]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blob - drivers/staging/lustre/include/linux/lnet/lib-dlc.h
Merge tag 'dax-misc-for-4.7' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm...
[mirror_ubuntu-artful-kernel.git] / drivers / staging / lustre / include / linux / lnet / lib-dlc.h
1 /*
2 * LGPL HEADER START
3 *
4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library.
18 *
19 * LGPL HEADER END
20 *
21 */
22 /*
23 * Copyright (c) 2014, Intel Corporation.
24 */
25 /*
26 * Author: Amir Shehata <amir.shehata@intel.com>
27 */
28
29 #ifndef LNET_DLC_H
30 #define LNET_DLC_H
31
32 #include "../libcfs/libcfs_ioctl.h"
33 #include "types.h"
34
35 #define MAX_NUM_SHOW_ENTRIES 32
36 #define LNET_MAX_STR_LEN 128
37 #define LNET_MAX_SHOW_NUM_CPT 128
38 #define LNET_UNDEFINED_HOPS ((__u32) -1)
39
40 struct lnet_ioctl_config_lnd_cmn_tunables {
41 __u32 lct_version;
42 __u32 lct_peer_timeout;
43 __u32 lct_peer_tx_credits;
44 __u32 lct_peer_rtr_credits;
45 __u32 lct_max_tx_credits;
46 };
47
48 struct lnet_ioctl_config_o2iblnd_tunables {
49 __u32 lnd_version;
50 __u32 lnd_peercredits_hiw;
51 __u32 lnd_map_on_demand;
52 __u32 lnd_concurrent_sends;
53 __u32 lnd_fmr_pool_size;
54 __u32 lnd_fmr_flush_trigger;
55 __u32 lnd_fmr_cache;
56 __u32 pad;
57 };
58
59 struct lnet_ioctl_config_lnd_tunables {
60 struct lnet_ioctl_config_lnd_cmn_tunables lt_cmn;
61 union {
62 struct lnet_ioctl_config_o2iblnd_tunables lt_o2ib;
63 } lt_tun_u;
64 };
65
66 struct lnet_ioctl_net_config {
67 char ni_interfaces[LNET_MAX_INTERFACES][LNET_MAX_STR_LEN];
68 __u32 ni_status;
69 __u32 ni_cpts[LNET_MAX_SHOW_NUM_CPT];
70 char cfg_bulk[0];
71 };
72
73 #define LNET_TINY_BUF_IDX 0
74 #define LNET_SMALL_BUF_IDX 1
75 #define LNET_LARGE_BUF_IDX 2
76
77 /* # different router buffer pools */
78 #define LNET_NRBPOOLS (LNET_LARGE_BUF_IDX + 1)
79
80 struct lnet_ioctl_pool_cfg {
81 struct {
82 __u32 pl_npages;
83 __u32 pl_nbuffers;
84 __u32 pl_credits;
85 __u32 pl_mincredits;
86 } pl_pools[LNET_NRBPOOLS];
87 __u32 pl_routing;
88 };
89
90 struct lnet_ioctl_config_data {
91 struct libcfs_ioctl_hdr cfg_hdr;
92
93 __u32 cfg_net;
94 __u32 cfg_count;
95 __u64 cfg_nid;
96 __u32 cfg_ncpts;
97
98 union {
99 struct {
100 __u32 rtr_hop;
101 __u32 rtr_priority;
102 __u32 rtr_flags;
103 } cfg_route;
104 struct {
105 char net_intf[LNET_MAX_STR_LEN];
106 __s32 net_peer_timeout;
107 __s32 net_peer_tx_credits;
108 __s32 net_peer_rtr_credits;
109 __s32 net_max_tx_credits;
110 __u32 net_cksum_algo;
111 __u32 net_interface_count;
112 } cfg_net;
113 struct {
114 __u32 buf_enable;
115 __s32 buf_tiny;
116 __s32 buf_small;
117 __s32 buf_large;
118 } cfg_buffers;
119 } cfg_config_u;
120
121 char cfg_bulk[0];
122 };
123
124 struct lnet_ioctl_peer {
125 struct libcfs_ioctl_hdr pr_hdr;
126 __u32 pr_count;
127 __u32 pr_pad;
128 __u64 pr_nid;
129
130 union {
131 struct {
132 char cr_aliveness[LNET_MAX_STR_LEN];
133 __u32 cr_refcount;
134 __u32 cr_ni_peer_tx_credits;
135 __u32 cr_peer_tx_credits;
136 __u32 cr_peer_rtr_credits;
137 __u32 cr_peer_min_rtr_credits;
138 __u32 cr_peer_tx_qnob;
139 __u32 cr_ncpt;
140 } pr_peer_credits;
141 } pr_lnd_u;
142 };
143
144 struct lnet_ioctl_lnet_stats {
145 struct libcfs_ioctl_hdr st_hdr;
146 struct lnet_counters st_cntrs;
147 };
148
149 #endif /* LNET_DLC_H */