1 /* sysctls for configuring RxRPC operating parameters
3 * Copyright (C) 2014 Red Hat, Inc. All Rights Reserved.
4 * Written by David Howells (dhowells@redhat.com)
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.
12 #include <linux/sysctl.h>
14 #include <net/af_rxrpc.h>
15 #include "ar-internal.h"
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;
26 * RxRPC operating parameters.
28 * See Documentation/networking/rxrpc.txt and the variable definitions for more
29 * information on the individual parameters.
31 static struct ctl_table rxrpc_sysctl_table
[] = {
32 /* Values measured in milliseconds */
34 .procname
= "req_ack_delay",
35 .data
= &rxrpc_requested_ack_delay
,
36 .maxlen
= sizeof(unsigned int),
38 .proc_handler
= proc_dointvec
,
39 .extra1
= (void *)&zero
,
42 .procname
= "soft_ack_delay",
43 .data
= &rxrpc_soft_ack_delay
,
44 .maxlen
= sizeof(unsigned int),
46 .proc_handler
= proc_dointvec
,
47 .extra1
= (void *)&one
,
50 .procname
= "idle_ack_delay",
51 .data
= &rxrpc_idle_ack_delay
,
52 .maxlen
= sizeof(unsigned int),
54 .proc_handler
= proc_dointvec
,
55 .extra1
= (void *)&one
,
58 .procname
= "resend_timeout",
59 .data
= &rxrpc_resend_timeout
,
60 .maxlen
= sizeof(unsigned int),
62 .proc_handler
= proc_dointvec
,
63 .extra1
= (void *)&one
,
66 .procname
= "idle_conn_expiry",
67 .data
= &rxrpc_conn_idle_client_expiry
,
68 .maxlen
= sizeof(unsigned int),
70 .proc_handler
= proc_dointvec_ms_jiffies
,
71 .extra1
= (void *)&one
,
74 .procname
= "idle_conn_fast_expiry",
75 .data
= &rxrpc_conn_idle_client_fast_expiry
,
76 .maxlen
= sizeof(unsigned int),
78 .proc_handler
= proc_dointvec_ms_jiffies
,
79 .extra1
= (void *)&one
,
82 /* Values measured in seconds but used in jiffies */
84 .procname
= "max_call_lifetime",
85 .data
= &rxrpc_max_call_lifetime
,
86 .maxlen
= sizeof(unsigned int),
88 .proc_handler
= proc_dointvec
,
89 .extra1
= (void *)&one
,
94 .procname
= "max_client_conns",
95 .data
= &rxrpc_max_client_connections
,
96 .maxlen
= sizeof(unsigned int),
98 .proc_handler
= proc_dointvec_minmax
,
99 .extra1
= (void *)&rxrpc_reap_client_connections
,
102 .procname
= "reap_client_conns",
103 .data
= &rxrpc_reap_client_connections
,
104 .maxlen
= sizeof(unsigned int),
106 .proc_handler
= proc_dointvec_minmax
,
107 .extra1
= (void *)&one
,
108 .extra2
= (void *)&rxrpc_max_client_connections
,
111 .procname
= "max_backlog",
112 .data
= &rxrpc_max_backlog
,
113 .maxlen
= sizeof(unsigned int),
115 .proc_handler
= proc_dointvec_minmax
,
116 .extra1
= (void *)&four
,
117 .extra2
= (void *)&thirtytwo
,
120 .procname
= "rx_window_size",
121 .data
= &rxrpc_rx_window_size
,
122 .maxlen
= sizeof(unsigned int),
124 .proc_handler
= proc_dointvec_minmax
,
125 .extra1
= (void *)&one
,
126 .extra2
= (void *)&n_max_acks
,
129 .procname
= "rx_mtu",
130 .data
= &rxrpc_rx_mtu
,
131 .maxlen
= sizeof(unsigned int),
133 .proc_handler
= proc_dointvec_minmax
,
134 .extra1
= (void *)&one
,
135 .extra2
= (void *)&n_65535
,
138 .procname
= "rx_jumbo_max",
139 .data
= &rxrpc_rx_jumbo_max
,
140 .maxlen
= sizeof(unsigned int),
142 .proc_handler
= proc_dointvec_minmax
,
143 .extra1
= (void *)&one
,
144 .extra2
= (void *)&four
,
150 int __init
rxrpc_sysctl_init(void)
152 rxrpc_sysctl_reg_table
= register_net_sysctl(&init_net
, "net/rxrpc",
154 if (!rxrpc_sysctl_reg_table
)
159 void rxrpc_sysctl_exit(void)
161 if (rxrpc_sysctl_reg_table
)
162 unregister_net_sysctl_table(rxrpc_sysctl_reg_table
);