1590232a7SArnaldo Carvalho de Melo /* 2590232a7SArnaldo Carvalho de Melo * sysctl_net_llc.c: sysctl interface to LLC net subsystem. 3590232a7SArnaldo Carvalho de Melo * 4590232a7SArnaldo Carvalho de Melo * Arnaldo Carvalho de Melo <acme@conectiva.com.br> 5590232a7SArnaldo Carvalho de Melo */ 6590232a7SArnaldo Carvalho de Melo 7590232a7SArnaldo Carvalho de Melo #include <linux/mm.h> 8590232a7SArnaldo Carvalho de Melo #include <linux/init.h> 9590232a7SArnaldo Carvalho de Melo #include <linux/sysctl.h> 102928c19eSArnaldo Carvalho de Melo #include <net/llc.h> 11590232a7SArnaldo Carvalho de Melo 12590232a7SArnaldo Carvalho de Melo #ifndef CONFIG_SYSCTL 13590232a7SArnaldo Carvalho de Melo #error This file should not be compiled without CONFIG_SYSCTL defined 14590232a7SArnaldo Carvalho de Melo #endif 15590232a7SArnaldo Carvalho de Melo 16590232a7SArnaldo Carvalho de Melo static struct ctl_table llc2_timeout_table[] = { 17590232a7SArnaldo Carvalho de Melo { 18590232a7SArnaldo Carvalho de Melo .ctl_name = NET_LLC2_ACK_TIMEOUT, 19590232a7SArnaldo Carvalho de Melo .procname = "ack", 20590232a7SArnaldo Carvalho de Melo .data = &sysctl_llc2_ack_timeout, 21590232a7SArnaldo Carvalho de Melo .maxlen = sizeof(long), 22590232a7SArnaldo Carvalho de Melo .mode = 0644, 23*6d9f239aSAlexey Dobriyan .proc_handler = proc_dointvec_jiffies, 24*6d9f239aSAlexey Dobriyan .strategy = sysctl_jiffies, 25590232a7SArnaldo Carvalho de Melo }, 26590232a7SArnaldo Carvalho de Melo { 27590232a7SArnaldo Carvalho de Melo .ctl_name = NET_LLC2_BUSY_TIMEOUT, 28590232a7SArnaldo Carvalho de Melo .procname = "busy", 29590232a7SArnaldo Carvalho de Melo .data = &sysctl_llc2_busy_timeout, 30590232a7SArnaldo Carvalho de Melo .maxlen = sizeof(long), 31590232a7SArnaldo Carvalho de Melo .mode = 0644, 32*6d9f239aSAlexey Dobriyan .proc_handler = proc_dointvec_jiffies, 33*6d9f239aSAlexey Dobriyan .strategy = sysctl_jiffies, 34590232a7SArnaldo Carvalho de Melo }, 35590232a7SArnaldo Carvalho de Melo { 36590232a7SArnaldo Carvalho de Melo .ctl_name = NET_LLC2_P_TIMEOUT, 37590232a7SArnaldo Carvalho de Melo .procname = "p", 38590232a7SArnaldo Carvalho de Melo .data = &sysctl_llc2_p_timeout, 39590232a7SArnaldo Carvalho de Melo .maxlen = sizeof(long), 40590232a7SArnaldo Carvalho de Melo .mode = 0644, 41*6d9f239aSAlexey Dobriyan .proc_handler = proc_dointvec_jiffies, 42*6d9f239aSAlexey Dobriyan .strategy = sysctl_jiffies, 43590232a7SArnaldo Carvalho de Melo }, 44590232a7SArnaldo Carvalho de Melo { 45590232a7SArnaldo Carvalho de Melo .ctl_name = NET_LLC2_REJ_TIMEOUT, 46590232a7SArnaldo Carvalho de Melo .procname = "rej", 47590232a7SArnaldo Carvalho de Melo .data = &sysctl_llc2_rej_timeout, 48590232a7SArnaldo Carvalho de Melo .maxlen = sizeof(long), 49590232a7SArnaldo Carvalho de Melo .mode = 0644, 50*6d9f239aSAlexey Dobriyan .proc_handler = proc_dointvec_jiffies, 51*6d9f239aSAlexey Dobriyan .strategy = sysctl_jiffies, 52590232a7SArnaldo Carvalho de Melo }, 53590232a7SArnaldo Carvalho de Melo { 0 }, 54590232a7SArnaldo Carvalho de Melo }; 55590232a7SArnaldo Carvalho de Melo 56590232a7SArnaldo Carvalho de Melo static struct ctl_table llc_station_table[] = { 57590232a7SArnaldo Carvalho de Melo { 58590232a7SArnaldo Carvalho de Melo .ctl_name = NET_LLC_STATION_ACK_TIMEOUT, 59590232a7SArnaldo Carvalho de Melo .procname = "ack_timeout", 60590232a7SArnaldo Carvalho de Melo .data = &sysctl_llc_station_ack_timeout, 61590232a7SArnaldo Carvalho de Melo .maxlen = sizeof(long), 62590232a7SArnaldo Carvalho de Melo .mode = 0644, 63*6d9f239aSAlexey Dobriyan .proc_handler = proc_dointvec_jiffies, 64*6d9f239aSAlexey Dobriyan .strategy = sysctl_jiffies, 65590232a7SArnaldo Carvalho de Melo }, 66590232a7SArnaldo Carvalho de Melo { 0 }, 67590232a7SArnaldo Carvalho de Melo }; 68590232a7SArnaldo Carvalho de Melo 69590232a7SArnaldo Carvalho de Melo static struct ctl_table llc2_dir_timeout_table[] = { 70590232a7SArnaldo Carvalho de Melo { 71590232a7SArnaldo Carvalho de Melo .ctl_name = NET_LLC2, 72590232a7SArnaldo Carvalho de Melo .procname = "timeout", 73590232a7SArnaldo Carvalho de Melo .mode = 0555, 74590232a7SArnaldo Carvalho de Melo .child = llc2_timeout_table, 75590232a7SArnaldo Carvalho de Melo }, 76590232a7SArnaldo Carvalho de Melo { 0 }, 77590232a7SArnaldo Carvalho de Melo }; 78590232a7SArnaldo Carvalho de Melo 79590232a7SArnaldo Carvalho de Melo static struct ctl_table llc_table[] = { 80590232a7SArnaldo Carvalho de Melo { 81590232a7SArnaldo Carvalho de Melo .ctl_name = NET_LLC2, 82590232a7SArnaldo Carvalho de Melo .procname = "llc2", 83590232a7SArnaldo Carvalho de Melo .mode = 0555, 84590232a7SArnaldo Carvalho de Melo .child = llc2_dir_timeout_table, 85590232a7SArnaldo Carvalho de Melo }, 86590232a7SArnaldo Carvalho de Melo { 87590232a7SArnaldo Carvalho de Melo .ctl_name = NET_LLC_STATION, 88590232a7SArnaldo Carvalho de Melo .procname = "station", 89590232a7SArnaldo Carvalho de Melo .mode = 0555, 90590232a7SArnaldo Carvalho de Melo .child = llc_station_table, 91590232a7SArnaldo Carvalho de Melo }, 92590232a7SArnaldo Carvalho de Melo { 0 }, 93590232a7SArnaldo Carvalho de Melo }; 94590232a7SArnaldo Carvalho de Melo 95b5ccd792SPavel Emelyanov static struct ctl_path llc_path[] = { 96b5ccd792SPavel Emelyanov { .procname = "net", .ctl_name = CTL_NET, }, 97b5ccd792SPavel Emelyanov { .procname = "llc", .ctl_name = NET_LLC, }, 98b5ccd792SPavel Emelyanov { } 99590232a7SArnaldo Carvalho de Melo }; 100590232a7SArnaldo Carvalho de Melo 101590232a7SArnaldo Carvalho de Melo static struct ctl_table_header *llc_table_header; 102590232a7SArnaldo Carvalho de Melo 103590232a7SArnaldo Carvalho de Melo int __init llc_sysctl_init(void) 104590232a7SArnaldo Carvalho de Melo { 105b5ccd792SPavel Emelyanov llc_table_header = register_sysctl_paths(llc_path, llc_table); 106590232a7SArnaldo Carvalho de Melo 107590232a7SArnaldo Carvalho de Melo return llc_table_header ? 0 : -ENOMEM; 108590232a7SArnaldo Carvalho de Melo } 109590232a7SArnaldo Carvalho de Melo 110590232a7SArnaldo Carvalho de Melo void llc_sysctl_exit(void) 111590232a7SArnaldo Carvalho de Melo { 112590232a7SArnaldo Carvalho de Melo if (llc_table_header) { 113590232a7SArnaldo Carvalho de Melo unregister_sysctl_table(llc_table_header); 114590232a7SArnaldo Carvalho de Melo llc_table_header = NULL; 115590232a7SArnaldo Carvalho de Melo } 116590232a7SArnaldo Carvalho de Melo } 117