diff options
Diffstat (limited to 'net/sunrpc/xprtrdma')
-rw-r--r-- | net/sunrpc/xprtrdma/svc_rdma.c | 41 | ||||
-rw-r--r-- | net/sunrpc/xprtrdma/svc_rdma_recvfrom.c | 7 | ||||
-rw-r--r-- | net/sunrpc/xprtrdma/svc_rdma_sendto.c | 2 | ||||
-rw-r--r-- | net/sunrpc/xprtrdma/svc_rdma_transport.c | 6 | ||||
-rw-r--r-- | net/sunrpc/xprtrdma/transport.c | 40 | ||||
-rw-r--r-- | net/sunrpc/xprtrdma/verbs.c | 5 |
6 files changed, 40 insertions, 61 deletions
diff --git a/net/sunrpc/xprtrdma/svc_rdma.c b/net/sunrpc/xprtrdma/svc_rdma.c index 35fb68b9c8ec..d718b8fa9525 100644 --- a/net/sunrpc/xprtrdma/svc_rdma.c +++ b/net/sunrpc/xprtrdma/svc_rdma.c | |||
@@ -40,6 +40,7 @@ | |||
40 | */ | 40 | */ |
41 | #include <linux/module.h> | 41 | #include <linux/module.h> |
42 | #include <linux/init.h> | 42 | #include <linux/init.h> |
43 | #include <linux/slab.h> | ||
43 | #include <linux/fs.h> | 44 | #include <linux/fs.h> |
44 | #include <linux/sysctl.h> | 45 | #include <linux/sysctl.h> |
45 | #include <linux/sunrpc/clnt.h> | 46 | #include <linux/sunrpc/clnt.h> |
@@ -120,8 +121,7 @@ static ctl_table svcrdma_parm_table[] = { | |||
120 | .data = &svcrdma_max_requests, | 121 | .data = &svcrdma_max_requests, |
121 | .maxlen = sizeof(unsigned int), | 122 | .maxlen = sizeof(unsigned int), |
122 | .mode = 0644, | 123 | .mode = 0644, |
123 | .proc_handler = &proc_dointvec_minmax, | 124 | .proc_handler = proc_dointvec_minmax, |
124 | .strategy = &sysctl_intvec, | ||
125 | .extra1 = &min_max_requests, | 125 | .extra1 = &min_max_requests, |
126 | .extra2 = &max_max_requests | 126 | .extra2 = &max_max_requests |
127 | }, | 127 | }, |
@@ -130,8 +130,7 @@ static ctl_table svcrdma_parm_table[] = { | |||
130 | .data = &svcrdma_max_req_size, | 130 | .data = &svcrdma_max_req_size, |
131 | .maxlen = sizeof(unsigned int), | 131 | .maxlen = sizeof(unsigned int), |
132 | .mode = 0644, | 132 | .mode = 0644, |
133 | .proc_handler = &proc_dointvec_minmax, | 133 | .proc_handler = proc_dointvec_minmax, |
134 | .strategy = &sysctl_intvec, | ||
135 | .extra1 = &min_max_inline, | 134 | .extra1 = &min_max_inline, |
136 | .extra2 = &max_max_inline | 135 | .extra2 = &max_max_inline |
137 | }, | 136 | }, |
@@ -140,8 +139,7 @@ static ctl_table svcrdma_parm_table[] = { | |||
140 | .data = &svcrdma_ord, | 139 | .data = &svcrdma_ord, |
141 | .maxlen = sizeof(unsigned int), | 140 | .maxlen = sizeof(unsigned int), |
142 | .mode = 0644, | 141 | .mode = 0644, |
143 | .proc_handler = &proc_dointvec_minmax, | 142 | .proc_handler = proc_dointvec_minmax, |
144 | .strategy = &sysctl_intvec, | ||
145 | .extra1 = &min_ord, | 143 | .extra1 = &min_ord, |
146 | .extra2 = &max_ord, | 144 | .extra2 = &max_ord, |
147 | }, | 145 | }, |
@@ -151,67 +149,65 @@ static ctl_table svcrdma_parm_table[] = { | |||
151 | .data = &rdma_stat_read, | 149 | .data = &rdma_stat_read, |
152 | .maxlen = sizeof(atomic_t), | 150 | .maxlen = sizeof(atomic_t), |
153 | .mode = 0644, | 151 | .mode = 0644, |
154 | .proc_handler = &read_reset_stat, | 152 | .proc_handler = read_reset_stat, |
155 | }, | 153 | }, |
156 | { | 154 | { |
157 | .procname = "rdma_stat_recv", | 155 | .procname = "rdma_stat_recv", |
158 | .data = &rdma_stat_recv, | 156 | .data = &rdma_stat_recv, |
159 | .maxlen = sizeof(atomic_t), | 157 | .maxlen = sizeof(atomic_t), |
160 | .mode = 0644, | 158 | .mode = 0644, |
161 | .proc_handler = &read_reset_stat, | 159 | .proc_handler = read_reset_stat, |
162 | }, | 160 | }, |
163 | { | 161 | { |
164 | .procname = "rdma_stat_write", | 162 | .procname = "rdma_stat_write", |
165 | .data = &rdma_stat_write, | 163 | .data = &rdma_stat_write, |
166 | .maxlen = sizeof(atomic_t), | 164 | .maxlen = sizeof(atomic_t), |
167 | .mode = 0644, | 165 | .mode = 0644, |
168 | .proc_handler = &read_reset_stat, | 166 | .proc_handler = read_reset_stat, |
169 | }, | 167 | }, |
170 | { | 168 | { |
171 | .procname = "rdma_stat_sq_starve", | 169 | .procname = "rdma_stat_sq_starve", |
172 | .data = &rdma_stat_sq_starve, | 170 | .data = &rdma_stat_sq_starve, |
173 | .maxlen = sizeof(atomic_t), | 171 | .maxlen = sizeof(atomic_t), |
174 | .mode = 0644, | 172 | .mode = 0644, |
175 | .proc_handler = &read_reset_stat, | 173 | .proc_handler = read_reset_stat, |
176 | }, | 174 | }, |
177 | { | 175 | { |
178 | .procname = "rdma_stat_rq_starve", | 176 | .procname = "rdma_stat_rq_starve", |
179 | .data = &rdma_stat_rq_starve, | 177 | .data = &rdma_stat_rq_starve, |
180 | .maxlen = sizeof(atomic_t), | 178 | .maxlen = sizeof(atomic_t), |
181 | .mode = 0644, | 179 | .mode = 0644, |
182 | .proc_handler = &read_reset_stat, | 180 | .proc_handler = read_reset_stat, |
183 | }, | 181 | }, |
184 | { | 182 | { |
185 | .procname = "rdma_stat_rq_poll", | 183 | .procname = "rdma_stat_rq_poll", |
186 | .data = &rdma_stat_rq_poll, | 184 | .data = &rdma_stat_rq_poll, |
187 | .maxlen = sizeof(atomic_t), | 185 | .maxlen = sizeof(atomic_t), |
188 | .mode = 0644, | 186 | .mode = 0644, |
189 | .proc_handler = &read_reset_stat, | 187 | .proc_handler = read_reset_stat, |
190 | }, | 188 | }, |
191 | { | 189 | { |
192 | .procname = "rdma_stat_rq_prod", | 190 | .procname = "rdma_stat_rq_prod", |
193 | .data = &rdma_stat_rq_prod, | 191 | .data = &rdma_stat_rq_prod, |
194 | .maxlen = sizeof(atomic_t), | 192 | .maxlen = sizeof(atomic_t), |
195 | .mode = 0644, | 193 | .mode = 0644, |
196 | .proc_handler = &read_reset_stat, | 194 | .proc_handler = read_reset_stat, |
197 | }, | 195 | }, |
198 | { | 196 | { |
199 | .procname = "rdma_stat_sq_poll", | 197 | .procname = "rdma_stat_sq_poll", |
200 | .data = &rdma_stat_sq_poll, | 198 | .data = &rdma_stat_sq_poll, |
201 | .maxlen = sizeof(atomic_t), | 199 | .maxlen = sizeof(atomic_t), |
202 | .mode = 0644, | 200 | .mode = 0644, |
203 | .proc_handler = &read_reset_stat, | 201 | .proc_handler = read_reset_stat, |
204 | }, | 202 | }, |
205 | { | 203 | { |
206 | .procname = "rdma_stat_sq_prod", | 204 | .procname = "rdma_stat_sq_prod", |
207 | .data = &rdma_stat_sq_prod, | 205 | .data = &rdma_stat_sq_prod, |
208 | .maxlen = sizeof(atomic_t), | 206 | .maxlen = sizeof(atomic_t), |
209 | .mode = 0644, | 207 | .mode = 0644, |
210 | .proc_handler = &read_reset_stat, | 208 | .proc_handler = read_reset_stat, |
211 | }, | ||
212 | { | ||
213 | .ctl_name = 0, | ||
214 | }, | 209 | }, |
210 | { }, | ||
215 | }; | 211 | }; |
216 | 212 | ||
217 | static ctl_table svcrdma_table[] = { | 213 | static ctl_table svcrdma_table[] = { |
@@ -220,21 +216,16 @@ static ctl_table svcrdma_table[] = { | |||
220 | .mode = 0555, | 216 | .mode = 0555, |
221 | .child = svcrdma_parm_table | 217 | .child = svcrdma_parm_table |
222 | }, | 218 | }, |
223 | { | 219 | { }, |
224 | .ctl_name = 0, | ||
225 | }, | ||
226 | }; | 220 | }; |
227 | 221 | ||
228 | static ctl_table svcrdma_root_table[] = { | 222 | static ctl_table svcrdma_root_table[] = { |
229 | { | 223 | { |
230 | .ctl_name = CTL_SUNRPC, | ||
231 | .procname = "sunrpc", | 224 | .procname = "sunrpc", |
232 | .mode = 0555, | 225 | .mode = 0555, |
233 | .child = svcrdma_table | 226 | .child = svcrdma_table |
234 | }, | 227 | }, |
235 | { | 228 | { }, |
236 | .ctl_name = 0, | ||
237 | }, | ||
238 | }; | 229 | }; |
239 | 230 | ||
240 | void svc_rdma_cleanup(void) | 231 | void svc_rdma_cleanup(void) |
diff --git a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c index 9e884383134f..f92e37eb413c 100644 --- a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c +++ b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c | |||
@@ -337,10 +337,9 @@ static int rdma_set_ctxt_sge(struct svcxprt_rdma *xprt, | |||
337 | 337 | ||
338 | static int rdma_read_max_sge(struct svcxprt_rdma *xprt, int sge_count) | 338 | static int rdma_read_max_sge(struct svcxprt_rdma *xprt, int sge_count) |
339 | { | 339 | { |
340 | if ((RDMA_TRANSPORT_IWARP == | 340 | if ((rdma_node_get_transport(xprt->sc_cm_id->device->node_type) == |
341 | rdma_node_get_transport(xprt->sc_cm_id-> | 341 | RDMA_TRANSPORT_IWARP) && |
342 | device->node_type)) | 342 | sge_count > 1) |
343 | && sge_count > 1) | ||
344 | return 1; | 343 | return 1; |
345 | else | 344 | else |
346 | return min_t(int, sge_count, xprt->sc_max_sge); | 345 | return min_t(int, sge_count, xprt->sc_max_sge); |
diff --git a/net/sunrpc/xprtrdma/svc_rdma_sendto.c b/net/sunrpc/xprtrdma/svc_rdma_sendto.c index f11be72a1a80..b15e1ebb2bfa 100644 --- a/net/sunrpc/xprtrdma/svc_rdma_sendto.c +++ b/net/sunrpc/xprtrdma/svc_rdma_sendto.c | |||
@@ -54,7 +54,7 @@ | |||
54 | * Assumptions: | 54 | * Assumptions: |
55 | * - head[0] is physically contiguous. | 55 | * - head[0] is physically contiguous. |
56 | * - tail[0] is physically contiguous. | 56 | * - tail[0] is physically contiguous. |
57 | * - pages[] is not physically or virtually contigous and consists of | 57 | * - pages[] is not physically or virtually contiguous and consists of |
58 | * PAGE_SIZE elements. | 58 | * PAGE_SIZE elements. |
59 | * | 59 | * |
60 | * Output: | 60 | * Output: |
diff --git a/net/sunrpc/xprtrdma/svc_rdma_transport.c b/net/sunrpc/xprtrdma/svc_rdma_transport.c index 3fa5751af0ec..edea15a54e51 100644 --- a/net/sunrpc/xprtrdma/svc_rdma_transport.c +++ b/net/sunrpc/xprtrdma/svc_rdma_transport.c | |||
@@ -43,6 +43,7 @@ | |||
43 | #include <linux/sunrpc/debug.h> | 43 | #include <linux/sunrpc/debug.h> |
44 | #include <linux/sunrpc/rpc_rdma.h> | 44 | #include <linux/sunrpc/rpc_rdma.h> |
45 | #include <linux/sched.h> | 45 | #include <linux/sched.h> |
46 | #include <linux/slab.h> | ||
46 | #include <linux/spinlock.h> | 47 | #include <linux/spinlock.h> |
47 | #include <rdma/ib_verbs.h> | 48 | #include <rdma/ib_verbs.h> |
48 | #include <rdma/rdma_cm.h> | 49 | #include <rdma/rdma_cm.h> |
@@ -678,7 +679,10 @@ static struct svc_xprt *svc_rdma_create(struct svc_serv *serv, | |||
678 | int ret; | 679 | int ret; |
679 | 680 | ||
680 | dprintk("svcrdma: Creating RDMA socket\n"); | 681 | dprintk("svcrdma: Creating RDMA socket\n"); |
681 | 682 | if (sa->sa_family != AF_INET) { | |
683 | dprintk("svcrdma: Address family %d is not supported.\n", sa->sa_family); | ||
684 | return ERR_PTR(-EAFNOSUPPORT); | ||
685 | } | ||
682 | cma_xprt = rdma_create_xprt(serv, 1); | 686 | cma_xprt = rdma_create_xprt(serv, 1); |
683 | if (!cma_xprt) | 687 | if (!cma_xprt) |
684 | return ERR_PTR(-ENOMEM); | 688 | return ERR_PTR(-ENOMEM); |
diff --git a/net/sunrpc/xprtrdma/transport.c b/net/sunrpc/xprtrdma/transport.c index 9a63f669ece4..187257b1d880 100644 --- a/net/sunrpc/xprtrdma/transport.c +++ b/net/sunrpc/xprtrdma/transport.c | |||
@@ -49,6 +49,7 @@ | |||
49 | 49 | ||
50 | #include <linux/module.h> | 50 | #include <linux/module.h> |
51 | #include <linux/init.h> | 51 | #include <linux/init.h> |
52 | #include <linux/slab.h> | ||
52 | #include <linux/seq_file.h> | 53 | #include <linux/seq_file.h> |
53 | 54 | ||
54 | #include "xprt_rdma.h" | 55 | #include "xprt_rdma.h" |
@@ -86,79 +87,63 @@ static struct ctl_table_header *sunrpc_table_header; | |||
86 | 87 | ||
87 | static ctl_table xr_tunables_table[] = { | 88 | static ctl_table xr_tunables_table[] = { |
88 | { | 89 | { |
89 | .ctl_name = CTL_UNNUMBERED, | ||
90 | .procname = "rdma_slot_table_entries", | 90 | .procname = "rdma_slot_table_entries", |
91 | .data = &xprt_rdma_slot_table_entries, | 91 | .data = &xprt_rdma_slot_table_entries, |
92 | .maxlen = sizeof(unsigned int), | 92 | .maxlen = sizeof(unsigned int), |
93 | .mode = 0644, | 93 | .mode = 0644, |
94 | .proc_handler = &proc_dointvec_minmax, | 94 | .proc_handler = proc_dointvec_minmax, |
95 | .strategy = &sysctl_intvec, | ||
96 | .extra1 = &min_slot_table_size, | 95 | .extra1 = &min_slot_table_size, |
97 | .extra2 = &max_slot_table_size | 96 | .extra2 = &max_slot_table_size |
98 | }, | 97 | }, |
99 | { | 98 | { |
100 | .ctl_name = CTL_UNNUMBERED, | ||
101 | .procname = "rdma_max_inline_read", | 99 | .procname = "rdma_max_inline_read", |
102 | .data = &xprt_rdma_max_inline_read, | 100 | .data = &xprt_rdma_max_inline_read, |
103 | .maxlen = sizeof(unsigned int), | 101 | .maxlen = sizeof(unsigned int), |
104 | .mode = 0644, | 102 | .mode = 0644, |
105 | .proc_handler = &proc_dointvec, | 103 | .proc_handler = proc_dointvec, |
106 | .strategy = &sysctl_intvec, | ||
107 | }, | 104 | }, |
108 | { | 105 | { |
109 | .ctl_name = CTL_UNNUMBERED, | ||
110 | .procname = "rdma_max_inline_write", | 106 | .procname = "rdma_max_inline_write", |
111 | .data = &xprt_rdma_max_inline_write, | 107 | .data = &xprt_rdma_max_inline_write, |
112 | .maxlen = sizeof(unsigned int), | 108 | .maxlen = sizeof(unsigned int), |
113 | .mode = 0644, | 109 | .mode = 0644, |
114 | .proc_handler = &proc_dointvec, | 110 | .proc_handler = proc_dointvec, |
115 | .strategy = &sysctl_intvec, | ||
116 | }, | 111 | }, |
117 | { | 112 | { |
118 | .ctl_name = CTL_UNNUMBERED, | ||
119 | .procname = "rdma_inline_write_padding", | 113 | .procname = "rdma_inline_write_padding", |
120 | .data = &xprt_rdma_inline_write_padding, | 114 | .data = &xprt_rdma_inline_write_padding, |
121 | .maxlen = sizeof(unsigned int), | 115 | .maxlen = sizeof(unsigned int), |
122 | .mode = 0644, | 116 | .mode = 0644, |
123 | .proc_handler = &proc_dointvec_minmax, | 117 | .proc_handler = proc_dointvec_minmax, |
124 | .strategy = &sysctl_intvec, | ||
125 | .extra1 = &zero, | 118 | .extra1 = &zero, |
126 | .extra2 = &max_padding, | 119 | .extra2 = &max_padding, |
127 | }, | 120 | }, |
128 | { | 121 | { |
129 | .ctl_name = CTL_UNNUMBERED, | ||
130 | .procname = "rdma_memreg_strategy", | 122 | .procname = "rdma_memreg_strategy", |
131 | .data = &xprt_rdma_memreg_strategy, | 123 | .data = &xprt_rdma_memreg_strategy, |
132 | .maxlen = sizeof(unsigned int), | 124 | .maxlen = sizeof(unsigned int), |
133 | .mode = 0644, | 125 | .mode = 0644, |
134 | .proc_handler = &proc_dointvec_minmax, | 126 | .proc_handler = proc_dointvec_minmax, |
135 | .strategy = &sysctl_intvec, | ||
136 | .extra1 = &min_memreg, | 127 | .extra1 = &min_memreg, |
137 | .extra2 = &max_memreg, | 128 | .extra2 = &max_memreg, |
138 | }, | 129 | }, |
139 | { | 130 | { |
140 | .ctl_name = CTL_UNNUMBERED, | ||
141 | .procname = "rdma_pad_optimize", | 131 | .procname = "rdma_pad_optimize", |
142 | .data = &xprt_rdma_pad_optimize, | 132 | .data = &xprt_rdma_pad_optimize, |
143 | .maxlen = sizeof(unsigned int), | 133 | .maxlen = sizeof(unsigned int), |
144 | .mode = 0644, | 134 | .mode = 0644, |
145 | .proc_handler = &proc_dointvec, | 135 | .proc_handler = proc_dointvec, |
146 | }, | ||
147 | { | ||
148 | .ctl_name = 0, | ||
149 | }, | 136 | }, |
137 | { }, | ||
150 | }; | 138 | }; |
151 | 139 | ||
152 | static ctl_table sunrpc_table[] = { | 140 | static ctl_table sunrpc_table[] = { |
153 | { | 141 | { |
154 | .ctl_name = CTL_SUNRPC, | ||
155 | .procname = "sunrpc", | 142 | .procname = "sunrpc", |
156 | .mode = 0555, | 143 | .mode = 0555, |
157 | .child = xr_tunables_table | 144 | .child = xr_tunables_table |
158 | }, | 145 | }, |
159 | { | 146 | { }, |
160 | .ctl_name = 0, | ||
161 | }, | ||
162 | }; | 147 | }; |
163 | 148 | ||
164 | #endif | 149 | #endif |
@@ -176,16 +161,15 @@ xprt_rdma_format_addresses(struct rpc_xprt *xprt) | |||
176 | (void)rpc_ntop(sap, buf, sizeof(buf)); | 161 | (void)rpc_ntop(sap, buf, sizeof(buf)); |
177 | xprt->address_strings[RPC_DISPLAY_ADDR] = kstrdup(buf, GFP_KERNEL); | 162 | xprt->address_strings[RPC_DISPLAY_ADDR] = kstrdup(buf, GFP_KERNEL); |
178 | 163 | ||
179 | (void)snprintf(buf, sizeof(buf), "%u", rpc_get_port(sap)); | 164 | snprintf(buf, sizeof(buf), "%u", rpc_get_port(sap)); |
180 | xprt->address_strings[RPC_DISPLAY_PORT] = kstrdup(buf, GFP_KERNEL); | 165 | xprt->address_strings[RPC_DISPLAY_PORT] = kstrdup(buf, GFP_KERNEL); |
181 | 166 | ||
182 | xprt->address_strings[RPC_DISPLAY_PROTO] = "rdma"; | 167 | xprt->address_strings[RPC_DISPLAY_PROTO] = "rdma"; |
183 | 168 | ||
184 | (void)snprintf(buf, sizeof(buf), "%02x%02x%02x%02x", | 169 | snprintf(buf, sizeof(buf), "%08x", ntohl(sin->sin_addr.s_addr)); |
185 | NIPQUAD(sin->sin_addr.s_addr)); | ||
186 | xprt->address_strings[RPC_DISPLAY_HEX_ADDR] = kstrdup(buf, GFP_KERNEL); | 170 | xprt->address_strings[RPC_DISPLAY_HEX_ADDR] = kstrdup(buf, GFP_KERNEL); |
187 | 171 | ||
188 | (void)snprintf(buf, sizeof(buf), "%4hx", rpc_get_port(sap)); | 172 | snprintf(buf, sizeof(buf), "%4hx", rpc_get_port(sap)); |
189 | xprt->address_strings[RPC_DISPLAY_HEX_PORT] = kstrdup(buf, GFP_KERNEL); | 173 | xprt->address_strings[RPC_DISPLAY_HEX_PORT] = kstrdup(buf, GFP_KERNEL); |
190 | 174 | ||
191 | /* netid */ | 175 | /* netid */ |
diff --git a/net/sunrpc/xprtrdma/verbs.c b/net/sunrpc/xprtrdma/verbs.c index 465aafc2007f..27015c6d8eb5 100644 --- a/net/sunrpc/xprtrdma/verbs.c +++ b/net/sunrpc/xprtrdma/verbs.c | |||
@@ -48,6 +48,7 @@ | |||
48 | */ | 48 | */ |
49 | 49 | ||
50 | #include <linux/pci.h> /* for Tavor hack below */ | 50 | #include <linux/pci.h> /* for Tavor hack below */ |
51 | #include <linux/slab.h> | ||
51 | 52 | ||
52 | #include "xprt_rdma.h" | 53 | #include "xprt_rdma.h" |
53 | 54 | ||
@@ -878,8 +879,8 @@ if (strnicmp(ia->ri_id->device->dma_device->bus->name, "pci", 3) == 0) { | |||
878 | * others indicate a transport condition which has already | 879 | * others indicate a transport condition which has already |
879 | * undergone a best-effort. | 880 | * undergone a best-effort. |
880 | */ | 881 | */ |
881 | if (ep->rep_connected == -ECONNREFUSED | 882 | if (ep->rep_connected == -ECONNREFUSED && |
882 | && ++retry_count <= RDMA_CONNECT_RETRY_MAX) { | 883 | ++retry_count <= RDMA_CONNECT_RETRY_MAX) { |
883 | dprintk("RPC: %s: non-peer_reject, retry\n", __func__); | 884 | dprintk("RPC: %s: non-peer_reject, retry\n", __func__); |
884 | goto retry; | 885 | goto retry; |
885 | } | 886 | } |