Documentation: Fix 'file_mapped' -> 'mapped_file'
[sfrench/cifs-2.6.git] / net / rxrpc / sysctl.c
1 /* sysctls for configuring RxRPC operating parameters
2  *
3  * Copyright (C) 2014 Red Hat, Inc. All Rights Reserved.
4  * Written by David Howells (dhowells@redhat.com)
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public Licence
8  * as published by the Free Software Foundation; either version
9  * 2 of the Licence, or (at your option) any later version.
10  */
11
12 #include <linux/sysctl.h>
13 #include <net/sock.h>
14 #include <net/af_rxrpc.h>
15 #include "ar-internal.h"
16
17 static struct ctl_table_header *rxrpc_sysctl_reg_table;
18 static const unsigned int zero = 0;
19 static const unsigned int one = 1;
20 static const unsigned int four = 4;
21 static const unsigned int thirtytwo = 32;
22 static const unsigned int n_65535 = 65535;
23 static const unsigned int n_max_acks = RXRPC_RXTX_BUFF_SIZE - 1;
24
25 /*
26  * RxRPC operating parameters.
27  *
28  * See Documentation/networking/rxrpc.txt and the variable definitions for more
29  * information on the individual parameters.
30  */
31 static struct ctl_table rxrpc_sysctl_table[] = {
32         /* Values measured in milliseconds */
33         {
34                 .procname       = "req_ack_delay",
35                 .data           = &rxrpc_requested_ack_delay,
36                 .maxlen         = sizeof(unsigned int),
37                 .mode           = 0644,
38                 .proc_handler   = proc_dointvec,
39                 .extra1         = (void *)&zero,
40         },
41         {
42                 .procname       = "soft_ack_delay",
43                 .data           = &rxrpc_soft_ack_delay,
44                 .maxlen         = sizeof(unsigned int),
45                 .mode           = 0644,
46                 .proc_handler   = proc_dointvec,
47                 .extra1         = (void *)&one,
48         },
49         {
50                 .procname       = "idle_ack_delay",
51                 .data           = &rxrpc_idle_ack_delay,
52                 .maxlen         = sizeof(unsigned int),
53                 .mode           = 0644,
54                 .proc_handler   = proc_dointvec,
55                 .extra1         = (void *)&one,
56         },
57         {
58                 .procname       = "resend_timeout",
59                 .data           = &rxrpc_resend_timeout,
60                 .maxlen         = sizeof(unsigned int),
61                 .mode           = 0644,
62                 .proc_handler   = proc_dointvec,
63                 .extra1         = (void *)&one,
64         },
65         {
66                 .procname       = "idle_conn_expiry",
67                 .data           = &rxrpc_conn_idle_client_expiry,
68                 .maxlen         = sizeof(unsigned int),
69                 .mode           = 0644,
70                 .proc_handler   = proc_dointvec_ms_jiffies,
71                 .extra1         = (void *)&one,
72         },
73         {
74                 .procname       = "idle_conn_fast_expiry",
75                 .data           = &rxrpc_conn_idle_client_fast_expiry,
76                 .maxlen         = sizeof(unsigned int),
77                 .mode           = 0644,
78                 .proc_handler   = proc_dointvec_ms_jiffies,
79                 .extra1         = (void *)&one,
80         },
81
82         /* Values measured in seconds but used in jiffies */
83         {
84                 .procname       = "max_call_lifetime",
85                 .data           = &rxrpc_max_call_lifetime,
86                 .maxlen         = sizeof(unsigned int),
87                 .mode           = 0644,
88                 .proc_handler   = proc_dointvec,
89                 .extra1         = (void *)&one,
90         },
91
92         /* Non-time values */
93         {
94                 .procname       = "max_client_conns",
95                 .data           = &rxrpc_max_client_connections,
96                 .maxlen         = sizeof(unsigned int),
97                 .mode           = 0644,
98                 .proc_handler   = proc_dointvec_minmax,
99                 .extra1         = (void *)&rxrpc_reap_client_connections,
100         },
101         {
102                 .procname       = "reap_client_conns",
103                 .data           = &rxrpc_reap_client_connections,
104                 .maxlen         = sizeof(unsigned int),
105                 .mode           = 0644,
106                 .proc_handler   = proc_dointvec_minmax,
107                 .extra1         = (void *)&one,
108                 .extra2         = (void *)&rxrpc_max_client_connections,
109         },
110         {
111                 .procname       = "max_backlog",
112                 .data           = &rxrpc_max_backlog,
113                 .maxlen         = sizeof(unsigned int),
114                 .mode           = 0644,
115                 .proc_handler   = proc_dointvec_minmax,
116                 .extra1         = (void *)&four,
117                 .extra2         = (void *)&thirtytwo,
118         },
119         {
120                 .procname       = "rx_window_size",
121                 .data           = &rxrpc_rx_window_size,
122                 .maxlen         = sizeof(unsigned int),
123                 .mode           = 0644,
124                 .proc_handler   = proc_dointvec_minmax,
125                 .extra1         = (void *)&one,
126                 .extra2         = (void *)&n_max_acks,
127         },
128         {
129                 .procname       = "rx_mtu",
130                 .data           = &rxrpc_rx_mtu,
131                 .maxlen         = sizeof(unsigned int),
132                 .mode           = 0644,
133                 .proc_handler   = proc_dointvec_minmax,
134                 .extra1         = (void *)&one,
135                 .extra2         = (void *)&n_65535,
136         },
137         {
138                 .procname       = "rx_jumbo_max",
139                 .data           = &rxrpc_rx_jumbo_max,
140                 .maxlen         = sizeof(unsigned int),
141                 .mode           = 0644,
142                 .proc_handler   = proc_dointvec_minmax,
143                 .extra1         = (void *)&one,
144                 .extra2         = (void *)&four,
145         },
146
147         { }
148 };
149
150 int __init rxrpc_sysctl_init(void)
151 {
152         rxrpc_sysctl_reg_table = register_net_sysctl(&init_net, "net/rxrpc",
153                                                      rxrpc_sysctl_table);
154         if (!rxrpc_sysctl_reg_table)
155                 return -ENOMEM;
156         return 0;
157 }
158
159 void rxrpc_sysctl_exit(void)
160 {
161         if (rxrpc_sysctl_reg_table)
162                 unregister_net_sysctl_table(rxrpc_sysctl_reg_table);
163 }