Commit 845525a6 authored by Vlad Yasevich's avatar Vlad Yasevich Committed by David S. Miller

sctp: Update sctp global memory limit allocations.

Update sctp global memory limit allocations to be the same as TCP.
Signed-off-by: default avatarVlad Yasevich <vladislav.yasevich@hp.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 336d3262
...@@ -52,6 +52,8 @@ ...@@ -52,6 +52,8 @@
#include <linux/inetdevice.h> #include <linux/inetdevice.h>
#include <linux/seq_file.h> #include <linux/seq_file.h>
#include <linux/bootmem.h> #include <linux/bootmem.h>
#include <linux/highmem.h>
#include <linux/swap.h>
#include <net/net_namespace.h> #include <net/net_namespace.h>
#include <net/protocol.h> #include <net/protocol.h>
#include <net/ip.h> #include <net/ip.h>
...@@ -1080,6 +1082,7 @@ SCTP_STATIC __init int sctp_init(void) ...@@ -1080,6 +1082,7 @@ SCTP_STATIC __init int sctp_init(void)
int status = -EINVAL; int status = -EINVAL;
unsigned long goal; unsigned long goal;
unsigned long limit; unsigned long limit;
unsigned long nr_pages;
int max_share; int max_share;
int order; int order;
...@@ -1175,8 +1178,9 @@ SCTP_STATIC __init int sctp_init(void) ...@@ -1175,8 +1178,9 @@ SCTP_STATIC __init int sctp_init(void)
* Note this initalizes the data in sctpv6_prot too * Note this initalizes the data in sctpv6_prot too
* Unabashedly stolen from tcp_init * Unabashedly stolen from tcp_init
*/ */
limit = min(num_physpages, 1UL<<(28-PAGE_SHIFT)) >> (20-PAGE_SHIFT); nr_pages = totalram_pages - totalhigh_pages;
limit = (limit * (num_physpages >> (20-PAGE_SHIFT))) >> (PAGE_SHIFT-11); limit = min(nr_pages, 1UL<<(28-PAGE_SHIFT)) >> (20-PAGE_SHIFT);
limit = (limit * (nr_pages >> (20-PAGE_SHIFT))) >> (PAGE_SHIFT-11);
limit = max(limit, 128UL); limit = max(limit, 128UL);
sysctl_sctp_mem[0] = limit / 4 * 3; sysctl_sctp_mem[0] = limit / 4 * 3;
sysctl_sctp_mem[1] = limit; sysctl_sctp_mem[1] = limit;
...@@ -1186,7 +1190,7 @@ SCTP_STATIC __init int sctp_init(void) ...@@ -1186,7 +1190,7 @@ SCTP_STATIC __init int sctp_init(void)
limit = (sysctl_sctp_mem[1]) << (PAGE_SHIFT - 7); limit = (sysctl_sctp_mem[1]) << (PAGE_SHIFT - 7);
max_share = min(4UL*1024*1024, limit); max_share = min(4UL*1024*1024, limit);
sysctl_sctp_rmem[0] = PAGE_SIZE; /* give each asoc 1 page min */ sysctl_sctp_rmem[0] = SK_MEM_QUANTUM; /* give each asoc 1 page min */
sysctl_sctp_rmem[1] = (1500 *(sizeof(struct sk_buff) + 1)); sysctl_sctp_rmem[1] = (1500 *(sizeof(struct sk_buff) + 1));
sysctl_sctp_rmem[2] = max(sysctl_sctp_rmem[1], max_share); sysctl_sctp_rmem[2] = max(sysctl_sctp_rmem[1], max_share);
......
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