Commit b7b0f33f authored by Sridhar Samudrala's avatar Sridhar Samudrala

[SCTP] Add sysctl parameters to update socket send/receive buffers.

parent 545bd8cf
......@@ -578,6 +578,8 @@ enum {
NET_SCTP_PRESERVE_ENABLE = 11,
NET_SCTP_MAX_BURST = 12,
NET_SCTP_ADDIP_ENABLE = 13,
NET_SCTP_RMEM = 14,
NET_SCTP_WMEM = 15,
};
/* /proc/sys/net/bridge */
......
......@@ -323,7 +323,7 @@ typedef enum {
#define SCTP_DEFAULT_COOKIE_LIFE_USEC 0 /* microseconds */
#define SCTP_DEFAULT_MINWINDOW 1500 /* default minimum rwnd size */
#define SCTP_DEFAULT_MAXWINDOW 32768 /* default rwnd size */
#define SCTP_DEFAULT_MAXWINDOW 65535 /* default rwnd size */
#define SCTP_DEFAULT_MAXSEGMENT 1500 /* MTU size, this is the limit
* to which we will raise the P-MTU.
*/
......
......@@ -193,6 +193,10 @@ extern struct sctp_globals {
/* Flag to indicate if addip is enabled. */
int addip_enable;
/* socket receive and send buffer sizes. */
int rmem;
int wmem;
} sctp_globals;
#define sctp_rto_initial (sctp_globals.rto_initial)
......@@ -221,6 +225,8 @@ extern struct sctp_globals {
#define sctp_local_addr_list (sctp_globals.local_addr_list)
#define sctp_local_addr_lock (sctp_globals.local_addr_lock)
#define sctp_addip_enable (sctp_globals.addip_enable)
#define sctp_rmem (sctp_globals.rmem)
#define sctp_wmem (sctp_globals.wmem)
/* SCTP Socket type: UDP or TCP style. */
typedef enum {
......
......@@ -192,7 +192,7 @@ struct sctp_association *sctp_association_init(struct sctp_association *asoc,
asoc->rwnd_over = 0;
/* Use my own max window until I learn something better. */
asoc->peer.rwnd = SCTP_DEFAULT_MAXWINDOW;
asoc->peer.rwnd = sctp_rmem;
/* Set the sndbuf size for transmit. */
asoc->sndbuf_used = 0;
......@@ -498,7 +498,7 @@ struct sctp_transport *sctp_assoc_add_peer(struct sctp_association *asoc,
* so initialize ssthresh to the default value and it will be set
* later when we process the INIT.
*/
peer->ssthresh = SCTP_DEFAULT_MAXWINDOW;
peer->ssthresh = sctp_rmem;
peer->partial_bytes_acked = 0;
peer->flight_size = 0;
......
......@@ -148,12 +148,8 @@ struct sctp_endpoint *sctp_endpoint_init(struct sctp_endpoint *ep,
sp->autoclose * HZ;
/* Set up the default send/receive buffer space. */
/* FIXME - Should the min and max window size be configurable
* sysctl parameters as opposed to be constants?
*/
sk->sk_rcvbuf = SCTP_DEFAULT_MAXWINDOW;
sk->sk_sndbuf = SCTP_DEFAULT_MAXWINDOW * 2;
sk->sk_rcvbuf = sctp_rmem;
sk->sk_sndbuf = sctp_wmem;
/* Use SCTP specific send buffer space queues. */
sk->sk_write_space = sctp_write_space;
......
......@@ -1049,6 +1049,10 @@ __init int sctp_init(void)
sctp_max_instreams = SCTP_DEFAULT_INSTREAMS;
sctp_max_outstreams = SCTP_DEFAULT_OUTSTREAMS;
/* Initialize default send & receive buffer sizes. */
sctp_rmem = SCTP_DEFAULT_MAXWINDOW;
sctp_wmem = SCTP_DEFAULT_MAXWINDOW;
/* Size and allocate the association hash table.
* The methodology is similar to that of the tcp hash tables.
*/
......
......@@ -170,6 +170,22 @@ static ctl_table sctp_table[] = {
.mode = 0644,
.proc_handler = &proc_dointvec
},
{
.ctl_name = NET_SCTP_RMEM,
.procname = "rmem",
.data = &sctp_rmem,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = &proc_dointvec
},
{
.ctl_name = NET_SCTP_WMEM,
.procname = "wmem",
.data = &sctp_wmem,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = &proc_dointvec
},
{ .ctl_name = 0 }
};
......
......@@ -768,7 +768,7 @@ void sctp_ulpq_renege(struct sctp_ulpq *ulpq, struct sctp_chunk *chunk,
needed = ntohs(chunk->chunk_hdr->length);
needed -= sizeof(sctp_data_chunk_t);
} else
needed = SCTP_DEFAULT_MAXWINDOW;
needed = sctp_rmem;
freed = 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment