1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /* sysctls for configuring RxRPC operating parameters
4 * Copyright (C) 2014 Red Hat, Inc. All Rights Reserved.
5 * Written by David Howells (dhowells@redhat.com)
8 #include <linux/sysctl.h>
10 #include <net/af_rxrpc.h>
11 #include "ar-internal.h"
13 static struct ctl_table_header
*rxrpc_sysctl_reg_table
;
14 static const unsigned int one
= 1;
15 static const unsigned int four
= 4;
16 static const unsigned int thirtytwo
= 32;
17 static const unsigned int n_65535
= 65535;
18 static const unsigned int n_max_acks
= RXRPC_RXTX_BUFF_SIZE
- 1;
19 static const unsigned long one_jiffy
= 1;
20 static const unsigned long max_jiffies
= MAX_JIFFY_OFFSET
;
23 * RxRPC operating parameters.
25 * See Documentation/networking/rxrpc.txt and the variable definitions for more
26 * information on the individual parameters.
28 static struct ctl_table rxrpc_sysctl_table
[] = {
29 /* Values measured in milliseconds but used in jiffies */
31 .procname
= "req_ack_delay",
32 .data
= &rxrpc_requested_ack_delay
,
33 .maxlen
= sizeof(unsigned long),
35 .proc_handler
= proc_doulongvec_ms_jiffies_minmax
,
36 .extra1
= (void *)&one_jiffy
,
37 .extra2
= (void *)&max_jiffies
,
40 .procname
= "soft_ack_delay",
41 .data
= &rxrpc_soft_ack_delay
,
42 .maxlen
= sizeof(unsigned long),
44 .proc_handler
= proc_doulongvec_ms_jiffies_minmax
,
45 .extra1
= (void *)&one_jiffy
,
46 .extra2
= (void *)&max_jiffies
,
49 .procname
= "idle_ack_delay",
50 .data
= &rxrpc_idle_ack_delay
,
51 .maxlen
= sizeof(unsigned long),
53 .proc_handler
= proc_doulongvec_ms_jiffies_minmax
,
54 .extra1
= (void *)&one_jiffy
,
55 .extra2
= (void *)&max_jiffies
,
58 .procname
= "idle_conn_expiry",
59 .data
= &rxrpc_conn_idle_client_expiry
,
60 .maxlen
= sizeof(unsigned long),
62 .proc_handler
= proc_doulongvec_ms_jiffies_minmax
,
63 .extra1
= (void *)&one_jiffy
,
64 .extra2
= (void *)&max_jiffies
,
67 .procname
= "idle_conn_fast_expiry",
68 .data
= &rxrpc_conn_idle_client_fast_expiry
,
69 .maxlen
= sizeof(unsigned long),
71 .proc_handler
= proc_doulongvec_ms_jiffies_minmax
,
72 .extra1
= (void *)&one_jiffy
,
73 .extra2
= (void *)&max_jiffies
,
76 .procname
= "resend_timeout",
77 .data
= &rxrpc_resend_timeout
,
78 .maxlen
= sizeof(unsigned long),
80 .proc_handler
= proc_doulongvec_ms_jiffies_minmax
,
81 .extra1
= (void *)&one_jiffy
,
82 .extra2
= (void *)&max_jiffies
,
87 .procname
= "max_client_conns",
88 .data
= &rxrpc_max_client_connections
,
89 .maxlen
= sizeof(unsigned int),
91 .proc_handler
= proc_dointvec_minmax
,
92 .extra1
= (void *)&rxrpc_reap_client_connections
,
95 .procname
= "reap_client_conns",
96 .data
= &rxrpc_reap_client_connections
,
97 .maxlen
= sizeof(unsigned int),
99 .proc_handler
= proc_dointvec_minmax
,
100 .extra1
= (void *)&one
,
101 .extra2
= (void *)&rxrpc_max_client_connections
,
104 .procname
= "max_backlog",
105 .data
= &rxrpc_max_backlog
,
106 .maxlen
= sizeof(unsigned int),
108 .proc_handler
= proc_dointvec_minmax
,
109 .extra1
= (void *)&four
,
110 .extra2
= (void *)&thirtytwo
,
113 .procname
= "rx_window_size",
114 .data
= &rxrpc_rx_window_size
,
115 .maxlen
= sizeof(unsigned int),
117 .proc_handler
= proc_dointvec_minmax
,
118 .extra1
= (void *)&one
,
119 .extra2
= (void *)&n_max_acks
,
122 .procname
= "rx_mtu",
123 .data
= &rxrpc_rx_mtu
,
124 .maxlen
= sizeof(unsigned int),
126 .proc_handler
= proc_dointvec_minmax
,
127 .extra1
= (void *)&one
,
128 .extra2
= (void *)&n_65535
,
131 .procname
= "rx_jumbo_max",
132 .data
= &rxrpc_rx_jumbo_max
,
133 .maxlen
= sizeof(unsigned int),
135 .proc_handler
= proc_dointvec_minmax
,
136 .extra1
= (void *)&one
,
137 .extra2
= (void *)&four
,
143 int __init
rxrpc_sysctl_init(void)
145 rxrpc_sysctl_reg_table
= register_net_sysctl(&init_net
, "net/rxrpc",
147 if (!rxrpc_sysctl_reg_table
)
152 void rxrpc_sysctl_exit(void)
154 if (rxrpc_sysctl_reg_table
)
155 unregister_net_sysctl_table(rxrpc_sysctl_reg_table
);