Blame view
net/rds/ib_sysctl.c
4.11 KB
e6babe4cc RDS/IB: Stats and... |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
/* * Copyright (c) 2006 Oracle. All rights reserved. * * This software is available to you under a choice of one of two * licenses. You may choose to be licensed under the terms of the GNU * General Public License (GPL) Version 2, available from the file * COPYING in the main directory of this source tree, or the * OpenIB.org BSD license below: * * Redistribution and use in source and binary forms, with or * without modification, are permitted provided that the following * conditions are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the following * disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials * provided with the distribution. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * */ #include <linux/kernel.h> #include <linux/sysctl.h> #include <linux/proc_fs.h> #include "ib.h" static struct ctl_table_header *rds_ib_sysctl_hdr; unsigned long rds_ib_sysctl_max_send_wr = RDS_IB_DEFAULT_SEND_WR; unsigned long rds_ib_sysctl_max_recv_wr = RDS_IB_DEFAULT_RECV_WR; unsigned long rds_ib_sysctl_max_recv_allocation = (128 * 1024 * 1024) / RDS_FRAG_SIZE; static unsigned long rds_ib_sysctl_max_wr_min = 1; /* hardware will fail CQ creation long before this */ static unsigned long rds_ib_sysctl_max_wr_max = (u32)~0; unsigned long rds_ib_sysctl_max_unsig_wrs = 16; static unsigned long rds_ib_sysctl_max_unsig_wr_min = 1; static unsigned long rds_ib_sysctl_max_unsig_wr_max = 64; |
68cb01c1b RDS/IB: Disable f... |
51 52 53 54 55 56 57 58 59 60 61 |
/* * This sysctl does nothing. * * Backwards compatibility with RDS 3.0 wire protocol * disables initial FC credit exchange. * If it's ever possible to drop 3.0 support, * setting this to 1 and moving init/refill of send/recv * rings from ib_cm_connect_complete() back into ib_setup_qp() * will cause credits to be added before protocol negotiation. */ unsigned int rds_ib_sysctl_flow_control = 0; |
e6babe4cc RDS/IB: Stats and... |
62 |
|
ff51bf841 rds: make local f... |
63 |
static ctl_table rds_ib_sysctl_table[] = { |
e6babe4cc RDS/IB: Stats and... |
64 |
{ |
e6babe4cc RDS/IB: Stats and... |
65 66 67 68 |
.procname = "max_send_wr", .data = &rds_ib_sysctl_max_send_wr, .maxlen = sizeof(unsigned long), .mode = 0644, |
6d4561110 sysctl: Drop & in... |
69 |
.proc_handler = proc_doulongvec_minmax, |
e6babe4cc RDS/IB: Stats and... |
70 71 72 73 |
.extra1 = &rds_ib_sysctl_max_wr_min, .extra2 = &rds_ib_sysctl_max_wr_max, }, { |
e6babe4cc RDS/IB: Stats and... |
74 75 76 77 |
.procname = "max_recv_wr", .data = &rds_ib_sysctl_max_recv_wr, .maxlen = sizeof(unsigned long), .mode = 0644, |
6d4561110 sysctl: Drop & in... |
78 |
.proc_handler = proc_doulongvec_minmax, |
e6babe4cc RDS/IB: Stats and... |
79 80 81 82 |
.extra1 = &rds_ib_sysctl_max_wr_min, .extra2 = &rds_ib_sysctl_max_wr_max, }, { |
e6babe4cc RDS/IB: Stats and... |
83 84 85 86 |
.procname = "max_unsignaled_wr", .data = &rds_ib_sysctl_max_unsig_wrs, .maxlen = sizeof(unsigned long), .mode = 0644, |
6d4561110 sysctl: Drop & in... |
87 |
.proc_handler = proc_doulongvec_minmax, |
e6babe4cc RDS/IB: Stats and... |
88 89 90 91 |
.extra1 = &rds_ib_sysctl_max_unsig_wr_min, .extra2 = &rds_ib_sysctl_max_unsig_wr_max, }, { |
e6babe4cc RDS/IB: Stats and... |
92 93 94 95 |
.procname = "max_recv_allocation", .data = &rds_ib_sysctl_max_recv_allocation, .maxlen = sizeof(unsigned long), .mode = 0644, |
6d4561110 sysctl: Drop & in... |
96 |
.proc_handler = proc_doulongvec_minmax, |
e6babe4cc RDS/IB: Stats and... |
97 98 |
}, { |
e6babe4cc RDS/IB: Stats and... |
99 100 101 102 |
.procname = "flow_control", .data = &rds_ib_sysctl_flow_control, .maxlen = sizeof(rds_ib_sysctl_flow_control), .mode = 0644, |
6d4561110 sysctl: Drop & in... |
103 |
.proc_handler = proc_dointvec, |
e6babe4cc RDS/IB: Stats and... |
104 |
}, |
f8572d8f2 sysctl net: Remov... |
105 |
{ } |
e6babe4cc RDS/IB: Stats and... |
106 107 108 |
}; static struct ctl_path rds_ib_sysctl_path[] = { |
f8572d8f2 sysctl net: Remov... |
109 110 111 |
{ .procname = "net", }, { .procname = "rds", }, { .procname = "ib", }, |
e6babe4cc RDS/IB: Stats and... |
112 113 114 115 116 117 118 119 |
{ } }; void rds_ib_sysctl_exit(void) { if (rds_ib_sysctl_hdr) unregister_sysctl_table(rds_ib_sysctl_hdr); } |
ef87b7ea3 RDS: remove __ini... |
120 |
int rds_ib_sysctl_init(void) |
e6babe4cc RDS/IB: Stats and... |
121 122 |
{ rds_ib_sysctl_hdr = register_sysctl_paths(rds_ib_sysctl_path, rds_ib_sysctl_table); |
8690bfa17 RDS: cleanup: rem... |
123 |
if (!rds_ib_sysctl_hdr) |
e6babe4cc RDS/IB: Stats and... |
124 125 126 |
return -ENOMEM; return 0; } |