diff options
author | Neil Horman <nhorman@tuxdriver.com> | 2005-11-11 19:08:24 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2005-11-11 19:08:24 -0500 |
commit | 049b3ff5a86d0187184a189d2e31b8654d58fe22 (patch) | |
tree | aed83ae799e444c57d76597bad6e3b41957a828e /net/sctp/socket.c | |
parent | 19c7e9eef503dc1ae926f3d26c56f88bee568d7b (diff) |
[SCTP]: Include ulpevents in socket receive buffer accounting.
Also introduces a sysctl option to configure the receive buffer
accounting policy to be either at socket or association level.
Default is all the associations on the same socket share the
receive buffer.
Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
Signed-off-by: Sridhar Samudrala <sri@us.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sctp/socket.c')
-rw-r--r-- | net/sctp/socket.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/net/sctp/socket.c b/net/sctp/socket.c index 4d1b8d8904c4..abab81f3818f 100644 --- a/net/sctp/socket.c +++ b/net/sctp/socket.c | |||
@@ -5114,8 +5114,10 @@ static void sctp_sock_migrate(struct sock *oldsk, struct sock *newsk, | |||
5114 | sctp_skb_for_each(skb, &oldsk->sk_receive_queue, tmp) { | 5114 | sctp_skb_for_each(skb, &oldsk->sk_receive_queue, tmp) { |
5115 | event = sctp_skb2event(skb); | 5115 | event = sctp_skb2event(skb); |
5116 | if (event->asoc == assoc) { | 5116 | if (event->asoc == assoc) { |
5117 | sock_rfree(skb); | ||
5117 | __skb_unlink(skb, &oldsk->sk_receive_queue); | 5118 | __skb_unlink(skb, &oldsk->sk_receive_queue); |
5118 | __skb_queue_tail(&newsk->sk_receive_queue, skb); | 5119 | __skb_queue_tail(&newsk->sk_receive_queue, skb); |
5120 | skb_set_owner_r(skb, newsk); | ||
5119 | } | 5121 | } |
5120 | } | 5122 | } |
5121 | 5123 | ||
@@ -5143,8 +5145,10 @@ static void sctp_sock_migrate(struct sock *oldsk, struct sock *newsk, | |||
5143 | sctp_skb_for_each(skb, &oldsp->pd_lobby, tmp) { | 5145 | sctp_skb_for_each(skb, &oldsp->pd_lobby, tmp) { |
5144 | event = sctp_skb2event(skb); | 5146 | event = sctp_skb2event(skb); |
5145 | if (event->asoc == assoc) { | 5147 | if (event->asoc == assoc) { |
5148 | sock_rfree(skb); | ||
5146 | __skb_unlink(skb, &oldsp->pd_lobby); | 5149 | __skb_unlink(skb, &oldsp->pd_lobby); |
5147 | __skb_queue_tail(queue, skb); | 5150 | __skb_queue_tail(queue, skb); |
5151 | skb_set_owner_r(skb, newsk); | ||
5148 | } | 5152 | } |
5149 | } | 5153 | } |
5150 | 5154 | ||