xref: /openbmc/linux/net/llc/sysctl_net_llc.c (revision 590232a7150674b2036291eaefce085f3f9659c8)
1*590232a7SArnaldo Carvalho de Melo /*
2*590232a7SArnaldo Carvalho de Melo  * sysctl_net_llc.c: sysctl interface to LLC net subsystem.
3*590232a7SArnaldo Carvalho de Melo  *
4*590232a7SArnaldo Carvalho de Melo  * Arnaldo Carvalho de Melo <acme@conectiva.com.br>
5*590232a7SArnaldo Carvalho de Melo  */
6*590232a7SArnaldo Carvalho de Melo 
7*590232a7SArnaldo Carvalho de Melo #include <linux/config.h>
8*590232a7SArnaldo Carvalho de Melo #include <linux/mm.h>
9*590232a7SArnaldo Carvalho de Melo #include <linux/init.h>
10*590232a7SArnaldo Carvalho de Melo #include <linux/sysctl.h>
11*590232a7SArnaldo Carvalho de Melo 
12*590232a7SArnaldo Carvalho de Melo #ifndef CONFIG_SYSCTL
13*590232a7SArnaldo Carvalho de Melo #error This file should not be compiled without CONFIG_SYSCTL defined
14*590232a7SArnaldo Carvalho de Melo #endif
15*590232a7SArnaldo Carvalho de Melo 
16*590232a7SArnaldo Carvalho de Melo extern int sysctl_llc2_ack_timeout;
17*590232a7SArnaldo Carvalho de Melo extern int sysctl_llc2_busy_timeout;
18*590232a7SArnaldo Carvalho de Melo extern int sysctl_llc2_p_timeout;
19*590232a7SArnaldo Carvalho de Melo extern int sysctl_llc2_rej_timeout;
20*590232a7SArnaldo Carvalho de Melo extern int sysctl_llc_station_ack_timeout;
21*590232a7SArnaldo Carvalho de Melo 
22*590232a7SArnaldo Carvalho de Melo static struct ctl_table llc2_timeout_table[] = {
23*590232a7SArnaldo Carvalho de Melo 	{
24*590232a7SArnaldo Carvalho de Melo 		.ctl_name	= NET_LLC2_ACK_TIMEOUT,
25*590232a7SArnaldo Carvalho de Melo 		.procname	= "ack",
26*590232a7SArnaldo Carvalho de Melo 		.data		= &sysctl_llc2_ack_timeout,
27*590232a7SArnaldo Carvalho de Melo 		.maxlen		= sizeof(long),
28*590232a7SArnaldo Carvalho de Melo 		.mode		= 0644,
29*590232a7SArnaldo Carvalho de Melo 		.proc_handler   = &proc_dointvec_jiffies,
30*590232a7SArnaldo Carvalho de Melo 		.strategy       = &sysctl_jiffies,
31*590232a7SArnaldo Carvalho de Melo 	},
32*590232a7SArnaldo Carvalho de Melo 	{
33*590232a7SArnaldo Carvalho de Melo 		.ctl_name	= NET_LLC2_BUSY_TIMEOUT,
34*590232a7SArnaldo Carvalho de Melo 		.procname	= "busy",
35*590232a7SArnaldo Carvalho de Melo 		.data		= &sysctl_llc2_busy_timeout,
36*590232a7SArnaldo Carvalho de Melo 		.maxlen		= sizeof(long),
37*590232a7SArnaldo Carvalho de Melo 		.mode		= 0644,
38*590232a7SArnaldo Carvalho de Melo 		.proc_handler   = &proc_dointvec_jiffies,
39*590232a7SArnaldo Carvalho de Melo 		.strategy       = &sysctl_jiffies,
40*590232a7SArnaldo Carvalho de Melo 	},
41*590232a7SArnaldo Carvalho de Melo 	{
42*590232a7SArnaldo Carvalho de Melo 		.ctl_name	= NET_LLC2_P_TIMEOUT,
43*590232a7SArnaldo Carvalho de Melo 		.procname	= "p",
44*590232a7SArnaldo Carvalho de Melo 		.data		= &sysctl_llc2_p_timeout,
45*590232a7SArnaldo Carvalho de Melo 		.maxlen		= sizeof(long),
46*590232a7SArnaldo Carvalho de Melo 		.mode		= 0644,
47*590232a7SArnaldo Carvalho de Melo 		.proc_handler   = &proc_dointvec_jiffies,
48*590232a7SArnaldo Carvalho de Melo 		.strategy       = &sysctl_jiffies,
49*590232a7SArnaldo Carvalho de Melo 	},
50*590232a7SArnaldo Carvalho de Melo 	{
51*590232a7SArnaldo Carvalho de Melo 		.ctl_name	= NET_LLC2_REJ_TIMEOUT,
52*590232a7SArnaldo Carvalho de Melo 		.procname	= "rej",
53*590232a7SArnaldo Carvalho de Melo 		.data		= &sysctl_llc2_rej_timeout,
54*590232a7SArnaldo Carvalho de Melo 		.maxlen		= sizeof(long),
55*590232a7SArnaldo Carvalho de Melo 		.mode		= 0644,
56*590232a7SArnaldo Carvalho de Melo 		.proc_handler   = &proc_dointvec_jiffies,
57*590232a7SArnaldo Carvalho de Melo 		.strategy       = &sysctl_jiffies,
58*590232a7SArnaldo Carvalho de Melo 	},
59*590232a7SArnaldo Carvalho de Melo 	{ 0 },
60*590232a7SArnaldo Carvalho de Melo };
61*590232a7SArnaldo Carvalho de Melo 
62*590232a7SArnaldo Carvalho de Melo static struct ctl_table llc_station_table[] = {
63*590232a7SArnaldo Carvalho de Melo 	{
64*590232a7SArnaldo Carvalho de Melo 		.ctl_name	= NET_LLC_STATION_ACK_TIMEOUT,
65*590232a7SArnaldo Carvalho de Melo 		.procname	= "ack_timeout",
66*590232a7SArnaldo Carvalho de Melo 		.data		= &sysctl_llc_station_ack_timeout,
67*590232a7SArnaldo Carvalho de Melo 		.maxlen		= sizeof(long),
68*590232a7SArnaldo Carvalho de Melo 		.mode		= 0644,
69*590232a7SArnaldo Carvalho de Melo 		.proc_handler   = &proc_dointvec_jiffies,
70*590232a7SArnaldo Carvalho de Melo 		.strategy       = &sysctl_jiffies,
71*590232a7SArnaldo Carvalho de Melo 	},
72*590232a7SArnaldo Carvalho de Melo 	{ 0 },
73*590232a7SArnaldo Carvalho de Melo };
74*590232a7SArnaldo Carvalho de Melo 
75*590232a7SArnaldo Carvalho de Melo static struct ctl_table llc2_dir_timeout_table[] = {
76*590232a7SArnaldo Carvalho de Melo 	{
77*590232a7SArnaldo Carvalho de Melo 		.ctl_name	= NET_LLC2,
78*590232a7SArnaldo Carvalho de Melo 		.procname	= "timeout",
79*590232a7SArnaldo Carvalho de Melo 		.mode		= 0555,
80*590232a7SArnaldo Carvalho de Melo 		.child		= llc2_timeout_table,
81*590232a7SArnaldo Carvalho de Melo        	},
82*590232a7SArnaldo Carvalho de Melo 	{ 0 },
83*590232a7SArnaldo Carvalho de Melo };
84*590232a7SArnaldo Carvalho de Melo 
85*590232a7SArnaldo Carvalho de Melo static struct ctl_table llc_table[] = {
86*590232a7SArnaldo Carvalho de Melo 	{
87*590232a7SArnaldo Carvalho de Melo 		.ctl_name	= NET_LLC2,
88*590232a7SArnaldo Carvalho de Melo 		.procname	= "llc2",
89*590232a7SArnaldo Carvalho de Melo 		.mode		= 0555,
90*590232a7SArnaldo Carvalho de Melo 		.child		= llc2_dir_timeout_table,
91*590232a7SArnaldo Carvalho de Melo        	},
92*590232a7SArnaldo Carvalho de Melo 	{
93*590232a7SArnaldo Carvalho de Melo 		.ctl_name       = NET_LLC_STATION,
94*590232a7SArnaldo Carvalho de Melo 		.procname       = "station",
95*590232a7SArnaldo Carvalho de Melo 		.mode           = 0555,
96*590232a7SArnaldo Carvalho de Melo 		.child          = llc_station_table,
97*590232a7SArnaldo Carvalho de Melo 	},
98*590232a7SArnaldo Carvalho de Melo 	{ 0 },
99*590232a7SArnaldo Carvalho de Melo };
100*590232a7SArnaldo Carvalho de Melo 
101*590232a7SArnaldo Carvalho de Melo static struct ctl_table llc_dir_table[] = {
102*590232a7SArnaldo Carvalho de Melo 	{
103*590232a7SArnaldo Carvalho de Melo 		.ctl_name	= NET_LLC,
104*590232a7SArnaldo Carvalho de Melo 		.procname	= "llc",
105*590232a7SArnaldo Carvalho de Melo 		.mode		= 0555,
106*590232a7SArnaldo Carvalho de Melo 		.child		= llc_table,
107*590232a7SArnaldo Carvalho de Melo        	},
108*590232a7SArnaldo Carvalho de Melo 	{ 0 },
109*590232a7SArnaldo Carvalho de Melo };
110*590232a7SArnaldo Carvalho de Melo 
111*590232a7SArnaldo Carvalho de Melo static struct ctl_table llc_root_table[] = {
112*590232a7SArnaldo Carvalho de Melo 	{
113*590232a7SArnaldo Carvalho de Melo 		.ctl_name	= CTL_NET,
114*590232a7SArnaldo Carvalho de Melo 		.procname	= "net",
115*590232a7SArnaldo Carvalho de Melo 		.mode		= 0555,
116*590232a7SArnaldo Carvalho de Melo 		.child		= llc_dir_table,
117*590232a7SArnaldo Carvalho de Melo 	},
118*590232a7SArnaldo Carvalho de Melo 	{ 0 },
119*590232a7SArnaldo Carvalho de Melo };
120*590232a7SArnaldo Carvalho de Melo 
121*590232a7SArnaldo Carvalho de Melo static struct ctl_table_header *llc_table_header;
122*590232a7SArnaldo Carvalho de Melo 
123*590232a7SArnaldo Carvalho de Melo int __init llc_sysctl_init(void)
124*590232a7SArnaldo Carvalho de Melo {
125*590232a7SArnaldo Carvalho de Melo 	llc_table_header = register_sysctl_table(llc_root_table, 1);
126*590232a7SArnaldo Carvalho de Melo 
127*590232a7SArnaldo Carvalho de Melo 	return llc_table_header ? 0 : -ENOMEM;
128*590232a7SArnaldo Carvalho de Melo }
129*590232a7SArnaldo Carvalho de Melo 
130*590232a7SArnaldo Carvalho de Melo void llc_sysctl_exit(void)
131*590232a7SArnaldo Carvalho de Melo {
132*590232a7SArnaldo Carvalho de Melo 	if (llc_table_header) {
133*590232a7SArnaldo Carvalho de Melo 		unregister_sysctl_table(llc_table_header);
134*590232a7SArnaldo Carvalho de Melo 		llc_table_header = NULL;
135*590232a7SArnaldo Carvalho de Melo 	}
136*590232a7SArnaldo Carvalho de Melo }
137